我是cuda的初學者。我想嘗試使用cusolver API來解決用於行主矩陣的svd。但我困惑有關領導維度矩陣A如何使用cusolver gesvd函數解決行主矩陣的SVD問題
我有一個行優先矩陣100×(例如,我有100個數據是在10維空間。) 隨着CUDA文檔,cusolverDnDgesvd功能需求lda參數(矩陣A的主導維數)。我的矩陣是行主,所以我給了cusolver gesvd函數10。但功能不起作用。這個函數表明我的lda參數是錯誤的。 好的,我給了cusolver gesvd函數100。函數正在工作,但函數(U,S,Vt)的結果似乎是錯誤的。我的意思是,我無法從U 獲得矩陣A Vt。
據我所知,cuSolver API假定所有矩陣都是列主要的。 如果我將矩陣更改爲列專業,m低於n(10x100)。但gesvd函數僅適用於m> = n。
是的,我有麻煩了。我怎麼解決這個問題?
感謝您的意見。 –
其實我只是用轉置來解決這個問題。 據我所知,cuBLAS API假設所有輸入/輸出矩陣都是列主要的。所以我使用轉置將我的行主矩陣(100x10)更改爲列主(10x100)。我只是把這個柱主矩陣給了gesvd函數,但是我從行主矩陣中給出了其他參數,例如m,n,lda,ldu,ldvt。我的意思是,只需輸入100到m中,10輸入到n中,A是將行主矩陣換位,100爲lda,100爲ldu,10爲ldvt。 功能運行良好。我可以從U * S * Vt得到原點矩陣A,當然,gesvd的U,Vt矩陣也是列主要的。 –