pmodels/mpich

IOV_MAX not found in `cma_post.h`

Closed this issue · 1 comments

Compiling on OpenSUSE 15.4, I got the following compile error:

In file included from ../src/mpid/ch4/shm/src/../posix/../ipc/src/ipc_p2p.h:14:0,
                 from ../src/mpid/ch4/shm/src/../posix/posix_coll_gpu_ipc.h:61,
                 from ../src/mpid/ch4/shm/src/../posix/posix_coll.h:12,
                 from ../src/mpid/ch4/shm/src/../posix/shm_inline.h:16,
                 from ../src/mpid/ch4/shm/src/shm_coll.h:10,
                 from ../src/mpid/ch4/shm/src/shm_impl.h:18,
                 from ../src/mpid/ch4/include/mpidch4.h:450,
                 from ../src/mpid/ch4/include/mpidpost.h:10,
                 from ../src/include/mpiimpl.h:232,
                 from ../src/mpi/coll/allreduce/allreduce_intra_recursive_multiplying.c:8:
../src/mpid/ch4/shm/src/../posix/../ipc/src/../cma/cma_post.h: In function 'MPIDI_CMA_get_ipc_attr':
../src/mpid/ch4/shm/src/../posix/../ipc/src/../cma/cma_post.h:70:33: error: 'IOV_MAX' undeclared (first use in this function); did you mean 'INT_MAX'?
         } else if (num_blocks > IOV_MAX) {
                                 ^~~~~~~
                                 INT_MAX

I deleted the offending line to work around the issue, but I am opening this issue for visibility. Strangely, cma_post.c uses IOV_MAX with no issue.

Fixed by reordering includes, make sure to put mpiimpl.h before POSIX headers!