Intel oneAPI学习笔记之基本概念&六大工具包一览
Intel oneAPI定义
oneAPI是什么?
Intel oneAPI 是一个跨行业、开放、基于标准的统一的编程模型,它为跨 CPU、GPU、FPGA、专用加速器的开发者提供统一的体验,包含两个组成部分∶ 一项行业计划和一款英特尔beta 产品。
oneAPI 开放规范基于行业标准和现有开发者编程模型,广泛适用于不同架构和来自不同供应商的硬件。oneAPI 行业计划鼓励生态系统内基于oneAPI规范的合作以及兼容 oneAPI的实践。
英特尔 oneAPI 产品是英特尔基于oneAPI 的实现,它包括了 oneAPI 标准组件如直接编程工具(Data Parallel C++)、含有一系列性能库的基于 API 的编程工具,以及先进的分析、调试工具等组件。开发人员从现在开始就可以在英特尔 DevCloud for oneAPI 上对基于多种英特尔架构(包括英特尔至强可扩展处理器、带集成显卡的英特尔酷睿处理器、英特尔 FPGA 如英特尔 Arria、Stratix 等)的代码和应用进行测试。
总的来说,单说 Intel oneAPI 只是一个编程模型、一个行业规范,二 Intel oneAPI 相关产品如 Intel oneAPI Base Toolkit、Intel oneAPI HPC Toolkit以及Intel AI Analytics Toolkit则是基于 Intel oneAPI 这一编程模型开发的产品,可以在这里下载https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html
oneAPI 开放式规范包括什么?
oneAPI 这一开放式规范包括一种跨架构的编程语言 Data Parallel C++(DPC++)、一套用于API编程的函数库以及底层硬件接口(oneAPI Level Zero)。有了这些组件,英特尔和其它企业就能创建他们自己的 oneAPI 实现来支持他们自己的产品,或基于 oneAPI 进行新产品开发。
Data Parallel C++是什么?
DPC++ 是基于大众熟悉的 C 和 C++ 语言,专门为 oneAPI 设计的主要编程语言。它融合了来自 Kronos Group 的 SYCL ,从而可以支持跨 CPU 和加速器上的数据并行和异构编程,目的是为了简化编程以及提高代码在不同硬件上的可重用性,同时能根据特定的加速器进行调优。DPC++项目向公众开放,并将通过开发者们的共同努力不断发展。
也就是说,DPC++其实和CUDA语言类似的,也能实现不同硬件上的异构编程。
OpenCl 是什么?
(全称Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
CUDA是什么?
- 在 NVIDIA 图形处理器上提供标准C编程语言
- 为在支持 CUDA 的 NVIDIA GPU 上进行并行计算提供了统一的软硬件解决方案
- 支持 CUDA 的 GPU 支持并行数据缓存和线程执行管理器
- 标准 FFT 和 BLAS 数值程序库
- 针对计算的专用 CUDA 驱动
- 经过优化的,从中央处理器(CPU)到支持 CUDA 的 GPU 的直接上传、下载通道
- CUDA 驱动可与 OpenGL 和 DirectX 图形驱动程序实相互操作
- 支持 Linux 32位/64位、MacOS 32位/64位以及Windows32位/64位 操作系统
- 为了研究以及开发语言的目的,CUDA 提供对驱动程序的直接访问,以及汇编语言级的访问。
- CUDA 兼容的 GPU 包括很多:从低功耗的笔记本上用的 GPU 到高性能的多 GPU 的系统。
不同的 oneAPI 工具包都包含了什么?
目前 oneAPI 官网中有六个工具包,几乎涵盖了高性能计算、物联网、渲染、人工智能、大数据分析这些领域。
Intel® oneAPI Base Toolkit
Intel® oneAPI Base Toolkit 这个工具包是 oneAPI 其他产品的基础,包含了几个我们在 Parallel Studio中常用的软件以及 icc 编译器、MPI、DPCPP 等。这个工具包使开发人员都可以跨CPU、GPU和FPGA构建、测试和部署以性能为中心、以数据为中心的应用程序。该工具包包括以下组件:
- Intel® oneAPI Collective Communications Library
- Intel® oneAPI Data Analytics Library
- Intel® oneAPI Deep Neural Networks Library
- Intel® oneAPI DPC++/C++ Compiler
- Intel® oneAPI DPC++ Library
- Intel® oneAPI Math Kernel Library
- Intel® oneAPI Threading Building Blocks
· Intel® oneAPI Video Processing Library - Intel® Advisor
- Intel® Distribution for GDB*
- Intel® Distribution for Python*
- Intel® DPC++ Compatibility Tool
- Intel® FPGA Add-on for oneAPI Base Toolkit
- Intel® Integrated Performance Primitives
- Intel® VTune™ Profiler
Intel® oneAPI HPC Toolkit
Intel® oneAPI HPC Toolkit 这个工具包提供可扩展的快速C ++、Fortran、OpenMP和MPI应用程序。从某种程度上来说 Intel® oneAPI Base Toolkit 加 Intel® oneAPI HPC Toolkit 基本就包含Intel Parallel Studio XE的功能了,关键是免费,实在太好了。该工具包包括以下组件:
- Intel® oneAPI DPC++/C++ Compiler
- Intel® C++ Compiler Classic
- Intel® Cluster Checker
- Intel® Fortan Compiler (Beta)
- Intel® Fortran Compiler Classic
- Intel® Inspector
- Intel® MPI Library
- Intel® Trace Analyzer and Collector
Intel® oneAPI IoT Toolkit
Intel® oneAPI IoT Toolkit 这个工具包主要用于建立可在网络边缘运行的高性能、高效、可靠的解决方案,属于物联网领域。该工具包包括以下组件:
- Intel® oneAPI DPC++/C++ Compiler
- Intel® C++ Compiler Classic
- Intel® Inspector
- Eclipse* IDE
- IoT Connection Tools
- Linux* Kernel Build Tools
Intel® oneAPI Rendering Toolkit
Intel® oneAPI Rendering Toolkit 这个工具包主要用于创建高性能、高保真的可视化应用程序,适用于各种渲染领域。该工具包包含以下组件:
- Intel® Embree
- Intel® Open Volume Kernel Library
- Intel® Open Image Denoise
- Intel® OpenSWR
- Intel® OSPRay
- Intel® OSPRay Studio
- Intel® OSPRay for Hydra*
Intel® AI Analytics Toolkit
重头戏来了,Intel® AI Analytics Toolkit 这个工具包提供优化的深度学习框架和高性能Python库,加速端到端机器学习和数据科学库。这些组件是使用 oneAPI 库构建的,用于低级计算优化。这可以最大化从预处理到机器学习的性能。使用这个工具包,我们可以:
- 在Intel XPUs 上交付高性能深度学习(DL)训练,并使用Intel优化的DL框架(TensorFlow和PyTorch)、预先训练的模型和低精度工具,将快速推理集成到您的AI开发工作流中。
- 使用计算密集型 Python 包:Modin*、NumPy、Numba、scikit-learn和为英特尔优化的 XGBoost 实现数据分析和机器学习工作流的 drop-in 加速。
- 获得直接访问英特尔分析和 AI 优化,以确保您的软件一起无缝工作。
该工具包工具包包括以下组件:
- Intel® Distribution for Python*
- Intel® Optimization for PyTorch*
- Intel® Optimization for TensorFlow*
- Intel® Optimization of Modin* (available through Anaconda only)
- Intel® Low Precision Optimization Tool
- Model Zoo for Intel® Architecture
CUDA 是不支持Intel和AMD显卡加速的,使用此工具包,那就相当于可以用 Intel 的显卡来加速Pytorch啊Tensorflow以及其他 AI 运算了,这可能是Intel下的一大步棋,接下来我会重点体验这个工具包。
Intel® Distribution of OpenVINO™ Toolkit
Intel® Distribution of OpenVINO™ Toolkit 这个工具包用于从设备到云部署高性能推理应用程序。该工具包基于卷积神经网络(CNN),可将工作负载扩展到整个英特尔®硬件(包括加速器),并最大限度地提高性能。该工具包可以:
- 使深度学习推理从边缘到云
- 加速人工智能工作负载,包括计算机视觉、音频、演讲,语言,和推荐系统
- 支持异构执行在英特尔架构和AI加速器CPU、iGPU,英特尔Movidius视觉处理单元(VPU)、FPGA,和英特尔高斯 & 神经加速器(Intel® GNA)
- 使用一个通用的API加速投放市场的时间通过图书馆的功能和preoptimized内核包括优化OpenCV的呼声,OpenCL内核和其他行业工具和库。
该工具包包含以下组件:
- Model Optimizer
- Deep Learning Workbench
- Inference Engine
- Deployment Manager
- OpenCV*
- DL Streamer
- Post Training Optimization Tool
在哪获取 Intel oneAPI 的各种资源?
Intel oneAPI 推出发行并不久,非官方相关的资料很少,但是好在 Intel 足够重视,在 oneAPI 官网基本能找到所有资料。
各种工具包还是得去 Intel 官网下载,这里我推荐这个网址(https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html),里面可以下载所有的工具包。
我的了解还不是很多,如果大家有其他资源欢迎分享。