ce97fc7674
The problem was with oshmem ring code, which cycles a constant amout of data through all the processes. When the program would expect the memory to change it did not explicitly warrent a recv() call, thus counting on the memory region to hold the new value when in fact it could be set before or after the check, causing slower BTLs to pass and faster ones to fail. The fix changes the logic to anticipate the next message rather then the current one, which would be a mistake. Patch applied to both C and fortran90 version of the example code. reviewd by miked cmr=v1.7.5:reviewer=ompi-rm1.7 This commit was SVN r30760. |
||
---|---|---|
.. | ||
dtrace | ||
connectivity_c.c | ||
hello_c.c | ||
hello_cxx.cc | ||
hello_mpifh.f | ||
hello_oshmem_c.c | ||
hello_oshmemfh.f90 | ||
hello_usempi.f90 | ||
hello_usempif08.f90 | ||
Hello.java | ||
Makefile | ||
Makefile.include | ||
README | ||
ring_c.c | ||
ring_cxx.cc | ||
ring_mpifh.f | ||
ring_oshmem_c.c | ||
ring_oshmemfh.f90 | ||
ring_usempi.f90 | ||
ring_usempif08.f90 | ||
Ring.java |
Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana University Research and Technology Corporation. All rights reserved. Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved. Copyright (c) 2007-2009 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved. Copyright (c) 2013 Mellanox Technologies, Inc. All rights reserved. $COPYRIGHT$ The files in this directory are sample MPI applications provided both as a trivial primer to MPI as well as simple tests to ensure that your Open MPI installation is working properly. If you are looking for a comprehensive MPI tutorial, these samples are not enough. Excellent MPI tutorials are available here: http://www.citutor.org/login.php Get a free account and login; you can then browse to the list of available courses. Look for the ones with "MPI" in the title. There are two MPI examples in this directory, each using one of six different MPI interfaces: - Hello world C: hello_c.c C++: hello_cxx.cc Fortran mpif.h: hello_mpifh.f Fortran use mpi: hello_usempi.f90 Fortran use mpi_f08: hello_usempif08.f90 Java: Hello.java C shmem.h: hello_oshmem_c.c Fortran shmem.fh: hello_oshmemfh.f90 - Send a trivial message around in a ring C: ring_c.c C++: ring_cxx.cc Fortran mpif.h: ring_mpifh.f Fortran use mpi: ring_usempi.f90 Fortran use mpi_f08: ring_usempif08.f90 Java: Ring.java C shmem.h: ring_oshmem_c.c Fortran shmem.fh: ring_oshmemfh.f90 Additionally, there's one further example application, but this one only uses the MPI C bindings: - Test the connectivity between all processes C: connectivity_c.c The Makefile in this directory will build as many of the examples as you have language support (e.g., if you do not have the Fortran "use mpi" bindings compiled as part of Open MPI, the those examples will be skipped). The Makefile assumes that the wrapper compilers mpicc, mpic++, and mpifort are in your path. Although the Makefile is tailored for Open MPI (e.g., it checks the "ompi_info" command to see if you have support for C++, mpif.h, use mpi, and use mpi_f08 F90), all of the example programs are pure MPI, and therefore not specific to Open MPI. Hence, you can use a different MPI implementation to compile and run these programs if you wish. Make today an Open MPI day!