Cuda:从n中同步一个内核函数

时间:2016-01-01 17:46:15

标签: c++ cuda synchronization

我想知道这个问题:有没有办法同步一个内核函数?例如,如果我有这样的事情:

function_1 <<< dimgrid, dimblock >>> (param1, param2, param3);
funckion_2 <<< dimgrid, dimblock >>> (param4, param5, param5);
function_1 <<< dimgrid, dimblock >>> (param6, param7, param8);

是否可以知道第二个function_1是否在第一个之前完成了? cudaDeviceSynchronize()函数可以帮我解决这个问题吗?我需要这个,因为我必须为其他内核函数重用一些资源(param-i)。

1 个答案:

答案 0 :(得分:1)

如果将每个内核启动到自己的流中,则可以在运行要等待的内核的流上使用cudaStreamSynchronize。如下所示:

//stream creation for stream1, stream2
...
function_1 <<< dimgrid, dimblock, 0, stream1 >>> (param1, param2, param3);
funckion_2 <<< dimgrid, dimblock, 0, stream2 >>> (param4, param5, param5);
function_1 <<< dimgrid, dimblock, 0, stream1 >>> (param6, param7, param8);

cudaStreamSynchronize(stream1);

可能会做你想要的。