Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Intel Working on New Data Parallel C++

Intel Working on New Data Parallel C++

This item in japanese


Announced at its Software Technology Day in London, Intel new Data Parallel C++ aims to provide a unified, cross-industry, single-source language to program heterogeneous architectures.

Data Parallel C++ will be based on C++, hence its name, with the goal of making it possible to portably write programs that can exploit the inherent parallelism of certain algorithms. This is still a hard problem due to the heterogeneity of existing architectures exploiting hardware parallelism. It is not clear at the moment how much DPC++ will differ from standard C++, but Intel confirmed it will incorporate SYCL, Khronos Group's high-level programming model for single-source programs running on heterogeneous platform based on OpenCL. SYCL shares some of DPC++ goals, namely the attempt to enable writing C++ single-source programs that can be run on multiple, heterogeneous architectures, which includes CPUs, GPUs, DSPs, FPGAs, and other kinds of processing units used as hardware accelerators.

DPC++ is not the first attempt to enable programming of heterogeneous architectures to exploit task and data parallelism. Other projects exist that pursue the same aim, including OpenCL, C++ AMP, the aforementioned SYCL, and NVIDIA CUDA. The two main differentiators among those solutions are whether they support a single-source programming model or not, and whether they rely on standard C++ or include extensions to the language standard that make your code not easily portable. Each project provides its own specific abstractions which are mapped on to the physical hardware but, with the exception of vendor-specific solutions such as CUDA, they usually bar the possibility of using extensions available only for specific hardware platforms -- unless the programmer is willing to give up on portability, that is.

The main issue with those languages and libraries is mostly one of performance portability, meaning the ability of a program running at a given performance level on a given architecture to maintain that same performance level when run on another. In OpenCL's case, this comes down to the quality of the underlying kernel for the specific architecture, rather than to some intrinsic language characteristics, but still it strongly affects attained performance. With higher-level languages, performance may vary on different platforms due to the provided abstractions being more or less suitable to one platform or another.

DPC++ is part of a larger Intel project, One API, that aims to provide a cross-platform toolkit including DPC++, a set of libraries for typical workloads that can benefit from acceleration, and analysis and debug tools. Intel plans to release a developer beta of One API, including DPC++, in 2019's fourth quarter.

Rate this Article