I used DTRSYL3 via a Julia wrapper to solve Sylvester equations A*X+X*B+C = 0, where A is a large MxM matrix and B is a small NxN matrix, with N = 1 or 2. I was surprized that no speedup has been achieved with repect to using DTRSYL for problems with M = 4000. I tried to use a recursive blocking based solver available in the MatrixEquations.jl Julia package, which produced a significant (more than 2 times) speedup. Looking to the sourse code of DTRSYL3 I observed that in the case N is small, DTRSYL3 calls DTRSYL and this explains the lack of speedup.
I wonder if this is an intentional feature (the underlying algorithm being not able to treat the small dimension case properly) or is an omission in the implementation. Since I am calling DTRSYL3 in a loop for dimensions ranging from 1 to M , I would be very pleased for an update correcting this behaviour.
I used
DTRSYL3via a Julia wrapper to solve Sylvester equationsA*X+X*B+C = 0, whereAis a largeMxMmatrix andBis a smallNxNmatrix, withN = 1or2. I was surprized that no speedup has been achieved with repect to usingDTRSYLfor problems withM = 4000. I tried to use a recursive blocking based solver available in the MatrixEquations.jl Julia package, which produced a significant (more than 2 times) speedup. Looking to the sourse code ofDTRSYL3I observed that in the caseNis small,DTRSYL3callsDTRSYLand this explains the lack of speedup.I wonder if this is an intentional feature (the underlying algorithm being not able to treat the small dimension case properly) or is an omission in the implementation. Since I am calling
DTRSYL3in a loop for dimensions ranging from 1 toM, I would be very pleased for an update correcting this behaviour.