javascript - 浏览器 JavaScript 是否允许 SIMD 或矢量化操作?

标签 javascript matrix vector vectorization simd

我想用 JavaScript 编写需要大量数值计算的应用程序。但是,我对客户端 JavaScript 中类似线性代数的高效计算的状态感到非常困惑。似乎有很多方法,但没有明确表明它们已经准备就绪。他们中的大多数似乎对允许计算的向量和矩阵的大小有限制。

WebGL

显然允许在 GPU 上进行矢量和矩阵计算,但我不清楚限制。 Attempted wrappers这个库周围似乎限制了矩阵和向量的大小。这是实际限制(浏览器不支持其他任何东西)还是开发限制(需要有人编写代码)?

WebCL

WebCL是提议的 OpenCL 浏览器级实现,但是 appears to be stuck in development .

WebGPU

Apple 最近推出了 WebCL 的替代品,称为 WebGPU .到目前为止,已经有了原型(prototype)和演示,但我不清楚这是否会得到广泛采用。

SIMD

Mozilla 有 put out an API for SIMD operations , 但它只有实验支持。

JavaScript 是否支持浏览器端的矢量化计算?


注意事项:

  • 我的问题不是“什么是用 JavaScript 进行数值计算的好库”,而是“在 JavaScript 中是否可以进行矢量化操作?”可接受的答案将链接到在非实验性浏览器中工作的矢量化计算演示。

  • 我可能对 SIMD、矢量化和 GPU 计算感到困惑。我认为在这种情况下将它们作为同义词使用是可以的,因为它们都允许使用硬件加速进行涉及高维向量的高效计算。

最佳答案

SIMD.js是 JavaScript 的一部分。 Firefox 和 Chrome 中也有实验性实现,但现在 SIMD.js已从 TC39 的积极开发中移除并从第 3 阶段移除。Web 浏览器不再追求实现它。暴露于网络的 SIMD 操作正在 WebAssembly 中积极开发,具有基于 SIMD.js 操作的操作。

WebAssembly SIMD 状态

SIMD 在 LLVM Wasm 后端和网络引擎中的状态:
Proposal: Implementation Status

关于javascript - 浏览器 JavaScript 是否允许 SIMD 或矢量化操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917578/

相关文章:

c++ - 用 C++ 中的内存有效方式用列和替换 (m x m) 矩阵中对角线的值

arrays - 如何在Octave/MATLAB中找到向量每两个对应元素之间的范围?

c++ - 在 C++ 中的 main() 之前初始化 vector

javascript - 正则表达式不区分大小写

JavaScript Date.getWeek()?

c++ - D3DXMatrixTransformation2D 行为怪异

c++ - 将字符串 vector 转换为 *char

c++ - 如何创建一个既接受数组又接受 vector 引用的函数模板?

javascript - 如何将转换后的字符串转换回数组?

javascript - 如何在同一个 Angular Controller 上使用两个 Angular 数据表?