图形API再革命!DirectX 11新技术预览
● Compute Shader通用计算
近几年,利用显卡进行以往CPU才能支持的通用计算越来越受关注。特别是去年,NVIDIA推出了CUDA技术,让GPU可以通过其CUDA技术模拟成CPU,进行各种情况下的计算。比如使用GPU进行视频压缩、Photoshop处理加速、蛋白质折叠运算等等;而AMD在去年下半年也发布了自己的Stream技术,高举GPU通用计算的大旗。
NVIDIA的CUDA技术推出之后,立刻受到了业内人士的关注,同时NVIDIA也将其作为了宣传的重中之重。看来,显卡的未来将不再仅仅是图形计算领域,而将面向更多的需要高性能计算的领域。届时,GPU的定义似乎也需要改变,也就是我们常说的GPGPU。
虽然NVIDIA的CUDA技术非常先进,但是仍然无法改变一个现实——在CUDA通用计算模式与普通图形渲染模式之间的切换延迟。也就是说,想要根本的解决这个问题,还是需要DirectX来才能解决。而微软的DirectX 11中的Compute Shader功能就是来解决这个问题的。
Compute Shader的最重要特性就是支持GPGPU通用计算,微软提供HLSL语言对Compute Shader进行支持。在这里我们举一个简单的例子来说明Compute Shader的优势:
由于GPU的API目的是为了3D设计,输入的是材质,而输出的是图像。如果一个程序员想要利用GPU的API进行非3D设计,则需要将资料包装成材质,经过一番处理之后,再读取到计算后的资料。而DirectX 11可接受任意类型资料(非材质),并且可以不受图形渲染流程的限制,随时写入写出,这无疑为GPU的通用计算敞开了大门。同时,Compute Shader还完全支持双精度计算,可以更好的为科学计算提供服务。