如何在Chrome中使用WebCL?

Low*_*ory 17 javascript google-chrome google-chrome-extension webcl

我是一名对HPC和并行编程感兴趣的年轻开发人员.

正如你在这里看到的,http://www.khronos.org/webcl已被"发布"(尚未,是一份工作草案),这是OpenCL网站的移植.我不知道从哪里开始,因为我看不清楚该做什么,因为我想在Chrome上做到这一点,不幸的是,仍然没有像Firefox这样的实验性插件,我知道它会由于v8,性能更好.

嗯,没人知道吗?我知道我应该使用idl文件,但实际上我不知道在哪里做什么.


实际上我认为我的问题,最近,首先是调试.与Chrome调试器相比,Firebug是一种痛苦和混乱.Chrome有较少的bug,较轻,并且可以提供更好的性能,我说,轻量级.

我们还应该看看如何实现.idl for Firefox并对性能进行一些比较,以及如何从两个引擎处理资源.

3DR*_*ert 7

我使用WebGL创建了一个用于数据并行化的javascript库来设置WebCL样式.

不是100%相等也没有webcl的所有优点,但可以帮助GPU计算,没有图形结束.

如果它可以帮助某人https://code.google.com/p/webclgl/


Eng*_*eer 6

(2020 年 1 月)还有其他选项可以在 GPU 上进行网络计算:

WebGL 计算着色器(旧但易于访问)

在 WebGL 上下文中很容易设置。与 WebCL 相比的缺点是次要的:

  • WebCL 浮点精度保证更好(对于大多数用途,无关紧要)
  • WebCL 支持随机写入,而 WebGL Compute 不支持,但对于大多数并行问题,这无关紧要,因为您将只为操作的当前元素写入结果。
  • 缓冲区数据作为整数返回到 CPU,但如果您以正确的方式表示您的值并在 GPU/CPU 上相应地编码/解码,您就可以解决这个问题。我已经通过在计算着色器中最终确定之前将浮点数乘以某个大值(如 1024)来完成此操作,并在将整数返回到 CPU 后除以相同的值(请注意,使用 2 的幂意味着您可以非常快速地进行此整数除法通过这样做,value = buffer[n] >> 10即 1024 = 2^10)。我没有像某些科学/金融科技应用程序那样有任何精确性问题。

您可以在此处找到最近更新的规范。

WebGPU(新标准)

是正在实施的最新标准,是 WebGL 1.0、2.0 和 WebCL 的继承者。

您可以直接从 JavaScript 访问 GPU 的计算能力,使用async和处理 GPU 标注的延迟await。您将需要使用WHLSL(现在的 WSL)编写着色器,这是一种新的高级着色器语言,它紧密基于 Direct3D HLSL。

它抽象了最新的低级 3D 图形 API,例如 Metal、Vulkan 和 Direct3D 12,从而与 Open/WebGL 相比减少了 GPU 开销。

选择?

WebGL 计算着色器适用于那些打算在 WebGL 渲染中使用计算结果的人,他们无论如何都在他们的应用程序中进行 WebGL 渲染,或者想要在 Web 上进行原型设计然后移植到原生 OpenGL。

WebGPU用于计划的跨浏览器,包括在 Apple 设备上(其中 GL 长期以来一直缺乏支持)、新颖性和速度。也用于图形。

如果您最终也希望有机会在 CPU 上运行代码,无需修改,并且不需要 GPU 渲染,则可以通过 Chrome/Chromium 的扩展程序使用WebCL


小智 5

对于Chrome版本,三星(在Google Code上的版本)是正确的选择。适用于Safari:Safari基于WebKit,而Chrome也是基于WebKit的。但是,使用Chrome的渲染器可能会有些棘手,因为我认为这是一个特殊的过程。我敢打赌,Chrome开发人员很乐意为您提供帮助,但是,我建议与WebCL项目成员进行检查,是否有人已经开始考虑这一点。

从功能上讲,三星的版本与诺基亚的版本有很大的实际差异:它支持将数据直接从WebCL移动到WebGL。如果您想在不将所有数据移出GPU之间的情况下可视化计算(这会破坏实时性能),那么这很重要。

祝好运!