11分钟阅读

采访:英特尔ONEAPI和直接并行C ++的承诺

尼尔明哈杰尔巴伊诺维
一位退伍军人科技作家,尼尔明帮助创建在线出版物,从半导体行业到加密货币。

当您考虑软件开发时,英特尔不是铭记的名字,即使它是地球上最具影响力和创新的技术公司之一。四十年前,英特尔的8088处理器有助于启动PC革命,如果您在桌面或笔记本电脑上读取这一点,您可以在内部进行英特尔。服务器以及我们每天依赖的一系列其他硬件也是如此。这并不是说AMD和其他供应商没有竞争产品,因为他们这样做,但英特尔仍然占据X86 CPU市场。

软件工程师几十年来使用英特尔硬件平台,通常情况下,甚至不考虑它们后面的软件和固件。如果他们需要更多的虚拟化性能,他们选择了多核,超线式核心I7或Xeon产品。对于本地数据库修补,他们可以获得英特尔SSD。但现在,英特尔希望开发人员也开始使用更多的软件。

什么是英特尔oneapi?

进入 oneapi. 由英特尔作为一个统一的编程模型推出,旨在简化不同硬件架构的开发:CPU,GPU,FPGA,AI加速器等。所有这些都有非常不同的特性和不同类型的操作的Excel。

什么是英特尔oneapi?

英特尔现在致力于“软件第一”策略,并希望开发人员注意通知。 Oneapi背后的宏大想法是为了使一系列不同的硬件使用一个平台,因此开发人员在CPU和GPU代码时不必使用不同的语言,工具和库。使用ONEAPI,两者的工具箱和CodeBase都是相同的。

为了实现这一目标,英特尔开发了 数据并行C ++ (DPC ++)作为通常用于针对特定硬件(例如GPU或FFPGA)编程的专有语言的开源替代。这种新的编程语言应该提供C ++的生产率和熟悉,同时包括编译器来跨不同的硬件目标部署。

数据并行C ++也包含Khronos Group的 Sycl. 支持数据并行性和异构编程。英特尔目前正在提供免费访问其 德文 ,允许软件工程师在云中尝试与ONEAPI和DPC ++的工具和修补程序,而无需非常麻烦。

ONEAPI用于交叉架构开发

但等等,它会在其他供应商制作的硬件上吗?许可证怎么样,是免费的吗?是的,是:oneapi被设计为硬件 - 不可止结和开源,并且不会改变。

要了解有关ONEAPI的更多信息,我们与英特尔建筑,图形和软件集团副总裁Sanjiv M. Shah讨论了其创世纪和未来,图形和软件集团和英特尔云计算总经理。

Sanjiv: 就ONEAPI的内容而言,我认为这是四块。一个是一种语言和一个标准库,第二个是一组深度学习工具,第三个是一个硬件抽象层和一个可以抽象不同的加速器的软件驱动程序层,第四部分是一组聚焦的库,如matlab等等。那些是Oneapi中的四类事物,但我们可以更深入地讨论纽诺伊的九个元素。这些九个元素基本上是我们引入称为数据并行C ++及其标准库的新语言。

有两个学习图书馆,一个用于神经网络和一个用于通信。我们正在呼叫硬件抽象的Level Zero级别,并且有四个聚焦的库。我们正在以非常开放的方式这样做。所有这些的规范已经开放和可用。我们呼叫他们版本0.5。我们打算在2020年底前开车到1.0,我们也有所有这些的开源实现。再次,我们的目标是让人们利用已经存在的东西。如果硬件供应商想要实现这种语言,他们可以采取开放和运行的内容。

问:关于算法和实施,这是如何工作的?

我们所提供的是算法将使用的原始原语:底层数学基元和通信原语。通常,算法创新正在进行更高的水平,在那里他们并没有重做基本的数学,矩阵数学,卷积数学,等等。它是关于吝啬使用该数学和新方法来使用通信模式的新方法。我们的目标真的是为了我们提供原始,零级,让其他人可以在它的顶部创新。

问:它如何在硬件级别工作?

如果您是硬件提供商,让我们拍摄AI矩阵,某人构建AI ASIC,例如 - 硬件供应商有两种方式“插入”并利用AI生态系统。一个人是提供这个低级硬件界面我们正在调用级别零,如果它们使用标准API提供其级别零的版本,它们可以利用开源,如果它们想要,然后是上面的所有软件图层可以自动杠杆杠杆。

这可能很难针对分段的ASIC,以提供零级的全部一般性。因此,作为替代方案,它们还可以只提供在我们的域名和深度学习库中的数学内核和通信内核,然后我们将在更高级别的框架中完成“管道”库的工作,所以他们会自动得到它。

问:你提到你现在所拥有的版本被指定为0.5,完整的规格应在2020年底准备好。

因此,我们的ONEAPI计划有两部分。一个是行业部分,一个是英特尔产品。行业规范为0.5,左右,我们希望将其降至1.0。与此同时,英特尔正在构建一套产品,产品英特尔的建筑物是今天的赌注,它们实现了0.5规格。到年底,我们希望获得1.0产品。

英特尔的产品超出了ONEAPI的九个元素,因为除了我们提供的基本编程元素之外,我们还希望提供程序员真正需要的东西,如调试器,分析仪和兼容性工具,因此他们将现有语言迁移到数据中并行C ++语言。

问:开发人员转换有多难?更广泛的环境与他们多年来一直在使用的环境?

是的,它非常相似。让我描述数据并行C ++一点点,因为这是我们正在做的事情的重要组成部分。 DPC ++是三件事。它建立在ISO国际标准C ++语言上。有一个名为khronos的组,它定义了称为sycl的标准,Sycl位于C ++之上。我们拍摄sycl,然后我们在sycl顶部添加扩展。我们正在构建数据并行C ++的方式,它真的只有C ++,其中扩展是Sycl所在的。

oneapi dpc ++编译器和运行时

任何C ++编译器都可以编译它。 DPC ++的美丽是任何编译器都可以编译它,只是一个知识渊博的编译器可以利用该语言的内容并生成加速器代码。我们正在进行这种语言的方式,我们非常公开,所以我们对Sycl委员会正在发生关于数据并行C ++的所有讨论。该实现是开源的,所有扩展都已发布,我们已经非常谨慎地工作,以确保我们对未来的Sycl标准有一个很好的滑翔路径。从现在俯视5到10年,这也是ISO C ++的GlidePath。

问:关于编译器并迁移到DPC ++,学习曲线不应该有很大的问题吗?

是的,这取决于您当然的开始。对于C ++程序员,学习曲线将非常小。对于一个C程序员,你必须克服学习C ++的障碍,但这就是全部。这是非常熟悉的C ++。对于曾经像OpenCL这样语言的程序员,它应该非常相似。

另一部分我必须强调的是,我们正在使用LLVM基础架构在开源中进行工作。我们的所有来源已经开放,有一个英特尔GitHub存储库,您可以在其中查看语言实现,甚至下载一个开源编译器。所有的英特尔工具,我们的产品提供,均为任何人都可以免费使用和下载。我们还有一个开发人员云,人们不需要下载或安装任何内容,他们只能编写代码并开始使用我们谈论的所有工具。

问:C ++是表演又相对简单的,但我们都知道它变老了,发展缓慢,有太多的利益相关者,所以他们正在减速一切。这显然不是DPC ++的情况。您将有更快的迭代和更新?

我认为你对我们来说,你对我们来说是非常非常重要的一点,这是一种快速的演变,这并没有按标准放缓。所以,我们希望与标准公开进行讨论,因此有办法进入标准,但我们也想快速做到。

当架构演变时,在他们的用户和实施者共同设计时,这些语言最好的工作。我们的目标是真正快速迭代的代码设计,我们正在练习事物,找到做事的最佳方式,并使其标准。所以,绝对,快速迭代是一个大目标。

问:一些同事提出的一个问题(你可能会明白他们有点涉及来自大公司的任何事情):DPC ++始终对所有用户和供应商持续开放吗?

绝对地!规范是以创造性的公共许可完成的。如果他们想要,任何人都可以使用规范,然后攻击它,并进化它。我想强调,并非所有Oneapi的元素都是开放的,但我们在一条路径上制作几乎所有元素开源。所有这些都可以抓住和杠杆 - 它可以实施。

码码 该公司是一家来自英国的公司,宣布了DPC ++的NVIDIA实施,我们真的鼓励所有硬件供应商和软件供应商进行港口。我们在行业中的一个独特点,加速器对多个供应商常见。当历史上发生时,当只有一个提供商时,他们的语言占主导地位。软件行业要求标准解决方案和多个提供商。

我们在这里尝试做什么是我们大约两年半到几年前的东西 openmp. ,那里有多种并行语言,但没有一个完全占主导地位的语言。我们将所有这些产品均采用并统一统一标准,即现在,25年后,是 向HPC计划的方式。

问:说DPC ++将在未来几年内看到很多演变是正确的吗? Tensors怎么样,新硬件出来了什么?

是的,绝对,你是对的。我们必须演变语言来支持出来的新硬件。这是更快的迭代的目标。我想要强调的另一个点是我们正在设计数据并行C ++,以便如果您愿意,您也可以插入特定于架构的扩展。

因此,虽然是一个我们想要跨多个架构运行的标准语言,但我们也意识到有时,有时候,一个非常重要的受众需要最大的性能。他们可能希望潜入非常低级的编程,这不一定是架构便携式的。我们正在构建扩展和机制,因此您可以对张力器等具有扩展,因此是特定于架构的。

问:开发人员可能有多少对硬件生成的代码的控制?它们可以在系统和各种加速器之间进行多少控制对内存管理?

我们正在向Sycl借用缓冲区的概念,这给用户提供了非常明确的内存控制,但除此之外,我们还添加了概念 统一内存。我们的目标是让程序员是他们需要的一个控制级别,而不仅仅是为了生成快速代码来管理。我们添加过Sycl的一些扩展是子组,减少,管道等的东西。这将让您为不同的架构生成更好的代码。

问:一个有趣的点是Python-intel专门列出Numpy,Scipy,Scikit学习的oveapi分发。我对绩效收益和生产力福利来说很好奇,可以通过ONEAPI解锁。你有哪些指标?

这是一个很好的问题。我们支持生态系统。为什么Python想要使用加速器?它可以从其数学库中获得性能,分析库。我们正在做的是“管道”Numpy,Scipy,Scikit学习等,使我们能够获得良好的表现,利用我们拥有的图书馆。与用优化的本机包正确铅化的默扣液相比,Numpy,Scipy,Scikit的默认实施,依此类推,可以看到非常非常大的收益。我们看到了200倍,300x等的命令获得了收益。

我们使用Python的目标是,我们希望在2倍内完成合理的分数,可能在原生代码性能的80%以内。今天最先进的是你经常在10倍或更大。我们希望通过管道所有高性能任务真正弥合那个差距,使你在2倍,实际上远高于那个。

问:我们在谈论哪些类型的硬件?开发人员可以在普通工作站上解锁这一潜力,或者它会更加强大吗?

不,它到处都是。如果你想到增益来自哪里,那么你就会理解。普通的Python库不使用CPU上的任何虚拟化功能。它们不使用CPU上的任何多核功能。它们未优化,内存系统和未优化的所有内容。因此,它归结为一个矩阵乘法,它由天真的程序员编写并由编译器编译,没有任何优化,然后将其与汇编代码中的专家写入的信息进行比较。当您比较这两个,在Python World中,您可以看到多100倍的增益,基本上是这就是发生的事情。

Python解释器和标准库是如此高的级别,您最终成为非常非常天真的代码。当您使用优化的库拆除它时,您可以获得那些巨大的收益。一台笔记本电脑已经有两到六个或八个CPU内核,它们是多线程的,在它们中具有相当不错的矢量化功能,也许是256,也许是512.所以,有很多坐在笔记本电脑和工作站的表演。当您向GPUS扩展时,一旦您提供了图形,您可以想象收益来自的地方。

如果您查看我们的集成图形,它们也变得非常强大。我相信你已经看到了冰湖Gen 11,那里 集成图形明显优于上一代。您可以看到福利将来自哪里,即使在笔记本电脑上也是如此。

问:devcloud可用性怎么样?如果我重新回忆起来,目前可以免费使用每个人,但是明年去黄金后它会保持这种方式吗?

这是个好问题。在这一点上,我会诚实,我不知道答案。我们此时的意图是为了永远自由。这是为了开发,为了游戏,在那里有很多马力,所以人们实际上可以跑步。

问:所以,如果我们问一千名开发人员,你不介意给予它?

哦,绝对不是。我们会喜欢这种情况!

我可以总结我们想要做的事情。首先,我们非常非常兴奋的oneapi。现在是多供应商解决方案起飞的时候了,因为现在市场上有多个供应商。如果您看看我们的处理器线,而不仅仅是即将到来的GPU,越来越强大的集成GPU,以及我们的FPGA路线图,这是为所有这些建立标准的令人兴奋的时间。我们的目标是生产力,性能和行业基础设施,以便您可以建立在它上面。

至于我谈过的三个受众,应用程序开发人员可以轻松地利用东西,因为它们已经可用。硬件供应商可以利用软件堆栈和插入新硬件,而工具和语言供应商可以轻松使用它。英特尔无法建立世界上所有语言和所有工具,因此它是一个开源基础架构,其他人可以轻松地利用和建立。

理解基础知识

什么是英特尔oneapi?

英特尔ONEAPI是一个统一的编程模型,旨在简化不同硬件架构的开发:CPU,GPU,FPGA,AI加速器等。

什么是数据并行C ++?

数据并行C ++或DPC ++短,是一种基于C的开源替代,用于专有编程语言,通常用于代码用于特定类型的硬件,例如GPU或FFPGA。

ONEAPI仅限于英特尔硬件吗?

不,ONEAPI旨在具有来自不同供应商的CPU,GPU和各种硬件加速器的硬件无关,以及各种硬件加速器。

是免费使用的吗?

是的,Oneapi是一个开源计划,几乎所有的构建块都可以自由使用。