Autovectorization-Friendly Program Transformation in the Array Processing Language

Y. Shirota, J. Segawa, Y. Matsui, and T. Kanai (Japan)


Parallel Programming, Very High Level Language,Multicore, SIMD, Compiler


Productivity of parallel programs for evolving multicore architecture is increasingly becoming an important issue. To address this issue, we designed an architecture independent programming system, with our new high level language dedicated to array processing. Array processing programs are translated into parallelized C++ programs customized for each processor architecture by our translator. To enhance performance of the generated C++ programs by exploiting SIMD instructions effectively with minimal effort of supporting new architectures, it is preferable to use auto-vectorization features of C++ compilers. However, auto-vectorization is often restricted to inner-most loops in which all memory access are consecutive. Furthermore, it is at most important to optimize memory access; otherwise, the effect of vectorization is hidden in memory access latency. For optimization, our language is designed to allow the translator to easily extract adjacency properties of arrays from the array-oriented operators. To enhance compilation with auto-vectorization, we propose a high level program transformation method using the extracted information. We confirmed that C++ programs with inner-most loops amendable to auto-vectorization can be generated.

Important Links:

Go Back