簡體   English   中英

我如何知道 GPU 可以並行執行多少個矩陣運算?

[英]How do I know how many matrix operations a GPU can do in parallel?

我正在使用一個名為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.js,每個 GPU 對我可以操作的矩陣的大小都有限制,通常限於 GPU 支持的最大屏幕分辨率。 因此,如果我不得不猜測,我會認為我可以在 GPU 上一次並行執行的矩陣運算的最大數量是 7680 x 4320 x 3(寬 x 高 x 3 個顏色通道),例如 RTX 3080:

在此處輸入圖片說明

所以我猜我對那張卡的限制是:

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

編輯:

這不可能是正確的,因為每一代 Nvidia GPU 的最大分辨率規格:1000、2000、3000 系列都保持不變,時鍾速度也幾乎保持不變,增加了 CUDA 核心數,並且根據每個核心的線程數(參考 7m52s),似乎會增加卡每秒能夠執行的最大並發矩陣操作,但即使查看文檔我也不知道如何弄清楚那是什么,或者如果它甚至那么簡單。

如何計算 GPU 可以在一次並行傳遞中處理的最大矩陣運算大小?

看起來

gl.getParameter(gl.MAX_TEXTURE_SIZE)

可能是正確的答案,但我仍然不確定我們如何通過他們的文檔找出如何計算卡片答案。 基於架構(7m52s),這似乎是cuda core count * thread count per corecuda core count * thread count per core

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM