{"id":25555286,"url":"https://github.com/supercontainers/container-perf","last_synced_at":"2025-10-09T03:16:24.149Z","repository":{"id":104781913,"uuid":"284796630","full_name":"supercontainers/container-perf","owner":"supercontainers","description":"Container performance testing suite","archived":false,"fork":false,"pushed_at":"2020-08-03T20:51:24.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-04T16:15:28.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/supercontainers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-08-03T20:08:31.000Z","updated_at":"2024-05-17T21:12:34.000Z","dependencies_parsed_at":"2023-05-29T19:30:30.362Z","dependency_job_id":null,"html_url":"https://github.com/supercontainers/container-perf","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/supercontainers/container-perf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercontainers%2Fcontainer-perf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercontainers%2Fcontainer-perf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercontainers%2Fcontainer-perf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercontainers%2Fcontainer-perf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supercontainers","download_url":"https://codeload.github.com/supercontainers/container-perf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercontainers%2Fcontainer-perf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000781,"owners_count":26082911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-20T13:58:14.874Z","updated_at":"2025-10-09T03:16:24.121Z","avatar_url":"https://github.com/supercontainers.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# container-perf\n\nThis repository builds several variants of MPI + Kokkos + CUDA for container performance benchmarking\n\n## Overview\n\nThis repository can be configured to build an array of containers for different operating systems and MPI variants.\nThe MPI specifications are configured in `packages/mpi.txt` with one Spack spec per-line.\nThe OS specifications are configured in `packages/os.txt` with one Spack spec per-line.\nCUDA, Kokkos, and a mini-app are always installed. Additionally Spack specs can be placed in files and\npassed to the `packages/generate.sh` script. A sample is placed in `packages/extra.txt`.\n\n## Quick Start\n\n```console\ncd packages\n./generate.sh\ncd ..\ndocker-compose build --pull ubuntu-mpich\n```\n\n## Example\n\n```console\n$ cd packages\n\n$ cat extra.txt\ntimemory@develop +tools +cuda +cupti +gotcha +mpi +mpip_library +papi +gperftools cuda_arch=volta\n\n$ ./generate extra.txt\nOS: ubuntu, MPI: mpich\nOS: ubuntu, MPI: mvapich2\nOS: ubuntu, MPI: openmpi\nOS: centos, MPI: mpich\nOS: centos, MPI: mvapich2\nOS: centos, MPI: openmpi\n\n$ cat mpich/Dockerfile.ubuntu\n# Build stage with Spack pre-installed and ready to be used\nFROM spack/ubuntu-bionic:latest as builder\n\n# What we want to install and how we want to install it\n# is specified in a manifest file (spack.yaml)\nRUN mkdir /opt/spack-environment \\\n\u0026\u0026  (echo \"spack:\" \\\n\u0026\u0026   echo \"  specs:\" \\\n\u0026\u0026   echo \"  - cuda\" \\\n\u0026\u0026   echo \"  - kokkos build_type=Release +cuda cuda_arch=72 +cuda_lambda +cuda_uvm +hwloc +memkind +numactl +openmp +wrapper std=14\" \\\n\u0026\u0026   echo \"  - mpich device=ch3 +hydra netmod=tcp ~pci pmi=pmi +romio ~slurm\" \\\n\u0026\u0026   echo \"  - timemory@develop +tools +cuda +cupti +gotcha +mpi +mpip_library +papi +gperftools cuda_arch=volta\" \\\n\u0026\u0026   echo \"  concretization: together\" \\\n\u0026\u0026   echo \"  config:\" \\\n\u0026\u0026   echo \"    install_tree: /opt/software\" \\\n\u0026\u0026   echo \"  view: /opt/view\") \u003e /opt/spack-environment/spack.yaml\n\n# Install the software, remove unecessary deps\nRUN cd /opt/spack-environment \u0026\u0026 spack --env . install \u0026\u0026 spack gc -y\n\n# Modifications to the environment that are necessary to run\nRUN cd /opt/spack-environment \u0026\u0026 \\\n    spack env activate --sh -d . \u003e\u003e /etc/profile.d/z10_spack_environment.sh\n\nSHELL [\"/bin/bash\", \"--rcfile\", \"/etc/profile\", \"-l\"]\nWORKDIR /tmp\nRUN git clone https://github.com/jrmadsen/kokkos-miniapps.git \u0026\u0026 \\\n    cd kokkos-miniapps \u0026\u0026 \\\n    git checkout submodules \u0026\u0026 \\\n    mkdir -p build-container \u0026\u0026 \\\n    cd build-container \u0026\u0026 \\\n    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_COMPILER=nvcc_wrapper -DUSE_MPI=ON .. \u0026\u0026 \\\n    make install -j8 \u0026\u0026 \\\n    cd /tmp \u0026\u0026 \\\n    rm -rf /tmp/kokkos-miniapps\n\n\n# Bare OS image to run the installed executables\nFROM ubuntu:18.04\n\nCOPY --from=builder /opt/spack-environment /opt/spack-environment\nCOPY --from=builder /opt/software /opt/software\nCOPY --from=builder /opt/view /opt/view\nCOPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh\n\n\nENV OMP_PROC_BIND spread\nENV OMP_PLACES threads\nENV CUDA_HOME \"/opt/view\"\nENV NVIDIA_REQUIRE_CUDA \"cuda\u003e=10.2\"\nENV NVIDIA_VISIBLE_DEVICES \"all\"\nENV NVIDIA_DRIVER_CAPABILITIES \"compute,utility\"\nCOPY ./runtime-entrypoint.sh /runtime-entrypoint.sh\nRUN echo 'export PS1=\"\\[$(tput bold)\\]\\[$(tput setaf 1)\\][kokkos-mpich]\\[$(tput setaf 2)\\]\\u\\[$(tput sgr0)\\]:\\w $ \\[$(tput sgr0)\\]\"' \u003e\u003e ~/.bashrc\n\n\nLABEL \"app\"=\"kokkos\"\nLABEL \"mpi\"=\"mpich\"\n\nENTRYPOINT [ \"/runtime-entrypoint.sh\" ]\n```\n\n## Benchmarking\n\n```console\n$ docker run -it --rm supercontainers/container-perf:ubuntu-mpich /usr/bin/lulesh-optimized --help\nTo run other sizes, use -s \u003cinteger\u003e.\nTo run a fixed number of iterations, use -i \u003cinteger\u003e.\nTo run a more or less balanced region set, use -b \u003cinteger\u003e.\nTo change the relative costs of regions, use -c \u003cinteger\u003e.\nTo print out progress, use -p\nTo write an output file for VisIt, use -v\nSee help (-h) for more options\n```\n\n### Sample Output\n\n```console\nRunning problem size 30^3 per domain until completion\nNum processors: 8\nNum threads: 4\nTotal number of elements: 216000\n\nTo run other sizes, use -s \u003cinteger\u003e.\nTo run a fixed number of iterations, use -i \u003cinteger\u003e.\nTo run a more or less balanced region set, use -b \u003cinteger\u003e.\nTo change the relative costs of regions, use -c \u003cinteger\u003e.\nTo print out progress, use -p\nTo write an output file for VisIt, use -v\nSee help (-h) for more options\n\ncycle = 1, time = 6.852019e-07, dt=6.852019e-07\ncycle = 2, time = 1.507444e-06, dt=8.222423e-07\ncycle = 3, time = 1.789278e-06, dt=2.818333e-07\ncycle = 4, time = 2.024630e-06, dt=2.353527e-07\ncycle = 5, time = 2.234438e-06, dt=2.098079e-07\ncycle = 6, time = 2.429254e-06, dt=1.948161e-07\ncycle = 7, time = 2.614474e-06, dt=1.852199e-07\ncycle = 8, time = 2.793376e-06, dt=1.789023e-07\ncycle = 9, time = 2.968181e-06, dt=1.748048e-07\ncycle = 10, time = 3.140521e-06, dt=1.723397e-07\ncycle = 11, time = 3.347329e-06, dt=2.068076e-07\ncycle = 12, time = 3.580825e-06, dt=2.334965e-07\ncycle = 13, time = 3.801554e-06, dt=2.207292e-07\ncycle = 14, time = 4.009569e-06, dt=2.080144e-07\ncycle = 15, time = 4.204856e-06, dt=1.952872e-07\ncycle = 16, time = 4.391294e-06, dt=1.864386e-07\ncycle = 17, time = 4.572177e-06, dt=1.808824e-07\ncycle = 18, time = 4.750330e-06, dt=1.781535e-07\ncycle = 19, time = 4.928456e-06, dt=1.781255e-07\ncycle = 20, time = 5.106581e-06, dt=1.781255e-07\ncycle = 21, time = 5.284707e-06, dt=1.781255e-07\ncycle = 22, time = 5.462832e-06, dt=1.781255e-07\ncycle = 23, time = 5.640958e-06, dt=1.781255e-07\ncycle = 24, time = 5.838115e-06, dt=1.971575e-07\ncycle = 25, time = 6.035273e-06, dt=1.971575e-07\ncycle = 26, time = 6.232430e-06, dt=1.971575e-07\ncycle = 27, time = 6.457155e-06, dt=2.247252e-07\ncycle = 28, time = 6.681880e-06, dt=2.247252e-07\ncycle = 29, time = 6.950244e-06, dt=2.683634e-07\ncycle = 30, time = 7.254776e-06, dt=3.045323e-07\ncycle = 31, time = 7.547127e-06, dt=2.923506e-07\ncycle = 32, time = 7.829604e-06, dt=2.824770e-07\ncycle = 33, time = 8.105297e-06, dt=2.756935e-07\ncycle = 34, time = 8.376591e-06, dt=2.712932e-07\ncycle = 35, time = 8.645899e-06, dt=2.693089e-07\ncycle = 36, time = 8.915208e-06, dt=2.693089e-07\ncycle = 37, time = 9.184517e-06, dt=2.693089e-07\ncycle = 38, time = 9.453826e-06, dt=2.693089e-07\ncycle = 39, time = 9.723135e-06, dt=2.693089e-07\ncycle = 40, time = 1.002492e-05, dt=3.017811e-07\ncycle = 41, time = 1.032670e-05, dt=3.017811e-07\ncycle = 42, time = 1.062848e-05, dt=3.017811e-07\ncycle = 43, time = 1.093026e-05, dt=3.017811e-07\ncycle = 44, time = 1.123204e-05, dt=3.017811e-07\ncycle = 45, time = 1.153141e-05, dt=2.993676e-07\ncycle = 46, time = 1.182441e-05, dt=2.930026e-07\ncycle = 47, time = 1.211197e-05, dt=2.875624e-07\ncycle = 48, time = 1.239508e-05, dt=2.831021e-07\ncycle = 49, time = 1.267466e-05, dt=2.795814e-07\ncycle = 50, time = 1.295174e-05, dt=2.770851e-07\nRun completed:\n   Problem size        =  30\n   MPI tasks           =  8\n   Iteration count     =  50\n   Final Origin Energy = 1.750636e+07\n   Testing Plane 0 of Energy Array on rank 0:\n        MaxAbsDiff   = 2.328306e-09\n        TotalAbsDiff = 5.189477e-09\n        MaxRelDiff   = 1.496717e-11\n\n\nElapsed time         =      13.32 (s)\nGrind time (us/z/c)  =  9.8646646 (per dom)  ( 1.2330831 overall)\nFOM                  =  810.97537 (z/s)\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupercontainers%2Fcontainer-perf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsupercontainers%2Fcontainer-perf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsupercontainers%2Fcontainer-perf/lists"}