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