Towards Programmable Address Spaces
Andrew Gozillon, Paul Keir
DOI: http://dx.doi.org/10.15439/2017F217
Citation: Proceedings of the 2017 Federated Conference on Computer Science and Information Systems, M. Ganzha, L. Maciaszek, M. Paprzycki (eds). ACSIS, Vol. 11, pages 697–700 (2017)
Abstract. High-performance computing increasingly makes use of heterogeneous many-core parallelism. Individual processor cores within such systems are radically simpler than their predecessors; and tasks previously the responsibility of hardware, are delegated to software. Rather than use a cache, fast on-chip memory, is exposed through a handful of address space annotations; associating pointers with discrete sections of memory, within trivially distinct programming languages. Our work aims to improve the programmability of address spaces by exposing new functionality within the LLVM compiler, and then the existing template metaprogramming system of C++. This is achieved firstly via a new LLVM attribute, ext\_address\_space which facilitates integration with the non-type template parameters of C++. We also present a type traits API which encapsulates the address space annotations, to allow execution on both conventional and extended C++ compilers; and illustrate its applicability to OpenCL 2.x.
References
- A. Munshi, “The opencl specification,” in Hot Chips 21 Symposium (HCS), 2009 IEEE. IEEE, 2009. http://dx.doi.org/10.1109/HOTCHIPS.2009.7478342 pp. 1–314. [Online]. Available: http://dx.doi.org/10.1109/HOTCHIPS.2009.7478342
- C. Nvidia, “Compute unified device architecture programming guide,” 2007.
- T. S. Sites, “Top500 lists,” 1993. [Online]. Available: https://www.top500.org/
- JTC1/SC22/WG14, “Programming languages - c - extensions to support embedded processors,” 2006. [Online]. Available: http://www.open-std.org/jtc1/sc22/wg14/
- Apple, “Metal,” 2014. [Online]. Available: https://developer.apple.com/metal/
- S. Wienke, P. Springer, C. Terboven, and D. an Mey, “Openacc - first experiences with real-world applications,” in European Conference on Parallel Processing. Springer, 2012. http://dx.doi.org/10.1007/978-3-642- 32820-6_85 pp. 859–870. [Online]. Available: http://dx.doi.org/10.1007/ 978-3-642-32820-6_85
- “clang: a c language family frontend for llvm.” [Online]. Available: http://clang.llvm.org/
- M. Harris, “Using shared memory in cuda c/c++,” 2013. [Online]. Available: https://devblogs.nvidia.com/parallelforall/using-shared-memory-cuda-cc/