我正在研究一个粒子模拟器,并且遇到了一个瓶颈,使用无人机写入RWStructured单浮动缓冲区的速度大约慢了10倍。从实验来看,带宽似乎并不短缺,但仅仅是访问时间本身就会使带宽不足。追加写入是不可能的,因为传出的数据需要以特定的顺序。这是在DX10/SM4硬件上,所以这里有几个问题:是否有任何方法可以加快速度(除了写入更大的数据块,因为着色器的输出不是连续的)?如果不是,那么DX11级的硬件会不会比无人机更快?
发布于 2012-09-21 00:05:50
第一件事(如果你还没有做),分析你的着色器代码,是添加GPU查询到你的系统。这里有一个链接来解释它:
http://mynameismjp.wordpress.com/2011/10/13/profiling-in-dx11-with-queries/
它是用dx11编写的,但是特性也是用dx10编写的,所以移植起来应该非常简单。
在计算之后,有不同的方面,但第一个方面是玩:
[numthreads(TGX, 1, 1)]尝试像8,16,32,64这样的值,并尝试找到最佳点(不要忘记在您的调度上进行划分)。
https://stackoverflow.com/questions/10989853
复制相似问题