CUDA的行列式计算

Pau*_*eny 5 cuda gpu gpgpu nvidia linear-algebra

是否有任何库或免费提供的代码可以完全在GPU上计算6x6),双精度矩阵的行列式?

Pav*_*ili 4

这是计划,您将需要缓冲 100 个这些微小矩阵并启动一次内核以立即计算所有这些矩阵的行列式。

我不会编写实际的代码,但这应该会有所帮助。

1) 启动 # 个块 = # 个矩阵。每个块计算每个矩阵的行列式。

2) det(A) = det(A11 * A22 - A21 * A12); 其中 A 是 6x6,A11、A12、A21、A22 是 A 的 3x3 子矩阵。

3) 编写一个设备函数,对 3x3 矩阵进行矩阵乘法

4) 3x3 矩阵的 det 计算起来很简单:使用此处的公式

编辑:显然(2)仅在 A21 * A12 == A12 * A21 时才有效

另一种选择如下

1)对每个6x6矩阵进行高斯消去的LU分解

2)将U的对角线元素相乘得到行列式。

  • 请注意,步骤 2 仅在某些情况下有效,例如 A21*A22=A22*A21。请参阅[维基百科](http://en.wikipedia.org/wiki/Determinant#Block_matrices) (2认同)