javascript - 如何在 Chrome 中使用 WebCL?

标签 javascript google-chrome google-chrome-extension webcl

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

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

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


实际上我认为我最近的问题首先是调试。 Firebug,相对于chrome的调试器来说,是一种痛苦和迷惑。 Chrome 有更少的错误,更轻,并且可以提供更好的性能,也就是我所说的,轻量级。

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

最佳答案

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

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

This在 WebGL 上下文中很容易设置。与 WebCL 相比,缺点很小:

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

您可以找到最近更新的规范 here .

WebGPU(新标准)

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

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

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

选择?

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

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

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

关于javascript - 如何在 Chrome 中使用 WebCL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532281/

相关文章:

javascript - Rails 无法从 link_to 加载 Chrome 中的 js

html - 在谷歌浏览器中隐藏视频的 native 播放按钮

javascript - 使用Vuejs和Vuecli构建Chrome扩展

javascript - 在 'document_start' 处运行的内容脚本会阻止网页上的 JS 脚本?

javascript - HTML/JavaScript/CSS : Change a picture by clicking on it

javascript - 是否可以使用 `setAttribute` 设置超链接的文本或内部文本

javascript - Firefox 上错误的 mouseenter 事件

javascript - Grunt 连接目录文件的最有效方法?

css - Modernizr 在 Chrome 和 FF 中将笔记本电脑报告为触摸设备

javascript - JQuery Chrome 扩展程序无法正常工作