Abstract
The current tendencies of computer architecture are toward multi-core architectures which have memory hierarchies and large number of processing units on a single chip. For taking advantage of these architectures, programmers should consider the parallelism and data locality issues when they develop applications. For the parallelism, OpenMP API is a friendly interface that helps programmers develop parallel program easily. For the data locality, loop-tiling is a crucial loop-transformation which can enhance data reuse in the cache. But, the current Java compiler supports neither OpenMP API nor loop-tiling optimization. To meet the requirement, we proposed a compiler framework – JMC, which can support OpenMP-like directive transformation and loop-tiling optimization for Java programming language. In addition, effective use of loop-tiling needs selection of the tile sizes. We designed a tile size selelction (TSS) scheme for different level cache size and gained good performance. We evaluate our scheme on the 32-core platform. The experimental result shows either sequential program or parallel program can gain good performance enhancement via loop-tiling optimization. And the average speed up of sequential is 3.87; in the parallel program result, the average speed up is 3.58. Furthermore, according to different thread groups, using the TSS scheme to select fitted tile size for different level cache can enhance the performance.