【发布时间】:2013-03-22 02:59:25
【问题描述】:
我有一个 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
【问题讨论】:
-
2 秒是很长的时间。该计划需要多长时间?是否有理由认为这种差异是由于主机和 GPU 之间的数据传输/同步造成的?
-
你能分享一个工作示例代码吗?
-
@igon 该程序需要 10 秒。所有数据传输/同步都在 CUDA 函数内,因此是测量的。
-
@pyCthon 让我明天试着做一个简化版的程序。
-
当您说 CUDA 计时器时,您的意思是使用 cuda Events 吗?另外,如果您在
Start timing with MPI_Wtime步骤之前放置cudaFree(0);,情况会改变吗?