英特尔在伦敦举行的软件技术日上宣布,新的Data Parallel C ++旨在提供统一的,跨行业的,单一源语言来对异构体系结构进行编程。
Data Parallel C ++将基于C ++,因此得名于C ++,其目标是使可移植的程序可以利用某些算法固有的并行性进行编写。 由于利用硬件并行性的现有体系结构的异构性,这仍然是一个难题。 目前尚不清楚DPC ++与标准C ++有多少不同,但英特尔已确认它将合并SYCL,这是Khronos Group针对在基于OpenCL的异构平台上运行的单源程序的高级编程模型。 SYCL拥有一些DPC ++目标,即尝试启用可在多种异构体系结构上运行的C ++单源程序,这些体系结构包括CPU,GPU,DSP,FPGA和用作硬件加速器的其他类型的处理单元。
DPC ++并不是实现异构体系结构编程以利用任务和数据并行性的第一个尝试。 存在追求相同目标的其他项目,包括OpenCL,C ++ AMP,上述SYCL和NVIDIA CUDA。 这些解决方案之间的两个主要区别是它们是否支持单一源编程模型,以及它们是否依赖于标准C ++或包括对语言标准的扩展,这些扩展使您的代码难以移植。 每个项目都提供自己的特定抽象,这些抽象映射到物理硬件上,但是,除了供应商特定的解决方案(例如CUDA)之外,它们通常禁止使用仅适用于特定硬件平台的扩展的可能性-除非程序员愿意 就是放弃便携性。
这些语言和库的主要问题主要是性能可移植性之一,即在给定体系结构上以给定性能级别运行的程序在另一个体系上运行时保持相同性能级别的能力。 在OpenCL的情况下,这取决于特定体系结构的底层内核的质量,而不是某些固有的语言特性,但是仍然严重影响获得的性能。 使用高级语言时,由于所提供的抽象或多或少适合一个平台或另一个平台,因此在不同平台上的性能可能会有所不同。
DPC ++是一个更大的英特尔项目One API的一部分,该项目旨在提供一个包括DPC ++的跨平台工具包,DPC ++是一组可以从加速,分析和调试工具中受益的典型工作负载的库。 英特尔计划在2019年第四季度发布One API的开发人员beta版,其中包括DPC ++。