我使用OpenMPI和OpenMP(共享内存)来并行化一段代码。我正在尝试为基准测试和加速目的计算代码,但我不明白omp_get_wtime()和mpi_wtime()之间的差异。当同时使用MPI和共享内存时,omp_get_wtime()和mpi_wtime()之间的区别
这里是我的代码不会随着架构在运行上的轮廓:
我有8个节点,每个有16个处理器。我有128个任务要运行。
我正在测试两种情况,我想知道哪种情况更快。
第一种场景: 我给每个节点1/8的任务(使用OpenMPI),并且对于每个任务,节点使用其16个处理器(使用OpenMP)来完成任务。所以Node0会做Task0,当Task0完成时它会做Task8,当Task8完成时它会做Task16;同时节点1将执行任务1,然后任务9,然后任务15等,直到每个任务完成。我想知道整个过程需要多长时间,并且知道每个任务需要多长时间才能完成(平均而言)会很高兴。
第二个场景:我将128个任务中的每个任务放在单个处理器上(使用MPI)。我只想知道这需要多长时间才能运行,并且再次了解每个处理器完成其工作需要多长时间会很高兴。
基本上我在这里做的是比较MPI + OpenMP与使用MPI进行比较的方式。
我应该使用哪个计时器,两者之间有什么区别?
谢谢!