High-Level Programming for Many-Cores Using C++14 and the STL
Gardado en:
| Publicado en: | International Journal of Parallel Programming vol. 46, no. 1 (Feb 2018), p. 23 |
|---|---|
| Autor Principal: | |
| Outros autores: | |
| Publicado: |
Springer Nature B.V.
|
| Materias: | |
| Acceso en liña: | Citation/Abstract Full Text - PDF |
| Etiquetas: |
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 |