KarypisLab / ParMETIS

ParMETIS - Parallel Graph Partitioning and Fill-reducing Matrix Ordering
Other
106 stars 42 forks source link

Incompatible pointer type when compiling on 32-bit PPC with MPICH #29

Open hpckurt opened 3 months ago

hpckurt commented 3 months ago

This is more than likely not anywhere close to a supported environment, but thought I'd submit the issue anyways.

Both GKLib and Metis compile without issue on 32-bit PPC, however, ParMETIS does not.

The 32-bit PPC system I'm working with is running MPICH for the MPI implementation as well.

Full error is the following:

[ 21%] Building C object libparmetis/CMakeFiles/parmetis.dir/gkmpi.c.o
cd /root/ParMETIS/build/Linux-ppc/libparmetis && /usr/bin/mpicc  -I/root/ParMETIS/include -I"/root/ParMETIS/~/local/include" -I/root/local/include -I/root/ParMETIS/libparmetis/. -DLINUX -D_FILE_OFFSET_BITS=64 -std=c99 -fno-strict-aliasing -mtune=native -fPIC -Werror -Wall -pedantic -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unknown-pragmas -Wno-unused-label -DNDEBUG -DNDEBUG2 -DHAVE_EXECINFO_H -DHAVE_GETLINE -O3 -MD -MT libparmetis/CMakeFiles/parmetis.dir/gkmpi.c.o -MF CMakeFiles/parmetis.dir/gkmpi.c.o.d -o CMakeFiles/parmetis.dir/gkmpi.c.o -c /root/ParMETIS/libparmetis/gkmpi.c
/root/ParMETIS/libparmetis/gkmpi.c: In function ‘libparmetis__gkMPI_Alltoallv’:
/root/ParMETIS/libparmetis/gkmpi.c:230:47: error: passing argument 3 of ‘MPI_Alltoallv_c’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  230 |   return MPI_Alltoallv_c(sendbuf, sendcounts, sdispls, sendtype,
      |                                               ^~~~~~~
      |                                               |
      |                                               idx_t * {aka long long int *}
In file included from /usr/lib/powerpc-linux-gnu/mpich/include/mpi.h:958,
                 from /root/ParMETIS/libparmetis/./parmetislib.h:19,
                 from /root/ParMETIS/libparmetis/gkmpi.c:15:
/usr/lib/powerpc-linux-gnu/mpich/include/mpi_proto.h:948:87: note: expected ‘const MPI_Aint *’ {aka ‘const int *’} but argument is of type ‘idx_t *’ {aka ‘long long int *’}
  948 | int MPI_Alltoallv_c(const void *sendbuf, const MPI_Count sendcounts[], const MPI_Aint sdispls[],
      |                                                                        ~~~~~~~~~~~~~~~^~~~~~~~~
/root/ParMETIS/libparmetis/gkmpi.c:231:37: error: passing argument 7 of ‘MPI_Alltoallv_c’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  231 |                recvbuf, recvcounts, rdispls, recvtype, comm);
      |                                     ^~~~~~~
      |                                     |
      |                                     idx_t * {aka long long int *}
/usr/lib/powerpc-linux-gnu/mpich/include/mpi_proto.h:950:36: note: expected ‘const MPI_Aint *’ {aka ‘const int *’} but argument is of type ‘idx_t *’ {aka ‘long long int *’}
  950 |                     const MPI_Aint rdispls[], MPI_Datatype recvtype, MPI_Comm comm)
      |                     ~~~~~~~~~~~~~~~^~~~~~~~~
/root/ParMETIS/libparmetis/gkmpi.c: In function ‘libparmetis__gkMPI_Allgatherv’:
/root/ParMETIS/libparmetis/gkmpi.c:282:28: error: passing argument 6 of ‘MPI_Allgatherv_c’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  282 |                recvcounts, rdispls, recvtype, comm);
      |                            ^~~~~~~
      |                            |
      |                            idx_t * {aka long long int *}
/usr/lib/powerpc-linux-gnu/mpich/include/mpi_proto.h:927:67: note: expected ‘const MPI_Aint *’ {aka ‘const int *’} but argument is of type ‘idx_t *’ {aka ‘long long int *’}
  927 |                      const MPI_Count recvcounts[], const MPI_Aint displs[], MPI_Datatype recvtype,
      |                                                    ~~~~~~~~~~~~~~~^~~~~~~~
/root/ParMETIS/libparmetis/gkmpi.c: In function ‘libparmetis__gkMPI_Scatterv’:
/root/ParMETIS/libparmetis/gkmpi.c:332:46: error: passing argument 3 of ‘MPI_Scatterv_c’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  332 |   return MPI_Scatterv_c(sendbuf, sendcounts, sdispls, sendtype,
      |                                              ^~~~~~~
      |                                              |
      |                                              idx_t * {aka long long int *}
/usr/lib/powerpc-linux-gnu/mpich/include/mpi_proto.h:1155:86: note: expected ‘const MPI_Aint *’ {aka ‘const int *’} but argument is of type ‘idx_t *’ {aka ‘long long int *’}
 1155 | int MPI_Scatterv_c(const void *sendbuf, const MPI_Count sendcounts[], const MPI_Aint displs[],
      |                                                                       ~~~~~~~~~~~~~~~^~~~~~~~
/root/ParMETIS/libparmetis/gkmpi.c: In function ‘libparmetis__gkMPI_Gatherv’:
/root/ParMETIS/libparmetis/gkmpi.c:385:28: error: passing argument 6 of ‘MPI_Gatherv_c’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  385 |                recvcounts, rdispls, recvtype, root, comm);
      |                            ^~~~~~~
      |                            |
      |                            idx_t * {aka long long int *}
/usr/lib/powerpc-linux-gnu/mpich/include/mpi_proto.h:985:64: note: expected ‘const MPI_Aint *’ {aka ‘const int *’} but argument is of type ‘idx_t *’ {aka ‘long long int *’}
  985 |                   const MPI_Count recvcounts[], const MPI_Aint displs[], MPI_Datatype recvtype,
      |                                                 ~~~~~~~~~~~~~~~^~~~~~~~
cc1: all warnings being treated as errors
make[3]: *** [libparmetis/CMakeFiles/parmetis.dir/build.make:233: libparmetis/CMakeFiles/parmetis.dir/gkmpi.c.o] Error 1
make[3]: Leaving directory '/root/ParMETIS/build/Linux-ppc'
make[2]: *** [CMakeFiles/Makefile2:145: libparmetis/CMakeFiles/parmetis.dir/all] Error 2
make[2]: Leaving directory '/root/ParMETIS/build/Linux-ppc'
make[1]: *** [Makefile:139: all] Error 2
make[1]: Leaving directory '/root/ParMETIS/build/Linux-ppc'
make: *** [Makefile:62: all] Error 2

Looks like the error happens when it tries to build gkmpi.c