簡體   English   中英

CUDA CSR Matrix-Matrix產品自行轉置

[英]CUDA CSR Matrix-Matrix product transpose by itself

我有一個非常大,非常稀疏的最小二乘設計矩陣(A),我想將其自身相乘,如下所示:N = A ^ T * A,其中A和N以CSR格式存儲。 顯然,A的行多於列。 我通常直接逐行形成N,但是對於CSR,我必須首先形成一個圖,以確定N的哪些元素不為零。 我可以做到這一點(甚至有一些舊的C代碼),但我希望能得到開發較少的解決方案。 我正在使用CUDA,因此可以在GPU或CPU上完成,在那里我可以看到使用GPU的優勢。 我已經草擬了一個算法,但是希望這個問題已經解決。 除了直接A * x = l QR解算器(其中A =(m,n))之外,我在CUDA工具包中找不到任何東西。 Google也不是很有幫助。

我正在使用C ++。

有人在這里有經驗嗎?

普通的COO稀疏矩陣排序為CSR / CSC格式 ,特別是CSR和CSC格式之間的轉置/轉換是相對便宜的操作,並且可以在cuSPARSE庫中輕松獲得。

將矩陣A從CSR格式轉換為CSC之后 ,您可以輕松地應用平凡的算法來計算N = A ^ T *A。
通過使每個線程處理A的一列以生成一個輸出,這也可以很容易地與CUDA並行化。

剛剛注意到CUDA工具包中的cuSparse實際上有一個csr-gemm,它支持在任一矩陣上轉置。 我不知道我怎么忽略了這一點。 請參閱https://docs.nvidia.com/cuda/cusparse/index.html#cusparse-lt-t-gt-csrgemm 看起來是最簡單的解決方案...

暫無
暫無

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

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