我在使用粒子模拟器并遇到了一些瓶颈,使用UAV写入RWStructured单浮动缓冲区大约是太慢了10倍。从实验来看,似乎并没有带宽短缺,但只是访问时间本身令人难以置信。附加写入是不可能的,因为传出数据需要按特定顺序排列。这是在DX10 / SM4硬件上,所以这里有几个问题:是否有任何方法可以加快速度(除了编写更大的数据块,因为着色器的输出是非连续的)?如果没有,那么DX11级硬件是否能更快地使用无人机?
答案 0 :(得分:0)
首先(如果你还没有),分析你的着色器代码,是为你的系统添加GPU查询。这是一个解释它的链接:
http://mynameismjp.wordpress.com/2011/10/13/profiling-in-dx11-with-queries/
它在dx11中,但功能也在dx10中,所以移植它应该非常简单。
在计算之后有不同的方面,但第一个是玩:
[numthreads(TGX, 1, 1)]
尝试8,16,32,64之类的值并尝试找到最佳位置(不要忘记分配你的发送)。