Translating NESL to C with Annotations

碩士 === 國立交通大學 === 資訊科學與工程研究所 === 106 === NESL is a functional language that supports nested data parallelism. Even though it was proposed in 1990s, NESL is still under active GPU research in recent years. In 2016, Huang and Yang proposed the Partial flattening technique, which translates C programs...

Full description

Bibliographic Details
Main Authors: Chen, Ching-Hsien, 陳敬憲
Other Authors: Yang, Wuu
Format: Others
Language:en_US
Published: 2017
Online Access:http://ndltd.ncl.edu.tw/handle/93q58p
Description
Summary:碩士 === 國立交通大學 === 資訊科學與工程研究所 === 106 === NESL is a functional language that supports nested data parallelism. Even though it was proposed in 1990s, NESL is still under active GPU research in recent years. In 2016, Huang and Yang proposed the Partial flattening technique, which translates C programs together with annotations on parallel loops to CUDA programs and supports irregular nested parallelism on GPUs, Partial flattening decreases the difficulty of irregular nested parallel programing on GPU devices and outperforms existing NESL compilers on several benchmarks. We build a translator that translates NESL programs into C programs with annotations which can be further translated into CUDA programs by partial flattening translator in order to achieve nested data parallelism on GPUs. The experimental result of our current implementation shows that, our translated C might suffer from the overhead of memory allocations on GPU devices in some cases, and therefore, compared with the existing NESL interpreter targeting on CPU, we are in average 48 times slower in Quicksort and 1.79 times slower in Maximum Clique Enumeration. However, we still performs in average 2 times faster in dot product and 29.2 times faster in Quickhull.