【发布时间】:2017-06-30 20:22:09
【问题描述】:
鉴于任务数大于可用处理器数(超额订阅),我有一个基本程序,我正在尝试运行该程序以确定 MPI 将任务放置在何处。例如,如果我运行mpirun -np <program name>,结果将给出:
processor 0 of 4
processor 1 of 4
processor 2 of 4
processor 3 of 4
但是,如果我在“8”个处理器上运行相同的命令,我会得到:
processor 1 of 8
processor 2 of 8
processor 5 of 8
processor 6 of 8
processor 4 of 8
processor 3 of 8
processor 7 of 8
processor 0 of 8
我知道运行我的程序的实际内核不是 8 个,而是我有多个任务在同一个处理器上运行,我想确切地知道它们是如何分布的。提前致谢。
编辑:
program test
! Similar to "Hello World" example- trying to determine rank/ node placement
use mpi
implicit none
integer :: procid, ierr, numprocs, name_len
integer:: local
local= 'OMPI_COMM_WORLD_LOCAL_RANK'
!character* (MPI_max_processor_name) name
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_World, numprocs, ierr)
call MPI_COMM_RANK(MPI_COMM_World, procid, ierr)
!call Mpi_Get_Processor_Name(name,name_len, ierr)
print*, 'processor', procid, 'of', numprocs, 'On Local Node:',' ', local
call mpi_finalize(ierr)
end program test
【问题讨论】:
-
您使用的是哪种 MPI 实现?
-
您使用的是哪种 CPU 架构? “处理器”这个词是什么意思?您是指插槽中的物理CPU吗?还是CPU核心?还是超线程虚拟内核?您只有一台计算机还是一个集群?