景派HPC | Intel oneAPI 高性能计算应用

2024-01-18 17:21


01



           oneAPI简介           





图片

英特尔® oneAPI 基础和 HPC 工具包是一套全面的开发工具,可用于快速轻松地构建现代代码,让高性能计算 (HPC) 平台中的最新英特尔® 处理器发挥最高性能。

结合英特尔® oneAPI 基础工具包的核心工具集,并辅以专注于 HPC 的工具,通过矢量化、多线程、多节点、内存优化和加速器卸载方面的最新技术简化代码的创建 。

oneAPI前身叫Intel parallel studio,相对的优势在于



1.oneAPI是一个开放标准
2.oneAPI支持跨系统跨平台
3.oneAPI上手更加简单,有简化的编程模型和文档
4.有更庞大的生态,多种第三方库和软件
5.oneAPI免费使用,Intel parallel studio是商业软件
02



      oneAPI的主要组成     




图片

03



      oneAPI的适用对象      






1.构建 HPC、企业、 AI 和云解决方案的 C、 C++、 Data Parallel C++、 Fortran、Python、 OpenMP 和 MPI软件开发人员与架构师。

2.希望最大程度提高软件的性能和灵活性,以支持当前和未来英特尔®平台上各种架构的开发人员。

图片

04



             异构计算             




异构计算是指系统同时使用多种处理器或者核心,这些系统通过增加不同的协处理器(Coprocessors)提高整体的性能或者资源的利用率1,这些协处理器可以负责处理系统中特定的任务,例如用来渲染图形的 GPU 以及用来挖矿的 ASIC 集成电路。

图片

图片来源:https://new.qq.com/omn/20210204/20210204A0DTAD00.html

总结:配合默契,发挥各自所长

05



   异构计算程序的基本结构   




图片

图片

* 其他的名称和品牌可能是其他所有者的资产

GPU执行的内核函数:实现两个向量相乘

图片

图片

图片来源:https://developer.nvidia.com/blog/even-easier-introduction-cuda/

* 其他的名称和品牌可能是其他所有者的资产

06



     

DPC++ 兼容性工具

     




最大限度地加速代码迁移*

属于oneAPI的子集,协助开发人员一次性将用CUDA**编写的代码迁移至 DPC++,尽可能生成人类可读的代码。

图片

* 其他的名称和品牌可能是其他所有者的资产

07



          DPC++ 编译         




• 需要加上头文件

图片

• 目前可使用dpcpp作编译

图片

• 在后续版本中,dpcpp可能将失效,取而代之的是icpx –fsycl

图片

* 其他的名称和品牌可能是其他所有者的资产

08



             VASP应用           




在makefile.include文件中,设置C编译器为icx即可

图片

* 其他的名称和品牌可能是其他所有者的资产

目前未发现icc与dpc++有明显差异,还需要进一步探索

图片

* 其他的名称和品牌可能是其他所有者的资产

09



   DPC++ Compatibility Tool   






• --in-root=<dir>: 指定需要迁移的文件的根目录路径

--out-root=<dir>: 指定生成文件的根目录路径

-p <directory of compile database *.json file>

--process-all : 迁移并复制—in-root目录下的所有文件到—out-root目录

以注释的形式保留原代码

--extra-arg=<string> : 指定编译选项(dpct -- -help 查看支持的编译选项)   (可以使用 dpct --help 检索有关所有可用选项的详细信息)

图片

* 其他的名称和品牌可能是其他所有者的资产

向量乘法的代码迁移

图片

图片

图片

图片

10



            oneAPI 库           




例:oneAPI MKL(Math Kernel Library)是oneAPI在高性能计算领域的一个常用的库,用于加速数值计算和线性代数操作。与MKL库不同,oneAPI MKL是一个跨平台、通用的C/C++数学库,不仅支持MATLAB,还支持其他编程语言和操作系统。

安装vasp:



1.使用oneapi安装vasp:修改makefile,使用CC=icc,加载oneapi库mpi、mkl和compiler


2.使用gcc安装vasp:安装gcc,安装openmpi,安装openblas,安装lapack,安装scalapack,安装fftw,修改makefile,使用CC=gcc,加载以上库或寻找对应路径

文章原作者:李杰森   佛山科学技术学院化学工程系   景派科技技术顾问
修改:周浩炜   景派科技研发部
排版:景派科技 市场部

图片