Domain-specific languages are a useful tool for productivity allowing domain experts to program using familiar
concepts and vocabulary while benefiting from performance choices made by computing experts. Embedding the
domain specific language into an existing language allows easy interoperability with non-domain-specific code and
use of standard compilers and build systems. In C++, this is enabled through the template and preprocessor features.
C++ embedded domain specific languages (EDSLs) allow the user to write simple, safe, performant, domain specific
code that has access to all the low-level functionality that C and C++ offer as well as the diverse set of libraries
available in the C/C++ ecosystem.
In this paper, we will discuss several tools available for building EDSLs in C++ and show examples of projects
successfully leveraging EDSLs. Modern C++ has added many useful new features to the language which we have
leveraged to further extend the capability of EDSLs.
At EM Photonics, we have used EDSLs to allow developers to transparently benefit from using high performance
computing (HPC) hardware. We will show ways EDSLs combine with existing technologies and EM Photonics high
performance tools and libraries to produce clean, short, high performance code in ways that were not previously
possible.
Access to the requested content is limited to institutions that have purchased or subscribe to SPIE eBooks.
You are receiving this notice because your organization may not have SPIE eBooks access.*
*Shibboleth/Open Athens users─please
sign in
to access your institution's subscriptions.
To obtain this item, you may purchase the complete book in print or electronic format on
SPIE.org.
INSTITUTIONAL Select your institution to access the SPIE Digital Library.
PERSONAL Sign in with your SPIE account to access your personal subscriptions or to use specific features such as save to my library, sign up for alerts, save searches, etc.