【发布时间】:2017-08-12 13:20:56
【问题描述】:
我想用 JavaScript 编写需要大量数值计算的应用程序。但是,我对客户端 JavaScript 中高效的类线性代数计算的状态感到非常困惑。似乎有很多方法,但没有明确的迹象表明他们准备好了。它们中的大多数似乎对允许计算的向量和矩阵的大小有限制。
WebGL
显然允许在 GPU 上进行矢量和矩阵计算,但我不清楚这些限制。 Attempted wrappers 在这个库周围似乎限制了矩阵和向量的大小。这是实际限制(浏览器不支持其他任何东西)还是只是开发限制(需要有人编写代码)?
WebCL
WebCL 是提议的 OpenCL 浏览器级实现,但 appears to be stuck in development。
WebGPU
Apple 最近推出了 WebCL 的替代方案 WebGPU。到目前为止,有一个原型和演示,但我不清楚这是否会被广泛采用。
SIMD
Mozilla 有 put out an API for SIMD operations,但它只提供实验性支持。
JavaScript 是否支持浏览器端的矢量化计算?
注意事项:
我的问题不是“什么是 JavaScript 中数值计算的好库”,而是“JavaScript 中是否可以进行矢量化操作?”一个可接受的答案将链接到在非实验性浏览器中工作的矢量化计算演示。
我可能对 SIMD、矢量化和 GPU 计算感到困惑。我认为在这种情况下将它们同义使用是可以的,因为它们都允许使用硬件加速进行涉及高维向量的高效计算。
【问题讨论】:
-
我不擅长 JavaScript。有一个胖客户端很好,但我认为客户端的 SIMD 指令可能会导致很多问题。顺便说一句,您必须检查您在不同架构中的 Web 应用程序,以查看用于 javascript 的实验性 SIMD 库的效率。您必须考虑英特尔支持不同的 SIMD 技术 128 位、256 位和 512 位指令,在不同的操作系统、编译器、ISA 等中存在各种兼容性问题,这只是英特尔!如果您在服务器端使用 java,有一些方法可以在服务器端使用 SIMDization,这可能很有用。
标签: javascript matrix vector vectorization simd