20

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

正如您在这里看到的那样,http: //www.khronos.org/webcl 已经“发布”(还没有,是一个工作草案),这个移植用于 OpenCL 的网络。我不知道从哪里开始,因为我看不到该怎么做,因为我想在 Chrome 上做,不幸的是,仍然没有像 Firefox 这样的实验性插件,我知道它会得益于 v8,性能更好。

好吧,没有人对此一无所知吗?我知道我应该使用 idl 文件,但实际上我不知道在哪里或做什么。


实际上,我认为我最近的问题首先是调试。Firebug 相比 chrome 的调试器是一种痛苦和困惑。Chrome 的 bug 更少,更轻巧,也可以为此提供更好的性能,正如我所说的,轻量级。

我们还应该看看 .idl 是如何为 Firefox 实现的,并对性能、两个引擎的资源处理方式进行一些比较。

4

4 回答 4

10

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

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 的后续版本。

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

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

选择?

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

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

WebCL通过 Chrome / Chromium 的扩展,如果您最终希望有机会在 CPU 上运行代码,无需修改,也不需要 GPU 渲染。

于 2020-01-23T08:51:34.460 回答
5

对于 Chrome 版本,三星(Google Code 上的那个)是正确的。它适用于 Safari:Safari 基于 WebKit,这也是 Chrome 所基于的。然而,使用 Chrome 的渲染器可能会很棘手,因为我相信它是在一个特殊的过程中。不过,我敢打赌 Chrome 开发人员很乐意为此提供帮助,并且我建议与 WebCL 项目成员核实是否有人已经开始关注这个问题。

在功能方面,三星的版本与诺基亚的版本有很大的实际区别:它支持将数据直接从 WebCL 移动到 WebGL。如果您想在不将所有数据从 GPU 中移出的情况下可视化计算(这会降低实时性能),这是一件大事。

祝你好运!

于 2012-11-12T04:00:36.557 回答
3

您似乎期望将 Firefox WebCL 扩展端口移植到 Chrome 浏览器所带来的性能提升,我猜是不太可能的:虽然 V8 引擎确实比其他引擎更快地处理 javascript,但根据定义,WebCL 主要在GPU,因此代码的 javascript 组件很可能只占处理时间的一小部分。目前,如果您想尝试使用 WebCL,您将需要坚持使用 Firefox 扩展。

于 2012-10-09T00:20:51.757 回答
2

带有 WebCL 的 Chrome 现已在 github Chromium-WebCL上可用。源代码、构建指令和二进制文件(适用于 Windows)

于 2014-03-16T00:05:09.187 回答