在 2019 年超级计算大会上,英特尔推出了一类专为高性能计算和人工智能融合优化的通用 GPU(Ponte Vecchio),当人们欢呼雀跃,似乎看见英伟达“一家独大”的局面被打破时,我们注意到英特尔发布的另一个计划——oneAPI。oneAPI 是一个统一的、简化的编程模型,旨在简化跨多架构的开发过程(如 CPU、GPU、FPGA、加速器),而英特尔则或许能够凭借 oneAPI,对整个芯片设计行业进行一次“大规模的洗牌”。
英特尔高级副总裁、首席架构师以及架构、图形与软件部门总经理 Raja Koduri 在2019年超级计算大会上表示:“高性能计算和人工智能工作负载需要包括 CPU、通用 GPU、FPGA,以及英特尔专用深度学习芯片 NNP 在内的多种架构。帮助客户更简便地释放不同计算环境的潜力至关重要,英特尔致力于采取软件先行的策略,为多架构提供统一可扩展的功能加速异构创新。”
统一的跨架构编程模型
英特尔:oneAPI 是一个统一的、简化的编程模型,它将定义未来应用程序开发的十年。
在 2019 超级计算大会上,英特尔发布的 oneAPI 是一个以开发者为中心的平台,英特尔方面表示 oneAPI 将提供通用、开放的编程体验,换句话说就是,开发者可以在 oneAPI 上自由选择架构,以及在使用不同的代码库、编程语言、编程工具和工作流程时,会变得更加简单。
oneAPI 主要包括两个部分:一项基于开放规范的行业计划和一款 Beta 产品。
该开放规范包括一种编程语言(DPC++)、API 函数库以及底层硬件接口。而 oneAPI Beta 产品则为开发者提供一系列的开发工具,包括编译器、编程库、分析器等,并把这些工具封装为特定领域的工具包。
初期 oneAPI Beta 版主要面向英特尔至强可扩展处理器、带集成显卡的英特尔酷睿处理器,以及英特尔 FPGA,英特尔表示,未来 oneAPI Beta 还将支持更多的硬件。
开发者可在 Intel oneAPI DevCloud 平台下载和试用 oneAPI 工具,并在software.intel.com/oneAPI网站上了解更多关于 oneAPI 的信息。
oneAPI 详解
英特尔方面表示,oneAPI 是英特尔“软件先行”战略的重要体现,他们相信这一战略将定义和引领一个人工智能日益融合、异构及多架构的编程时代。
事实上,跨架构(CPU、GPU、FPGA 及其他加速器)的开发能力对于处理数据密集型的工作负载极为重要,因为这种工作负载往往需要多种架构协同工作,从发展的角度来看,这或许会成为未来的常态。
然而,现在的情况却是,每一个硬件平台往往需要开发者去维护独立的代码库,这些代码库又需要使用不同的语言、不同的库和不同的软件工具进行编程。这就意味着,维护代码库会是一项极其复杂和耗费时间的工作,尤其是在不同语言、软件工具等客观条件影响下,不仅会大大降低开发速度还会抑制创新。
所以,相对于今天基于单个厂商的封闭式编程环境,oneAPI 带来的是一座开放、简化的桥梁,不仅能够保留其现有的软件投资,还能在这个基础上使得开发者们进入到一个新的“多架构世界”。
开放规范
数十年以来,英特尔与包括 ISO C++/Fortran Groups、OpenMP ARB、MPI Forum、The Khronos Group 在内的多个标准制定组织以及行业/学术组织携手,希望通过开放协作的方式寻求一种可实现互操作性与互换性的产品规范,而 oneAPI 项目就是这一行动的延续。
oneAPI 的开放式规范包括一种跨架构的编程语言 Data Parallel C++ (DPC++)、一套用于 API 编程的函数库以及底层硬件接口(oneAPI Level Zero)。有了这些组件,英特尔和其它企业就能创建他们自己的 oneAPI 以支持他们自己的产品,或基于 oneAPI 进行新的产品开发。
目前 oneAPI 规范内容中的很多库和组件已经开源或即将开源。可以通过访问 oneapi.com,查看具体的开源项。
DPC++是基于大众熟悉的 C 和 C++语言,专门为 oneAPI 设计的主要编程语言。它融合了来自 Kronos Group 的 SYCL*,从而可以支持跨 CPU 和加速器上的数据并行和异构编程,目的是为了简化编程以及提高代码在不同硬件上的可重用性,同时能根据特定的加速器进行调优。
DPC++语言增强将会通过一个开发者社区项目来进行扩展,以简化数据并行编程。该项目向公众开放,并将通过开发者们的共同努力不断发展。
Beta 产品
英特尔 oneAPI 基础工具包(Beta 版)包含了一系列核心工具和库,它具体包含了 oneAPI 开放式规范技术(DPC++语言、特定领域的库)和英特尔 Python*分发包来提供跨相关架构的即时加速,以及能增强分析、协助设计和调试等组件。
除英特尔 oneAPI 基础工具包外,英特尔还提供其他针对高性能计算、人工智能等专门工作负载的工具包,如:
英特尔 oneAPI 高性能计算工具包(Beta 版):帮助快速交付可扩展的 C++、Fortran 和 OpenMP 应用程序。
英特尔 oneAPI 深度学习框架开发者工具包(Beta 版):用于建立深度学习框架或对现有深度学习框架实现定制化。
英特尔 oneAPI 渲染工具包(Beta 版):用于开发高性能、高精度的可视化应用程序(包括科学可视化)。
英特尔 AI 分析工具包(Beta 版):由 oneAPI 提供技术支持,适用于人工智能开发者和数据科学家,以更好地利用机器学习和深度学习模型来构建应用。
此外还有两种 oneAPI 补充工具包:为系统工程师设计的英特尔系统 Bring-Up 工具包以及面向深度学习推理和计算机视觉的生产场景的英特尔发行版 OpenVINO 工具开发包。
更多详情请访问:Intel oneAPI。
哪些公司支持 oneAPI?
截至 11 月 17 日,支持 oneAPI 概念的业内领先企业和研究机构已经超过 30 家,包括高性能计算领域的领导者、人工智能领域的创新者、硬件厂商/OEM、独立软件开发商、云服务商、高校等等。虽然这项计划刚刚启动,但英特尔称,预期未来几年将会有更多参与方加入该计划。
未来趋势
随着越来越多新芯片架构和编程模型的出现,未来的通用并行计算市场仍存在很多不确定的因素,在这一角度看来,CUDA 和 OpenCL 必定不会是“通用并行计算市场”的终点。近期,英特尔副总裁 Bill Savage在接受InfoQ采访时就曾提到:“跨架构编程的开放 oneAPI 是替代 CUDA 和 OpenCL 的选项。”
我们无法确定 oneAPI 在将来究竟能不能替代 CUDA 和 OpenCL,但现在的它,无疑是为跨架构编程提供了一个新的选择。
CUDA 和 OpenCL 分别是由英伟达和苹果发起的开放规范,其中 CUDA 完全由英伟达独有,只支持英伟达的 GPU,源码和编程语言并不对外开放,但由于完整的配套生态、很好的易用性和高效的更新迭代速度而广受到机器学习应用开发者和框架开发者欢迎。
OpenCL 虽然是一个开放的编程规范且支持所有的硬件架构,但由于实现主要依靠各大硬件厂商,无法保证质量和更新速度,目前也只有 AMD 的支持做的相对成熟;OpenCL 为了支持不同硬件,存在很多冗余代码,硬件利用率不高,而且在英伟达的卡上性能不如 CUDA,在非英伟达的卡上驱动质量也是参差不齐;再加上异构代码编写复杂、文档不够清晰等缺点,OpenCL 具有一定的局限性。
评论