先把思路理顺吧。
1. Vulkan是OpenGL 5.0,也就是OpenGL 4.5的继任者
2. OpenGL 4.5支持compute shader
3. Compute shader是做通用计算的,和OpenCL存在竞争关系。
所以不是Vulkan会取代OpenCL,而是Vulkan里的compute shader可以用来做OpenCL那样的通用计算。
好了,有了这个基础,就可以看看同一件事情,用Vulkan和OpenCL的区别了。
Vulkan是图形为主,可以用CS通用计算。OpenCL是专门做通用计算。这个事情不是第一次发生,而是在D3D vs CUDA的时候已经发生过。结果是,谁都没革谁的命,而是分工不同。总的来说,如果是一个图形程序,需要做一些通用计算,就会选择D3D/Vulkan。如果是纯通用计算,没有或只有一点点图形,就会用CUDA/OpenCL来完成,再与图形API交互。