【发布时间】:2020-08-01 20:24:06
【问题描述】:
我正在尝试通过 Amazon EC2 在一些虚拟机上部署 OpenMP/MPI 项目。每个虚拟机都运行 Ubuntu 16.04,目前我有:
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 和相对的mpich。
我在 Ubuntu 18.04 上使用 gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 正确测试了我的项目。基本上,我将 OpenMP 数组归约与自定义归约运算符一起使用,据我所知,这从 OpenMP 4.5 开始可用。这确实是一个问题,因为在我的虚拟机上我收到以下错误:error: ‘array1_test’ has invalid type for ‘reduction’。
我认为我简单的升级就足够了 (following this),但之后 MPI 抱怨 Please use the same version of GCC and g++ for compiling MPICH and user MPI programs。我尝试重新安装 mpich 但没有成功。
我正在使用 cmake 进行编译。链接 MPI 如下:
link_libraries(${MPI_CXX_LIBRARIES})
if(MPI_CXX_COMPILE_FLAGS)
set_property(GLOBAL PROPERTY COMPILE_FLAGS "${MPI_CXX_COMPILE_FLAGS}")
endif()
if(MPI_CXX_LINK_FLAGS)
set_property(GLOBAL PROPERTY LINK_FLAGS "${MPI_CXX_LINK_FLAGS}")
endif()
我做错了什么,如何正确升级 OpenMP 而不会弄乱 MPI 配置?
【问题讨论】:
-
您必须将编译器升级到支持您要使用的 OpenMP 功能的版本。如果 MPI 的东西使用不同的编译器,那也必须升级才能匹配。
-
正如我所说,我已经尝试将
gcc升级到版本 7.4.0。mpicc也已更新,因为它已链接到它。遗憾的是,我仍然收到 MPI 错误。 -
该错误消息听起来确实像是 MPI 工具链中的某些内容没有升级。
-
我尝试重新安装 mpich 但显然也没有用。也许值得一提的是我正在使用
cmake进行编译。我已经更新了问题。
标签: c++ compiler-errors mpi openmp