如何运行支持OpenMP Tools接口(OMPT)的Fortran OpenMP代码
解决方案
支持OMPT的Fortran&C/C++统一工具链
- LLVM 14及以上版本的全工具链:使用新版
flang-new作为Fortran编译器,搭配同版本的clang/clang++和LLVM OpenMP运行时,原生完整支持OMPT接口,无需额外适配。 - 英特尔oneAPI 2023.1及以上版本工具链:ifx(新一代英特尔Fortran编译器)搭配icx/icpx,内置
ompt.h头文件,配套的Intel OpenMP运行时完整支持OMPT,兼容Fortran/C/C++混合编译场景。 - GCC 13及以上版本工具链:libgomp从GCC 13开始提供实验性OMPT支持,编译时需额外链接
-lompt,但目前稳定性不如前两个方案。
手动指定OpenMP运行时的方法
如果你需要让Fortran编译器强制链接自定义的OMPT兼容运行时(比如LLVM libomp),可以按以下方式操作:
同工具链指定(推荐)
使用LLVM flang-new时,编译添加参数指定运行时即可,避免和系统默认libgomp冲突:
flang-new -fopenmp -fopenmp-runtime=llvm your_fortran_code.f90 -o openmp_program
运行方式和你之前C++的用法完全一致:OMP_TOOL_LIBRARIES=/home/path/to/libotter.so ./openmp_program
跨工具链强制链接(不推荐,仅作兼容参考)
如果要用gfortran等编译器链接LLVM libomp,编译时跳过默认OpenMP参数,手动指定头文件和链接路径:
gfortran your_fortran_code.f90 -I<LLVM安装路径>/include -L<LLVM安装路径>/lib -lomp -Wl,-rpath=<LLVM安装路径>/lib -o openmp_program
注意:跨工具链混用可能存在OpenMP接口不兼容的问题,优先选择同版本的工具链组合。
内容的提问来源于stack exchange,提问作者LonelyCat
相关产品推荐
相关产品推荐

