【发布时间】:2014-04-15 14:32:19
【问题描述】:
如果我有多线程应用程序和我自己的线程来控制 CUDA 设备并将内核调度到不同的流,我也可以在 Kepler-2 (GK110) 系列之前的设备上实现非常高的 GPU 使用率,例如 Fermi 和 Kepler-1 (GK104) .
所以我认为没有充分的理由渴望购买更昂贵的卡。
流动我的测试示例并在 Fermi 卡上进行分析:
void ut_concurent_kernels()
{
int i,j;
cudaEvent_t kernelEvent;
cudaStream_t work_stream[14];
for (i = 0; i < 14;i++)
{
cudaStreamCreate( &work_stream[i]);
}
cudaEventCreateWithFlags(&kernelEvent, cudaEventDisableTiming);
for (j = 0; j < 2;j++)
{
for (i = 0; i < 14;i++)
{
if (i == 13)
{
checkCudaErrors(cudaEventRecord(kernelEvent, work_stream[i]));
}
Kernel_Work<<<1,256,0,work_stream[i]>>>(100000);
}
checkCudaErrors(cudaStreamWaitEvent(work_stream[i-1], kernelEvent,0));
}
cudaDeviceSynchronize();
for (i = 0; i < 14;i++)
{
cudaStreamDestroy(work_stream[i]);
}
cudaEventDestroy(kernelEvent);
}
【问题讨论】:
标签: cuda