High-Level Programming for Many-Cores Using C++14 and the STL

Gardado en:
Detalles Bibliográficos
Publicado en:International Journal of Parallel Programming vol. 46, no. 1 (Feb 2018), p. 23
Autor Principal: Haidl, Michael
Outros autores: Gorlatch, Sergei
Publicado:
Springer Nature B.V.
Materias:
Acceso en liña:Citation/Abstract
Full Text - PDF
Etiquetas: Engadir etiqueta
Sen Etiquetas, Sexa o primeiro en etiquetar este rexistro!

MARC

LEADER 00000nab a2200000uu 4500
001 1983623547
003 UK-CbPIL
022 |a 0885-7458 
022 |a 1573-7640 
022 |a 0091-7036 
024 7 |a 10.1007/s10766-017-0497-y  |2 doi 
035 |a 1983623547 
045 2 |b d20180201  |b d20180228 
084 |a 19465  |2 nlm 
100 1 |a Haidl, Michael  |u Department of Computer Science, University of Muenster, Münster, Germany 
245 1 |a High-Level Programming for Many-Cores Using C++14 and the STL 
260 |b Springer Nature B.V.  |c Feb 2018 
513 |a Journal Article 
520 3 |a Programming many-core systems with accelerators (e.g., GPUs) remains a challenging task, even for expert programmers. In the current, low-level approaches—OpenCL and CUDA—two distinct programming models are employed: the host code for the CPU is written in C/C++ with a restricted memory model, while the device code for the accelerator is written using a device-dependent model of CUDA or OpenCL. The programmer is responsible for explicitly specifying parallelism, memory transfers, and synchronization, and also for configuring the program and optimizing its performance for a particular many-core system. This leads to long, poorly structured and error-prone codes, often with a suboptimal performance. We present PACXX—an alternative, unified programming approach for accelerators. In PACXX, both host and device programs are written in the same programming language—the newest C++14 standard with the Standard Template Library (STL), including all modern features: type inference (auto), variadic templates, generic lambda expressions, and the newly proposed parallel extensions of the STL. PACXX includes an easy-to-use and type-safe API for multi-stage programming which allows for aggressive runtime compiler optimizations. We implement PACXX by developing a custom compiler (based on the Clang and LLVM frameworks) and a runtime system, that together perform memory management and synchronization automatically and transparently for the programmer. We evaluate our approach by comparing it to OpenCL regarding program size and target performance. 
653 |a Synchronism 
653 |a C (programming language) 
653 |a Programming languages 
653 |a Accelerators 
653 |a Memory management 
653 |a Run time (computers) 
653 |a Computer memory 
700 1 |a Gorlatch, Sergei  |u Department of Computer Science, University of Muenster, Münster, Germany 
773 0 |t International Journal of Parallel Programming  |g vol. 46, no. 1 (Feb 2018), p. 23 
786 0 |d ProQuest  |t ABI/INFORM Global 
856 4 1 |3 Citation/Abstract  |u https://www.proquest.com/docview/1983623547/abstract/embedded/6A8EOT78XXH2IG52?source=fedsrch 
856 4 0 |3 Full Text - PDF  |u https://www.proquest.com/docview/1983623547/fulltextPDF/embedded/6A8EOT78XXH2IG52?source=fedsrch