Compilation of Stream Programs for Heterogeneous Architectures
Heterogeneous architectures incorporating both CPUs (Central Processing Units) with multiple cores and GPUs (Graphics Processing Units) as accelerators, have become mainstream. These architectures are built for better resource usage and/or reduction of program latencies. Programming these massively parallel systems in isolation is challenging enough and combining them together needs utmost care for efficient synchronization and communication. Libraries/languages providing features to make programming modular, composable and error-free have been the quintessential goal to alleviate these problems.
Existing libraries for GPUs provide few bare bones functional features for programming. But we needed to pursue the design from the point of providing better implicitly parallel and composable abstractions. We pushed the abstraction for our library design to see how much leverage, features from functional languages such as purity composability, especially functional streams can provide, and how easy can they be exposed to the GPGPU (General Purpose GPU) programmers.
Ours is the first library and scheduler for stream programs that targets both CPU and GPU. We also introduce the formal semantics of stream transformation and code generation for GPUs. Many of the abstractions for stream programs in our library form a monad, and formal properties of the library can be reasoned about. We evaluate our implementation on real world benchmarks, and show that there is no loss in performance on GPUs. Some benchmarks perform even better with our library. The gain in performance was achieved with stream fusion and use of category theoretic transformations for optimization of stream programs. Our library performs as well as hand-written code, while maintaining guarantees for correctness.
Sun 18 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:00 | |||
13:30 30mTalk | Invited Talk: What Lies Beyond a PhD ECOOP Doctoral Symposium Sarah Nadi University of Alberta | ||
14:00 30mTalk | Verifiable, reusable, yet useful conditioning ECOOP Doctoral Symposium Praveen Narayanan Indiana University, USA | ||
14:30 30mTalk | Improving Warmup in Meta-Traced Virtual Machines ECOOP Doctoral Symposium Jasper Schulz King's College London |
15:30 - 17:50 | |||
15:30 30mTalk | Compilation of Stream Programs for Heterogeneous Architectures ECOOP Doctoral Symposium | ||
16:00 30mTalk | Introspective Intrusion Detection for Popular Software Platforms ECOOP Doctoral Symposium | ||
16:30 30mTalk | Privacy-aware operator placement ECOOP Doctoral Symposium | ||
17:00 40mTalk | How to get your Ph.D. DONE ECOOP Doctoral Symposium Eric Jul University of Oslo | ||
17:40 10mTalk | Round up by the academic panel ECOOP Doctoral Symposium |