我是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矩阵也是列主要的。 –