首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCL,Vulkan,Sycl

OpenCL,Vulkan,Sycl
EN

Stack Overflow用户
提问于 2016-11-20 11:47:44
回答 2查看 18.6K关注 0票数 37

我正在努力理解OpenCL生态系统以及Vulkan是如何发挥作用的。

  • 据我所知,OpenCL是一个在GPU和CPU上执行代码的框架,使用内核可以编译成SPIR。
  • Vulkan也可以使用相同的SPIR语言作为计算API。
  • SYCL是一种新的规范,它允许将OpenCL代码作为符合标准的C++14编写,据我所知,目前还没有这个规范的免费实现。

既然如此,

  • OpenCL和Vulkan有什么关系?我知道OpenCL级别更高,并且抽象设备,但是(或者可以)在内部使用Vulkan吗?(而不是依赖特定于供应商的驱动程序)
  • Vulkan被宣传为计算和图形API,但是我发现很少有用于计算部分的资源。那是为什么?
  • 与OpenGL相比,Vulkan具有性能优势。Vulkan对OpenCl的情况是一样的吗?(令人遗憾的是,OpenCL比CUDA慢得可怜。)
  • SYCL是在内部使用OpenCL,还是可以使用Vulkan?还是它既不使用,也不依赖于低级别的、特定于供应商的API来实现?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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之上的。

票数 30
EN

Stack Overflow用户

发布于 2016-11-20 13:39:03

OpenCL和vulkan有什么关系?

它们都可以通过队列将可分离的工作从主机传输到gpu和gpu,从而减少使用多线程的通信开销。不能吗?

  • OpenCL: 2009年8月28日首次发布。更广泛的硬件支持。指针允许但只能在设备中使用。您可以使用线程之间共享的本地内存。开始一个你好的世界要容易得多。对命令有api开销,除非它们是设备端排队的。您可以选择隐式多设备同步或显式管理。Bug大多是为1.2而修正的,但我不知道2.0版本。
  • Vulkan: 2016年2月16日首次释放(但自2014年起取得进展)。更窄的硬件支持。SPIR能处理指针吗?也许不是?没有本地内存选项?很难开始你的世界。减少api开销。您能选择隐式多设备管理吗?仍然是多塔-2游戏和其他一些游戏的问题。同时使用图形和计算管道可以隐藏更多的延迟。

如果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的情况是一样的吗?

  • Vulkan不需要为另一个API同步。它涉及命令缓冲区、命令队列之间的同步。
  • OpenCL需要与opengl或directx (或vulkan?)同步。在使用共享缓冲区(cl或dx互操作缓冲区)之前。这有一个开销,您需要使用缓冲区交换和流水线来隐藏它。如果没有共享缓冲区,则可以使用opengl或directx在现代硬件上并发运行。

不幸的是,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加速器

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40703655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档