Git Product home page Git Product logo

gridtools-docker's Introduction



License: BSD Gitpod Ready-to-Code

The GridTools framework is a set of libraries and utilities to develop performance portable applications in the area of weather and climate. To achieve the goal of performance portability, the user-code is written in a generic form which is then optimized for a given architecture at compile-time. The core of GridTools is the stencil composition module which implements a DSL embedded in C++ for stencils and stencil-like patterns. Further, GridTools provides modules for halo exchanges, boundary conditions, data management and bindings to C and Fortran.

GridTools is successfully used to accelerate the dynamical core of the COSMO model with improved performance on CUDA-GPUs compared to the current official version, demonstrating production quality and feature-completeness of the library for models on lat-lon grids. The GridTools-based dynamical core is shipped with COSMO v5.7 and later, see release notes COSMO v5.7.

Although GridTools was developed for weather and climate applications it might be applicable for other domains with a focus on stencil-like computations.

A detailed introduction can be found in the documentation.

Installation instructions

git clone https://github.com/GridTools/gridtools.git
cd gridtools
mkdir -p build && cd build
cmake ..
make -j8
make test

For choosing the compiler, use the standard CMake techniques, e.g. setting the environment variables

CXX=`which g++` # full path to the C++ compiler
CC=`which gcc` # full path to theC compiler
FC=`which gfortran` # full path to theFortran compiler
CUDACXX=`which nvcc` # full path to NVCC
CUDAHOSTCXX=`which g++` # full path to the C++ compiler to be used as CUDA host compiler
Requirements
  • C++17 compiler (see also list of tested compilers)
  • Boost headers (1.73 or later)
  • CMake (3.18.1 or later)
  • CUDA Toolkit (11.0 or later, optional)
  • MPI (optional, CUDA-aware MPI for the GPU communication module gcl_gpu)

Supported compilers

The GridTools libraries are currently nightly tested with the following compilers on CSCS supercomputers.

Compiler Backend Tested on Comments
Cray clang version 12.0.3 all backends Piz Daint P100 GPU
Cray clang version 10.0.2 + NVCC 11.2 all backends Piz Daint P100 GPU
Cray clang version 12.0.3 all backends Piz Daint with -std=c++20
GNU 11.2.0 + NVCC 11.0 all backends Piz Daint P100 GPU
GNU 11.2.0 + NVCC 11.2 all backends Dom P100 GPU
GNU 8.3.0 + NVCC 11.2 all backends Tsa V100 GPU
Known issues
  • Some tests are failing with ROCm3.8.0 (Clang 11).
  • CUDA 11.0.x has a severe issue, see #1522. Under certain conditions, GridTools code will not compile for this version of CUDA. CUDA 11.1.x and later should not be affected by this issue.
  • Cray Clang version 11.0.0 has a problem with the gridtools::tuple conversion constructor, see #1615.
Partly supported (expected to work, but not tested regularly)
Compiler Backend Date Comments
Intel 19.1.1.217 all backends 2021-09-30 with cmake . -DCMAKE_CXX_FLAGS=-qnextgen
NVHPC 23.3 all backends 2023-04-20 only compilation is tested regularly in CI

Contributing

Contributions to the GridTools framework are welcome. Please open an issue for any bugs that you encounter or provide a fix or enhancement as a PR. External contributions to GridTools require us a signed copy of a copyright release form to ETH Zurich. We will contact you on the PR.

gridtools-docker's People

Contributors

bettiolm avatar boeschf avatar fthaler avatar havogt avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gridtools-docker's Issues

Separate image runs

We should separate the CI job for the different images, probably with a move to GitHub actions.

Dependency issue

There seems to be a dependency issues. The observable behavior was that the derived cuda containers didn't have the recent CMake version.
My assumption is that while the workflows properly wait for each other, they pull in the existing base container instead of the ones that are build in the previous step.

CUDA images don't work in clang-cuda mode

I get this error

Run Build Command(s):/usr/bin/make -f Makefile cmTC_53c16/fast && /usr/bin/make  -f CMakeFiles/cmTC_53c16.dir/build.make CMakeFiles/cmTC_53c16.dir/build
make[1]: Entering directory '/root/gridtools/build/CMakeFiles/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_53c16.dir/TryClangCuda.cpp.o
/usr/bin/clang++-12  -isystem /usr/local/cuda/include -xcuda --cuda-path=/usr/local/cuda/bin/.. --cuda-gpu-arch=sm_60 -std=c++14 -MD -MT CMakeFiles/cmTC_53c16.dir/TryClangCuda.cpp.o -MF CMakeFiles/cmTC_53c16.dir/TryClangCuda.cpp.o.d -o CMakeFiles/cmTC_53c16.dir/TryClangCuda.cpp.o -c /root/gridtools/build/CMakeFiles/TryClangCuda.cpp
clang: warning: Unknown CUDA version. cuda.h: CUDA_VERSION=11050. Assuming the latest supported version 10.1 [-Wunknown-cuda-version]
In file included from <built-in>:1:
/usr/lib/llvm-12/lib/clang/12.0.1/include/__clang_cuda_runtime_wrapper.h:426:10: fatal error: 'curand_mtgp32_kernel.h' file not found
#include "curand_mtgp32_kernel.h"

Maybe cuda-minimal doesn't contain the library with this header...

cuda 10.1 containers broken

It seems I broke the cuda 10.1 images, I don't know how...
Either we recover them or we should remove them from dockerhub.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.