From 4d5a921205f3a35de476f97e66cbd38be283e61d Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 13 Oct 2015 08:43:15 +0000 Subject: [PATCH] mld2p4: config/pac.m4 docs/src/building.tex docs/src/userguide.tex docs/src/userhtml.tex mlprec/impl/mld_cslu_interface.c mlprec/impl/mld_dslu_interface.c mlprec/impl/mld_sslu_interface.c mlprec/impl/mld_zslu_interface.c mlprec/mld_c_slu_solver.F90 mlprec/mld_d_slu_solver.F90 mlprec/mld_s_slu_solver.F90 mlprec/mld_z_slu_solver.F90 Fixed docs and interface to Super_LU 4.3. --- config/pac.m4 | 4 +-- docs/src/building.tex | 46 +++++++++++++++++++++----------- docs/src/userguide.tex | 4 +-- docs/src/userhtml.tex | 4 +-- mlprec/impl/mld_cslu_interface.c | 19 ++++++++----- mlprec/impl/mld_dslu_interface.c | 19 ++++++++----- mlprec/impl/mld_sslu_interface.c | 13 ++++++--- mlprec/impl/mld_zslu_interface.c | 19 ++++++++----- mlprec/mld_c_slu_solver.F90 | 23 ++++++++-------- mlprec/mld_d_slu_solver.F90 | 23 ++++++++-------- mlprec/mld_s_slu_solver.F90 | 23 ++++++++-------- mlprec/mld_z_slu_solver.F90 | 23 ++++++++-------- 12 files changed, 130 insertions(+), 90 deletions(-) diff --git a/config/pac.m4 b/config/pac.m4 index 6c88736b..e294f6e1 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -324,8 +324,8 @@ dnl AC_DEFUN([PAC_ARG_WITH_PSBLAS], [ AC_ARG_WITH(psblas, -AC_HELP_STRING([--with-psblas], [The install directory for PSBLAS, for example, - --with-psblas=/opt/packages/psblas-3.1]), +AC_HELP_STRING([--with-psblas=DIR], [The install directory for PSBLAS, for example, + --with-psblas=/opt/packages/psblas-3.3]), [pac_cv_psblas_dir=$withval], [pac_cv_psblas_dir='']) AC_ARG_WITH(psblas-incdir, AC_HELP_STRING([--with-psblas-incdir=DIR], [Specify the directory for PSBLAS includes.]), diff --git a/docs/src/building.tex b/docs/src/building.tex index 0451afd8..0d4e7561 100644 --- a/docs/src/building.tex +++ b/docs/src/building.tex @@ -35,10 +35,10 @@ The following base libraries are needed: preconditioners based on the UMFPACK or SuperLU third party libraries. \item[MPI] \cite{MPI2,MPI1} A version of MPI is available on most - high-performance computing systems; only version 1.1 is required. + high-performance computing systems; \item[PSBLAS] \cite{PSBLASGUIDE,psblas_00} Parallel Sparse BLAS is available from \\ \verb|http://www.ce.uniroma2.it/psblas|; version - 3.1 (or later) is required. Indeed, all the prerequisites + 3.3 (or later) is required. Indeed, all the prerequisites listed so far are also prerequisites of PSBLAS. \end{description} Please note that the four previous libraries must have Fortran @@ -88,7 +88,7 @@ The full set of options may be looked at by issuing the command \begin{verbatim} `configure' configures MLD2P4 2.0 to adapt to many kinds of systems. -Usage: ../../configure [OPTION]... [VAR=VALUE]... +Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. @@ -150,19 +150,31 @@ Optional Features: Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-psblas The source directory for PSBLAS, for example, - --with-psblas=/opt/packages/psblas-2.3 - --with-libs List additional link flags here. For example, - --with-libs=-lspecial_system_lib or - --with-libs=-L/path/to/libs + --with-psblas=DIR The install directory for PSBLAS, for example, + --with-psblas=/opt/packages/psblas-3.3 + --with-psblas-incdir=DIR + Specify the directory for PSBLAS includes. + --with-psblas-libdir=DIR + Specify the directory for PSBLAS library. + --with-extra-libs List additional link flags here. For example, + --with-extra-libs=-lspecial_system_lib or + --with-extra-libs=-L/path/to/libs --with-umfpack=LIBNAME Specify the library name for UMFPACK library. Default: "-lumfpack -lamd" --with-umfpackdir=DIR Specify the directory for UMFPACK library and includes. + --with-umfpackincdir=DIR + Specify the directory for UMFPACK includes. + --with-umfpacklibdir=DIR + Specify the directory for UMFPACK library. --with-superlu=LIBNAME Specify the library name for SUPERLU library. Default: "-lsuperlu" --with-superludir=DIR Specify the directory for SUPERLU library and includes. + --with-superluincdir=DIR + Specify the directory for SUPERLU includes. + --with-superlulibdir=DIR + Specify the directory for SUPERLU library. --with-superludist=LIBNAME Specify the libname for SUPERLUDIST library. Requires you also specify SuperLU. Default: @@ -170,6 +182,10 @@ Optional Packages: --with-superludistdir=DIR Specify the directory for SUPERLUDIST library and includes. + --with-superludistincdir=DIR + Specify the directory for SUPERLUDIST includes. + --with-superludistlibdir=DIR + Specify the directory for SUPERLUDIST library. Some influential environment variables: FC Fortran compiler command @@ -179,7 +195,7 @@ Some influential environment variables: LIBS libraries to pass to the linker, e.g. -l CC C compiler command CFLAGS C compiler flags - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor MPICC MPI C compiler command @@ -193,13 +209,13 @@ it to find libraries and programs with nonstandard names/locations. Report bugs to . \end{verbatim} -Thus, a sample build with libraries in installation -directories specifics to the GNU 4.7 compiler suite might be as -follows, specifying only the UMFPACK external package: +For instance, if a user has built and installed PSBLAS 3.3 under the +\verb|/opt| directory and is +using the SuiteSparse package (which includes UMFPACK), then MLD2P4 +might be configured with: \begin{verbatim} - ./configure --with-psblas=/home/user/psblas-3.1/ \ - --with-libs="-L/usr/local/BLAS/gnu47" \ - --with-umfpackdir=/usr/local/UMFPACK/gnu47 + ./configure --with-psblas=/opt/psblas-3.3/ \ + --with-umfpackincdir=/usr/include/suitesparse \end{verbatim} Once the configure script has completed execution, it will have generated the file \verb|Make.inc| which will then be used by all diff --git a/docs/src/userguide.tex b/docs/src/userguide.tex index b962eaeb..8777abf2 100644 --- a/docs/src/userguide.tex +++ b/docs/src/userguide.tex @@ -125,9 +125,9 @@ based on PSBLAS} \vspace{\stretch{1}} \noindent\hspace*{\centeroffset}\makebox[0pt][l]{\begin{minipage}{\textwidth} \flushright -\large Software version: 2.0-beta\\ +\large Software version: 2.0\\ %\today -\large June 14, 2013 +\large Oct. 12, 2015 \end{minipage}} %\addtolength{\textwidth}{\centeroffset} \vspace{\stretch{2}} diff --git a/docs/src/userhtml.tex b/docs/src/userhtml.tex index 60959acc..a1cc2c28 100644 --- a/docs/src/userhtml.tex +++ b/docs/src/userhtml.tex @@ -102,9 +102,9 @@ based on PSBLAS}\\[3ex] University of Rome ``Tor Vergata'', Italy\\[2ex] %\\[10ex] %\today -Software version: 2.0-beta\\ +Software version: 2.0\\ %\today -June 14, 2013 +Oct. 12, 2015 \clearpage \ \\ \thispagestyle{empty} diff --git a/mlprec/impl/mld_cslu_interface.c b/mlprec/impl/mld_cslu_interface.c index c4de53f6..e8c6fc2f 100644 --- a/mlprec/impl/mld_cslu_interface.c +++ b/mlprec/impl/mld_cslu_interface.c @@ -116,7 +116,7 @@ int mld_cslu_fact(int n, int nnz, #else void *values, #endif - int *rowptr, int *colind, void **f_factors) + int *colptr, int *rowind, void **f_factors) { /* * This routine can be called from Fortran. @@ -142,6 +142,7 @@ int mld_cslu_fact(int n, int nnz, superlu_options_t options; SuperLUStat_t stat; factors_t *LUfactors; + GlobalLU_t Glu; /* Not needed on return. */ int info; trans = NOTRANS; @@ -153,8 +154,8 @@ int mld_cslu_fact(int n, int nnz, /* Initialize the statistics variables. */ StatInit(&stat); - cCreate_CompRow_Matrix(&A, n, n, nnz, values, colind, rowptr, - SLU_NR, SLU_C, SLU_GE); + cCreate_CompCol_Matrix(&A, n, n, nnz, values, rowind, colptr, + SLU_NC, SLU_C, SLU_GE); L = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); U = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); if ( !(perm_r = intMalloc(n)) ) ABORT("Malloc fails for perm_r[]."); @@ -176,9 +177,15 @@ int mld_cslu_fact(int n, int nnz, panel_size = sp_ienv(1); relax = sp_ienv(2); - - cgstrf(&options, &AC, relax, panel_size, - etree, NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#if defined(SLU_VERSION_5) + cgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info); +#elif defined(SLU_VERSION_4) + cgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#else + choke_on_me; +#endif if ( info == 0 ) { Lstore = (SCformat *) L->Store; diff --git a/mlprec/impl/mld_dslu_interface.c b/mlprec/impl/mld_dslu_interface.c index b766eb58..94cef0e9 100644 --- a/mlprec/impl/mld_dslu_interface.c +++ b/mlprec/impl/mld_dslu_interface.c @@ -111,7 +111,7 @@ typedef struct { int mld_dslu_fact(int n, int nnz, double *values, - int *rowptr, int *colind, void **f_factors) + int *colptr, int *rowind, void **f_factors) { /* * This routine can be called from Fortran. @@ -137,6 +137,7 @@ int mld_dslu_fact(int n, int nnz, double *values, superlu_options_t options; SuperLUStat_t stat; factors_t *LUfactors; + GlobalLU_t Glu; /* Not needed on return. */ int info; trans = NOTRANS; @@ -148,8 +149,8 @@ int mld_dslu_fact(int n, int nnz, double *values, /* Initialize the statistics variables. */ StatInit(&stat); - dCreate_CompRow_Matrix(&A, n, n, nnz, values, colind, rowptr, - SLU_NR, SLU_D, SLU_GE); + dCreate_CompCol_Matrix(&A, n, n, nnz, values, rowind, colptr, + SLU_NC, SLU_D, SLU_GE); L = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); U = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); if ( !(perm_r = intMalloc(n)) ) ABORT("Malloc fails for perm_r[]."); @@ -171,9 +172,15 @@ int mld_dslu_fact(int n, int nnz, double *values, panel_size = sp_ienv(1); relax = sp_ienv(2); - - dgstrf(&options, &AC, relax, panel_size, - etree, NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#if defined(SLU_VERSION_5) + dgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info); +#elif defined(SLU_VERSION_4) + dgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#else + choke_on_me; +#endif if ( info == 0 ) { Lstore = (SCformat *) L->Store; diff --git a/mlprec/impl/mld_sslu_interface.c b/mlprec/impl/mld_sslu_interface.c index 15973b96..587beacc 100644 --- a/mlprec/impl/mld_sslu_interface.c +++ b/mlprec/impl/mld_sslu_interface.c @@ -111,7 +111,7 @@ typedef struct { int mld_sslu_fact(int n, int nnz, float *values, - int *rowptr, int *colind, void **f_factors) + int *colptr, int *rowind, void **f_factors) { /* * This routine can be called from Fortran. @@ -137,6 +137,7 @@ int mld_sslu_fact(int n, int nnz, float *values, superlu_options_t options; SuperLUStat_t stat; factors_t *LUfactors; + GlobalLU_t Glu; /* Not needed on return. */ int info; trans = NOTRANS; @@ -148,7 +149,7 @@ int mld_sslu_fact(int n, int nnz, float *values, /* Initialize the statistics variables. */ StatInit(&stat); - sCreate_CompRow_Matrix(&A, n, n, nnz, values, colind, rowptr, + sCreate_CompRow_Matrix(&A, n, n, nnz, values, rowind, colptr, SLU_NR, SLU_S, SLU_GE); L = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); U = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); @@ -171,9 +172,15 @@ int mld_sslu_fact(int n, int nnz, float *values, panel_size = sp_ienv(1); relax = sp_ienv(2); - +#if defined(SLU_VERSION_5) + sgstrf(&options, &AC, relax, panel_size, + etree, NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info); +#elif defined(SLU_VERSION_4) sgstrf(&options, &AC, relax, panel_size, etree, NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#else + choke_on_me; +#endif if ( info == 0 ) { Lstore = (SCformat *) L->Store; diff --git a/mlprec/impl/mld_zslu_interface.c b/mlprec/impl/mld_zslu_interface.c index 833a81d8..7ec8d4d4 100644 --- a/mlprec/impl/mld_zslu_interface.c +++ b/mlprec/impl/mld_zslu_interface.c @@ -115,7 +115,7 @@ int mld_zslu_fact(int n, int nnz, #else void *values, #endif - int *rowptr, int *colind, void **f_factors) + int *colptr, int *rowind, void **f_factors) { /* @@ -142,6 +142,7 @@ int mld_zslu_fact(int n, int nnz, superlu_options_t options; SuperLUStat_t stat; factors_t *LUfactors; + GlobalLU_t Glu; /* Not needed on return. */ int info; trans = NOTRANS; @@ -153,8 +154,8 @@ int mld_zslu_fact(int n, int nnz, /* Initialize the statistics variables. */ StatInit(&stat); - zCreate_CompRow_Matrix(&A, n, n, nnz, values, colind, rowptr, - SLU_NR, SLU_Z, SLU_GE); + zCreate_CompCol_Matrix(&A, n, n, nnz, values, rowind, colptr, + SLU_NC, SLU_Z, SLU_GE); L = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); U = (SuperMatrix *) SUPERLU_MALLOC( sizeof(SuperMatrix) ); if ( !(perm_r = intMalloc(n)) ) ABORT("Malloc fails for perm_r[]."); @@ -176,9 +177,15 @@ int mld_zslu_fact(int n, int nnz, panel_size = sp_ienv(1); relax = sp_ienv(2); - - zgstrf(&options, &AC, relax, panel_size, - etree, NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#if defined(SLU_VERSION_5) + zgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &Glu, &stat, &info); +#elif defined(SLU_VERSION_4) + zgstrf(&options, &AC, relax, panel_size, etree, + NULL, 0, perm_c, perm_r, L, U, &stat, &info); +#else + choke_on_me; +#endif if ( info == 0 ) { Lstore = (SCformat *) L->Store; diff --git a/mlprec/mld_c_slu_solver.F90 b/mlprec/mld_c_slu_solver.F90 index ab658f15..ca3d9986 100644 --- a/mlprec/mld_c_slu_solver.F90 +++ b/mlprec/mld_c_slu_solver.F90 @@ -249,7 +249,7 @@ contains class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables type(psb_cspmat_type) :: atmp - type(psb_c_csr_sparse_mat) :: acsr + type(psb_c_csc_sparse_mat) :: acsc type(psb_c_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level @@ -272,17 +272,16 @@ contains call a%cscnv(atmp,info,type='coo') call psb_rwextd(n_row,atmp,info,b=b) - call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) - call atmp%mv_to(acsr) - nrow_a = acsr%get_nrows() - call acsr%csclip(acoo,info,jmax=nrow_a) - call acsr%mv_from_coo(acoo,info) - nztota = acsr%get_nzeros() + call atmp%cscnv(info,type='coo',dupl=psb_dupl_add_) + nrow_a = atmp%get_nrows() + call atmp%a%csclip(acoo,info,jmax=nrow_a) + call acsc%mv_from_coo(acoo,info) + nztota = acsc%get_nzeros() ! Fix the entries to call C-base SuperLU - acsr%ja(:) = acsr%ja(:) - 1 - acsr%irp(:) = acsr%irp(:) - 1 - info = mld_cslu_fact(nrow_a,nztota,acsr%val,& - & acsr%irp,acsr%ja,sv%lufactors) + acsc%ia(:) = acsc%ia(:) - 1 + acsc%icp(:) = acsc%icp(:) - 1 + info = mld_cslu_fact(nrow_a,nztota,acsc%val,& + & acsc%icp,acsc%ia,sv%lufactors) if (info /= psb_success_) then info=psb_err_from_subroutine_ @@ -291,7 +290,7 @@ contains goto 9999 end if - call acsr%free() + call acsc%free() call atmp%free() else ! ? diff --git a/mlprec/mld_d_slu_solver.F90 b/mlprec/mld_d_slu_solver.F90 index d35d89d5..7c0020ad 100644 --- a/mlprec/mld_d_slu_solver.F90 +++ b/mlprec/mld_d_slu_solver.F90 @@ -249,7 +249,7 @@ contains class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables type(psb_dspmat_type) :: atmp - type(psb_d_csr_sparse_mat) :: acsr + type(psb_d_csc_sparse_mat) :: acsc type(psb_d_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level @@ -272,17 +272,16 @@ contains call a%cscnv(atmp,info,type='coo') call psb_rwextd(n_row,atmp,info,b=b) - call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) - call atmp%mv_to(acsr) - nrow_a = acsr%get_nrows() - call acsr%csclip(acoo,info,jmax=nrow_a) - call acsr%mv_from_coo(acoo,info) - nztota = acsr%get_nzeros() + call atmp%cscnv(info,type='coo',dupl=psb_dupl_add_) + nrow_a = atmp%get_nrows() + call atmp%a%csclip(acoo,info,jmax=nrow_a) + call acsc%mv_from_coo(acoo,info) + nztota = acsc%get_nzeros() ! Fix the entries to call C-base SuperLU - acsr%ja(:) = acsr%ja(:) - 1 - acsr%irp(:) = acsr%irp(:) - 1 - info = mld_dslu_fact(nrow_a,nztota,acsr%val,& - & acsr%irp,acsr%ja,sv%lufactors) + acsc%ia(:) = acsc%ia(:) - 1 + acsc%icp(:) = acsc%icp(:) - 1 + info = mld_dslu_fact(nrow_a,nztota,acsc%val,& + & acsc%icp,acsc%ia,sv%lufactors) if (info /= psb_success_) then info=psb_err_from_subroutine_ @@ -291,7 +290,7 @@ contains goto 9999 end if - call acsr%free() + call acsc%free() call atmp%free() else ! ? diff --git a/mlprec/mld_s_slu_solver.F90 b/mlprec/mld_s_slu_solver.F90 index 5f32d569..4407e0ee 100644 --- a/mlprec/mld_s_slu_solver.F90 +++ b/mlprec/mld_s_slu_solver.F90 @@ -249,7 +249,7 @@ contains class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables type(psb_sspmat_type) :: atmp - type(psb_s_csr_sparse_mat) :: acsr + type(psb_s_csc_sparse_mat) :: acsc type(psb_s_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level @@ -272,17 +272,16 @@ contains call a%cscnv(atmp,info,type='coo') call psb_rwextd(n_row,atmp,info,b=b) - call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) - call atmp%mv_to(acsr) - nrow_a = acsr%get_nrows() - call acsr%csclip(acoo,info,jmax=nrow_a) - call acsr%mv_from_coo(acoo,info) - nztota = acsr%get_nzeros() + call atmp%cscnv(info,type='coo',dupl=psb_dupl_add_) + nrow_a = atmp%get_nrows() + call atmp%a%csclip(acoo,info,jmax=nrow_a) + call acsc%mv_from_coo(acoo,info) + nztota = acsc%get_nzeros() ! Fix the entries to call C-base SuperLU - acsr%ja(:) = acsr%ja(:) - 1 - acsr%irp(:) = acsr%irp(:) - 1 - info = mld_sslu_fact(nrow_a,nztota,acsr%val,& - & acsr%irp,acsr%ja,sv%lufactors) + acsc%ia(:) = acsc%ia(:) - 1 + acsc%icp(:) = acsc%icp(:) - 1 + info = mld_sslu_fact(nrow_a,nztota,acsc%val,& + & acsc%icp,acsc%ia,sv%lufactors) if (info /= psb_success_) then info=psb_err_from_subroutine_ @@ -291,7 +290,7 @@ contains goto 9999 end if - call acsr%free() + call acsc%free() call atmp%free() else ! ? diff --git a/mlprec/mld_z_slu_solver.F90 b/mlprec/mld_z_slu_solver.F90 index 00184ca1..f15d1fb8 100644 --- a/mlprec/mld_z_slu_solver.F90 +++ b/mlprec/mld_z_slu_solver.F90 @@ -249,7 +249,7 @@ contains class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables type(psb_zspmat_type) :: atmp - type(psb_z_csr_sparse_mat) :: acsr + type(psb_z_csc_sparse_mat) :: acsc type(psb_z_coo_sparse_mat) :: acoo integer :: n_row,n_col, nrow_a, nztota integer :: ictxt,np,me,i, err_act, debug_unit, debug_level @@ -272,17 +272,16 @@ contains call a%cscnv(atmp,info,type='coo') call psb_rwextd(n_row,atmp,info,b=b) - call atmp%cscnv(info,type='csr',dupl=psb_dupl_add_) - call atmp%mv_to(acsr) - nrow_a = acsr%get_nrows() - call acsr%csclip(acoo,info,jmax=nrow_a) - call acsr%mv_from_coo(acoo,info) - nztota = acsr%get_nzeros() + call atmp%cscnv(info,type='coo',dupl=psb_dupl_add_) + nrow_a = atmp%get_nrows() + call atmp%a%csclip(acoo,info,jmax=nrow_a) + call acsc%mv_from_coo(acoo,info) + nztota = acsc%get_nzeros() ! Fix the entries to call C-base SuperLU - acsr%ja(:) = acsr%ja(:) - 1 - acsr%irp(:) = acsr%irp(:) - 1 - info = mld_zslu_fact(nrow_a,nztota,acsr%val,& - & acsr%irp,acsr%ja,sv%lufactors) + acsc%ia(:) = acsc%ia(:) - 1 + acsc%icp(:) = acsc%icp(:) - 1 + info = mld_zslu_fact(nrow_a,nztota,acsc%val,& + & acsc%icp,acsc%ia,sv%lufactors) if (info /= psb_success_) then info=psb_err_from_subroutine_ @@ -291,7 +290,7 @@ contains goto 9999 end if - call acsr%free() + call acsc%free() call atmp%free() else ! ?