MPI OpenMp混合

扫码查看
本文介绍了MPI OpenMp混合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

当我尝试设置OMP_NUM_THREADS变量时

export OMP_NUM_THREADS=2

我收到一条消息

我在使用OpenMP时没有获得更好的性能...我也试过了:

mpiexec -n 10 -genv OMP_NUM_THREADS 2 ./binary

omp_set_num_threads(2),但并没有变得更好...有什么想法吗?

更新:omp_set_num_threads(2)运行mpiexec -n 1 ./binary时执行时间为4s,运行mpiexec -f machines -n 1 ./binary时执行时间为8s。

推荐答案

我建议先执行$echo OMP_NUM_THREADS,然后进一步查询程序中的线程数,以确保正在生成线程。为此,请使用omp_get_num_threads()函数。此外,如果你使用的是MacOS,那么这篇博文可以帮助你:https://whiteinkdotorg.wordpress.com/2014/07/09/installing-mpich-using-macports-on-mac-os-x/本文的后半部分将帮助您成功编译和运行混合程序。混合程序能否获得更好的性能在很大程度上取决于对资源的争夺。过度使用锁、障碍--会进一步减慢程序的运行速度。如果你把你的代码张贴在这里,让其他人查看并真正帮助你,那就太好了。

这篇关于MPI OpenMp混合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-06 18:47
查看更多