我怎么知道GPU可以并行执行多少个矩阵运算?

问题描述

我正在使用一个名为GPU.js的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]);

但是,由于我不是通过CUDA或OpenGL等低级协议来使用GPU,而是通过几层抽象,即WebGL之上的GPU.js,来使用GPU,因此,我真的不必学习较低级的基础知识。矩阵运算在硬件上的组装方式的精确度。

但是我注意到,对于GPU.js,每个GPU都限制了我可以操作的矩阵大小,通常限制为GPU支持的最大屏幕分辨率。因此,如果我不得不猜测,我会认为我一次可以在GPU上并行执行的矩阵运算的最大数量为7680 x 4320 x 3(宽度x高度x 3个颜色通道),例如RTX 3080:

enter image description here

所以我想我对该卡的限额是:

.setoutput([7680,4320,3]);

编辑:

这是不对的,因为每一代Nvidia GPU的最大分辨率规格:1000、2000、3000系列都保持不变,并且时钟速度也几乎保持不变,这是CUDA核心数增加,并且似乎会增加该卡每秒能够处理的最大并发矩阵操作数,based on the number of threads per core(参考7m52s),但是即使looking at the docs我也不确定如何计算搞清楚那是什么,甚至就是那么简单。

如何计算GPU在一次并行处理中可以处理的最大矩阵运算大小?

解决方法

似乎

gl.getParameter(gl.MAX_TEXTURE_SIZE)

可能是正确的答案,但我仍然不确定如何找到卡by their documentation的计算方法。好像是cuda core count * thread count per core based on the architecture(7分52秒)。