Mentions légales du service

Skip to content
Snippets Groups Projects

SMPI Integration Testing

Proxy apps are scale models of real, massive HPC applications: each of them exhibits the same communication and computation patterns than the massive application that it stands for. But they last only a few thousands lines instead of some millions of lines. These proxy apps are usually provided for educational purpose, and also to ensure that the represented large HPC applications will correctly work with the next generation of runtimes and hardware. See also this explanation of the proxy apps' purpose.

SMPI is an implementation of MPI executing the application on top of the SimGrid simulator. This allows to study the application behavior in many details that would be hard to observe if not in a simulator, or on platforms that do not exist yet. The predictive power of SMPI was shown to be very good, provided that you correctly model the target platform [🗎, 🗎] while very scalable [🗎].

This repository gathers several collections of proxy apps, and reports their support by the SMPI implementation. This is tested nightly on a dedicated jenkins server.

Full Scale Applications

In addition to the proxy apps testing presented here, some real-scale HPC projects directly use SMPI as a basis for their regression and integration tests:

Application Build status
BigDFT is a DFT massively parallel electronic structure code using a wavelet basis set. Build Status
StarPU is an unified runtime system for heterogeneous multicore architectures. Build Status
OpenMPI-test-suite is a test suite used by OpenMPI and several other MPI libraries Build Status
Intel-benchmarks-suite is a benchmarks suite by Intel Build Status
NPB is a test suite designed to help evaluate the performance of parallel supercomputers Build Status

ECP Proxy Application

Benchmark Lines Lang Script Status Build Patch Code Patch
AMG 4,658 C 🎫 Build Status ▪️ ▪️
CLAMR 109,477 C++ 🎫 Build Status ▪️ 🎫
Chatterbug 1,050 C++ 🎫 Build Status ▪️ ▪️
Comb 1,965 C++ 🎫 Build Status ▪️ 🎫
CoMD 4,658 C 🎫 Build Status ▪️ ▪️
CoSP2 2,199 C 🎫 Build Status ▪️ 🎫
CloverLeaf 37,477 C, F90 🎫 Build Status ▪️ ▪️
CloverLeaf3D 11,200 C, F90 🎫 Build Status ▪️ ▪️
EBMS 841 C++, F90 🎫 Build Status ▪️ ▪️
Ember 1,300 C 🎫 Build Status ▪️ ▪️
ExaMiniMD 6,184 C++ 🎫 Build Status 🎫 only if sampling is needed : 🎫
CabanaMD 33,000 C++ 🎫 Build Status
HPCCG 1,548 C++ 🎫 Build Status ▪️ ▪️
HPGMG 12,073 C 🎫 Build Status ▪️ ▪️
Kripke 5,350 C++ 🎫 Build Status ▪️ ▪️
MINITRI 1,534 C++ 🎫 Build Status ▪️ ▪️
MiniAero 4,645 C++ 🎫 Build Status 🎫 ▪️
MiniAMR 8,329 C 🎫 Build Status ▪️ ▪️
MiniFE 19,907 C 🎫 Build Status ▪️ ▪️
MiniGhost 8,962 F90 🎫 Build Status 🎫 ▪️
MiniGMG 4,257 C 🎫 Build Status ▪️ ▪️
MiniMD 9,344 C++ 🎫 Build Status 🎫 ▪️
MiniSMAC2D 8,329 F90 🎫 Build Status ▪️ ▪️
MiniVite 2,375 C++ 🎫 Build Status ▪️ ▪️
Nekbone 38,674 C, F77 🎫 Build Status ▪️ ▪️
MiniXyce 2,020 C++ 🎫 Build Status ▪️ ▪️
PENNANT 3,464 C++ 🎫 Build Status 🎫 ▪️
PETSC 750,000 C, C++, F90 🎫 Build Status ▪️ ▪️
Picsar 57,800 F90 🎫 Build Status ▪️ 🎫
ProfugusMC 107,400 C++ 🎫 Build Status ▪️ ▪️
Quicksilver 9,821 C++ 🎫 Build Status ▪️ 🎫
SimpleMOC 2,864 C 🎫 Build Status 🎫 ▪️
SNAP 4,640 F90 🎫 Build Status ▪️ ▪️
SNBONE 5,897 F90 🎫 Build Status 🎫 🎫
SWFFT 3,827 C++, C, F90 🎫 Build Status ▪️ only if sampling is needed : 🎫, only for shared allocs : 🎫
Sw4lite 48,436 C 🎫 Build Status ▪️ only if sampling is needed : 🎫, only for shared allocs : 🎫
TeaLeaf 5,729 F90 🎫 Build Status ▪️ ▪️
Tycho2 6,343 C++ 🎫 Build Status ▪️ 🎫
VPFFT 3,384 C++ 🎫 Build Status 🎫 ▪️
XSBench 1,086 C (OMP) 🎫 Build Status ▪️ ▪️

The following apps of this collection are not included:

  • Requiring OpenMP only : PathFinder, CoHMM, NuT, RSBench, CoGL
  • Laghos (depends on HYPRE, METIS, MFEM)
  • FleCSALE (depends on Exodus, FleCSI, ParMETIS)
  • PlasmApp (depends on Trilinos)
  • LCALS, AMR_Exp_Parabolic (code source not available)
  • ASPA, RajaPerformanceSuite : (no MPI)

CORAL benchmarks

Benchmark Lines Lang Script Status Build Patch Code Patch
amg2013 75,000 C 🎫 Build Status ▪️ ▪️
HACCIO 2,000 C++ 🎫 Build Status ▪️ ▪️
KMI_HASH 4,239 C 🎫 Build Status ▪️ ▪️
LULESH 5,000 C 🎫 Build Status ▪️ ▪️
IOR 14,000 C 🎫 Build Status ▪️ ▪️
UMT2013 34,000 C, F90, C++ 🎫 Build Status 🎫 ▪️
Qbox 45,000 C++ 🎫 Build Status 🎫 ▪️
LSMS 200,000 C++, F90, C 🎫 Build Status 🎫 ▪️
MCB 13,000 C++ 🎫 Build Status 🎫 ▪️
CLOMP 1,374 C 🎫 Build Status ▪️ ▪️

The following apps of this collection are not included:

  • too heavy : QMCPACK (supported, but compilation takes 30+ minutes and several GB of disk space) (📖)
  • BigSort : works, but needs to generate/read input files through MPI/IO calls. SMPI's MPI/IO implementation does not actually read/write files on the disk, so data can't be read (📖 📦)
  • OpenMP only : Graph500 Memory benchmarks, FTQ, XSBench, NEKbonemk, HACCmk, UMTmk, AMGmk, MILCmk, GFMCmk.
  • Using Python: Pynmaic.
  • CAM-SE (📖📦) Depends on NETCDF, Lapack, cBlas.
  • NAMD (📖📦) Requires mpixlc.

Trinity-Nersc benchmarks

Benchmark Lines Lang Script Status Build Patch Code Patch
SMB - mpiheader 418 C 🎫 Build Status 🎫 ▪️
SMB - msgrate 362 C 🎫 Build Status ▪️ ▪️
ziatest 255 C 🎫 Build Status ▪️ ▪️
psnap 384 C 🎫 Build Status ▪️ ▪️
mdtest 2,187 C 🎫 Build Status ▪️ ▪️
mpimemu 4,980 C 🎫 Build Status ▪️ ▪️
OMB_MPI 1,406 C 🎫 Build Status ▪️ ▪️
OMB_MPI (one-sided) 1,679 C 🎫 Build Status ▪️ ▪️
OMB_MPI (collective) 1,269 C 🎫 Build Status ▪️ ▪️
MiniFE 4,968 C++ 🎫 Build Status ▪️ ▪️
GTC 5,591 F90 🎫 Build Status ▪️ ▪️
MILC 82,645 C 🎫 Build Status ▪️ ▪️
MiniDFT 30,874 C, F90 🎫 Build Status (with MKL) ▪️
Stream 747 C, F77 🎫 Build Status ▪️ ▪️

The following apps of this collection are not included:

  • UPC-FC (📖📦): Depending on UPC
  • Using Python: UMT.

CodeVault benchmarks

Benchmark Lines Lang Script Status Build Patch Code Patch
MCM 453 C++ 🎫 Build Status ▪️ ▪️
n-Body_methods 2,401 C++ 🎫 Build Status ▪️ ▪️
basic MPI IO 380 C++ 🎫 Build Status ▪️ ▪️
read2shmem 202 C++ 🎫 Build Status ▪️ ▪️
bhtree_mpi 1,200 C++ 🎫 Build Status ▪️ ▪️

The following apps of this collection are not included:

  • Requesting OpenMP: Dense_linear_algebra, N-body_methods (bhtree, hermite4, naive), Structured_grids.
  • Using unsupported MPI primitives : Unstructed_grid (halo exchange)
  • Sparse_linear_algebra (depends on PETSc)
  • Spectral_methods (depends on OpenMP, CUDA, OpenCL, FFTW)
  • Unstructured_grids ( depends on libmesh)

MeteoFrance Proxy Applications

Benchmark Lines Lang SMPI Patch
GCR 504 C++ ☀️ ▪️
Halo 1910 C++ ☀️ 🎫
Transpose 2554 C++ ☀️ 🎫

HPL

Benchmark Lines Lang SMPI Patch
Vanilla 15,807 C Build Status ▪️
Optimized 15,807 C Build Status ▪️

Legend

Symbol Meaning Symbol Meaning
☀️ Execution successful 🎫 Patch provided
Execution fails ▪️ No patch needed
Done successfully but with some warnings 🚧 SMPI missing feature
🐞 Has an open issue
📖 Compilation instructions 📦 Source code