From fc64ab685bb209a82b4d78714479d6b92c93bac8 Mon Sep 17 00:00:00 2001 From: Mathieu Faverge <mathieu.faverge@inria.fr> Date: Wed, 25 Apr 2018 11:37:25 +0200 Subject: [PATCH] Remove the Comm parameter as it is a non distributed library --- include/spm_datatypes.h | 2 - src/spm_drivers.h | 2 +- src/spm_read_driver.c | 199 ++++++++++++++--------------------- tests/spm_convert_tests.c | 2 +- tests/spm_dof_expand_tests.c | 2 +- tests/spm_dof_matvec_tests.c | 2 +- tests/spm_dof_norm_tests.c | 2 +- tests/spm_matvec_tests.c | 2 +- tests/spm_norm_tests.c | 2 +- 9 files changed, 84 insertions(+), 131 deletions(-) diff --git a/include/spm_datatypes.h b/include/spm_datatypes.h index 9a7f90cb..be32812c 100644 --- a/include/spm_datatypes.h +++ b/include/spm_datatypes.h @@ -129,6 +129,4 @@ spm_size_of(spm_coeftype_t type) } } -typedef int MPI_Comm; - #endif /* _spm_datatypes_h_ */ diff --git a/src/spm_drivers.h b/src/spm_drivers.h index 2343b6f5..95259da1 100644 --- a/src/spm_drivers.h +++ b/src/spm_drivers.h @@ -29,7 +29,7 @@ int readIJV ( const char *filename, spmatrix_t *spm ); int readMM ( const char *filename, spmatrix_t *spm ); int readDMM ( const char *filename, spmatrix_t *spm ); int readPETSC( const char *filename, spmatrix_t *spm ); -int readCSCD ( const char *filename, spmatrix_t *spm, void **rhs, MPI_Comm spm_comm ); +//int readCSCD ( const char *filename, spmatrix_t *spm, void **rhs, MPI_Comm spm_comm ); int genLaplacian( const char *filename, spmatrix_t *spm ); int genExtendedLaplacian( const char *filename, spmatrix_t *spm ); diff --git a/src/spm_read_driver.c b/src/spm_read_driver.c index e9a3a296..a24cab82 100644 --- a/src/spm_read_driver.c +++ b/src/spm_read_driver.c @@ -52,10 +52,6 @@ * On exit, the filled sparse matrix structure with the matrix from the * file. * - * @param[in] comm - * The MPI communicator on which to distribute the sparse matrix. This - * is also used in case of distributed formats. - * ******************************************************************************** * * @retval SPM_SUCCESS if the file reading happened successfully, @@ -65,141 +61,100 @@ int spmReadDriver( spm_driver_t driver, const char *filename, - spmatrix_t *spm, - MPI_Comm comm ) + spmatrix_t *spm ) { - int mpirank = 0; - /* int mpiinit; */ - spmInit(spm); - /* MPI_Initialized( &mpiinit ); */ - /* if (mpiinit) { */ - /* MPI_Comm_rank( comm, &mpirank ); */ - /* } */ - mpirank = 0; - - if ( mpirank == 0 ) + switch(driver) { - switch(driver) - { #if defined(SPM_WITH_FORTRAN) - case SpmDriverRSA: - readRSA( filename, spm ); - break; + case SpmDriverRSA: + readRSA( filename, spm ); + break; #endif - case SpmDriverHB: - /* TODO: Possible to read the RHS, the solution or a guess of the solution */ - readHB( filename, spm ); - break; - - case SpmDriverIJV: - readIJV( filename, spm ); - break; - - case SpmDriverMM: - readMM( filename, spm ); - break; - - case SpmDriverLaplacian: - genLaplacian( filename, spm ); - break; - - case SpmDriverXLaplacian: - genExtendedLaplacian( filename, spm ); - break; - - case SpmDriverSPM: - { - FILE *file = fopen( filename, "r" ); - if ( file == NULL ) { - fprintf( stderr,"spmReadDriver: impossible to open the file %s\n", filename ); - return SPM_ERR_FILE; - } - - if ( spmLoad( spm, file ) != SPM_SUCCESS ) { - fprintf( stderr,"spmReadDriver: error while reading the file %s\n", filename ); - return SPM_ERR_FILE; - } - - fclose( file ); - } + case SpmDriverHB: + /* TODO: Possible to read the RHS, the solution or a guess of the solution */ + readHB( filename, spm ); break; - case SpmDriverGraph: -#if defined(HAVE_SCOTCH) - { - SCOTCH_Graph sgraph; - FILE *file; - - file = fopen( filename, "r" ); - if ( file == NULL ) { - fprintf( stderr,"spmReadDriver: impossible to open the file %s\n", filename ); - return SPM_ERR_FILE; - } - - /* Check integer compatibility */ - if (sizeof(spm_int_t) != sizeof(SCOTCH_Num)) { - fprintf( stderr,"Inconsistent integer type\n"); - fclose(file); - return SPM_ERR_INTEGER_TYPE; - } - - SCOTCH_graphLoad( &sgraph, file, 1, 0 ); - SCOTCH_graphData( &sgraph, NULL, &(spm->n), &(spm->colptr), NULL, NULL, NULL, - &(spm->nnz), &(spm->rowptr), NULL ); - fclose(file); + case SpmDriverIJV: + readIJV( filename, spm ); + break; - spm->mtxtype = SpmGeneral; - spm->flttype = SpmPattern; - spm->fmttype = SpmCSC; - spm->dof = 1; - spmUpdateComputedFields( spm ); + case SpmDriverMM: + readMM( filename, spm ); + break; + + case SpmDriverLaplacian: + genLaplacian( filename, spm ); + break; + + case SpmDriverXLaplacian: + genExtendedLaplacian( filename, spm ); + break; + + case SpmDriverSPM: + { + FILE *file = fopen( filename, "r" ); + if ( file == NULL ) { + fprintf( stderr,"spmReadDriver: impossible to open the file %s\n", filename ); + return SPM_ERR_FILE; } -#else - { - fprintf(stderr, "Scotch driver to read graph file unavailable.\n" - "Compile with Scotch support to provide it\n"); - return SPM_ERR_BADPARAMETER; + + if ( spmLoad( spm, file ) != SPM_SUCCESS ) { + fprintf( stderr,"spmReadDriver: error while reading the file %s\n", filename ); + return SPM_ERR_FILE; } -#endif - break; - default: - fprintf(stderr, "spmReadDriver: Driver not implemented\n"); - return SPM_ERR_UNKNOWN; + fclose( file ); + } + break; + + case SpmDriverGraph: +#if defined(HAVE_SCOTCH) + { + SCOTCH_Graph sgraph; + FILE *file; + + file = fopen( filename, "r" ); + if ( file == NULL ) { + fprintf( stderr,"spmReadDriver: impossible to open the file %s\n", filename ); + return SPM_ERR_FILE; } + + /* Check integer compatibility */ + if (sizeof(spm_int_t) != sizeof(SCOTCH_Num)) { + fprintf( stderr,"Inconsistent integer type\n"); + fclose(file); + return SPM_ERR_INTEGER_TYPE; + } + + SCOTCH_graphLoad( &sgraph, file, 1, 0 ); + SCOTCH_graphData( &sgraph, NULL, &(spm->n), &(spm->colptr), NULL, NULL, NULL, + &(spm->nnz), &(spm->rowptr), NULL ); + fclose(file); + + spm->mtxtype = SpmGeneral; + spm->flttype = SpmPattern; + spm->fmttype = SpmCSC; + spm->dof = 1; + spmUpdateComputedFields( spm ); + } +#else + { + fprintf(stderr, "Scotch driver to read graph file unavailable.\n" + "Compile with Scotch support to provide it\n"); + return SPM_ERR_BADPARAMETER; } +#endif + break; - /* if ( mpiinit ) */ - /* { */ - /* spm_int_t nnz = spm->nnz; */ - - /* MPI_Bcast( spm, sizeof(spmatrix_t), MPI_CHAR, 0, comm ); */ - /* MPI_Bcast( &nnz, 1, SPM_MPI_INT, 0, comm ); */ - - /* if ( mpirank != 0 ) */ - /* { */ - /* spm->colptr = (spm_int_t *) malloc((spm->gN+1) * sizeof(spm_int_t)); */ - /* spm->rowptr = (spm_int_t *) malloc(nnz * sizeof(spm_int_t)); */ - /* spm->loc2glob = NULL; */ - /* spm->loc2glob = NULL; */ - /* } */ - - /* MPI_Bcast( spm->colptr, spm->gN+1, SPM_MPI_INT, 0, comm ); */ - /* MPI_Bcast( spm->rowptr, nnz, SPM_MPI_INT, 0, comm ); */ - - /* if ( spm->flttype != SpmPattern ) { */ - /* size_t eltsize = spm_size_of( spm->flttype ); */ - /* if ( mpirank != 0 ) { */ - /* spm->values = (void *) malloc(nnz * eltsize); */ - /* } */ - /* MPI_Bcast( spm->values, nnz * eltsize, MPI_CHAR, 0, comm ); */ - /* } */ - /* } */ + default: + fprintf(stderr, "spmReadDriver: Driver not implemented\n"); + return SPM_ERR_UNKNOWN; + } spmUpdateComputedFields( spm ); - (void)comm; return SPM_SUCCESS; } diff --git a/tests/spm_convert_tests.c b/tests/spm_convert_tests.c index 4cf4fd2d..1bc33bb8 100644 --- a/tests/spm_convert_tests.c +++ b/tests/spm_convert_tests.c @@ -117,7 +117,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &spm, 0 ); + rc = spmReadDriver( driver, filename, &spm ); free(filename); if ( rc != SPM_SUCCESS ) { diff --git a/tests/spm_dof_expand_tests.c b/tests/spm_dof_expand_tests.c index 27709525..0a343aa9 100644 --- a/tests/spm_dof_expand_tests.c +++ b/tests/spm_dof_expand_tests.c @@ -63,7 +63,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &original, 0 ); + rc = spmReadDriver( driver, filename, &original ); free(filename); if ( rc != SPM_SUCCESS ) { diff --git a/tests/spm_dof_matvec_tests.c b/tests/spm_dof_matvec_tests.c index 96db0053..598804a9 100644 --- a/tests/spm_dof_matvec_tests.c +++ b/tests/spm_dof_matvec_tests.c @@ -57,7 +57,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &original, 0 ); + rc = spmReadDriver( driver, filename, &original ); free(filename); if ( rc != SPM_SUCCESS ) { diff --git a/tests/spm_dof_norm_tests.c b/tests/spm_dof_norm_tests.c index 71d24939..6d4e74f6 100644 --- a/tests/spm_dof_norm_tests.c +++ b/tests/spm_dof_norm_tests.c @@ -56,7 +56,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &original, 0 ); + rc = spmReadDriver( driver, filename, &original ); free(filename); if ( rc != SPM_SUCCESS ) { diff --git a/tests/spm_matvec_tests.c b/tests/spm_matvec_tests.c index c605beef..7ad94e56 100644 --- a/tests/spm_matvec_tests.c +++ b/tests/spm_matvec_tests.c @@ -52,7 +52,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &spm, 0 ); + rc = spmReadDriver( driver, filename, &spm ); free(filename); if ( rc != SPM_SUCCESS ) { diff --git a/tests/spm_norm_tests.c b/tests/spm_norm_tests.c index f37d6529..d6824b73 100644 --- a/tests/spm_norm_tests.c +++ b/tests/spm_norm_tests.c @@ -55,7 +55,7 @@ int main (int argc, char **argv) spmGetOptions( argc, argv, &driver, &filename ); - rc = spmReadDriver( driver, filename, &spm, 0 ); + rc = spmReadDriver( driver, filename, &spm ); free(filename); if ( rc != SPM_SUCCESS ) { -- GitLab