我知道OpenCL可以控制GPU的内存架构,从而实现更好的优化,但是,不考虑这一点,我们能否使用计算着色器进行向量运算(加法、乘法、倒置等)?
我知道OpenCL可以控制GPU的内存架构,从而实现更好的优化,但是,不考虑这一点,我们能否使用计算着色器进行向量运算(加法、乘法、倒置等)?
计算着色器应该能够以与OpenCL相同的灵活性和对硬件资源的控制,以及相同的编程方法做到几乎任何可以通过OpenCL实现的功能。因此,如果您有一个适合GPU的算法(可以很好地使用CUDA或OpenCL完成任务),那么您也可以使用计算着色器来完成它。但是,仅仅因为有计算着色器并不意味着使用OpenGL(它仍然是并且可能总是首先用于实时计算机图形的框架)有太多意义。对于这一点,您可以使用OpenCL或CUDA。当混合图形和计算能力时,计算着色器的真正优势就发挥出来了。
点击这里可以看到另一个角度。
总结:
是的,OpenCL已经存在了,但它面向的是重量级应用程序(比如CFD、FEM等),并且比OpenGL更加通用(可以考虑GPU以外的设备...例如Intel的Xeon Phi架构支持超过50个x86核心)。
此外,在OpenGL/CUDA和OpenCL之间共享缓冲区并不容易。