本文转载自InfoQ
原标题:《英特尔副总裁 Bill Savage:跨架构编程的开放 oneAPI 是替代 CUDA 和 OpenCL 的选项》
采访嘉宾介绍:
William (Bill) Savage,英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理。
Alice Chan,英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理。
在2018年底的英特尔架构日上,英特尔首席架构师Raja Koduri对外公布了公司正在着力研发的一件“大事”:一个名为oneAPI的软件编程框架。oneAPI是英特尔在通用并行计算架构上的最新尝试,也是英特尔旨在应对硬件芯片架构未来日益多元化问题的前瞻之作。顾名思义,oneAPI旨在提供一个跨不同硬件架构的统一编程接口,使开发者可以随意在底层硬件之间切换和优化,它不仅支持英特尔的CPU、GPU、FPGA以及各种AI和其他应用的硬件加速器,也对外部所有硬件厂商开放。oneAPI的口号是“让每一个晶体管都派上用场”,这也很好地总结了oneAPI的终极目标。
当然,支持并行/异构计算的统一编程框架并非英特尔独一家,在此之前开发者群体更为熟悉的是英伟达的CUDA和由苹果发起的开放规范 OpenCL。其中CUDA完全由英伟达独有,只支持英伟达的GPU,源码和编程语言并不对外开放,但由于完整的配套生态、很好的易用性和高效的更新迭代速度而广受机器学习应用开发者和框架开发者欢迎。OpenCL相比CUDA好的地方在于它是一个开放的编程规范且支持所有硬件架构,但缺点比优点更多,OpenCL虽有“开放”的美名,但由于实现要靠各大硬件厂商,无法保证质量和更新速度,目前只有AMD的支持做的相对成熟,其他架构支持做的不太好;为了支持不同硬件,存在很多冗余代码,硬件利用率不高;在英伟达的卡上性能不如CUDA,在非英伟达的卡上驱动质量参差不齐;异构代码编写复杂且文档不够清晰。
随着越来越多新芯片架构和编程模型的出现,未来的通用并行计算市场仍存在很多不确定因素,CUDA和OpenCL肯定不是终点。按照英特尔规划的技术路线图,oneAPI测试版将在今年第四季度开放给开发者。在英伟达和CUDA已经占据先发优势的前提下,英特尔的oneAPI是否能激起新的浪花?同为开放规范,OpenCL已经遇到的问题是否也会成为oneAPI的挑战?这些问题让我们更加期待oneAPI测试版本的推出。
在此之前,开发者对于oneAPI还有许多好奇:与CUDA、OpenCL相比,英特尔的oneAPI有何不同之处?具备哪些优势?oneAPI的架构是如何设计的?怎么做到让不同硬件架构发挥最佳性能?oneAPI的推出可能会给开发者带来什么变化?在英伟达和CUDA已经占据先发优势的前提下,英特尔计划怎么打造oneAPI的开发者生态和社区?
近日,InfoQ记者有幸在英特尔北京总部专访了英特尔架构、图形与软件部副总裁兼计算性能与开发者产品部门总经理William(Bill)Savage和英特尔架构、图形与软件部副总裁兼编译器与语言部门总经理Alice Chan,围绕oneAPI的架构设计、定位、与现有同类产品的差异点和未来规划做了深入探讨。
oneAPI 既是开放规范也是产品
英特尔架构、图形与软件部副总裁Bill Savage介绍oneAPI
InfoQ:首先请您对oneAPI做一个总体的介绍。
Bill Savage:oneAPI始于硬件架构,尤其是数据中心。在数据中心里,今天的架构并不只局限于CPU,还有GPU、FPGA以及专用的AI芯片。这些分别对应着标量(Scalar)、矢量(Vector)、矩阵(Matrix)和空间(Spatial)的不同计算架构,我们称之为SVMS架构。我们提出的oneAPI是一种统一的软件架构,它能够跨不同的架构、跨不同的厂商,包括除英特尔之外的其他硬件厂商。总的来讲,oneAPI旨在从软件层面简化和统一标量、矢量、矩阵和空间的不同硬件架构。
oneAPI包含两部分,第一部分是 跨架构的编程语言Data Paral