在浏览器中实现GPU加速的JavaScript

2019-07-29   星集

gpu.js

GPU加速JavaScript

GPU.js是用于Web和节点的JavaScript的GPGPU(GPU上的通用计算)的JavaScript加速库。

GPU.js自动将简单的JavaScript函数转换为着色器语言并编译它们,以便它们在GPU上运行。

如果GPU不可用,这些功能仍将在常规JavaScript中运行。

安装

在Linux上,确保安装了正确的扩展:( sudo apt install mesa-common-dev libxi-dev根据您的发行版进行调整)

NPM

npm install gpu.js --save

语法支持

gpu.js依赖于内核函数仅使用合法JavaScript语法的子集的假设:

  • 1D,2D,3D数组或仅作为内核输入的数字
  • 1D,2D,3D数组作为内核输出
  • 数字变量
  • 自定义和自定义本地function小号
  • 算术运算(+,+=,-,*,/,%)
  • Javascript数学函数(Math.floor()等)
  • 循环
  • if和else陈述
  • const 和 let
  • 闭包没有捕获变量

Browser



Node

const { GPU } = require('gpu.js');
const gpu = new GPU();
const multiplyMatrix = gpu.createKernel(function(a, b) {
let sum = 0;
for (let i = 0; i < 512; i++) {
sum += a[this.thread.y][i] * b[i][this.thread.x];
}
return sum;
}).setOutput([512, 512]);
const c = multiplyMatrix(a, b);

Typescript

import { GPU } from 'gpu.js';
const gpu = new GPU();
const multiplyMatrix = gpu.createKernel(function(a: number[][], b: number[][]) {
let sum = 0;
for (let i = 0; i < 512; i++) {
sum += a[this.thread.y][i] * b[i][this.thread.x];
}
return sum;
}).setOutput([512, 512]);
const c = multiplyMatrix(a, b) as number[][];

更多使用方法 要查看 官方文档

github

https://github.com/gpujs/gpu.js

您知道哪些好用的JS 扩展包,欢迎评论分享,共同探讨学习

如果觉得文章能够对您有所帮助,可以关注我,你的支持会鼓励我不断分享更多更好的优质文章。