https://github.com/amrex-astro/mini-castro

a mini-app version of castro

https://github.com/amrex-astro/mini-castro

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.2%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

a mini-app version of castro

Basic Info
  • Host: GitHub
  • Owner: AMReX-Astro
  • License: mit
  • Language: Fortran
  • Default Branch: main
  • Size: 27.1 MB
Statistics
  • Stars: 6
  • Watchers: 5
  • Forks: 4
  • Open Issues: 4
  • Releases: 0
Created about 9 years ago · Last pushed over 4 years ago

https://github.com/AMReX-Astro/mini-Castro/blob/main/

[![DOI](https://zenodo.org/badge/92557777.svg)](https://zenodo.org/badge/latestdoi/92557777)

# mini-Castro

mini-Castro is a stripped-down version of Castro meant to serve as a
mini-app for exploring GPU offloading.

Castro is available at:

https://github.com/AMReX-Astro/Castro

## Getting the code

Clone this repository with:

```
git clone --recursive https://github.com/AMReX-Astro/mini-Castro.git
```

The `--recursive` option is needed because mini-Castro depends on the
AMReX library as a submodule. When updating the code later, make sure
you do `git pull --recurse-submodules` to obtain updates to AMReX.

## Compiling

mini-Castro depends on the AMReX library and uses its build system. Compiling
is done in the Exec/ directory using `make`. By default a serial (CPU) build will
be generated. MPI can be enabled with `make USE_MPI=TRUE`, which will require
valid MPI C/C++/Fortran compilers in your PATH. CUDA can be enabled by adding
`USE_CUDA=TRUE`, which will require both `nvcc` and a CUDA Fortran compiler
(either `pgfortran` or `xlf`). OpenACC can be enabled by adding `USE_ACC=TRUE`.
The OpenACC build still requires you to have the CUDA toolkit for the compilation
(the C++ is compiled with `nvcc` to ensure that AMReX backend functionality is on
the GPU, so make sure it is in your PATH). The compiler used is specified with `COMP`;
for GPUs, only `COMP=PGI` and `COMP=IBM` are supported for the CUDA Fortran build, and
only `COMP=PGI` is supported for the OpenACC build.

Parallel builds with `make -j` are acceptable.

Below are instructions for compiling on various systems. Although we are focusing
primarily on CUDA, it is straightforward to build a CPU version -- just leave off
`USE_CUDA=TRUE`. For CPU builds you can also take advantage of OpenMP host threading
with `USE_OMP=TRUE`.

## Compiling at OLCF

### Summit (CUDA)

```
module load pgi/19.4
module load cuda/10.1.105
make USE_CUDA=TRUE USE_MPI=TRUE COMP=PGI -j 4
```

### Summit (OpenACC)

```
module load pgi/19.4
module load cuda/10.1.105
make USE_ACC=TRUE USE_MPI=TRUE COMP=PGI -j 4
```

## Compiling at Stony Brook

### Compiling on bender

```
module load gcc/7.3
make CUDA_ARCH=60 COMPILE_CUDA_PATH=/usr/local/cuda-10.1 USE_MPI=FALSE USE_CUDA=TRUE COMP=PGI -j 4
```

### Compiling on groot

```
module load gcc/7.3
make CUDA_ARCH=70 COMPILE_CUDA_PATH=/usr/local/cuda-10.1 USE_MPI=FALSE USE_CUDA=TRUE COMP=PGI -j 4
```

## Running

mini-Castro has a few options to control the amount of work done
in the problem (determined by the spatial resolution of the
simulation) and the load balancing across MPI ranks. Run the program
after compiling to get a summary of the available options.

### Running mini-Castro on Summit

The following command requests an interactive job for 30 minutes on one node.

`bsub -P [project ID] -XF -nnodes 1 -W 30 -Is $SHELL`

Then launch mini-Castro using a `jsrun` command similar to the following,
which uses 6 GPUs on a single node:

`jsrun -n 6 -a 1 -g 1 ./mini-Castro3d.pgi.MPI.CUDA.ex`

To run on multiple nodes, request them using the `-nnodes` option to `bsub`.
For 1 MPI task per GPU, and 4 nodes with 6 GPUs per node, launch
mini-Castro via a jsrun command like:

`jsrun -n 24 -a 1 -g 1 -r 6 ./mini-Castro3d.pgi.MPI.CUDA.ex`

Where the '-r' option specifies the number of 1 MPI task/1 GPU
pairings (i.e. resource sets) per node.

## History

mini-Castro was originally called StarLord.  The name change reflects
its heritage.

Owner

  • Name: AMReX-Astro
  • Login: AMReX-Astro
  • Kind: organization

The AMReX Astrophysics Suite: adaptive mesh refinement hydrodynamics codes for astrophysical flows.

GitHub Events

Total
Last Year

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 13
  • Total pull requests: 5
  • Average time to close issues: 4 months
  • Average time to close pull requests: 5 days
  • Total issue authors: 3
  • Total pull request authors: 4
  • Average comments per issue: 2.23
  • Average comments per pull request: 0.8
  • Merged pull requests: 5
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • maximumcats (8)
  • bcfriesen (3)
  • zingale (2)
Pull Request Authors
  • bcfriesen (2)
  • maximumcats (1)
  • WeiqunZhang (1)
  • dwillcox (1)
Top Labels
Issue Labels
bug (1)
Pull Request Labels