Skip to content

fftw mpi does not compile #11

@e-kwsm

Description

@e-kwsm
  • amd-fftw: 5a64feb
  • MPI: OpenMPI v5.0.3
$ ./configure --enable-mpi
$ make -C mpi
make: Entering directory './mpi'
make  all-am
make[1]: Entering directory './mpi'
/bin/sh ../libtool  --tag=CC   --mode=compile mpicc -DHAVE_CONFIG_H -I. -I..  -I .. -I ../api   -O3 -fomit-frame-pointer -mtune=native -malign-double -fstrict-aliasing -fno-schedule-insns -MT transpose-pairwise-omc.lo -MD -MP -MF .deps/transpose-pairwise-omc.Tpo -c -o transpose-pairwise-omc.lo transpose-pairwise-omc.c
libtool: compile:  mpicc -DHAVE_CONFIG_H -I. -I.. -I .. -I ../api -O3 -fomit-frame-pointer -mtune=native -malign-double -fstrict-aliasing -fno-schedule-insns -MT transpose-pairwise-omc.lo -MD -MP -MF .deps/transpose-pairwise-omc.Tpo -c transpose-pairwise-omc.c  -fPIC -DPIC -o .libs/transpose-pairwise-omc.o
transpose-pairwise-omc.c: In function 'transpose_chunks':
transpose-pairwise-omc.c:108:115: error: passing argument 7 of 'MPI_Isend' from incompatible pointer type [-Wincompatible-pointer-types]
  108 |                    MPI_Isend(buf[j&0x1], (int) (sbs[pe]), FFTW_MPI_TYPE, pe, (my_pe * n_pes + pe) & 0xffff, comm, &send_status);
      |                                                                                                                   ^~~~~~~~~~~~
      |                                                                                                                   |
      |                                                                                                                   MPI_Status * {aka struct ompi_status_public_t *}
In file included from ifftw-mpi.h:28,
                 from mpi-transpose.h:22,
                 from transpose-pairwise-omc.c:32:
/usr/include/mpi.h:1783:67: note: expected 'struct ompi_request_t **' but argument is of type 'MPI_Status *' {aka 'struct ompi_status_public_t *'}
 1783 |                              int tag, MPI_Comm comm, MPI_Request *request);
      |                                                      ~~~~~~~~~~~~~^~~~~~~
transpose-pairwise-omc.c:109:116: error: passing argument 7 of 'MPI_Irecv' from incompatible pointer type [-Wincompatible-pointer-types]
  109 |                    MPI_Irecv(O + rbo[pe], (int) (rbs[pe]), FFTW_MPI_TYPE, pe, (pe * n_pes + my_pe) & 0xffff, comm, &recv_status);
      |                                                                                                                    ^~~~~~~~~~~~
      |                                                                                                                    |
      |                                                                                                                    MPI_Status * {aka struct ompi_status_public_t *}
/usr/include/mpi.h:1779:67: note: expected 'struct ompi_request_t **' but argument is of type 'MPI_Status *' {aka 'struct ompi_status_public_t *'}
 1779 |                              int tag, MPI_Comm comm, MPI_Request *request);
      |                                                      ~~~~~~~~~~~~~^~~~~~~
transpose-pairwise-omc.c:113:29: error: passing argument 1 of 'MPI_Wait' from incompatible pointer type [-Wincompatible-pointer-types]
  113 |                    MPI_Wait(&send_status, MPI_STATUS_IGNORE);
      |                             ^~~~~~~~~~~~
      |                             |
      |                             MPI_Status * {aka struct ompi_status_public_t *}
/usr/include/mpi.h:2099:42: note: expected 'struct ompi_request_t **' but argument is of type 'MPI_Status *' {aka 'struct ompi_status_public_t *'}
 2099 | OMPI_DECLSPEC  int MPI_Wait(MPI_Request *request, MPI_Status *status);
      |                             ~~~~~~~~~~~~~^~~~~~~
transpose-pairwise-omc.c:114:29: error: passing argument 1 of 'MPI_Wait' from incompatible pointer type [-Wincompatible-pointer-types]
  114 |                    MPI_Wait(&recv_status, MPI_STATUS_IGNORE);
      |                             ^~~~~~~~~~~~
      |                             |
      |                             MPI_Status * {aka struct ompi_status_public_t *}
/usr/include/mpi.h:2099:42: note: expected 'struct ompi_request_t **' but argument is of type 'MPI_Status *' {aka 'struct ompi_status_public_t *'}
 2099 | OMPI_DECLSPEC  int MPI_Wait(MPI_Request *request, MPI_Status *status);
      |                             ~~~~~~~~~~~~~^~~~~~~
transpose-pairwise-omc.c: In function 'apply':
transpose-pairwise-omc.c:177:36: warning: passing argument 11 of 'transpose_chunks' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  177 |                ego->comm, O, I, ego->send_block_bufs);
      |                                 ~~~^~~~~~~~~~~~~~~~~
transpose-pairwise-omc.c:56:34: note: expected 'R **' {aka 'double **'} but argument is of type 'R * const*' {aka 'double * const*'}
   56 |                  R *I, R *O, R **bufs)
      |                              ~~~~^~~~
transpose-pairwise-omc.c:184:36: warning: passing argument 11 of 'transpose_chunks' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  184 |                ego->comm, I, O, ego->send_block_bufs);
      |                                 ~~~^~~~~~~~~~~~~~~~~
transpose-pairwise-omc.c:56:34: note: expected 'R **' {aka 'double **'} but argument is of type 'R * const*' {aka 'double * const*'}
   56 |                  R *I, R *O, R **bufs)
      |                              ~~~~^~~~
transpose-pairwise-omc.c:193:36: warning: passing argument 11 of 'transpose_chunks' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
  193 |                ego->comm, I, I, ego->send_block_bufs);
      |                                 ~~~^~~~~~~~~~~~~~~~~
transpose-pairwise-omc.c:56:34: note: expected 'R **' {aka 'double **'} but argument is of type 'R * const*' {aka 'double * const*'}
   56 |                  R *I, R *O, R **bufs)
      |                              ~~~~^~~~
make[1]: *** [Makefile:576: transpose-pairwise-omc.lo] Error 1
make[1]: Leaving directory './mpi'
make: *** [Makefile:432: all] Error 2
make: Leaving directory './mpi'

As shown, MPI_Request must be passed.
See MPI 4.1 Standard §3.7.2 Communication Initiation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions