大佬教程收集整理的这篇文章主要介绍了c – 在CUDA线程中填充计数’桶’,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>分配体素数量大小的整数数组
>为所有粒子启动线程,确定每个粒子所在的体素,并在我的“桶”阵列中增加适当的计数器
>分配粒子数量大小的指针数组
>计算每个体素在此新阵列中的偏移量(将前面体素中的粒子数相加)
>以有序的方式将粒子放置在阵列中(我使用此数据来加速以后的操作.速度增加非常值得增加内存使用量).
这打破了第二步.我没有在CUDA中编程很长时间,并且发现线程之间同时写入全局内存中相同位置会产生不确定的结果.这反映在这样一个事实,即我大多数在桶中得到1,偶尔会得到2.这是我在这一步中使用的代码的草图:
__global__ void GPU_AssignParticles(Particle* particles,Voxel* voxels,int* buckets) { int tid = threadIdx.x + blockIdx.x*blockDim.x; if(tid < num_particles) { // <-- you can assume I actually passed this to the function :) // Some math to determine the index of the voxel which this particle // resides in. buckets[index] += 1; } }
另外,有没有办法存储体素内的粒子参考?我看到的问题是体素内的粒子数量不断变化,因此几乎每一帧都必须重新分配新阵列并重新分配.
以上是大佬教程为你收集整理的c – 在CUDA线程中填充计数’桶’全部内容,希望文章能够帮你解决c – 在CUDA线程中填充计数’桶’所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。