【问题标题】:Advantage of OpenCL interoperability with OpenGLOpenCL 与 OpenGL 互操作性的优势
【发布时间】:2012-04-12 18:17:03
【问题描述】:

当我们使用 OpenGL 获得良好的速度时,因为它使用纹理内存和许多内置图形功能(混合、mip 贴图等)。

为什么我们需要 OpenCL(因为 openCL 缓冲区慢)与 OpenGL 的互操作性,仅仅因为我们可以将渲染与计算结合起来,或者有什么好的优势,比如性能。

我只是想知道它的主要优势,是否有任何已发表的论文表明它们通过使用 OpenGL 与 OpenCL 的互操作性而提高了性能,或者有任何证据表明它们在速度和质量方面的性能有所提高。

p>

【问题讨论】:

  • OpenCL slower than OpenGL的可能重复
  • 我不是该领域的专家,但我怀疑使用 OGL + OCL 能否获得一些性能。当一个人想要使用 OCL 时,就需要切换上下文,这会损害性能。另一方面,使用 OpenCL 中的通用“着色器”更容易编写一些算法。
  • @talonmies 我正在寻找一个证据来证明为什么 khronos 添加了互操作性之前的问题我不满意,我只是希望任何人都可以告诉我他们在哪里发表了一些他们正在获得质量的论文或速度
  • @fen 我不认为切换上下文会有开销,因为它们共享上下文和缓冲区。请任何人说我有这方面的任何文件。
  • @Megharaj:这一切都很好(尽管我怀疑你正在向风车倾斜)。但是你现在已经问了两次几乎相同的问题,这并不是很好......

标签: opengl opencl gpgpu


【解决方案1】:

OpenGL 就是实时光栅化图形。由于它的范围有限,因此可以针对该任务进行更多优化,并且大多数硬件也是为此而设计的。

OpenCL 是关于通用计算的。折叠蛋白。天气预报。高频交易。 Simulating neurons。机器学习、SETI、信号处理、比特币挖矿等。

但两者之间有很多交叉区域。

首先,很多东西确实有视觉组件。例如,科学家们可能希望能够看到折叠的蛋白质/与之交互,而不必将所有数据从 GPU RAM 复制到 CPU 的内存中,对其进行处理以使其成为可视格式,然后将其发送回 GPU。

游戏也可以使用 OpenCL。以 Minecraft 之类的东西为例。如果您使用现代 OpenGL(而不是 Minecraft 实际使用的 OpenGL 1.3)制作 Minecraft,您可能只想将原始地图数据上传到 GPU。使用几何/曲面细分着色器的单通道将数据转换为立方体和其他形状,然后使用变换反馈来捕获结果(您只需运行一次)。

但 Minecraft 也有关于如何更新地图的各种规则。计算光照。种树。使水流动。炸TNT等等。这是你无法用着色器真正做到的事情(或者可能一次都做不到)。您可以在 CPU 上执行此操作(Minecraft 就是这样做的),但如果您看过那些人们立即触发 1000 个 TNT 的视频,您就会看到这种滞后现象。流水会导致大型服务器上的每个人的延迟。您可以使用 OpenCL 来完成,而不是将其发送到 OpenGL,但如果它们链接在一起,效率会更高。

您可以使用 OpenCL 来伪造新的 OpenGL 技术。例如,如果您有 OpenCL 但没有几何/曲面细分着色器,您可以在 OpenCL 中执行此操作(当然目前实际上它并没有那么有用,因为大多数具有过时 OpenGL 实现的系统也将缺乏 OpenCL 支持)。有没有像曲面细分着色器这样有用但不存在的东西?

有很多视觉效果是您无法在 OpenGL 管道中完成的(至少效率不高)。一个例子是real-time ray-tracing。另一个是particle simulationsProcedural/fractal terrain generation.

还有其他有助于游戏/实时图形的东西。例如,Physics simulations 可以从 CPU 中移出。如果渲染管道/场景图本身could be moved to the GPU 也会很棒。这将显着减少 CPU 和 GPU 之间的调用次数,并使其更加并行。还有更多的东西,比如光线投射、人工智能、寻路等等。基本上任何你计算出来的东西都只能在视觉上看到。

最后,我确信还有很多其他的东西,即使以前没有人拥有,但现在已经成为可能。随着硬件朝着这个方向发展,我们越来越多地推动并行算法。

【讨论】:

  • 非常感谢您的回答,我一直在寻找这种类型的答案。是否有任何已发表的论文或文章在任何应用中从中获得了任何优势?再次感谢您的回答
  • @Megharaj 我不知道有任何论文显示直接集成 OpenCL->OpenGL 与 OpenCL->CPU->OpenGL 的优势(我相信 OpenCL+OpenGL 上有很多而不是集成特定的)。这只是一个性能提升。应该可以在没有直接集成的情况下完成所有事情,除了需要在 CPU 端进行额外的不必要的工作,有一些可能的例外情况,其中开销可能太多(例如从 GPU 传递所有场景图调用->CPU->GPU 可能比只在 CPU 上执行要慢。)。
猜你喜欢
  • 2013-07-27
  • 2013-07-31
  • 1970-01-01
  • 2016-08-18
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多