I have made some progress with this problem. I fixed some instances of int to size_t in function definitions in the C code routines and have built the examples e.g. testddriver.f which runs.

In the application I want to adapt to use this I use LU decomposition and I have the routines for this and can inspect the example in testddriver.f.

I also use PDGEMR2D to set up the matrix before the decomposition. I have found a routine in the outofcore routines called FPDGEMR2D which looks like the outofcore equivalent. Comparing the argument lists they are similar, but FPDGEMR2D lacks the final argument giving an overall context:

SUBROUTINE FPDGEMR2D( M, N, AMAT, IA, JA, DESCA, BMAT, IB, JB, DESCB )

SUBROUTINE PDGEMR2D( M, N,

$ A, IA, JA, ADESC,

$ B, IB, JB, BDESC,

$ CTXT)

Also FPDGEMR2D contains a call to a routine called PDGEMR2DO which also lacks the final argument.

CALL PDGEMR2DO( M, N, AMAT, IA, JA, DESCA, BMAT, IB, JB,

$ DESCB )

I have not been able to find this routine.

The code for PDGEMR2D contains this notice.

- Code: Select all
` Important notice`

================

The parameters of the routine have changed in April 1996

There is a new last argument. It must be a context englobing

all processors involved in the initial and final distribution.

Be aware that all processors included in this

context must call the redistribution routine.

The date of FPDGEMR2D from the outofcore distribution is in 1999, and for PDGEMR2D is 2006.

I have not found a working example of code using FPDGEMR2D. I am wondering if it should be updated to include the extra argument for compatibility with Scalapack 2.0.0 and later.

Any help with this will be very much appreciated.

John