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
的方式
GPU 有预热时间,所以如果你真的想在 1000 次执行而不是单次执行时比较它们的基准测试
GPU 并不总是更快,这取决于任务和 GPU RAM 大小
最后,正如评论中的 Keith Mention 所说,gpu 在并行小任务和大批量处理中比 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
的方式GPU 有预热时间,所以如果你真的想在 1000 次执行而不是单次执行时比较它们的基准测试
GPU 并不总是更快,这取决于任务和 GPU RAM 大小
最后,正如评论中的 Keith Mention 所说,gpu 在并行小任务和大批量处理中比 cpu 效果更好