`OneAPI从2018年底宣布,到2019年底进入测试阶段,现在终于发布1.0正式版了。OneAPI 是英特尔重点推出的异构编程器,期望统一CPU,GPU和
FPGA及其他加速系列硬件的编程。
oneAPI是什么?oneAPI是一个统一的、简化的编程模型,旨在简化跨多架构的开发过程(如CPU、GPU、FPGA、加速器)。oneAPI包含两个组成部分:一项产业计划和一款英特尔® bete产品,2019年底发布时还是属于探索的第一步,现在已经转正了。
oneAPI计划的跨架构开发模型基于行业标准和开放规范,支持广泛的行业生态系统采纳该技术来推动应用开发领域的新演进。
英特尔® oneAPI beta产品是英特尔基于oneAPI的实现,它包括了oneAPI标准组件如直接编程工具(Data Parallel C++)、含有一系列性能库的基于API的编程工具,以及先进的分析、调试工具等组件。开发人员从现在开始就可以在英特尔DevCloud for oneAPI上对基于多种英特尔架构(包括英特尔至强®可扩展处理器、带集成显卡的英特尔酷睿™处理器、英特尔FPGA如英特尔Arria®、Stra
tix®等)的代码和应用进行测试。
oneAPI包含什么?oneAPI 的核心是英特尔的 Data Parallel C++ (DPC++),是建立在 C++ 和 Khronos SYCL 标准之上的语言。除了基于 LLVM/Clang 的 DPC++ 编译器工具链外,oneAPI 还包含了许多库,例如深度学习的 oneDNN、作为数学内核库的 oneMKL、用于分析的oneDAL、用于线程的oneTBB,以及用于视频处理的 oneVPL 等组件。
此外,oneAPI 渲染工具包中还有 OSPray、Open Image Denoise、Open Volume Kernel Library 等开源软件组件,作为它的底层硬件抽象机构,oneAPI Level Zero API 在上个月也达到了 1.0 版本。
伴随着迈入 1.0 稳定版,英特尔认为已经准备好提供跨加速器架构的通用开发者体验。oneAPI 1.0规范可从 spec.oneapi.com 获得。社区可以通过GitHub参与oneAPI的开发。
虽然鉴于英特尔的产品组合,oneAPI目前最常被谈论的是英特尔硬件,但作为第三方工作,Codeplay与英特尔合作,已经在努力将oneAPI/DPC++引入NVIDIA GPU。在基于CPU的执行方面,英特尔的oneAPI软件库已经在AMD CPU上运行良好(而且在很多情况下都有很好的性能!),甚至可以看到他们的软件库支持POWER和ARM架构的工作。
oneAPI为何重要?oneAPI是英特尔“软件先行”战略的重要体现,英特尔相信这一战略将定义和引领一个人工智能日益融合、异构及多架构的编程时代。
跨架构(CPU、GPU、FPGA及其他加速器)开发能力对于处理数据密集型工作负载极为重要,因为这种工作负载需要多种架构,这也将成为未来的常态。在今天,每一个硬件平台往往需要开发者维护独立的代码库,这些代码库需要使用不同的语言、库和软件工具进行编程。这是一项极其复杂和耗费时间的工作,会大大降低开发速度、抑制创新。
为了解决这一难题,oneAPI提供一个通用、开放的编程体验,让开发者可以自由选择架构,无需在性能上作出妥协,也大大降低了使用不同的代码库、编程语言、编程工具和工作流程所带来的复杂性,相对于今天的基于单个厂商的封闭式编程环境,oneAPI为开发者提供了极富竞争力、也更先进的可替代选择,帮助他们在保留现有软件投资的基础上,搭建一座无缝连接的桥梁,从而为未来的多架构世界创造更多丰富的应用程序。
结语英特尔已经深入开发者生态领域超过20年。英特尔拥有15000多名软件工程师和10000项与客户紧密合作的软件部署,是Linux kernel最大的贡献者,每年修改的代码超过50万行,为100多个操作系统进行过优化,并且拥有超过两千万活跃开发者的生态。
如今,在硬件领域不仅有恢复元气的AMD,还有几乎垄断了移动市场的Arm,和冉冉升起的RISC-V,因此,对于Intel来说,竞争压力也日益明显。
英特尔的这项oneAPI旨在把这几大硬件产品统一到一个软件开发平台之上,进而巩固自己的生态,构筑自己的竞争防线,渗透竞争对手的产品。这可能是Intel重视oneAPI的原因。
`