{"id":13314639,"url":"https://github.com/parthenon-hpc-lab/parthenon","last_synced_at":"2025-10-21T05:37:49.061Z","repository":{"id":37040470,"uuid":"237075887","full_name":"parthenon-hpc-lab/parthenon","owner":"parthenon-hpc-lab","description":"Parthenon AMR infrastructure ","archived":false,"fork":false,"pushed_at":"2025-02-27T18:47:04.000Z","size":102833,"stargazers_count":131,"open_issues_count":271,"forks_count":37,"subscribers_count":19,"default_branch":"develop","last_synced_at":"2025-03-02T18:12:56.662Z","etag":null,"topics":["amr","high-performance-computing","kokkos","parthenon"],"latest_commit_sha":null,"homepage":"https://parthenon-hpc-lab.github.io/parthenon/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parthenon-hpc-lab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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}},"created_at":"2020-01-29T20:29:38.000Z","updated_at":"2025-02-22T04:37:40.000Z","dependencies_parsed_at":"2022-07-12T05:00:25.360Z","dependency_job_id":"70728952-43c6-4d6a-9503-4997ee30e7c1","html_url":"https://github.com/parthenon-hpc-lab/parthenon","commit_stats":null,"previous_names":["lanl/parthenon"],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parthenon-hpc-lab%2Fparthenon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parthenon-hpc-lab%2Fparthenon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parthenon-hpc-lab%2Fparthenon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parthenon-hpc-lab%2Fparthenon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parthenon-hpc-lab","download_url":"https://codeload.github.com/parthenon-hpc-lab/parthenon/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242922106,"owners_count":20207149,"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","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":["amr","high-performance-computing","kokkos","parthenon"],"created_at":"2024-07-29T18:11:50.492Z","updated_at":"2025-10-21T05:37:44.031Z","avatar_url":"https://github.com/parthenon-hpc-lab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parthenon\n\n[![testing](https://github.com/parthenon-hpc-lab/parthenon/actions/workflows/ci-short.yml/badge.svg?branch=develop)](https://github.com/parthenon-hpc-lab/parthenon/actions/workflows/ci-short.yml)\n[![Extended CI](https://github.com/parthenon-hpc-lab/parthenon/actions/workflows/ci-extended.yml/badge.svg?branch=develop)](https://github.com/parthenon-hpc-lab/parthenon/actions/workflows/ci-extended.yml)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Matrix chat](https://img.shields.io/matrix/parthenon-general:matrix.org)](https://app.element.io/#/room/#parthenon-general:matrix.org)\n[![Documentation](https://github.com/parthenon-hpc-lab/parthenon/actions/workflows/docs.yml/badge.svg?branch=develop)](https://parthenon-hpc-lab.github.io/parthenon/develop/index.html)\n\nParthenon -- a performance portable block-structured adaptive mesh refinement framework\n\n# Key features\n\n* High performance by\n  * device first/device resident approach (work data only in device memory to prevent expensive transfers between host and device)\n  * transparent packing of data across blocks (to reduce/hide kernel launch latency)\n  * direct device-to-device communication via asynchronous MPI communication\n* Intermediate abstraction layer to hide complexity of device kernel launches\n* Flexible, plug-in package system\n* Abstract variables controlled via metadata flags\n* Support for particles\n* Support for cell-, node-, face-, and edge-centered fields\n* Multi-stage drivers/integrators with support for task-based parallelism\n\n# Community\n* [Chat room on matrix.org](https://app.element.io/#/room/#parthenon-general:matrix.org)\n\n# Dependencies\n\n## Required\n\n* CMake 3.16 or greater\n* C++17 compatible compiler\n* Kokkos 4.4.1 or greater\n\n## Optional (enabling features)\n\n* MPI\n* OpenMP\n* HDF5 (for outputs)\n* Ascent (for in situ visualization and analysis)\n\n## Other\n\n* catch2 (for unit tests)\n* python3 (for regression tests)\n* numpy (for regression tests)\n* matplotlib (optional, for plotting results of regression tests)\n\n# Quick start guide\n\nFor detailed instructions for a given system, see our [build doc](https://parthenon-hpc-lab.github.io/parthenon/develop/src/building.html).\n\n## Basics\n\n    mkdir build\n    cd build\n    cmake ../\n    cmake --build . -j 8\n    ctest\n\n## Import Into Your Code\n```c++\n// Imports all of parthenon's public interface\n#include \u003cparthenon/parthenon.hpp\u003e\n\n// You can use one of the following headers instead if you want to limit how\n// much you import. They import Parthenon's Driver and Package APIs,\n// respectively\n#include \u003cparthenon/driver.hpp\u003e\n#include \u003cparthenon/package.hpp\u003e\n\n// The following namespaces are good short-hands to import commonly used names\n// for each set of Parthenon APIs.\nusing namespace parthenon::driver::prelude;\nusing namespace parthenon::package::prelude;\n```\n\n## Parallel_for wrapper options\n\nFollowing options are available to configure the default behavior of the `par_for` wrappers.\n\n- `PAR_LOOP_LAYOUT` (sets default layout)\n  - `MANUAL1D_LOOP` maps to `Kokkos::RangePolicy` (default for CUDA backend)\n  - `MDRANGE` maps to `Kokkos::MDRangePolicy`\n  - `SIMDFOR_LOOP` maps to standard `for` loops with `#pragma omp simd` (default for OpenMP backend)\n  - `TPTTR_LOOP` maps to double nested loop with `Kokkos::TeamPolicy` and `Kokkos::ThreadVectorRange`\n  - `TPTVR_LOOP` maps to double nested loop with `Kokkos::TeamPolicy` and `Kokkos::ThreadVectorRange`\n  - `TPTTRTVR_LOOP` maps to triple nested loop with `Kokkos::TeamPolicy`, `Kokkos::TeamThreadRange` and `Kokkos::ThreadVectorRange`\n\nSimilarly, for explicit nested paralellism the `par_for_outer` and `par_for_inner` wrappers are available.\n`par_for_outer` always maps to a `Kokkos::TeamPolicy` and the `par_for_inner` mapping is controlled by the\n- `PAR_LOOP_INNER_LAYOUT` (sets default innermost loop layout for `par_for_inner`)\n  - `SIMDFOR_INNER_LOOP` maps to standard `for` loops with `#pragma omp simd` (default for OpenMP backend)\n  - `TVR_INNER_LOOP` maps to `Kokkos::TeamVectorRange` (default for CUDA backend)\n\n\n## Kokkos options\nKokkos can be configured through `cmake` options, see https://github.com/kokkos/kokkos/wiki/Compiling\n\nFor example to build with the OpenMP backend for Intel Skylake architecture using Intel compilers\n\n    mkdir build-omp-skx \u0026\u0026 cd build-omp-skx\n    cmake -DKokkos_ENABLE_OPENMP=ON -DCMAKE_CXX_COMPILER=icpc -DKokkos_ARCH_SKX=ON ../\n\nor to build for NVIDIA V100 GPUs (using `nvcc` compiler for GPU code, which is automatically picked up by `Kokkos`)\n\n    mkdir build-cuda-v100 \u0026\u0026 cd build-cuda-v100\n    cmake -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_VOLTA70=On ../\n\nor to build for AMD MI100 GPUs (using `hipcc` compiler)\n\n    mkdir build-hip-mi100 \u0026\u0026 cd build-hip-mi100\n    cmake -DKokkos_ENABLE_HIP=ON -DCMAKE_CXX_COMPILER=hipcc -DKokkos_ARCH_Vega908=ON ../\n\n# Developing/Contributing\n\nPlease see the [developer guidelines](CONTRIBUTING.md) for additional information.\n\n# Documentation\n\nPlease see the [docs](https://parthenon-hpc-lab.github.io/parthenon) for additional documentation on features and\nhow to use them.\n\n# Contributors\n\n| Name     | Handle       | Team       |\n|----------|--------------|------------|\n| Jonah Miller | @Yurlungur  | LANL Physics  |\n| Josh Dolence | @jdolence | LANL Physics |\n| Andrew Gaspar | @AndrewGaspar | LANL Computer Science |\n| Philipp Grete | @pgrete | Athena Physics |\n| Forrest Glines | @forrestglines | Athena Physics |\n| Jim Stone | @jmstone | Athena Physics |\n| Jonas Lippuner | @jlippuner | LANL Computer Science |\n| Joshua Brown | @JoshuaSBrown | LANL Computer Science |\n| Christoph Junghans | @junghans | LANL Computer Science |\n| Sriram Swaminarayan | @nmsriram | LANL Computer Science |\n| Daniel Holladay | @dholladay00 | LANL Computer Science |\n| Galen Shipman | @gshipman | LANL Computer Science |\n| Ben Ryan | @brryan | LANL Physics |\n| Clell J. (CJ) Solomon | @clellsolomon | LANL Physics |\n| Luke Roberts | @lroberts36 | LANL Physics |\n| Ben Prather | @bprather | LANL Physics |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparthenon-hpc-lab%2Fparthenon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparthenon-hpc-lab%2Fparthenon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparthenon-hpc-lab%2Fparthenon/lists"}