我正在尝试在Linux双核集群上运行为MPI和OpenMP编写的程序。
当我尝试设置OMP_NUM_THREADS
变量
export OMP_NUM_THREADS=2
我收到了一条消息
OMP_NUM_THREADS:未定义的变量。
使用OpenMP我没有更好的表现......我也尝试过:
mpiexec -n 10 -genv OMP_NUM_THREADS 2 ./binary
程序中的和omp_set_num_threads(2)
,但它没有变得更好......
有什么想法吗?
更新:当mpiexec -n 1 ./binary
运行omp_set_num_threads(2)
时,执行时间为4秒,当我运行mpiexec -f machines -n 1 ./binary
时,执行时间为8秒。
答案 0 :(得分:0)
我建议首先进行$echo OMP_NUM_THREADS
并进一步查询程序中的线程数,以确保生成线程。使用omp_get_num_threads()
功能。此外,如果您使用的是MacOS,那么此博文可以提供帮助:
https://whiteinkdotorg.wordpress.com/2014/07/09/installing-mpich-using-macports-on-mac-os-x/
本文的后半部分将帮助您成功编译和运行混合程序。混合程序是否获得更好的性能取决于资源的争用。过度使用锁,障碍 - 可能会进一步降低程序的速度。如果您在此处发布代码供其他人查看并实际帮助您,那将会很棒。