Updating autotest for SuperLU-dist version 6.3.1

This commit is contained in:
Rob Falgout 2020-05-14 20:34:56 -07:00
parent 249383ad61
commit 35386791fb
2 changed files with 28 additions and 25 deletions

View File

@ -49,7 +49,7 @@ co="--enable-debug --with-mli --with-superlu --with-superlu-include=/home/falgou
./test.sh basic.sh $src_dir -co: $co -mo: $mo ./test.sh basic.sh $src_dir -co: $co -mo: $mo
./renametest.sh basic $output_dir/basic-superlu ./renametest.sh basic $output_dir/basic-superlu
co="--enable-debug --with-mli --with-superlu --with-superlu-include=/home/falgout2/codes/superlu/SuperLU_5.2.1/SRC --with-dsuperlu --with-dsuperlu-include=/home/falgout2/codes/superlu/SuperLU_DIST_5.2.1/SRC --with-blas-lib=\\'-L/home/falgout2/codes/blas/BLAS-3.7.1 -lblas -lgfortran\\' --with-dsuperlu-lib=\\'-L/home/falgout2/codes/superlu/SuperLU_DIST_5.2.1/lib -lsuperlu_dist -L/home/falgout2/codes/parmetis/parmetis-4.0.3/build/Linux-x86_64/libparmetis -lparmetis -L/home/falgout2/codes/parmetis/parmetis-4.0.3/build/Linux-x86_64/libmetis -lmetis\\'" co="--enable-debug --with-mli --with-superlu --with-superlu-include=/home/falgout2/codes/superlu/SuperLU_5.2.1/SRC --with-dsuperlu --with-dsuperlu-include=/home/falgout2/codes/superlu/superlu_dist-6.3.1/SRC --with-blas-lib=\\'-L/home/falgout2/codes/blas/BLAS-3.7.1 -lblas -lgfortran\\' --with-dsuperlu-lib=\\'-L/home/falgout2/codes/superlu/superlu_dist-6.3.1/lib -lsuperlu_dist -L/home/falgout2/codes/parmetis/parmetis-4.0.3/build/Linux-x86_64/libparmetis -lparmetis -L/home/falgout2/codes/parmetis/parmetis-4.0.3/build/Linux-x86_64/libmetis -lmetis -lstdc++\\'"
./test.sh basic.sh $src_dir -co: $co -mo: $mo -ro: $ro ./test.sh basic.sh $src_dir -co: $co -mo: $mo -ro: $ro
./renametest.sh basic $output_dir/basic-dsuperlu ./renametest.sh basic $output_dir/basic-dsuperlu

View File

@ -17,7 +17,7 @@
#ifndef hypre_DSLU_DATA_HEADER #ifndef hypre_DSLU_DATA_HEADER
#define hypre_DSLU_DATA_HEADER #define hypre_DSLU_DATA_HEADER
typedef struct typedef struct
{ {
HYPRE_BigInt global_num_rows; HYPRE_BigInt global_num_rows;
SuperMatrix A_dslu; SuperMatrix A_dslu;
@ -28,8 +28,8 @@ typedef struct
gridinfo_t dslu_data_grid; gridinfo_t dslu_data_grid;
dScalePermstruct_t dslu_ScalePermstruct; dScalePermstruct_t dslu_ScalePermstruct;
dSOLVEstruct_t dslu_solve; dSOLVEstruct_t dslu_solve;
} }
hypre_DSLUData; hypre_DSLUData;
#endif #endif
@ -40,15 +40,14 @@ HYPRE_Int hypre_SLUDistSetup( HYPRE_Solver *solver, hypre_ParCSRMatrix *A, HYPRE
MPI_Comm comm = hypre_ParCSRMatrixComm(A); MPI_Comm comm = hypre_ParCSRMatrixComm(A);
hypre_CSRMatrix *A_local; hypre_CSRMatrix *A_local;
HYPRE_Int num_rows; HYPRE_Int num_rows;
HYPRE_Int num_procs, my_id, i; HYPRE_Int num_procs, my_id;
HYPRE_Int pcols=1, prows=1; HYPRE_Int pcols=1, prows=1;
HYPRE_Int *rowptr = NULL; HYPRE_BigInt *big_rowptr = NULL;
HYPRE_BigInt *big_rowptr = NULL;
hypre_DSLUData *dslu_data = NULL; hypre_DSLUData *dslu_data = NULL;
HYPRE_Int info = 0; HYPRE_Int info = 0;
HYPRE_Int nrhs = 0; HYPRE_Int nrhs = 0;
hypre_MPI_Comm_size(comm, &num_procs); hypre_MPI_Comm_size(comm, &num_procs);
hypre_MPI_Comm_rank(comm, &my_id); hypre_MPI_Comm_rank(comm, &my_id);
@ -60,12 +59,16 @@ HYPRE_Int hypre_SLUDistSetup( HYPRE_Solver *solver, hypre_ParCSRMatrix *A, HYPRE
num_rows = hypre_CSRMatrixNumRows(A_local); num_rows = hypre_CSRMatrixNumRows(A_local);
/* Now convert hypre matrix to a SuperMatrix */ /* Now convert hypre matrix to a SuperMatrix */
#ifdef HYPRE_MIXEDINT #ifdef HYPRE_MIXEDINT
rowptr = hypre_CSRMatrixI(A_local);
big_rowptr = hypre_CTAlloc(HYPRE_BigInt, (num_rows+1), HYPRE_MEMORY_HOST);
for(i=0; i<(num_rows+1); i++)
{ {
big_rowptr[i] = (HYPRE_BigInt)rowptr[i]; HYPRE_Int *rowptr = NULL;
} HYPRE_Int i;
rowptr = hypre_CSRMatrixI(A_local);
big_rowptr = hypre_CTAlloc(HYPRE_BigInt, (num_rows+1), HYPRE_MEMORY_HOST);
for(i=0; i<(num_rows+1); i++)
{
big_rowptr[i] = (HYPRE_BigInt)rowptr[i];
}
}
#else #else
big_rowptr = hypre_CSRMatrixI(A_local); big_rowptr = hypre_CSRMatrixI(A_local);
#endif #endif
@ -78,8 +81,8 @@ HYPRE_Int hypre_SLUDistSetup( HYPRE_Solver *solver, hypre_ParCSRMatrix *A, HYPRE
hypre_CSRMatrixBigJ(A_local),big_rowptr, hypre_CSRMatrixBigJ(A_local),big_rowptr,
SLU_NR_loc, SLU_D, SLU_GE); SLU_NR_loc, SLU_D, SLU_GE);
/* DOK: SuperLU frees assigned data, so set them to null before /* DOK: SuperLU frees assigned data, so set them to null before
* calling hypre_CSRMatrixdestroy on A_local to avoid memory errors. * calling hypre_CSRMatrixdestroy on A_local to avoid memory errors.
*/ */
#ifndef HYPRE_MIXEDINT #ifndef HYPRE_MIXEDINT
hypre_CSRMatrixI(A_local) = NULL; hypre_CSRMatrixI(A_local) = NULL;
@ -111,7 +114,7 @@ HYPRE_Int hypre_SLUDistSetup( HYPRE_Solver *solver, hypre_ParCSRMatrix *A, HYPRE
dslu_data->dslu_options.ReplaceTinyPivot = NO; */ dslu_data->dslu_options.ReplaceTinyPivot = NO; */
dScalePermstructInit(global_num_rows, global_num_rows, &(dslu_data->dslu_ScalePermstruct)); dScalePermstructInit(global_num_rows, global_num_rows, &(dslu_data->dslu_ScalePermstruct));
dLUstructInit(global_num_rows, &(dslu_data->dslu_data_LU)); dLUstructInit(global_num_rows, &(dslu_data->dslu_data_LU));
PStatInit(&(dslu_data->dslu_data_stat)); PStatInit(&(dslu_data->dslu_data_stat));
@ -120,10 +123,10 @@ HYPRE_Int hypre_SLUDistSetup( HYPRE_Solver *solver, hypre_ParCSRMatrix *A, HYPRE
dslu_data->berr = hypre_CTAlloc(HYPRE_Real, 1, HYPRE_MEMORY_HOST); dslu_data->berr = hypre_CTAlloc(HYPRE_Real, 1, HYPRE_MEMORY_HOST);
dslu_data->berr[0] = 0.0; dslu_data->berr[0] = 0.0;
pdgssvx(&(dslu_data->dslu_options), &(dslu_data->A_dslu), pdgssvx(&(dslu_data->dslu_options), &(dslu_data->A_dslu),
&(dslu_data->dslu_ScalePermstruct), NULL, num_rows, nrhs, &(dslu_data->dslu_ScalePermstruct), NULL, num_rows, nrhs,
&(dslu_data->dslu_data_grid), &(dslu_data->dslu_data_LU), &(dslu_data->dslu_data_grid), &(dslu_data->dslu_data_LU),
&(dslu_data->dslu_solve), dslu_data->berr, &(dslu_data->dslu_data_stat), &info); &(dslu_data->dslu_solve), dslu_data->berr, &(dslu_data->dslu_data_stat), &info);
dslu_data->dslu_options.Fact = FACTORED; dslu_data->dslu_options.Fact = FACTORED;
@ -141,9 +144,9 @@ HYPRE_Int hypre_SLUDistSolve( void* solver, hypre_ParVector *b, hypre_ParVector
hypre_ParVectorCopy(b,x); hypre_ParVectorCopy(b,x);
pdgssvx(&(dslu_data->dslu_options), &(dslu_data->A_dslu), pdgssvx(&(dslu_data->dslu_options), &(dslu_data->A_dslu),
&(dslu_data->dslu_ScalePermstruct), B, size, nrhs, &(dslu_data->dslu_ScalePermstruct), B, size, nrhs,
&(dslu_data->dslu_data_grid), &(dslu_data->dslu_data_LU), &(dslu_data->dslu_data_grid), &(dslu_data->dslu_data_LU),
&(dslu_data->dslu_solve), dslu_data->berr, &(dslu_data->dslu_data_stat), &info); &(dslu_data->dslu_solve), dslu_data->berr, &(dslu_data->dslu_data_stat), &info);
return hypre_error_flag; return hypre_error_flag;
@ -161,8 +164,8 @@ HYPRE_Int hypre_SLUDistDestroy( void* solver)
if (dslu_data->dslu_options.SolveInitialized) if (dslu_data->dslu_options.SolveInitialized)
dSolveFinalize(&(dslu_data->dslu_options), &(dslu_data->dslu_solve)); dSolveFinalize(&(dslu_data->dslu_options), &(dslu_data->dslu_solve));
superlu_gridexit(&(dslu_data->dslu_data_grid)); superlu_gridexit(&(dslu_data->dslu_data_grid));
hypre_TFree(dslu_data->berr, HYPRE_MEMORY_HOST); hypre_TFree(dslu_data->berr, HYPRE_MEMORY_HOST);
hypre_TFree(dslu_data, HYPRE_MEMORY_HOST); hypre_TFree(dslu_data, HYPRE_MEMORY_HOST);
return hypre_error_flag; return hypre_error_flag;
} }
#endif #endif