【问题标题】:How to efficiently compute the Game of Life on the GPU using WebGL/OpenGL?如何使用 WebGL/OpenGL 在 GPU 上高效计算生命游戏?
【发布时间】:2016-06-25 20:10:01
【问题描述】:

对于在 Open/WebGL 上计算自动机,我的幼稚方法是将自动机的状态编码为纹理,将每个像素视为一个自动机单元;然后我会调用该纹理的片段着色器,计算下一个状态并将其渲染回来。然后我会无限期地重复这个过程。

我的问题是:这不会导致在每次调用片段着色器时在 CPU/GPU 之间传输内存吗?理想情况下,我想在 CPU/GPU 之间没有任何通信的情况下多次(数千)次调用片段着色器;可能,充分利用处理单元的本地内存。

这可能吗?

【问题讨论】:

标签: opengl webgl gpu


【解决方案1】:

为什么在计算下一个状态时需要通过 CPU 传输纹理数据?

您将需要两个纹理。将单元格的当前状态放入其中一个,并使用着色器将下一个状态绘制到第二个纹理中。然后做相反的事情:将下一个状态绘制到第一个纹理中,同时使用第二个作为当前状态。根据需要重复多次。

【讨论】:

  • 啊,好吧。但是,这是 WebGL 所能做到的最好的吗?我相信使用 CUDA,您可以使用单个纹理并在单个计算单元中保留更多时间,在不向全局内存发送任何内容的情况下进行多次传递;对吗?
  • @Viclib 这是最好的 WebGL 吗? 我没有使用过 WebGL,但如果它的工作原理或多或少与 OpenGL 相同,那么答案可能是“是”。对于这个问题,我想不出更好的解决方案。 | 我相信 CUDA... 而且我没有使用过 CUDA,所以对此我无话可说。
  • 啊,我明白了。谢谢!
猜你喜欢
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2012-08-08
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多