標題: | PFACC: An OpenACC-like programming model for irregular nested parallelism |
作者: | Huang, Ming Hsiang Yang, Wuu 資訊工程學系 Department of Computer Science |
關鍵字: | dynamic scheduling;GPGPU;irregular parallelism;nested parallelism;OpenACC;parallel programming model;PFACC |
公開日期: | 1-Jan-1970 |
摘要: | OpenACC is a directive-based programming model which allows programmers to write graphic processing unit (GPU) programs by simply annotating parallel loops. However, OpenACC has poor support for irregular nested parallel loops, which are natural choices to express nested parallelism. We propose PFACC, a programming model similar to OpenACC. PFACC directives can be used to annotate parallel loops and to guide data movement between different levels of memory hierarchy. Parallel loops can be arbitrarily nested or be placed inside functions that would be (possibly recursively) called in other parallel loops. The PFACC translator translates C programs with PFACC directives into CUDA programs by inserting runtime iteration-sharing and memory allocation routines. The PFACC runtime iteration-sharing routine is a two-level mechanism. Thread blocks dynamically organize loop iterations intobatchesand execute the batches in a depth-first order. Different thread blocks share iterations among one another with an iteration-stealing mechanism. PFACC generates CUDA programs with reasonable memory usage because of the depth-first execution order. The two-level iteration-sharing mechanism is implemented purely in software and fits well with the CUDA thread hierarchy. Experiments show that PFACC outperforms CUDA dynamic parallelism in terms of performance and code size on most benchmarks. |
URI: | http://dx.doi.org/10.1002/spe.2868 http://hdl.handle.net/11536/154851 |
ISSN: | 0038-0644 |
DOI: | 10.1002/spe.2868 |
期刊: | SOFTWARE-PRACTICE & EXPERIENCE |
起始頁: | 0 |
結束頁: | 0 |
Appears in Collections: | Articles |