假设我有一组float gpu指针->数据集:[A,B,C,D]
我正在对其进行迭代,以便计算B,我需要A,对于C,我需要B等。
如果我愿意
A = computeA()
for prevData, data in dataset:
data = computeData(prevData)
CUDA是否会自动将它们排队,以便一个接一个地完成?我需要做deviceSynchronize()吗?
答案 0 :(得分:0)
简而言之:如果它们在同一个流中被调用(除非您明确定义了它们,否则它们将被调用),它们将一个接一个地执行。
对内核的调用是异步的,但这并不意味着它们会同时发生,仅意味着CPU在排队下一个操作之前不会等待内核完成。如果需要,可以添加deviceSynchronize()
,因为除非调用之间有大量的CPU计算,否则它不会对执行产生影响,只会暂停CPU直到内核完成。