2 research outputs found

    Finding Lightweight Opportunities for Parallelism in .NET C#

    Get PDF
    Adding parallelism to .NET C# software programs has become a great option that can be used to enable performance. But how can we find out if the existing large complex software programs are even suitable for parallelism, other than investing a lot of time by checking it by hand? By using static analysis to find dependencies in the source code of software programs, we are able to find actual opportunities for parallelism. This list of generated opportunities for parallelism provides information needed to make the decision whether it is worth the time and effort to implement parallelism to a software program, and also provides guidance for the programmers when parallelism is implemented

    Programmer-assisted Automatic Parallelization

    No full text
    Parallel software is now required to exploit the abundance of threads and processors in modern multicore computers. Unfortunately, manual parallelization is too time-consuming and error-prone for all but the most advanced programmers. While automatic parallelization promises threaded software with little programmer effort, current auto-parallelizers are easily thwarted by pointers and other forms of ambiguity in the code. In this dissertation we profile the loops in SPEC CPU2006, categorize the loops in terms of available parallelism, and focus on promising loops that are not parallelized by IBM's XL C/C++ V10 auto-parallelizer. For those loops we propose methods of improved interaction between the programmer and compiler that can facilitate their parallelization. In particular, we (i) suggest methods for the compiler to better identify to the programmer the parallelization-blockers; (ii) suggest methods for the programmer to provide guarantees to the compiler that overcome these parallelization-blockers; and (iii) evaluate the resulting impact on performance.MAS
    corecore