Dhondtguido / PaStiX4CalculiX

Other
16 stars 7 forks source link

Unable to Compile PaStiX4Calculix #19

Open KingVickyRaj opened 1 year ago

KingVickyRaj commented 1 year ago

once I get the code in my system and run the make_pastix.sh I get the following error and cannot solve it. It looks like this is happening because of datatype definition conflict by two libraries, one from MPI and the other from pastix/nompi.h

The following is the compilation output

In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:86:15: error: conflicting types for ‘MPI_User_function’ typedef void (MPI_User_function) ( void , void , int , MPI_Datatype ); ^~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:448:15: note: previous declaration of ‘MPI_User_function’ was here typedef void (MPI_User_function)(void , void , int , MPI_Datatype ); ^~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:92:3: error: conflicting types for ‘MPI_Status’ } MPI_Status; ^~~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:409:37: note: previous declaration of ‘MPI_Status’ was here typedef struct ompi_status_public_t MPI_Status; ^~~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:172:1: error: conflicting types for ‘MPI_Gather’ MPI_Gather( const void sendbuf, int sendcount, MPI_Datatype sendtype, ^~~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1534:20: note: previous declaration of ‘MPI_Gather’ was here OMPI_DECLSPEC int MPI_Gather(const void sendbuf, int sendcount, MPI_Datatype sendtype, ^~~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:187:1: error: conflicting types for ‘MPI_Allreduce’ MPI_Allreduce( const void sendbuf, void recvbuf, int count, ^~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1302:20: note: previous declaration of ‘MPI_Allreduce’ was here OMPI_DECLSPEC int MPI_Allreduce(const void sendbuf, void recvbuf, int count, ^~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:196:1: error: conflicting types for ‘MPI_Alltoall’ MPI_Alltoall( const void sendbuf, int sendcount, MPI_Datatype sendtype, ^~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1306:20: note: previous declaration of ‘MPI_Alltoall’ was here OMPI_DECLSPEC int MPI_Alltoall(const void sendbuf, int sendcount, MPI_Datatype sendtype, ^~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:210:1: error: conflicting types for ‘MPI_Reduce’ MPI_Reduce( const void sendbuf, void recvbuf, int count, MPI_Datatype datatype, ^~~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1706:20: note: previous declaration of ‘MPI_Reduce’ was here OMPI_DECLSPEC int MPI_Reduce(const void sendbuf, void recvbuf, int count, ^~~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39, from /home/vicknesh/PaStiX/pastix_src/common/common.h:22, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:24: /home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:220:1: error: conflicting types for ‘MPI_Bcast’ MPI_Bcast( void buffer, int count, MPI_Datatype datatype, int root, ^~~~~ In file included from /usr/local/include/parsec/datatype.h:13, from /usr/local/include/parsec.h:16, from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:19: /usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1326:20: note: previous declaration of ‘MPI_Bcast’ was here OMPI_DECLSPEC int MPI_Bcast(void buffer, int count, MPI_Datatype datatype, ^~~~~ /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c: In function ‘parsec_zhetrf_sp1dplus_New’: /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:99:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion] parsec_matrix_add2arena_rect( parsec_zhetrf_sp1dplus->arenas[PARSEC_zhetrf_sp1dplus_DEFAULT_ARENA], ^~~~~~~~ In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:23: /usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t ’} but argument is of type ‘int’ int parsec_matrix_add2arena( parsec_arena_t arena, parsec_datatype_t oldtype,


/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:103:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_zhetrf_sp1dplus->arenas[PARSEC_zhetrf_sp1dplus_CBLK_WS_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c: In function ‘parsec_zhetrf_sp2d_New’:
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:266:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_zhetrf_sp2d->arenas[PARSEC_zhetrf_sp2d_DEFAULT_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:270:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_zhetrf_sp2d->arenas[PARSEC_zhetrf_sp2d_CBLK_WS_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:274:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_zhetrf_sp2d->arenas[PARSEC_zhetrf_sp2d_BLOK_WS_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_zhetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
make[2]: *** [sopalin/parsec/CMakeFiles/pastix_parsec.dir/build.make:728: sopalin/parsec/CMakeFiles/pastix_parsec.dir/parsec_zhetrf.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1691: sopalin/parsec/CMakeFiles/pastix_parsec.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:86:15: error: conflicting types for ‘MPI_User_function’
 typedef void (MPI_User_function) ( void *, void *, int *, MPI_Datatype * );
               ^~~~~~~~~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:448:15: note: previous declaration of ‘MPI_User_function’ was here
 typedef void (MPI_User_function)(void *, void *, int *, MPI_Datatype *);
               ^~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:92:3: error: conflicting types for ‘MPI_Status’
 } MPI_Status;
   ^~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:409:37: note: previous declaration of ‘MPI_Status’ was here
 typedef struct ompi_status_public_t MPI_Status;
                                     ^~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:172:1: error: conflicting types for ‘MPI_Gather’
 MPI_Gather( const void *sendbuf, int sendcount, MPI_Datatype sendtype,
 ^~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1534:20: note: previous declaration of ‘MPI_Gather’ was here
 OMPI_DECLSPEC  int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
                    ^~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:187:1: error: conflicting types for ‘MPI_Allreduce’
 MPI_Allreduce( const void *sendbuf, void *recvbuf, int count,
 ^~~~~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1302:20: note: previous declaration of ‘MPI_Allreduce’ was here
 OMPI_DECLSPEC  int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count,
                    ^~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:196:1: error: conflicting types for ‘MPI_Alltoall’
 MPI_Alltoall( const void *sendbuf, int sendcount, MPI_Datatype sendtype,
 ^~~~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1306:20: note: previous declaration of ‘MPI_Alltoall’ was here
 OMPI_DECLSPEC  int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype,
                    ^~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:210:1: error: conflicting types for ‘MPI_Reduce’
 MPI_Reduce( const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype,
 ^~~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1706:20: note: previous declaration of ‘MPI_Reduce’ was here
 OMPI_DECLSPEC  int MPI_Reduce(const void *sendbuf, void *recvbuf, int count,
                    ^~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/include/pastix.h:39,
                 from /home/vicknesh/PaStiX/pastix_src/common/common.h:22,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:24:
/home/vicknesh/PaStiX/pastix_src/include/pastix/nompi.h:220:1: error: conflicting types for ‘MPI_Bcast’
 MPI_Bcast( void *buffer, int count, MPI_Datatype datatype, int root,
 ^~~~~~~~~
In file included from /usr/local/include/parsec/datatype.h:13,
                 from /usr/local/include/parsec.h:16,
                 from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:19:
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:1326:20: note: previous declaration of ‘MPI_Bcast’ was here
 OMPI_DECLSPEC  int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,
                    ^~~~~~~~~
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c: In function ‘parsec_cgetrf_sp1dplus_New’:
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:96:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_cgetrf_sp1dplus->arenas[PARSEC_cgetrf_sp1dplus_DEFAULT_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c: In function ‘parsec_cgetrf_sp2d_New’:
/home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:256:5: warning: passing argument 2 of ‘parsec_matrix_add2arena’ makes pointer from integer without a cast [-Wint-conversion]
     parsec_matrix_add2arena_rect( parsec_cgetrf_sp2d->arenas[PARSEC_cgetrf_sp2d_DEFAULT_ARENA],
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/vicknesh/PaStiX/pastix_src/build/sopalin/parsec/parsec_cgetrf.c:23:
/usr/local/include/parsec/data_dist/matrix/matrix.h:210:71: note: expected ‘parsec_datatype_t’ {aka ‘struct ompi_datatype_t *’} but argument is of type ‘int’
 int parsec_matrix_add2arena( parsec_arena_t *arena, parsec_datatype_t oldtype,
                                                     ~~~~~~~~~~~~~~~~~~^~~~~~~
make[2]: *** [sopalin/parsec/CMakeFiles/pastix_parsec.dir/build.make:663: sopalin/parsec/CMakeFiles/pastix_parsec.dir/parsec_cgetrf.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1691: sopalin/parsec/CMakeFiles/pastix_parsec.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
KingVickyRaj commented 1 year ago

I changed the make_pastix.sh a bit to the following because there was a syntax error for the original file

!/bin/bash

if ! [[ -d build ]]; then mkdir build fi cd build

INSTALLPATH="~/pastix" CUDADIR="/usr/lib/cuda" PARSECDIR="/usr/lib/parsec" SCOTCHDIR="/usr/lib/scotch" HWLOCDIR="/usr/lib/hwloc"

cmake \ -DCUDA_TOOLKIT_ROOT_DIR=${CUDADIR} \ -DCMAKE_INSTALL_PREFIX=${INSTALLPATH} \ -DCMAKE_BUILD_TYPE=Release \ -DPASTIX_WITH_PARSEC=ON \ -DPARSEC_DIR=${PARSECDIR} \ -DSCOTCH_DIR=${SCOTCHDIR} \ -DHWLOC_DIR=${HWLOCDIR} \ -DPASTIX_WITH_CUDA=ON \ -DCUDA_DIR=${CUDADIR} \ -DPASTIX_ORDERING_SCOTCH=ON \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_Fortran_COMPILER=gfortran \ -DCMAKE_C_FLAGS="-fopenmp" \ ..

make -j8 make install

Would be nice if I could get some help in this

mfaverge commented 1 year ago

Hello @KingVickyRaj

Just a quick question regarding the errors you have. Which version of PaRSEC are you using ? and do you want to enable MPI or not ?

It looks like MPI is enabled in parsec and not in pastix or the opposite.

Mathieu