oneapi

什么是oneapi

oneAPI是一种开放的、基于标准的规范,支持多种架构类型,包括但不限于GPU、CPU和FPGA。该规范既有直接编程范例,也有基于API的编程范例。

../../../_images/f1-oneapi-specification-stack.png

直接编程模型,带有SYCL*(发音为“sickle”)的C++来自于 Khronos Group 。该组织为各种用例提供开放软件标准,包括众所周知的标准OpenGL、WebGL、OpenCL™等。 直接编程模型提供了一种灵活的现代C++语言,允许开发人员编写并行算法并将其集成到现有的C++代码库中。然后,编译器可以采用这种表达的并行性,并以CPU、GPU、FPGA和其他硬件为目标。

该规范定义了一组库接口,这些接口通常用于各种工作流。例如,oneAPI数学内核库(Math Kernel Library)(oneMKL)规范是一个开放、稳定的API,使用户能够利用通用的、可并行的数学操作。 oneAPI深度神经网络库(Deep Neural Network Library)(oneDNN)API规范公开了深度学习应用程序中使用的基本构建块。

正如您在下面所看到的,该规范为几个行业标准工作负载提供了各种库接口。

../../../_images/f2-oneapi-spec-elements.png

oneAPI的另一个重要方面是,它可以与其他基于计算的开放规范(如OpenMP)共存。这种互操作性对于那些希望迁移到更灵活、基于加速器的方法中的利用现有并行性的开发人员来说非常重要。

虽然拥有一个开放的规范听起来很棒,但在实践中,开发人员需要在规范之上构建强大的实现。幸运的是,为满足这一需要,已经作出了各种努力。

有几种编译器可以使用C++和SYCL,包括Codeplay、华为、英特尔和海德堡大学的实现。这些实现可以使用带有SYCL代码的C++,并针对各种后端,包括CPU和AMD/Intel/NVIDIA GPU。

../../../_images/f3-sycl-for-multiple-backends.jpg ../../../_images/f4-sycl-heterogeneous-compute-integration.jpg

许多基于API的库规范都有支持x86 CPU和Intel GPU的开源实现。英特尔提供了同时使用CPU和GPU硬件的规范实现。一些库API规范,特别是oneDNN库,由Fujitsu/RIKEN实现, 以启用ARM CPU平台。oneMKL库的部分规范由Codeplay实现,以支持NVIDIA GPU上的oneMKL基本线性代数子程序(BLAS)库。

oneapi工具包

使用一流的编译器、性能库、框架以及分析和调试工具,在CPU和XPU上构建、分析和优化高性能、跨体系结构的应用程序。 oneAPI有六个工具包,几乎涵盖了高性能计算、物联网、渲染、人工智能、大数据分析这些领域。

Intel® oneAPI Base Toolkit: “Intel® oneAPI基本工具包”(Base Kit)是一套核心工具和库,用于跨各种体系结构(CPU、GPU和FPGA)开发高性能、以数据为中心的应用程序。 它采用了业界领先的C++编译器,实现了SYCL*,这是C++在异构计算方面的发展。 可以使用其他工具包来补充基本工具包,比如Intel® HPC Toolkit(包括Intel® Fortran编译器, OpenMP* GPU offload和Intel® MPI库),Intel® Rendering Toolkit(渲染和光线跟踪,用于高保真可视化应用程序)

Intel® HPC Toolkit:Build, analyze, and scale applications across shared- and distributed-memory computing systems. 高性能计算(HPC)是人工智能、机器学习和深度学习应用程序的核心。“Intel® HPC Toolkit”(HPC工具包)利用矢量化、多线程、多节点并行化和内存优化方面的最新技术, 为开发人员提供构建、分析、优化和扩展HPC应用程序所需的功能。 此工具包是“Intel® oneAPI Base Toolkit”的附加组件,是实现完整功能所必需的。它包括功能强大的以数据为中心的库、高级分析工具和Intel® Python*发行版,以实现核心Python数值、科学和机器学习包的近乎本地代码性能。

AI Tools: 英特尔的人工智能工具(以前称为Intel® AI Analytics Toolkit)为数据科学家、人工智能开发人员和研究人员提供了熟悉的Python*工具和框架,以加速英特尔®架构上的端到端数据科学和分析管道。 这些组件是使用oneAPI库构建的,用于低级计算优化。人工智能工具通过机器学习最大限度地提高预处理的性能,并为高效的模型开发提供互操作性。使用AI工具,您可以: 使用针对TensorFlow*和PyTorch*的英特尔®优化深度学习框架、预训练模型和模型优化工具,在英特尔®CPU和GPU上进行训练,并将快速推理集成到您的人工智能开发工作流程中; 使用计算密集型Python包、Modin*、scikit-learn*和XGBoost,实现数据预处理和机器学习工作流的加速下降; 直接访问英特尔的分析和人工智能优化,确保您的软件无缝配合。

Intel® Distribution of OpenVINO™ toolkit (Powered by oneAPI): OpenVINO™工具包是一个开源工具包,它以更低的延迟和更高的吞吐量加速人工智能推理,同时保持准确性,减少模型占用,以及 优化硬件使用。 它简化了计算机视觉、大型语言模型(LLM)等领域的人工智能开发和深度学习集成, 以及生成人工智能。​

Intel® Rendering Toolkit:Create high-fidelity, photorealistic experiences that push the boundaries of visualization. “Intel® 渲染工具包”(Render Kit)是一套功能强大的开源渲染、光线跟踪、去噪和路径引导库,用于人工智能合成数据生成、数字孪生、高保真和高性能可视化以及沉浸式内容创建。 使用这些库以及Intel CPU和GPU硬件,包括可扩展的解决方案堆栈,实现优化的渲染性能。 需要这个产品的包括:人工智能、机器人和自动驾驶汽车开发人员,他们依靠合成数据生成进行模拟和感知; 依赖合成数据来表示任何情况、验证数学模型或训练机器学习模型的机器学习和深度学习应用程序; 在能够处理数万亿字节大小数据集的HPC分布式渲染解决方案中使用情境模拟或需要最高保真度图像的研究科学家; 创作者、开发人员和艺术家,他们需要创造身临其境的体验,并将受益于从工作站到渲染场的统一工作流程; 在产品生命周期管理中使用精确数字双胞胎的产品设计师和工程师。

Intel® System Bring-up Toolkit: 减少从预硅到生产所需的时间可能是一个巨大的竞争优势。无论您是设备制造商、系统集成商还是物联网软件提供商,“英特尔®系统启动工具包”都能为开发人员提供加速系统启动和优化所需的功能。 此调试、跟踪以及电源和性能分析工具的集合允许开发人员快速调试和分析整个平台,包括:硬件;固件、UEFI、BIOS;操作系统内核、设备驱动程序等

Intel® oneAPI Base Toolkit和HPC Toolkit

原来用于编译intel程序的“Intel全家桶”指的是Intel Parallel Studio XE,里面集成了C/C++/Fortran语言的编译器(分别是icc、icpc、ifort)、MKL数学库及各种高效调试工具,甚至还有Intel MPI, 可以说是编译量化软件最常用的一套“装备”。然而从2021年开始Intel不再提供旧版Parallel Studio XE下载页面,而是改成了(或称升级成了)oneAPI, oneapi包括上述6个套件。

但Base Toolkit包里含icc、icpc编译器和MKL库,却不含ifort。而HPC Toolkit包里含icc、icpc、ifort,却不含MKL库。显然下载任一个包都无法完全替代以前的“全家桶”。 因此平台采用安装Intel Base Toolkit和HPC Toolkit方法,来替换以前的Parallel Studio XE。

../../../_images/basetoolkit.png

oneapi基本套件包括如下组件:

Intel® oneAPI DPC++/C++ Compiler:为CPU、GPU和FPGA目标架构编译和优化C++和SYCL代码。

Intel® Distribution for Python* (separate download required):通过加速核心Python数字、科学和机器学习包,实现接近本地的代码性能。

Intel® DPC++ Compatibility Tool:使用此助手迁移遗留的CUDA代码以打开多体系结构SYCL代码。

Intel® VTune™ Profiler:发现并优化CPU、GPU和FPGA系统的性能瓶颈。

Intel® Advisor:用于高效矢量化、线程化和卸载到加速器的设计代码。

Intel® Distribution for GDB*:启用SYCL、C、C++和Fortran代码的深度系统范围调试。

Intel® oneAPI DPC++ Library:使用这些关键的生产力算法和功能加快数据并行工作负载。

Intel® oneAPI Threading Building Blocks:使用此高级线程和内存管理模板库简化并行性。

Intel® oneAPI Math Kernel Library:加速数学处理例程,包括矩阵代数、快速傅立叶变换(FFT)和矢量数学。

Intel® Integrated Performance Primitives:加快成像、信号处理、数据压缩、加密等方面的性能。

Intel® oneAPI Data Analytics Library:提高机器学习和数据分析性能。

Intel® oneAPI Deep Neural Network Library:在具有性能优化构建块的英特尔CPU和GPU上开发快速神经网络。

Intel® oneAPI Collective Communications Library:实现优化的通信模式,将深度学习模型训练分布在多个节点上。

Intel® FPGA Add-on for oneAPI Base Toolkit (separate download required): 对这些可重新配置的硬件加速器进行编程,以加快专门的、以数据为中心的工作负载。需要安装基本套件。

oneapi hpc套件包括如下组件:

Intel® oneAPI DPC++/C++ Compiler:为CPU、GPU和FPGA目标架构编译和优化标准C++和SYCL*代码。

Intel® Fortran Compiler:为CPU和GPU体系结构编译和优化标准Fortran代码。

Intel® Fortran Compiler Classic:此基于标准的Fortran编译器包括对OpenMP的支持,它为现有的以CPU为中心的工作流提供了连续性。

Intel® MPI Library:在CPU和GPU架构以及各种网络结构上提供灵活、高效、可扩展的集群消息。

Intel® Inspector:提供可靠的应用程序。在设计周期的早期定位和调试线程、内存和持久内存错误,以避免以后出现代价高昂的错误。

Intel® Trace Analyzer and Collector:用于集群应用程序的MPI评测。

集群中的oneapi

安装列表

序号

集群

版本

模块

位置

1

hpckapok1

2024.1.0

oneapi/2024.1

/share/software/compilers/oneapi/2024.1.0

2

hpckapok1

2022.1.1

oneapi/2022.1.1

/share/software/compilers/oneapi/2022.1.1

3

hpckapok1

2021.3.0

/share/software/compilers/oneapi/2021.3.0

4

hpckapok2

2024.1.0

compiler/oneapi/2024.1.0

/public/software/compiler/intel/2024.1.0

5

hpckapok2

2022.1.1

compiler/oneapi/2022.1.1

/public/software/compiler/intel/2022.1.1

6

hpckapok2

2021.3.0

compiler/intel/2021.3.0 mpi/intelmpi/2021.3.0

/public/software/compiler/intel/2021.3.0

使用方法

1.使用module load 加载模块。

2.如果是2022及以上版本,可以直接执行setvars.sh,比如:source /share/software/compilers/oneapi/2022.1.1/setvars.sh。

3.执行上述命令会加载所有Intel® oneAPI Base Toolkit和HPC Toolkit的套件,比如编译器,mpi等(2021版除外)。

4.集群1的2021版在安装目录下由modulefiles文件夹,可通过类似如下命令加载相应工具:

module use /share/software/compilers/oneapi/2021.3.0/compiler/latest/modulefiles  #加载文件目录
module av    #查看可用module
module load compiler  #加载编译器

5.2024版本已经不再使用icc和icpc,改为使用icx和icpx,如果需要这两个命令进行编译,请使用2022版或者更旧的版本。

参考资料

  1. oneapi

  2. Intel® Toolkits

Contributor:mzliu


最后更新: 2025 年 06 月 30 日