Browsing by Author "Joyner, Mackale"
Now showing 1 - 2 of 2
Results Per Page
Sort Options
Item Array optimizations for high productivity programming languages(2009) Joyner, Mackale; Kennedy, Ken; Sarkar, Vivek; Budimlic, ZoranWhile the HPCS languages (Chapel, Fortress and X10) have introduced improvements in programmer productivity, several challenges still remain in delivering high performance. In the absence of optimization, the high-level language constructs that improve productivity can result in order-of-magnitude runtime performance degradations. This dissertation addresses the problem of efficient code generation for high-level array accesses in the X10 language. The X10 language supports rank-independent specification of loop and array computations using regions and points. Three aspects of high-level array accesses in X10 are important for productivity but also pose significant performance challenges: high-level accesses are performed through Point objects rather than integer indices, variables containing references to arrays are rank-independent, and array subscripts are verified as legal array indices during runtime program execution. Our solution to the first challenge is to introduce new analyses and transformations that enable automatic inlining and scalar replacement of Point objects. Our solution to the second challenge is a hybrid approach. We use an interprocedural rank analysis algorithm to automatically infer ranks of arrays in X10. We use rank analysis information to enable storage transformations on arrays. If rank-independent array references still remain after compiler analysis, the programmer can use X10's dependent type system to safely annotate array variable declarations with additional information for the rank and region of the variable, and to enable the compiler to generate efficient code in cases where the dependent type information is available. Our solution to the third challenge is to use a new interprocedural array bounds analysis approach using regions to automatically determine when runtime bounds checks are not needed. Our performance results show that our optimizations deliver performance that rivals the performance of hand-tuned code with explicit rank-specific loops and lower-level array accesses, and is up to two orders of magnitude faster than unoptimized, high-level X10 programs. These optimizations also result in scalability improvements of X10 programs as we increase the number of CPUs. While we perform the optimizations primarily in X10, these techniques are applicable to other high-productivity languages such as Chapel and Fortress.Item Improving object inlining for high-performance Java scientific applications(2005) Joyner, Mackale; Kennedy, Ken; Budimlic, ZoranJava is a popular programming language that enables many developers to achieve high productivity. Previous work in Java improved runtime performance by using object inlining. This thesis extends prior object inlining work by both analyzing the code and performing optimizations to further improve application runtime performance. Two impediments to object inlining and to increased runtime performance are object and array aliasing and binary method invocations. This thesis implements object and array alias strategies to address the aliasing problem while utilizing an idea from Telescoping Languages to address the binary method invocation problem. Application runtime gains of up to 20% result from employing these techniques. The improvements made to the compile-time object inlining optimization should increase the scientific community's acceptance of the Java programming language in the development of high-performance scientific applications by decreasing the performance.