Just started this morning with Julia after a long overdue-
I was looking for an efficient way to invert a stack of 3x3 matrices. Coming from a
python background it does seem that
numpy.linalg.inv is terribly slow at this.
I briefly looked if someone did anything similar here but couldn’t find anything (feel free to point in response if you have come across a similar post before), so here it goes
using BenchmarkTools A = randn(1000,4,3,3) function compute_inv(A) B = zeros(size(A)); for i in 1:size(A) for j in 1:size(A) B[i,j,:,:] = inv(A[i,j,:,:]); end end end @benchmark compute_inv(A) # -------------- # minimum time: 3.723 ms (0.00% GC) # median time: 4.688 ms (0.00% GC) # mean time: 4.779 ms (5.16% GC) # maximum time: 10.037 ms (10.81% GC) # --------------
This was after figuring out that
inv accepts only square matrices and not higher dimensional arrays. I was surprised that it is actually much faster than
numpy.linalg.inv yet a bit slower than a hard coded version. (Of course, I may not be doing things efficiently)
Would be happy to know on how to improve the performance of the above code.