expm(f) -? (Cuda+Matlab) how we would implement the calculation of exponential matrices (expm)

Hello.
how we would implement the calculation of exponential matrices (expm) on the GPU. This function is used in all engineering calculations of electronic circuits (the calculation of currents, voltages …). Computation time on the CPU is huge!

Just found this which I thought I would share External Image

“Nineteen Dubious Ways to Compute the Exponential of a Matrix,” 1978 External Image
“Nineteen Dubious Ways to Compute the Exponential of a Matrix, Twenty-Five Years Later,” 2003

Edit PS Cuda has a function called expm1f() might be it

You probably ought to start by reading the following

SIAM Review 20, 1978, pp. 801–836
SIAM J. Matrix Anal. Appl., 26(4) (2005), pp. 1179–1193.

Which lays out the problems associated with matrix exponentiation and describes the algorithm that Matlab uses today.

Many thanks.

try to use the expm1f()

expm1f() has nothing to do with matrices. It is a C99 function that computes expf(x) - 1.0 in a way that is accurate for x close to zero. (Normally you would have large roundoff error caused by subtracting two nearly equal numbers.)

EXPM works with Jacket as described here: http://forums.accelereyes.com/forums/viewtopic.php?f=7&t=1981

Good luck!

I have implemented the matrix exponential for real/complex and single/double precision matrices using cuBLAS, cuSolver, and thrust.