by chrisa » Thu Apr 07, 2011 4:17 am
Hi,
Thanks for the reply...
We're currently exploring the challenges of calling PLASMA (and MAGMA) within some of our library routines and evaluating performance as part of an internal research project, and we would need to call the C interfaces portably from Fortran.
Writing wrappers for MAGMA appears to be relatively simple because routine interfaces are the same as LAPACK (as far as I understand), but with PLASMA there are some differences in the interfaces due to the use of tiled algorithms, and that somewhat complicates things. For example, I have looked at calling PLASMA_dgetrf. This routine has an extra argument L, which is not such a problem, but IPIV has a different format. Currently in the PLASMA examples both of these arguments are handled in Fortran as non-portable pointers types (2-element, 4-byte integer arrays), but that could easily be made portable if the F2003 c_ptr kind was used instead. That's not a big problem; the main problem I'm having with this routine is that we use the values of IPIV in testing DGETRF, but I don't know how to get the IPIV that's returned from PLASMA_dgetrf into the format returned by a LAPACK DGETRF call (or if that's even meaningful anymore with a tiled approach?) in Fortran. I haven't seen any PLASMA utility functions to do this?
Thanks for your time,
Chris.