1
1
openmpi/examples
David Eberius d377a6b6f4 Added Software-based Performance Counters driver code along with several counters.
This code is the implementation of Software-base Performance Counters as described in the paper 'Using Software-Base Performance Counters to Expose Low-Level Open MPI Performance Information' in EuroMPI/USA '17 (http://icl.cs.utk.edu/news_pub/submissions/software-performance-counters.pdf).  More practical usage information can be found here: https://github.com/davideberius/ompi/wiki/How-to-Use-Software-Based-Performance-Counters-(SPCs)-in-Open-MPI.

All software events functions are put in macros that become no-ops when SOFTWARE_EVENTS_ENABLE is not defined.  The internal timer units have been changed to cycles to avoid division operations which was a large source of overhead as discussed in the paper.  Added a --with-spc configure option to enable SPCs in the Open MPI build.  This defines SOFTWARE_EVENTS_ENABLE.  Added an MCA parameter, mpi_spc_enable, for turning on specific counters.  Added an MCA parameter, mpi_spc_dump_enabled, for turning on and off dumping SPC counters in MPI_Finalize.  Added an SPC test and example.

Signed-off-by: David Eberius <deberius@vols.utk.edu>
2018-06-11 22:48:16 -04:00
..
dtrace Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
connectivity_c.c Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
hello_c.c example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
hello_cxx.cc Update C++ examples to say that Open MPI no longer builds the MPI C++ 2013-01-28 22:22:26 +00:00
hello_mpifh.f example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
hello_oshmem_c.c oshmem: Align OSHMEM API with spec v1.2 (change examples) 2015-11-24 18:58:28 +02:00
hello_oshmem_cxx.cc oshmem: add C++ wrappers 2017-09-01 13:24:34 +09:00
hello_oshmemfh.f90 oshmem: Align OSHMEM API with spec v1.2 (change examples) 2015-11-24 18:21:08 +02:00
hello_usempi.f90 example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
hello_usempif08.f90 example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
Hello.java Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
Makefile Added Software-based Performance Counters driver code along with several counters. 2018-06-11 22:48:16 -04:00
Makefile.include Added Software-based Performance Counters driver code along with several counters. 2018-06-11 22:48:16 -04:00
oshmem_circular_shift.c oshmem: updated API oshmem examples to OSHMEM 1.3 2016-10-21 12:36:53 +06:00
oshmem_max_reduction.c oshmem: updated API oshmem examples to OSHMEM 1.3 2016-10-21 12:36:53 +06:00
oshmem_shmalloc.c oshmem: updated API oshmem examples to OSHMEM 1.3 2016-10-21 12:36:53 +06:00
oshmem_strided_puts.c oshmem: updated API oshmem examples to OSHMEM 1.3 2016-10-21 12:36:53 +06:00
oshmem_symmetric_data.c oshmem: updated API oshmem examples to OSHMEM 1.3 2016-10-21 12:36:53 +06:00
README 1. Default target (e.g. 'make all') now build all avaliable examples depends on configuration. 2013-11-12 13:02:07 +00:00
ring_c.c example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
ring_cxx.cc example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
ring_mpifh.f example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
ring_oshmem_c.c oshmem: Align OSHMEM API with spec v1.2 (change examples) 2015-11-24 18:58:28 +02:00
ring_oshmemfh.f90 OSHMEM: added bunch of examples according to SPEC 1.0 2014-04-19 05:03:44 +00:00
ring_usempi.f90 example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
ring_usempif08.f90 example: whitespace and comment cleanup 2015-05-04 07:47:53 -07:00
Ring.java Purge whitespace from the repo 2015-06-23 20:59:57 -07:00
spc_example.c Added Software-based Performance Counters driver code along with several counters. 2018-06-11 22:48:16 -04:00

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!