Nodejs GPU.js 使用 GPU 比使用 CPU 慢

Nodejs GPU.js slower using GPU than using CPU

我有 运行 一个基准来比较 CPU 和 GPU 在 nodejs 中的使用与 GPU.js。 NVidia 图标显示 GPU 在第一个控制台计时器中的使用,但它比 CPU(第二个计时器)慢。

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]);

var a = [];
var b = [];
for (var i = 0; i < 512; i++) {
    a.push([]);
    b.push([]);
    for (var j = 0; j < 512; j++) {
        a[i].push(1);
        b[i].push(-1);
    }
}

console.time("gpu");
const c = multiplyMatrix(a, b);
console.timeEnd("gpu"); //2148ms

console.time("cpu");
var d = [];
for (var i = 0; i < 512; i++) {
    d.push([]);
    for (var j = 0; j < 512; j++) {
        let sum = 0;
        for (let k = 0; k < 512; k++) {
            sum += a[i][k] * b[k][j];
        }
        
        d[i].push(sum);
    }
}
console.timeEnd("cpu"); //710ms

我做错了什么吗?

这不是基准测试 CPU 与 GPU

的方式
  1. GPU 有预热时间,所以如果你真的想在 1000 次执行而不是单次执行时比较它们的基准测试

  2. GPU 并不总是更快,这取决于任务和 GPU RAM 大小

  3. 最后,正如评论中的 Keith Mention 所说,gpu 在并行小任务和大批量处理中比 cpu 效果更好