Hi Gilles, I have to get this info from system admins on both systems - the working one is
./configure --prefix=/glade/u/apps/ch/opt/openmpi/2.0.2/gnu/6.3.0 --with-tm=/glade/u/apps/ch/opt/pbs_copy --disable-shared --enable-static --with-verbs and this is the failing one: ./configure --prefix=/cluster/openmpi-2.0.2-gcc-g++-gfortran-5.4.0 --with-psm --with-verbs --without-udapl --disable-openib-ib cm --with-tm=/cluster/torque I haven't been able to get test output from either group, but both assure me that all tests passed. On Wed, Apr 19, 2017 at 10:40 PM, Gilles Gouaillardet <gil...@rist.or.jp> wrote: > Jim, > > > can you please post your configure command line and test output on both > systems ? > > > > fwiw, Open MPI strictly sticks to the (current) MPI standard regarding > MPI_DATATYPE_NULL > > (see http://lists.mpi-forum.org/pipermail/mpi-forum/2016-January/ > 006417.html) > > > there have been some attempts to deviate from the MPI standard > > (e.g. implement what the standard "should" be versus what the standard > says) > > and they were all crushed at a very early stage in Open MPI. > > > > Cheers, > > > Gilles > > > On 4/20/2017 2:53 AM, Jim Edwards wrote: > >> Hi, >> >> I have openmpi-2.0.2 builds on two different machines and I have a test >> code which works on one machine and does not on the other machine. I'm >> struggling to understand why and I hope that by posting here someone may >> have some insight. >> >> The test is using mpi derived data types and mpi_alltoallw on 4 tasks. >> On the machine that fails it appears to ignore the displacement in the >> derived datatype defined on task 0 and just send 0-3 to all tasks. The >> failing machine is built against gcc 5.4.0, the working machine has both >> intel 16.0.3 and gcc 6.3.0 builds. >> >> #include "mpi.h" >> >> #include <stdio.h> >> >> >> int main(int argc, char *argv[]) >> >> { >> >> int rank, size; >> >> MPI_Datatype type[4], type2[4]; >> >> int displacement[1]; >> >> int sbuffer[16]; >> >> int rbuffer[4]; >> >> MPI_Status status; >> >> int scnts[4], sdispls[4], rcnts[4], rdispls[4]; >> >> MPI_Init(&argc, &argv); >> >> MPI_Comm_size(MPI_COMM_WORLD, &size); >> >> if (size < 4) >> >> { >> >> printf("Please run with 4 processes.\n"); >> >> MPI_Finalize(); >> >> return 1; >> >> } >> >> MPI_Comm_rank(MPI_COMM_WORLD, &rank); >> >> >> /* task 0 has sbuffer of size 16 and we are going to send 4 values to >> each of tasks 0-3, offsetting in each >> >> case so that the expected result is >> >> task[0] 0-3 >> >> task[1] 4-7 >> >> task[2] 8-11 >> >> task[3] 12-15 >> >> */ >> >> >> >> for( int i=0; i<size; i++){ >> >> if (rank == 0){ >> >> scnts[i] = 1; >> >> }else{ >> >> scnts[i] = 0; >> >> } >> >> sdispls[i] = 0; >> >> rcnts[i] = 0; >> >> rdispls[i] = 0; >> >> } >> >> rcnts[0] = 1; >> >> for (int i=0; i<size; i++){ >> >> type[i] = MPI_INT; >> >> type2[i] = MPI_INT; >> >> rbuffer[i] = -1; >> >> } >> >> /* on the recv side we create a data type which is a single block >> of 4 integers for the recv from 0 >> >> otherwise we use MPI_INT as a placeholder for the type >> >> (openmpi does not want us to use MPI_DATATYPE_NULL a stupid >> misinterpretation of the standard imho )*/ >> >> >> displacement[0] = 0; >> >> MPI_Type_create_indexed_block(1, 4, displacement, MPI_INT, type2); >> >> MPI_Type_commit(type2); >> >> >> if (rank == 0) >> >> { >> >> for( int i=0; i<size; i++){ >> >> displacement[0] = i*4; >> >> /* we create a datatype which is a single block of 4 integers with offset >> 4 from the start of sbuffer */ >> >> MPI_Type_create_indexed_block(1, 4, displacement, MPI_INT, type + i); >> >> MPI_Type_commit(type+i); >> >> } >> >> for (int i=0; i<16; i++) >> >> sbuffer[i] = i; >> >> } >> >> >> for (int i=0; i<size; i++) >> >> printf("rank %d i=%d: scnts %d sdispls %d stype %d rcnts %d rdispls %d >> rtype %d\n", rank, i, scnts[i], sdispls[i], type[i], rcnts[i], rdispls[i], >> type2[i]); >> >> MPI_Alltoallw(sbuffer, scnts, sdispls, type, rbuffer, rcnts, rdispls, >> type2, MPI_COMM_WORLD); >> >> >> for (int i=0; i<4; i++) >> >> printf("rbuffer[%d] = %d\n", i, rbuffer[i]); >> >> fflush(stdout); >> >> >> MPI_Finalize(); >> >> return 0; >> >> } >> >> >> -- >> Jim Edwards >> >> CESM Software Engineer >> National Center for Atmospheric Research >> Boulder, CO >> >> >> _______________________________________________ >> users mailing list >> users@lists.open-mpi.org >> https://rfd.newmexicoconsortium.org/mailman/listinfo/users >> > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://rfd.newmexicoconsortium.org/mailman/listinfo/users > -- Jim Edwards CESM Software Engineer National Center for Atmospheric Research Boulder, CO
_______________________________________________ users mailing list users@lists.open-mpi.org https://rfd.newmexicoconsortium.org/mailman/listinfo/users