我想用 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 状态
- Chrome :In Development
- Firefox:没有公共(public)信号
- 边缘:In Development
- Safari:没有公共(public)信号
SIMD 在 LLVM Wasm 后端和网络引擎中的状态:
Proposal: Implementation Status
关于javascript - 浏览器 JavaScript 是否允许 SIMD 或矢量化操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917578/