我一直在研究使用OpenMPI和OpenMP并行化Dijkstra算法的效率。事实上,当我使用OpenMP时,执行时间似乎比使用OpenMPI要高,这对我来说有点奇怪,因为据我所知,线程应该比进程更快。OpenMPI为每次执行创建一个进程,而OpenMP在每个进程执行下创建线程。我的问题是:我的发现是否依赖于实现?换句话说,我们是否可以总是说使用OpenMP并行化不能总是比OpenMPI快,因为它是依赖于实现的?
谢谢。
发布于 2015-11-09 17:48:58
和往常一样,一切都取决于你目前的情况。OpenMP只在本地CPU上工作,而OpenMPI通过网络连接到多个节点。只要您只能在具有本地CPU核心的线程上拆分您的工作,OpenMP就应该更快,因为消息传递开销较小。在大比例尺设备中,OpenMPI更优越,因为它可以分布在多个系统上,这也可能具有更好的单个计算速度。
https://stackoverflow.com/questions/33614848
复制相似问题