Updating autotest for SuperLU-dist version 6.3.1
This commit is contained in:
parent
249383ad61
commit
35386791fb
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user