Page 1 of 1

Work size of magma_dsyevdx is out of bounds in LP64 MAGMA

Posted: Tue Oct 18, 2016 8:06 pm
by jcbowden12
Hi,

I have had trouble with the work size of magma_dsyevdx() being passed in with 32 bit integers. I am interfacing MAGMA with GNU R. R uses a 32 int interface to BLAS/LAPACK so I use the LP64 interface of MAGMA, and forcing the work size to be held in 32 bits dramatically reduces the size of problems the code can handle. Is there any chance that the work sizes of the LP64 version can be an explicit 64 bit int type?

Thanks,
Josh

Re: Work size of magma_dsyevdx is out of bounds in LP64 MAGM

Posted: Wed Oct 19, 2016 1:39 am
by mgates3
That's not immediately clear. If somewhere in the chain we call LAPACK with that lwork, then making it 64-bit in MAGMA won't help. It appears that we do call LAPACK dsytrd inside MAGMA dsytrd. At that point, LAPACK probably doesn't need the entire workspace, since it is working on some small portion of the matrix, but it would require some careful analysis of the code to make sure lwork was correctly translated from 64-bit to 32-bit when needed.

So it's probably possible, but not trivial.

-mark

Re: Work size of magma_dsyevdx is out of bounds in LP64 MAGM

Posted: Wed Oct 19, 2016 8:56 pm
by jcbowden12
Thanks Mark,
Good to know it may be possible. I'm not sure if i'll try to implement it. I have a work-around by using shared memory and running the ILP64 MAGMA version in a separate process. It is not particularly elegant as often shmem is not cleaned up if R stops unexpectedly, so i'm interested in a better way.
Cheers,
Josh.