Mai*_*iss 57 opengl gpgpu opencl compute-shader
我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,除此之外,我们可以使用Compute Shaders进行矢量运算(加法,乘法,反演等)吗?
Chr*_*ica 59
与其他OpenGL着色器类型相比,计算着色器与计算机图形不直接相关,并提供更直接的底层硬件抽象,类似于CUDA和OpenCL.它提供可自定义的工作组大小,共享内存,组内同步以及CUDA和OpenCL所熟知和喜爱的所有内容.
主要区别基本上是:
所以归结为,计算着色器真的打算在现有的OpenGL应用程序中使用,虽然展示了通常的(类似OpenCL/CUDA)计算方法的GPU编程,与其他着色器的图形方法形成对比阶段,没有OpenCL/CUDA的计算灵活性(当然,虽然提供其他优势).因此,执行计算任务比将其压缩到其他着色器阶段(不是用于通用计算或引入您必须同步的其他计算框架)更灵活,更直接,更容易.
计算着色器应该能够使用OpenCL实现几乎任何可实现的功能,并且具有相同的灵活性和对硬件资源的控制以及相同的编程方法.因此,如果你有一个很好的适合GPU的算法(可以很好地与CUDA或OpenCL一起使用)来完成你想做的任务,那么是的,你也可以使用计算着色器.但是,仅仅因为计算着色器,使用OpenGL(它仍然是,并且可能始终是实时计算机图形的框架)并没有多大意义.为此,您可以使用OpenCL或CUDA.计算着色器的真正优势在混合图形和计算功能时发挥作用.