turbo.js - 在浏览器中利用GPGPU执行大规模并行计算。
turbo.js 是一个小型库,用于简化可并行执行的复杂计算。实际执行的计算(即内核)使用 GPU 进行运算,这使得您可以一次性处理一个值数组。
turbo.js 兼容所有浏览器(在不使用 ES6 模板字符串时甚至支持 IE),并且兼容大多数桌面和移动 GPU。
如需实时演示和简短介绍,请访问 turbo.GitHub.io。
对于此示例(也可在上述网站中找到),我们将对一个较大的值数组执行简单计算。
首先,在您的网站中包含 turbo.js:
<script src="https://turbo.github.io/js/turbo.js"></script>或者通过 npm 拉取 turbojs 以在项目中使用。
turbo.js 只有两个可被你的代码调用的函数。它们都包含在 turbojs 对象中。如果该对象未初始化,则说明出了问题。因此,第一步是检查 turbo.js 的支持情况。你还可以选择检查 turbo.js 抛出的异常,这些异常将提供有关错误的更多详细信息。
if (turbojs) {
// yay
}现在我们需要一些内存。由于数据需要从 GPU 和系统内存中传输,我们希望减少此复制操作所产生的开销。为此,turbo.js 提供了 alloc 函数。该函数将在 GPU 和浏览器中预留内存。JavaScript 可以通过访问包含预留内存的变量的 .data 子数组来访问和更改预留内存的内容。
对于 turbo.js 和 JavaScript,分配的内存是严格类型化的,表示一个 32 位 IEEE 浮点值的一维数组。因此,.data 子数组是一个标准的 JavaScript Float32Array 对象。分配后,你可以随意与该数组交互,但更改其大小除外。这样做将导致未定义行为。
if (turbojs) {
var foo = turbojs.alloc(1e6);
}现在我们有了一个数组,其中
暂无开放 Issues,或尚未同步最近议题。