【发布时间】:2014-03-27 19:11:01
【问题描述】:
我同时使用 OpenMPI 和 OpenMP(共享内存)来并行化一段代码。我正在尝试为基准测试和加速目的计时该代码,但我不明白 omp_get_wtime() 和 mpi_wtime() 之间的区别。
以下是我的代码及其运行架构的概述:
我有 8 个节点,每个节点有 16 个处理器。我有 128 个任务要运行。
我正在测试两种场景,我想知道哪个更快。
第一个场景: 我给每个节点 1/8 的任务(使用 OpenMPI),对于每个任务,节点使用它的 16 个处理器(使用 OpenMP)来完成任务。所以Node0会做Task0,Task0完成后会做Task8,Task8完成后会做Task16;同时 Node1 将执行 Task1,然后是 Task9,然后是 Task15,等等,直到每个任务都完成。我想知道整个过程需要多长时间,如果知道每项任务完成(平均)需要多长时间。
第二种情况:我将 128 个任务中的每一个都放在一个处理器上(使用 MPI)。我只是想知道这需要多长时间才能运行,而且很高兴知道每个处理器需要多长时间才能完成其工作。
基本上,我在这里所做的是将 MPI+OpenMP 与仅使用 MPI 进行代码比较。
我应该使用哪个计时器,两者之间有什么区别?
谢谢!
【问题讨论】:
标签: timer parallel-processing openmp openmpi