并不像看起来那么微不足道。我刚刚完成实施一个,我可以告诉你需要什么 阅读scan Gpu Gems 3 Article特别是章节39.3.1流压实。
要从SDK中的LargeArrayScan示例实现您自己的开始,它将为您提供预扫描。假设你有在设备存储器中的选择阵列(1和0的含义1-阵列选择0 - 丢弃),dev_selection_array一个dev_elements_array元件要选择的dev_prescan_array和dev_result_array所有尺寸N中的那么你做
prescan(dev_prescan_array,dev_selection_array, N);
scatter(dev_result_array, dev_prescan_array,
dev_selection_array, dev_elements_array, N);
其中散射是
__global__ void scatter_kernel(T*dev_result_array,
const T* dev_prescan_array,
const T* dev_selection_array,
const T* dev_elements_array, std::size_t size){
unsigned int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx >= size) return;
if (dev_selection_array[idx] == 1){
dev_result_array[dev_prescan_array[idx]] = dev_elements_array[idx];
}
}
用于超视距呃不错的应用程序的预扫看到纸Ble93
玩得开心!