我有一个MPI程序,它将调用CUDA函数。我用MPI定时器和CUDA定时器测量CUDA功能的运行时间。但是,MPI定时器的测量值比使用CUDA定时器的测量值大2秒。我想知道为什么会这样。
MPI计划的结构如下:
int main(){
MPI initiation
Start timing with MPI_Wtime
Call CUDA function
End timing with MPI_Wtime
MPI finalization
}
CUDA功能的结构如下:
void CUDA_fun(){
Start CUDA timer event
Call global function
End CUDA timer event
}
Linux x86_64
GPU C2075
CUDA 4.2
MPICH2 1.4.1p1
答案 0 :(得分:0)
正如pQB所述,MPI定时器和CUDA定时器之间的测量差异是由启动CUDA事件的开销引起的。我进行了有/无CUDA事件的实验。结果与声明匹配。
更新:正如talonmies所说,额外的时间是CUDA上下文初始化所需的时间。在linux中,通过使用nvidia-smi -pm 1启用持久性模式,可以减少额外的时间。