Towards Programmable Address Spaces

Andrew Gozillon, Paul Keir

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review


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.

Original languageEnglish
Title of host publicationProceedings of the 2017 Federated Conference on Computer Science and Information Systems
Number of pages4
ISBN (Electronic)978-83-946253-7-5, 978-83-946253-8-2
ISBN (Print)978-83-946253-9-9
Publication statusPublished - 28 Sept 2017
EventWorkshop on Advances In Programming Languages 2017 - Prague, Czech Republic
Duration: 3 Sept 20176 Sept 2017

Publication series

NameAnnals of Computer Science and Information Systems
ISSN (Print)2300-5963


WorkshopWorkshop on Advances In Programming Languages 2017
Abbreviated titleWAPL 2017
Country/TerritoryCzech Republic
Internet address


  • address space
  • __global
  • __local
  • __shared
  • OpenCL
  • Clang
  • LLVM
  • Compiler
  • C++
  • C++ Templates
  • Metaprogramming


Dive into the research topics of 'Towards Programmable Address Spaces'. Together they form a unique fingerprint.

Cite this