CSDN|软件对于英特尔意味着什么?( 二 )


CSDN|软件对于英特尔意味着什么?
本文插图
从软件研发角度来看 , 当 AI 计算迈入超异构时代时 , 软件更多的是基于跨平台开发 。 对此 , 谢晓清表示 , 只有通过跨平台才能够来简化应用程序开发者面向标量、矢量、矩阵、空间等多种架构的软件开发工作 , 且英特尔想要把复杂性包装在整个系统软件栈下面 。
基于此 , 在多架构、多功能芯片的超异构计算中 , 2019 年英特尔推出了令业界惊叹的统一跨架构编程模型 oneAPI 。 oneAPI 的到来可以高效帮助开发者简化异构编程的流程 , 在性能方面能够最大程度地加速 , 提高生产力 。 这一点也从于去年年底发布的 Beta 版本中得到了验证 。
oneAPI 架构解析
基于 Beta 版 , 我们发现 , oneAPI 包含了两个重要部分 , 一是跨架构的编程语言 Data Parallel C++(下文简称 DPC++) 。 它是英特尔全新开发的编程语言 , 而之所以开发最新的编程语言 , 谢晓清解释道 , 主要有两个层面考量:

  • 跨架构
oneAPI 平台的到来 , 它不仅仅是对英特尔的平台适用 , 对于所有愿意采用 oneAPI 规范的硬件厂商也可以完全按照 oneAPI 规范开发他们的编译器 。 由此 , 从并行开发的角度来看 , 基于 DPC++ 所开发的软件可实现跑在英特尔 CPU 的上 , 也能够部分跑在其他硬件厂商 GPU、AI、FPGA 上 , 且完全把计算独立到并行计算方式当中 。
  • 高性能
在性能方面 , 英特尔投资 C++ 编译器已有多年时间 , 最新的编程语言 DPC++ 是基于底层虚拟机 LLVM 格式进行开发的 。 正是因为有着多年 C++ 编译器经验积累 , DPC++ 支持英特尔多种矢量化编程技术 。 在最新的 Beta 版中 , 该语言的性能已经超越 OpenCL 的性能 , 类似于现在标准的 CPU 优化版本 。
同时 , 不同的硬件架构能够保证它是完全开放的 , 现在 oneAPI 的实现在英特尔平台上可以达到性能的最优化 , 这一点也保证了 DPC++ 与其他语言相比有非常大的技术优势 。
除了语言之外 , 正如上文所述 , 英特尔希望 DPC++ 是开放的 , 且 DPC++ 是建立在国际标准上的 , 对此 , 谢晓清表示 , 英特尔也发布了一些开放式规范与完整的扩展文档 , DPC++ 的大部分源码也在 GitHub 上开放(https://github.com/intel/llvm/tree/sycl/sycl) 。
开发者上手 oneAPI 指南
在编程模式上 , oneAPI支持 DPC++ 直接编程和基于 API 编程 。
对于开发者而言 , 想要上手 DPC++ , 其实没那么难 。 一方面 , DPC++ 语言本身非常接近于 C++ , 也比较接近 NVIDIA 的 CUDA 。 如果有 C++ 或 CUDA 相关开发经验的程序员 , 其学习曲线相对比较平缓 。
此外 , 谢晓清表示 , 在 oneAPI Beta 中也包含了大量工具来帮助开发人员更好地进行代码迁移 。
CSDN|软件对于英特尔意味着什么?
本文插图
相较于 DPC++ 直接编程 , 另一种基于 API 编程模式对于开发者来说 , 或更加友好 。 “他们可以简单利用英特尔提供的函数库接口就可以了” , 谢晓清说道 。 正如上图所示 , 这些函数库也包含了通用的 DPC++ 函数库、大量的数据计算库、多线程计算库、多媒体函数库、人工智能神经网络计算库等等 。 此外 , 英特尔基于此也提供了针对 AI 框架软件的优化 , 如 TensorFlow、PyTorch 等 。
「有了这些工具 , 开发者在英特尔的 CPU、GPU、FPGA 或是 AI 芯片中可以做到工作负载的自动加速 , 其代码在英特尔下一代产品上也可以百分之百得到兼容」 , 谢晓清如是说 。
oneAPI 机与遇
对于业界及开发者来说 , 欲善其事 , 必利其器 , oneAPI 的成功落地无疑是一款能够帮助大家提高生产效率的优秀工具 。 不过 , 在这款极具时代意义的工具背后 , oneAPI 的研发也经过了多重的挑战 。


推荐阅读