Javascript 如何在Chrome中使用WebCL?

Javascript 如何在Chrome中使用WebCL?,javascript,google-chrome,google-chrome-extension,webcl,Javascript,Google Chrome,Google Chrome Extension,Webcl,我是一个对HPC和并行编程感兴趣的年轻开发人员 正如您在这里看到的,这个OpenCL的web移植已经“发布”(尚未发布,是一个工作草案)。我不知道从哪里开始,因为我不知道该怎么做,因为我想在Chrome上做,不幸的是,Chrome还没有像Firefox这样的实验性插件,我知道,多亏了v8,它的性能会更好 没人知道这件事?我知道我应该使用idl文件,但实际上我不知道在哪里或做什么 事实上,我认为我最近的问题首先是调试。与chrome的调试器相比,Firebug是一种痛苦和困惑。Chrome有更少

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

正如您在这里看到的,这个OpenCL的web移植已经“发布”(尚未发布,是一个工作草案)。我不知道从哪里开始,因为我不知道该怎么做,因为我想在Chrome上做,不幸的是,Chrome还没有像Firefox这样的实验性插件,我知道,多亏了v8,它的性能会更好

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


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


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

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

对于Chrome版本,三星(谷歌代码上的那个)是合适的选择。它是针对Safari的:Safari基于WebKit,这也是Chrome的基础。然而,使用Chrome的渲染器可能很棘手,因为我相信这是一个特殊的过程。不过,我敢打赌Chrome开发者很乐意在这方面提供帮助,我建议如果有人已经开始关注这个问题,请咨询WebCL项目成员

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


祝你好运

带有WebCL的Chrome现在可以在github上使用。 源代码、构建说明和二进制文件(适用于windows)

(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的继承者

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

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

选择?

WebGL计算着色器适用于那些打算在WebGL渲染中使用计算结果的人,那些正在应用程序中进行WebGL渲染的人,或者那些希望在web上创建原型然后移植到本机OpenGL的人

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


如果您最终希望有机会在CPU上运行代码,而无需修改,并且不需要GPU渲染,则可以通过Chrome/Chrome扩展进行WebCL。

并行计算?为什么不使用HTML5呢?因为这不是一些数据的问题,所以我需要讨论的是分布式计算、图像/视频处理、矩阵乘法和减法等操作,但其中许多都需要几秒钟的时间。毕竟是关于数学的应用。我也想听听这方面的情况!:)您无法将JavaScript与包含“语法并行性”的C进行比较,后者可以在GPU上使用数百个真正并行的“工作程序”运行。@Derek朕會功夫 因为CPU大约有2个核(例如Intel Core i5),而GPU大约有2000个核(例如GeForce GTX TITAN)