我希望對以下內容有所幫助。多個內核調用
我有一個內核函數,它具有數組作爲輸入,並且在計算之後,其中一個數組會更改其值。我將它稱爲dev_array。
我想dev_array再次用作我的內核計算的輸入大約80次,所以我可以得到dev_array的正確結果,後者在我的主要使用。
我該怎麼做? 我已經嘗試在線程條件之前在內核中使用循環。
while(i<80){
i++;
if(tidx<N){`
//calculating dev_array then using it again at the beginning of while
}
}
但它沒有工作。它看起來像是在一個無限循環中。
從主80次調用內核並一直進行memcopy操作並不令人滿意。
while(i<80){
i++;
cudaMemcpy(dev_array,cudaMemcpyHostToDevice);
kernel<<<grid,block>>>(dev_array);
cudaMemcpy(dev_array,cudaMemcpyDeviceToHost);
}
感謝您的幫助
你真的沒有描述這個問題。你究竟做了什麼?發生了什麼?你期望會發生什麼? –
也許你可以用'{}'來定義像int i = 0這樣的循環內容。 while(i <80){kernel <<<> >>();我++;}' – kangshiyin