Skip to content

Aaron-Hsieh-0129/VVM_GPU_CPP

Repository files navigation

GVVM (GPU-accelerated Vector Vorticity Model)

C++ Kokkos License

A GPU-accelerated (Kokkos-based) C++ implementation of the Vector Vorticity equation cloud-resolving Model (VVM).

Table of Contents

Features

  • 3D Cloud-Resolving Dynamics: High-performance atmospheric dynamics utilizing the Vector Vorticity formulation.
  • Advanced Physics Schemes:
    • Microphysics: P3 microphysics scheme adapted from E3SM EAMxx, with restored vapor-cloud water (qv $\leftrightarrow$ qc) conversion processes based on the original Fortran P3 formulation.
    • Radiation: RRTMGP radiation scheme adapted from E3SM EAMxx.
    • Land Surface Model: Noah land surface model with GPU acceleration (Fortran OpenACC), provided by the Central Weather Administration (CWA) of Taiwan.
  • TaiwanVVM Support: Capable of simulating high-resolution Taiwan topography using generated terrain datasets (example scripts provided).

Requirements

Compiler Dependencies

Dependency Minimum Version Note
C++ Compiler ≥ gcc 11
CUDA Toolkit ≥ 11.4 Currently tested exclusively on NVIDIA GPUs.
OpenMPI ≥ 11.4

Recommendation: For running on NVIDIA GPUs, installing NVHPC (≥ 24.9) is highly recommended, as it includes the required OpenMPI and CUDA-related packages out of the box. Development for other GPU platforms and CPU-only architectures is planned for the future.

Library Dependencies

(Lower versions might work but have not been formally tested.)

Library Minimum Version Library Minimum Version
CMake ≥ 3.20 netcdf-c ≥ 4.4.1.1
Kokkos ≥ 4.7.01 netcdf-fortran ≥ 4.4.1
HDF5 ≥ 1.14.5 pnetcdf ≥ 1.14.1
ADIOS2 ≥ 2.11.0

Please refer to our Installation Tutorial for detailed instructions on setting up these libraries.

Quick Start

Step 1: Clone the Repository

After installing the required libraries, clone the project from GitHub:

git clone https://github.com/Aaron-Hsieh-0129/VVM_GPU_CPP.git
cd VVM_GPU_CPP

Step 2: Configure CMake Presets

Add your library installation paths to CMakePresets.json. You can follow the existing configurations inside the file to specify your local environment paths.

Step 3: Build the Project

Compile the project from the root directory. Replace <your_preset_name> with your configured preset and <core_number> with the number of CPU cores for parallel building:

cmake --preset <your_preset_name> -DBUILD_TESTS=ON
cmake --build build -j<core_number>

Step 4: Configure the Experiment

  • Main Settings: Modify rundata/input_configs/default_config.json to design your experiment. Each physical process has its own toggle switch.

  • Initial Conditions:

    • Generate initial input files using the Python scripts located under scripts/.

    • Specify your generated spatial file path (typically placed in rundata/initial_conditions/spatial/) within default_config.json.

    • Initial profiles should be placed under rundata/initial_conditions/profiles/.

Step 5: Execute

Run the model from the build directory:

cd build
mpirun -np 1 ./vvm

Asynchronous I/O (Optional)

To use asynchronous output, specify the SST engine in default_config.json. You can then allocate dedicated tasks for I/O.

For example, to use 1 GPU/CPU for the model and 1 CPU for I/O:

mpirun -np 2 ./vvm --io-tasks 1

To use 2 GPUs/CPUs for the model and 2 CPUs for I/O:

mpirun -np 4 ./vvm --io-tasks 2

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Acknowledgments & References

  • E3SM EAMxx: The base implementation of the P3 microphysics and RRTMGP radiation schemes were adapted from the E3SM project.
  • P3 Microphysics: The explicit condensation and evaporation processes between water vapor and cloud water, which are absent in the EAMxx version, have been re-implemented according to the original P3 formulation (e.g., Morrison and Milbrandt, 2015).
  • CWA Noah LSM: The GPU-accelerated Noah land surface model is generously provided by the Central Weather Administration (CWA) of Taiwan.

Contact & Support

GitHub Issues: For bugs, feature requests, or code contributions, please open an issue on the GitHub repository.

Email: Users can contact us for more questions regarding the model or its usage at B08209006@ntu.edu.tw.

Releases

No releases published

Packages

 
 
 

Contributors