MPI-OpenMp混合

MPI-OpenMp混合,mpi,cluster-computing,openmp,Mpi,Cluster Computing,Openmp,我正在尝试在Linux双核集群上运行一个为MPI和OpenMP编写的程序 当我尝试设置OMP_NUM_THREADS变量时 export OMP_NUM_THREADS=2 我收到一条消息 OMP_NUM_线程:未定义的变量 我没有得到一个更好的性能与OpenMP。。。我还尝试: mpiexec -n 10 -genv OMP_NUM_THREADS 2 ./binary 还有omp_在程序中设置了_num_threads2,但没有得到任何改善。。。 有什么想法吗 更新:当我运行mpiexe

我正在尝试在Linux双核集群上运行一个为MPI和OpenMP编写的程序

当我尝试设置OMP_NUM_THREADS变量时

export OMP_NUM_THREADS=2
我收到一条消息

OMP_NUM_线程:未定义的变量

我没有得到一个更好的性能与OpenMP。。。我还尝试:

mpiexec -n 10 -genv OMP_NUM_THREADS 2 ./binary
还有omp_在程序中设置了_num_threads2,但没有得到任何改善。。。 有什么想法吗

更新:当我运行mpiexec-n1./binary和omp\u set\u num\u THREADS时,执行时间是4s,当我运行mpiexec-f machines-n1./binary时,执行时间是8s。

我建议先执行$echo omp\u num\u THREADS,然后进一步查询程序中的线程数,以确保正在生成线程。为此,请使用omp_get_num_threads函数。此外,如果您使用的是MacOS,那么此博客文章可以帮助您:
本文后面的部分将帮助您成功编译和运行混合程序。混合程序能否获得更好的性能在很大程度上取决于资源的竞争。过多地使用锁、屏障——会进一步降低程序的运行速度。如果你把你的代码发布在这里,让其他人看到并帮助你,那将是一件非常棒的事情

您应该将一些粗体文本更改为代码。谢谢:omp_get_num_threads为所有进程返回1…还尝试了mpicc-cc=gcc-fopenmp,但没有任何结果changed@orestiss您确定在并行区域中进行调用吗?@orestiss您还可以尝试在并行区域外调用omp_get_max_threads.omp_get_num_threadsin parallel region返回2个omp_get_max_线程。当我在启用openmp循环的情况下为1个进程运行程序时,我得到了一半的时间和更好的性能。当我运行更多进程时,速度会变慢。。。可能群集配置有问题