![](https://img.sabae.cc/data/20230513/711e5f05-9ef1-4f3e-875e-1183458cb72c.jpg)
GPUを気軽に使えるライブラリ、GPGPU.js で、1億コの三角関数計算をしてみました。
![](https://img.sabae.cc/data/20230513/f32c057a-388a-4c6b-8e34-43f2b0ac711f.jpg)
「GPGPU simple benchmark by WebGL」
GPUとCPUでそれぞれ1億コの三角関数sinを計算して、その結果を表示します。
M1 MacBook Proで、GPU 200msec、CPU 800msec (JavaScript)という感じでした。
![](https://img.sabae.cc/data/20230513/d71ac5d0-5ae1-494f-9881-d81ceed1a208.jpg)
「code4fukui/GPGPU-examples」
GPGPU.jsのプログラムはオープンソース。いつものようにGitHubにあります。
import { GPGPU } from "./GPGPU.js";
const vstf = `#version 300 es
in float position;
out float vPosition;
void main() {
vPosition = sin(position);
}
`;
const len = 10000 * 10000;
const position = new Float32Array(len);
for (let i = 0; i < len; i++) {
position[i] = i;
}
const vPosition = new Float32Array(position.length);
const gpu = new GPGPU(null, vstf, { position }, { vPosition });
const st1 = performance.now();
const res1 = gpu.calc();
const dt1 = performance.now() - st1;
console.log(gpu.inv.position, gpu.outv.vPosition);
result.innerHTML = `GPU: ${dt1.toFixed(1)}msec`;
コアのコード、GLSL言語で、三角関数sinの計算をしています
vPosition = sin(position);
links
- ブラウザ上で気軽に汎用並列計算するライブラリ GPGPU.js by GLSL.js
- 神山まるごと高専ITブートキャンプおまけ1、アートで学ぶC言語の親戚GLSLで学ぶ変数と計算