使用CUDA C计算以下表达式的最有效方法可能是什么?
(A - B(D^-1)B^T)^-1
其中D是一个非常大的对称矩阵,A是一个小的对称矩阵,这使得B和B^T是中等大小的矩形非对称矩阵。当然 (^-1) 和 (^T) 分别是逆运算和转置运算。
使用CUDA C计算以下表达式的最有效方法可能是什么?
(A - B(D^-1)B^T)^-1
其中D是一个非常大的对称矩阵,A是一个小的对称矩阵,这使得B和B^T是中等大小的矩形非对称矩阵。当然 (^-1) 和 (^T) 分别是逆运算和转置运算。
如果您可以进行“低级”编程,则可以通过CULA或MAGMA库执行矩阵求逆。
CULA Dense 包含系统求解、线性最小二乘求解和约束线性最小二乘求解的单精度(实数或复数)精度。CULA Sparse 是稀疏矩阵的迭代求解器的集合。Magma 包含dgetrf
并dgetri
计算平方双精度矩阵的逆矩阵。
对于矩阵乘法,包括转置,您可以使用cuBLAS
例程。
如果您更喜欢“更高”级别的编程,那么ArrayFire使您能够使用更自然的数学语法执行矩阵乘法、求逆、转置、线性系统的求解和元素运算。此外,Matlab 还为支持 NVIDIA CUDA 的 GPU 提供 GPU 计算支持。