我正在努力理解OpenCL生态系统以及Vulkan是如何发挥作用的。
既然如此,
发布于 2016-11-20 14:23:15
OpenCL和vulkan有什么关系?我知道OpenCL级别更高,并且抽象设备,但是(或者可以)在内部使用Vulkan吗?
他们一点关系都没有。
他们在技术上确实使用了相同的中间着色语言,但是Vulkan禁止内核执行模型,而OpenCL禁止shader执行模型。正因为如此,你不能只拿一个用于OpenCL的着色器,然后把它粘在Vulkan,反之亦然。
Vulkan被宣传为计算和图形api,但是我发现很少有用于计算部分的资源--为什么呢?
因为Khronos集团喜欢误导营销信息。
Vulkan与其说是一个计算API,不如说是OpenGL。它可能有计算阴影,但它们的功能是有限的。在OpenCL计算操作中,您所能做的事情并不是通过OpenGL/Vulkan提供的。
Vulkan CS和OpenGL的CS一样,被用于一件事:支持图形操作。要进行水果剔除,建立间接图形命令,操纵粒子系统,等等。CS的操作与图形着色器的数值精度相同。
与OpenGL相比,Vulkan具有性能优势。Vulkan对OpenCl的情况是一样的吗?
计算系统的性能主要取决于其实现的质量。慢的不是OpenCL,而是您的OpenCL实现比它可能的速度慢。
在这方面,Vulkan CS没有什么不同。性能将取决于司机的成熟程度。
此外,还有一个事实是,在OpenCL计算操作中,您可以做许多在Vulkan中无法完成的操作。
SYCL是在内部使用OpenCL,还是可以使用vulkan?
来自Khronos集团:
SYCL (发音为“镰刀”)是一个免版税的跨平台抽象层,它建立在OpenCL的基本概念、可移植性和效率的基础上。
所以是的,它是建立在OpenCL之上的。
发布于 2016-11-20 13:39:03
OpenCL和vulkan有什么关系?
它们都可以通过队列将可分离的工作从主机传输到gpu和gpu,从而减少使用多线程的通信开销。不能吗?
如果opencl有vulkan的话,那么它已经对公众隐藏了7-9年。如果他们能加进去,为什么不为opengl做呢?(也许是因为物理学家/库达的压力?)
Vulkan被宣传为计算和图形api,但是我发现很少有用于计算部分的资源--为什么呢?
它需要更多的时间,就像opencl一样。
您可以在这里查看上面的计算机着色器:
https://www.khronos.org/registry/vulkan/specs/1.0/xhtml/vkspec.html#fundamentals-floatingpoint
下面是一个由计算机着色器管理的粒子系统的例子:
https://github.com/SaschaWillems/Vulkan/tree/master/computeparticles
下面是射线追踪和图像处理的例子。
与OpenGL相比,Vulkan具有性能优势。Vulkan对OpenCl的情况是一样的吗?
不幸的是,OpenCL比数据自动化系统慢得可怜。
它曾经是,但现在它的成熟和挑战库达,特别是在更广泛的硬件支持,从所有游戏gpu到fpga使用2.1版本,例如在未来英特尔可以把一个fpga到核心i3,并使它能够(软x86核心ip),许多核心cpu模型,缩小了gpu性能和cpu之间的差距,以升级其cpu-物理学家游戏经验,或简单地让opencl物理实现塑造它和使用至少%90芯片面积,而不是一个软核的%10%-20有效使用领域。
在相同的价格下,AMD gpus可以在opencl上计算得更快,而在相同的计算能力下,Intel igpus可以获得更少的功耗。(编辑:除非算法对缓存性能敏感,而Nvidia占优势)
此外,我还编写了一个SGEMM opencl内核,并在1.1TFLOPS的HD7870上运行,并检查了internet,然后在GTX680上看到了一个使用CUDA上流行标题的SGEMM henchmark (价格比为run 680/ on 7870是2)。(编辑:Nvidia的cc3.0在读取全局数组时不使用L1缓存,我的内核纯粹是本地/共享内存+一些寄存器“平铺”)
SYCL是在内部使用OpenCL,还是可以使用vulkan?还是两者都不使用,而是依赖于低级别的、特定于供应商的apis来实现?
这里,
https://www.khronos.org/assets/uploads/developers/library/2015-iwocl/Khronos-SYCL-May15.pdf
他说
提供用于处理没有OpenCL的目标的方法(尚未!) 后备CPU实现是可调试的!
因此,它可以回到纯线程版本(类似于java的aparapi)。
可以从SYCL对象访问OpenCL对象,可以从OpenCL对象构造SYCL对象。 与OpenGL保持在SYCL中的互操作-使用相同的结构/类型
它使用opencl (可能不是直接的,但通过升级的驱动程序通信?),它与opencl并行开发,但可以退回到线程。
从最小的OpenCL 1.2嵌入式设备到最先进的OpenCL 2.2加速器
https://stackoverflow.com/questions/40703655
复制相似问题