Run-Time Parallelization and Scheduling of Loops
IEEE Transactions on Computers
Automatic Data Structure Selection and Transformation for Sparse Matrix Computations
IEEE Transactions on Parallel and Distributed Systems
Next-generation generic programming and its application to sparse matrix computations
Proceedings of the 14th international conference on Supercomputing
Data-Centric Transformations for Locality Enhancement
International Journal of Parallel Programming
SIPR: A New Framework for Generating Efficient Code for Sparse Matrix Computations
LCPC '98 Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing
Hybrid analysis: static & dynamic memory reference analysis
International Journal of Parallel Programming
Automatic pool allocation: improving performance by controlling data structure layout in the heap
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Optimizing irregular shared-memory applications for distributed-memory systems
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
MPADS: memory-pooling-assisted data splitting
Proceedings of the 7th international symposium on Memory management
Proceedings of the 6th ACM conference on Computing frontiers
A compile/run-time environment for the automatic transformation of linked list data structures
International Journal of Parallel Programming
How to unleash array optimizations on code using recursive data structures
Proceedings of the 24th ACM International Conference on Supercomputing
The university of Florida sparse matrix collection
ACM Transactions on Mathematical Software (TOMS)
Automatic restructuring of linked data structures
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
Non-affine Extensions to Polyhedral Code Generation
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Hi-index | 0.00 |
Knowledge of specific properties of input data should influence the compilation process, as different characteristics of input data might have different optimal solutions. However, in many applications, it is far from obvious how this can be achieved, as irregularity in program code prevents many optimizations from being applied. Therefore, we propose a two-phase compilation system, which in the first phase analyzes the code and transforms it into a regular intermediate code using a technique we call sublimation. Sublimation is a process in which different access functions in code are remapped using a common, injective access function. The resulting, regular intermediate code is compiled in a second phase, when the actual data input set is known. This allows for optimizations that compile the regular intermediate into a new code that uses data structures especially tailored to the input data provided. We evaluate this compilation chain using three sparse matrix kernels and show that our data instance specific optimization can provide considerable speedups.