是使用SIMD指令的3x3矩阵求逆可能吗?矩阵、指令、SIMD

2023-09-11 04:58:40 作者:如果我开挖掘机你会爱我吗

我利用了ARM Cortex-A8架构的处理器和我有几个地方我计算3x3矩阵逆运算。

I'm making use of an ARM Cortex-A8 based processor and I have several places where I calculate 3x3 Matrix inverse operations.

由于Cortex-A8处理器拥有NEON SIMD处理器,我很感兴趣地使用这个协处理器的3×3矩阵求逆,我看见几个4x4的实现(英特尔SSE和的 freevec ),但没有我才在这里看到一个3x3矩阵求逆运算进行了使用SIMD指令。使用freevec该方法是通过把4x4矩阵为4,2×2矩阵,然后进行上每一个微小的操作和重组的结果到底获得4×4矩阵的逆。我没有看到这样的机会有3×3的矩阵。

As the Cortex-a8 processor has a NEON SIMD processor I'm interested to use this co-processor for 3x3 matrix inverse, I saw several 4x4 implementations (Intel SSE and freevec) but no where did I see a 3x3 matrix inverse operation carried out using SIMD instructions. The method used by freevec is by splitting the 4x4 matrix into 4, 2x2 matrices, then carry out tiny operations on each and recombine the results in the end to get the inverse of 4x4 matrix. I don't see such an opportunity with 3x3 matrices.

有人在那里有一个想法如何进行3×3矩阵求逆采用SIMD指令,这将是非常有帮助的我?

Anyone out there has an idea how to carry out 3x3 matrix inversion using SIMD instructions, it will be very helpful to me?

问候 维克拉姆

推荐答案

您可以通过添加一个4行和第4列,无论是(0 0 0 1)扩大了3×3矩阵4x4矩阵。反转后,左上方的3×3子矩阵将具有所需的逆

You can expand the 3x3 matrix to 4x4 matrix by adding a 4th row and 4th column, both being (0 0 0 1). After inversion, the upper-left 3x3 submatrix will have the required inverse.