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

标签 javascript node.js gpgpu

我已经运行了一个基准测试来比较 nodejs 和 GPU.js 中 CPU 和 GPU 的使用情况。 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 进行基准测试的方法

  • GPU 有预热时间,所以如果你真的想在 1000 次执行而不是单次执行上对它们进行基准比较
  • GPU 并不总是更快,这取决于任务和 GPU RAM 大小
  • 最后,正如 Keith 在评论中提到的那样,gpu 在并行小任务和大批量中的效果比 cpu 更好
  • 关于javascript - Nodejs GPU.js 使用 GPU 比使用 CPU 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65370419/

    相关文章:

    javascript - JSX 中断......使用映射生成条件 JSX 元素循环遍历数组

    如果无法从文档中找到元素,Javascript 文件将无法运行

    javascript - 将AMD模块导入Mocha测试

    node.js - Electron-packager - "path"参数必须是字符串类型。接收类型未定义

    python - 如何在 Python virtualenv 中安装 lessc 和 nodejs?

    javascript - 当在代码中使用 $(this) 时,人们如何命名它?

    java - Android - 将值从 HTML 或 Javascript 传递到 Java 的最简单方法?

    c - 在 OpenCL 和映射缓冲区中使用多个命令队列。我会遇到冲突吗?

    c++ - 为什么将内存从 VRAM 复制到 RAM 比从 RAM 复制到 VRAM 慢? (OpenGL)

    c++ - Opencv-ocl 可以用不同的硬件执行吗?