A跟進Q從:CUDA: Calling a __device__ function from a kernel從內核調用內核
我試圖加快排序操作。一個簡化版本的僞如下:
// some costly swap operation
__device__ swap(float* ptrA, float* ptrB){
float saveData; // swap some
saveData= *Adata; // big complex
*Adata= *Bdata // data chunk
*Bdata= saveData;
}
// a rather simple sort operation
__global__ sort(float data[]){
for (i=0; i<limit: i++){
find left swap point
find right swap point
swap<<<1,1>>>(left, right);
}
}
(注:這個簡單的版本不顯示在塊還原技術) 的想法是,它很容易(快),以確定交換點。交換操作成本很高(很慢)。因此,使用一個塊來查找/識別交換點。使用其他塊進行交換操作。即並行地進行實際的交換。 這聽起來像一個體面的計劃。但是,如果編譯器在設備調用中插入行,那麼就不會發生並行交換。 有沒有辦法告訴編譯器不要內聯設備調用?
是否可以在最新版本的CUDA(v6.5)和具有計算能力3.0的NVIDIA Grid K520上執行此操作? – 2015-03-25 19:09:49
@talonmies,我已經等了4年你的答案:D希望有這樣的解決方案:-)你能指出我嗎? – Nabin 2016-03-11 05:41:05
沒關係。我找到了什麼 – Nabin 2016-03-11 05:56:59