The Advanced Compiler Technologies group focuses on advancing the state of the art in exploitation of multi-core parallelism, performing better parallelization via polyhedral compiler technologies as well as via fine-grain multi-threading in the presence of dynamic runtime dependences.
Parallelism exploitation is not limited to homogenous multi-cores, as demonstrated with our prior work on the Cell processor. Our ongoing project on OpenCL program optimization now aims at bringing the full range of loop optimizations available in IBM compilers to a wide range of applications.
In the presence of high memory latencies in a thread-rich environment, we have developed an assist thread technology that prefetches delinquent loads using self-throttling assist threads.
We are also working on a rapid prototyping compiler platform that provides a single common Java/Eclipse interface to all of our optimizing compiler components. A single Java transform can be applied to both high-level optimizations as well as low level compiler backend transformations. Using this platform, we provide insight into exploitation of emerging hardware features for future high performance supercomputers.
We have developed a technology that, in the presence of delinquent loads, replicates computations leading to delinquent loads by performing backward slicing. The assist thread is then throttled so as to perform prefetching sufficiently in advanced so as to provide maximum latency hiding, without issuing them too far ahead in order to reduce pressure on the cache's capacity.
In order to reach the next level of supercomputer architecture within realistic power and reliability targets, we are exploring a range of compiler solutions, covering automatic parallelization, speculative execution, and extended SIMD architectures.
OpenCL is emerging as a standard for programming accelerators, and more generally, heterogeneous many-core architectures. Our research work spans two complementary aspects related to OpenCL. The first is on using the Polyhedral Loop Optimization techniques to provide portable high performance for OpenCL code. The second is on automatic generation of OpenCL kernels from high-level parallel programs such as OpenMP. Click here for more information.
The OpenXL Framework is an Eclipse plugin that allows users to interface with the IBM XL compiler. The framework defines a set of invocation points that correspond to specific intermediate points in the XL compilation process. At each invocation point, OpenXL enables users to inspect and modify the intermediate compiled code. Code is always presented to the user using a single, common interface, irrespective of the different internal code representations used by sub-components of the XL compiler.
We have developed a new loop transformation and automatic parallelization framework based on the polyhedral model in IBM's XL compilers.
We are continuing to refine our automatic SIMD code generation technology, as well as investigating hardware and compiler techniques that can extend the applicability of SIMD to a wider range of applications.