我一直在研究使用OpenMPI
和OpenMP
并行化Dijkstra算法的效率。事实上,当我使用OpenMP时,执行时间似乎比使用OpenMPI 更高,这对我来说有点奇怪,因为据我所知,线程应该比进程更快。 OpenMPI为每次执行创建一个进程,而OpenMP在每个进程执行时创建线程。我的问题是:我的发现是否依赖于实施?换句话说,我们是否总能说OpenMP并行化并不总是比OpenMPI更快,因为它依赖于实现?
谢谢。
答案 0 :(得分:0)
一如既往,这一切都取决于您目前的情况。 OpenMP仅适用于本地CPU,而OpenMPI通过网络连接到多个节点。只要你只能在拥有本地CPU核心的线程上分割你的工作,OpenMP 应该更快,因为消息开销更少。在较大的扩展设备中,OpenMPI是优越的,因为它可以分布在多个系统中,这也可能具有更好的个人计算速度。