heterogeneous
软件框架决定了软件的生命力,其最主要特征是软件功能的适应性,具体包括理论建模支撑、计算模块、 逻辑流程控制和数据分析等模块.随着计算机硬件特性和软件编程语言的发展,许多科学计算软件已不能很好 地适应应用需求,大部分问题是软件的原框架受到冲击导致的.如原有程序采用 Fortran语言编写,后来为了适应 新的运行环境改用 C++实现大规模设计,又需要新的 C++11 改进编程效率,导致软件框架不稳定.其次早期采用 OpenMP 为主的多 CPU 核计算模型,需要转为异构 OpenCL 计算模式;另外由于新的加速设备,原来的 CUDA 程 序可能需要改造为 OpenACC 并行编程方式.以上问题在高性能计算软件的设计中普遍存在,内在原因为软件并 行计算模式较多,硬件体系结构差异大. 对于高性能计算软件来说,优秀的软件框架可提高编程开发效率,适应新的软件需求和用户服务推广.如何 以不变的设计原则应对多变的软件需求是一个关键问题.对于软件框架来说,分层式设计常用方式如通用并行 软件 JASMIN 和格点 QCD 应用软件 Chroma.但从异构计算这方面考虑,面向异构计算环境有机统一计算模拟 的各方面是根本性解决问题,如统一处理器核计算、主存和加速内存管理和网络通信等三大模块,屏蔽异构计 算带来的差异性可以使上层软件设计保持不变性;当前 Khronos 组织发表的 SYCL 规范[36]和 Intel oneAPI[37]正 在建立面向异构计算环境的统一编程接口,SYCL 底层基于 OpenCL 跨平台异构 API 规范,基于 SYCL 的 DPC++ 作为 Intel oneAPI 的主体,已经实现了 Intel GPU 和 Nvidia GPU 的异构加速计算;针对 AMD GPU 常用选择 ROCm 框架下的 HIP 编程方式,而 HIP 实际上能够兼容 CUDA 在 Nvidia GPU 上编译运行,另外,值得注意的是,基于 HIP 也可以实现 SYCL 统一规范[38].
libiomp5,libgomp,libomp分别是intel、gnu和clang的OpenMP runtime library
-acc