oneAPI简介
英特尔® oneAPI 基础和 HPC 工具包是一套全面的开发工具,可用于快速轻松地构建现代代码,让高性能计算 (HPC) 平台中的最新英特尔® 处理器发挥最高性能。
结合英特尔® oneAPI 基础工具包的核心工具集,并辅以专注于 HPC 的工具,通过矢量化、多线程、多节点、内存优化和加速器卸载方面的最新技术简化代码的创建 。
oneAPI前身叫Intel parallel studio,相对的优势在于
oneAPI的主要组成
oneAPI的适用对象
1.构建 HPC、企业、 AI 和云解决方案的 C、 C++、 Data Parallel C++、 Fortran、Python、 OpenMP 和 MPI软件开发人员与架构师。
2.希望最大程度提高软件的性能和灵活性,以支持当前和未来英特尔®平台上各种架构的开发人员。
异构计算
图片来源:https://new.qq.com/omn/20210204/20210204A0DTAD00.html
总结:配合默契,发挥各自所长
异构计算程序的基本结构
* 其他的名称和品牌可能是其他所有者的资产
GPU执行的内核函数:实现两个向量相乘
图片来源:https://developer.nvidia.com/blog/even-easier-introduction-cuda/
* 其他的名称和品牌可能是其他所有者的资产
DPC++ 兼容性工具
最大限度地加速代码迁移*
属于oneAPI的子集,协助开发人员一次性将用CUDA**编写的代码迁移至 DPC++,尽可能生成人类可读的代码。
* 其他的名称和品牌可能是其他所有者的资产
DPC++ 编译
• 需要加上头文件
• 目前可使用dpcpp作编译
• 在后续版本中,dpcpp可能将失效,取而代之的是icpx –fsycl
* 其他的名称和品牌可能是其他所有者的资产
VASP应用
在makefile.include文件中,设置C编译器为icx即可
* 其他的名称和品牌可能是其他所有者的资产
目前未发现icc与dpc++有明显差异,还需要进一步探索
* 其他的名称和品牌可能是其他所有者的资产
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 检索有关所有可用选项的详细信息)
* 其他的名称和品牌可能是其他所有者的资产
向量乘法的代码迁移
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,加载以上库或寻找对应路径