Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nab atlas gpu field #89

Open
wants to merge 52 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
f5fa744
use eigen/3.4.0 to prevent redifinitions stemming from EIGEN_COMP_PGI…
sbrdar Apr 8, 2024
fe8f85f
enable GPU for Atlas & temporary disable other GPU implementations
sbrdar Apr 8, 2024
3bcde0a
add Atlas GPU implementation
sbrdar Apr 11, 2024
e75fcb7
adapt to FIELD_API implementation
sbrdar Apr 16, 2024
1cf62ac
revert temporary disabled features
sbrdar Apr 17, 2024
9b60712
remove unnecessary code
sbrdar Apr 17, 2024
2b20918
correct the field_api git version
sbrdar Apr 18, 2024
dc3e5bb
fix a bug to have identical results to FIELD_API dwarf version
sbrdar Apr 18, 2024
2b1242d
use memory pinning for NVHPC - same as the FIELD_API version
sbrdar Apr 18, 2024
1123086
remove debugging print outs
sbrdar Apr 18, 2024
dc83f52
temporary disable atlas::Multifield until it is merged in the develop…
sbrdar Apr 24, 2024
12a5d63
set ACC flags
sbrdar Apr 24, 2024
569bd7c
1) use atlas::FieldSet GPU-functions instead of relying on multiple c…
sbrdar Apr 24, 2024
db385d4
use a preprocessor switch for scc and scc-hoist
sbrdar Apr 24, 2024
07abfda
adapt cloudsc_gpu_atlas to use host memory pinning + device mapping i…
sbrdar Apr 29, 2024
067cb3d
enable MultiField for Atlas data structures, switch temporary to an A…
sbrdar May 21, 2024
31ef6db
add MultiField implementation for GPU
sbrdar May 21, 2024
809dc55
make scc-hoist-atlas use multifield
sbrdar May 29, 2024
f67b7d5
update README with the Atlas GPU features
sbrdar May 29, 2024
10fb03a
use eigen/3.4.0 to prevent redifinitions stemming from EIGEN_COMP_PGI…
sbrdar Apr 8, 2024
cec30c2
enable GPU for Atlas & temporary disable other GPU implementations
sbrdar Apr 8, 2024
8d02805
add Atlas GPU implementation
sbrdar Apr 11, 2024
53dec63
adapt to FIELD_API implementation
sbrdar Apr 16, 2024
5d097b8
revert temporary disabled features
sbrdar Apr 17, 2024
739cf5b
remove unnecessary code
sbrdar Apr 17, 2024
8de3441
correct the field_api git version
sbrdar Apr 18, 2024
c0e2d1d
fix a bug to have identical results to FIELD_API dwarf version
sbrdar Apr 18, 2024
5bc6f38
use memory pinning for NVHPC - same as the FIELD_API version
sbrdar Apr 18, 2024
ff69001
remove debugging print outs
sbrdar Apr 18, 2024
a313908
temporary disable atlas::Multifield until it is merged in the develop…
sbrdar Apr 24, 2024
e0a7580
set ACC flags
sbrdar Apr 24, 2024
9e4f116
1) use atlas::FieldSet GPU-functions instead of relying on multiple c…
sbrdar Apr 24, 2024
f75bc84
use a preprocessor switch for scc and scc-hoist
sbrdar Apr 24, 2024
adf4b85
adapt cloudsc_gpu_atlas to use host memory pinning + device mapping i…
sbrdar Apr 29, 2024
a716f9a
enable MultiField for Atlas data structures, switch temporary to an A…
sbrdar May 21, 2024
e1f2c90
add MultiField implementation for GPU
sbrdar May 21, 2024
88b8b4e
make scc-hoist-atlas use multifield
sbrdar May 29, 2024
82fa729
update README with the Atlas GPU features
sbrdar May 29, 2024
402b7d3
Merge branch 'nab_atlas_gpu_field' of github.com:ecmwf-ifs/dwarf-p-cl…
sbrdar May 29, 2024
68f9d33
Merge branch 'develop' into nab_atlas_gpu_field
sbrdar Oct 14, 2024
be7e442
switch to atlas plut branch; enable cuda in atlas with --with-cuda
sbrdar Oct 15, 2024
a8c9b1b
clean up and make compile with new atlas Field/FieldSet signature
sbrdar Oct 15, 2024
998d9db
Make run on atos without multifield for now
wdeconinck Oct 15, 2024
d2ec260
add gh arch (note private cmake installation)
wdeconinck Oct 15, 2024
5b55ae6
Add NITER environment variable to check for memory pool benefits
wdeconinck Oct 15, 2024
24c8bb4
new Lumi modules environment
wdeconinck Oct 15, 2024
a888819
move kernel into a subroutine (needed for acc deviceptr on Lumi)
sbrdar Oct 15, 2024
fa98317
remove unused included module
sbrdar Oct 15, 2024
ee141b6
add host-allocation, device-allocation timers in src/cloudsc_gpu_atlas
sbrdar Oct 22, 2024
bbd82aa
use standard timer for atlas device allocation
sbrdar Oct 29, 2024
312db3c
fix path to custom CMake on gh1 of ecmwf
sbrdar Nov 14, 2024
8679962
add k_caching and hoist kernels of cloudsc in cloudsc_gpu_atlas
sbrdar Nov 14, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,11 @@ Balthasar Reuter ([email protected])
- **dwarf-cloudsc-fortran-atlas**: A version of **dwarf-cloudsc-fortran** which uses the [Atlas library](https://github.com/ecmwf/atlas)
and its Field and FieldSet data stuctures. There are two storage settings for variables. If the environment variable
CLOUDSC_ATLAS_MULTIFIELD is "0", "OFF", or "FALSE", the variables are managed as atlas::FieldSet, which is an array of atlas::Fields. For other values of CLOUDSC_ATLAS_MULTIFIELD, a batching of variables is used as (BLK_IDX, LEV, VAR_ID, BLK_ID).

- **dwarf-cloudsc-gpu-scc-atlas**: A GPU-enabled version which uses the [Atlas library](https://github.com/ecmwf/atlas)
and its Field and FieldSet data stuctures with device offload capabilities. There are two storage settings for variables,
managed through the environment variable CLOUDSC_ATLAS_MULTIFIELD as before.
- **dwarf-cloudsc-gpu-scc-hoist-atlas**: An optimised version of **dwarf-cloudsc-gpu-scc-atlas** which uses host side
hoisted temporary local variables.

## Download and Installation

Expand Down
54 changes: 54 additions & 0 deletions arch/ecmwf/gh/env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#! /usr/bin/env bash
# (C) Copyright 1988- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.

# Source me to get the correct configure/build/run environment

# Store tracing and disable (module is *way* too verbose)
{ tracing_=${-//[^x]/}; set +x; } 2>/dev/null

module_load() {
echo "+ module load $1"
module load $1
}
module_unload() {
echo "+ module unload $1"
module unload $1
}

# Unload all modules to be certain
module purge

# Load modules
module use /opt/eb_packages/modules/all

#module_load CMake/3.27.6-NVHPC-24.1-CUDA-12.3.0
module_load Python/3.11.3-GCCcore-12.3.0
module_load OpenMPI/4.1.6-GCC-13.2.0
module_load NVHPC/24.1-CUDA-12.3.0
module_load HDF5/1.14.3-NVHPC-24.1-CUDA-12.3.0
module_load Boost/1.82.0-GCC-12.3.0

export PATH=/perm/nawd/software/gh/cmake/3.30.3/bin:$PATH

# module_load CMake/3.27.6-GCCcore-13.2.0
# module_load GCC/12.3.0
export CC=nvc
export CXX=nvc++
#export CUDA_HOST_COMPILER=gcc-11
export CUDAHOSTCXX=nvc++
export FC=nvfortran
export NVHPC_CUDA_HOME=/opt/eb_packages/software/NVHPC/24.1-CUDA-12.3.0/Linux_aarch64/24.1/cuda/12.3

# Increase stack size to maximum
ulimit -S -s unlimited

set -x

# Restore tracing to stored setting
{ if [[ -n "$tracing_" ]]; then set -x; else set +x; fi } 2>/dev/null
68 changes: 68 additions & 0 deletions arch/ecmwf/gh/toolchain.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# (C) Copyright 1988- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.

####################################################################
# COMPILER
####################################################################

set( ECBUILD_FIND_MPI ON )
set( CMAKE_CUDA_COMPILER "nvcc" CACHE STRING "" )

####################################################################
# OpenMP FLAGS
####################################################################

# Note: OpenMP_Fortran_FLAGS gets overwritten by the FindOpenMP module
# unless its stored as a cache variable
set( OpenMP_Fortran_FLAGS "-mp -mp=gpu,bind,allcores,numa" CACHE STRING "" )

# Note: OpenMP_C_FLAGS and OpenMP_C_LIB_NAMES have to be provided _both_ to
# keep FindOpenMP from overwriting the FLAGS variable (the cache entry alone
# doesn't have any effect here as the module uses FORCE to overwrite the
# existing value)
#set( OpenMP_C_FLAGS "-mp -mp=bind,allcores,numa" CACHE STRING "" )
#set( OpenMP_C_LIB_NAMES "acchost" CACHE STRING "")

####################################################################
# OpenAcc FLAGS
####################################################################

# Importantly, enable `gvmode` to remove the limit of 32 vector threads
# per thread block
set( OpenACC_Fortran_FLAGS "-acc=gpu -gpu=cc90,lineinfo,fastmath,gvmode" CACHE STRING "" )
# Enable this to get more detailed compiler output
# set( OpenACC_Fortran_FLAGS "${OpenACC_Fortran_FLAGS} -Minfo" )

####################################################################
# CUDA FLAGS
####################################################################

set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -allow-unsupported-compiler" CACHE STRING "")

if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
set(CMAKE_CUDA_ARCHITECTURES 90)
endif()

####################################################################
# COMMON FLAGS
####################################################################

set(ECBUILD_Fortran_FLAGS "-fpic")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Mframe")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Mbyteswapio")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Mstack_arrays")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Mrecursive")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Ktrap=fp")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Kieee")
set(ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -Mdaz")

set( ECBUILD_Fortran_FLAGS_BIT "-O2 -gopt" )

set( ECBUILD_C_FLAGS "-O2 -gopt -traceback" )

set( ECBUILD_CXX_FLAGS "-O2 -gopt" )
1 change: 1 addition & 0 deletions arch/ecmwf/hpc2020/nvhpc/22.1/env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ module_load prgenv/nvidia
module_load nvidia/22.1
module_load hpcx-openmpi/2.10.0
# module_load boost/1.71.0
module_load eigen/3.4.0
module_load hdf5/1.10.6
module_load cmake/3.20.2
module_load python3/3.8.8-01
Expand Down
5 changes: 3 additions & 2 deletions arch/ecmwf/hpc2020/nvhpc/22.11/env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@ module_unload python3
module_unload java

# Load modules
module_load cmake/3.25.2
module_load prgenv/nvidia
module_load nvidia/22.11
module_load hpcx-openmpi/2.10.0
module_load hpcx-openmpi/2.14.0-cuda
# module_load boost/1.71.0
module_load eigen/3.4.0
module_load hdf5/1.10.6
module_load cmake/3.25.2
module_load python3/3.10.10-01
module_load java/11.0.6

Expand Down
120 changes: 120 additions & 0 deletions arch/eurohpc/lumi/cray-gpu/17.0.1/env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# Source me to get the correct configure/build/run environment

# Warning: with rocm/6.2.2 there are following liner errors for the executables. With rocm/6.0.3 they are gone
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<long, 1>::assign<true, (int*)0>(long const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<float, 2>::assign<true, (int*)0>(float const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<float, 1>::assign<true, (int*)0>(float const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<double, 1>::assign<true, (int*)0>(double const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<int, 2>::assign<true, (int*)0>(atlas::array::ArrayView<int, 2> const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<float, 3>::assign<true, (int*)0>(float const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<double, 3>::assign<true, (int*)0>(double const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<int, 3>::assign<true, (int*)0>(int const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<int, 1>::assign<true, (int*)0>(atlas::array::ArrayView<int, 1> const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<long, 1>::assign<true, (int*)0>(atlas::array::ArrayView<long, 1> const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<double, 2>::assign<true, (int*)0>(double const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<double, 2>::assign<true, (int*)0>(atlas::array::ArrayView<double, 2> const&)'
#/opt/cray/pe/cce/17.0.1/binutils/x86_64/x86_64-pc-linux-gnu/bin/ld.bfd: ../../../lib/libatlas.so.0.39: undefined reference to `void atlas::array::ArrayView<int, 1>::assign<true, (int*)0>(int const&)'

# Store tracing and disable (module is *way* too verbose)
{ tracing_=${-//[^x]/}; set +x; } 2>/dev/null

module_load() {
echo "+ module load $1"
if [ "${2:-""}" == "ECBUNDLE_CONFIGURE_ONLY" ]; then
if [ -n "${ECBUNDLE_CONFIGURE:-""}" ]; then
module load $1
else
echo " WARNING: Module $1 not loaded (only during configuration)"
fi
else
module load $1
fi
}
module_unload() {
echo "+ module unload $1"
module unload $1
}

# Unload to be certain
module --force purge

# Load modules
module_load CrayEnv
module_load PrgEnv-cray/8.5.0
module_load cce/17.0.1
module_load craype-x86-trento
module_load craype-accel-amd-gfx90a
module_load rocm/6.0.3
module_load cray-mpich/8.1.29
module_load craype-network-ofi
module_load cray-python
module_load Eigen/3.4.0
#module_load cray-dsmml
module_load buildtools/24.03
#export AEC_DIR=/scratch/project_465000454/ifs-deps/libaec-1.1.2

### Handling of "magic" cray modules
# 1) Load the cray modules
module_load cray-libsci/24.03
module_load cray-fftw/3.3.10.7
module_load cray-hdf5
#module_load cray-netcdf
# 2) Store variables to locate the packages
export CRAY_LIBSCI=${CRAY_LIBSCI_PREFIX_DIR}/lib/libsci_cray.so
_FFTW_ROOT=${FFTW_ROOT}
_HDF5_ROOT=${CRAY_HDF5_PREFIX}
#_NETCDF_ROOT=${CRAY_NETCDF_PREFIX}
_MPI_HOME=${MPICH_DIR}
# 3) Unload the cray modules in reverse order, removing all the magic
#module_unload cray-netcdf
module_unload cray-hdf5
module_unload cray-fftw
module_unload cray-libsci
#module_unload cray-mpich
# 4) Define variables that CMake introspects
export FFTW_ROOT=${_FFTW_ROOT}
export HDF5_ROOT=${_HDF5_ROOT}
#export NETCDF_ROOT=${_NETCDF_ROOT}
#export NETCDF_DIR=${_NETCDF_ROOT}

# Export environment variable3s
export MPI_HOME=${_MPI_HOME}
#export CMAKE_TOOLCHAIN_FILE=$PWD/toolchain.cmake
export CC=cc
export CXX=CC
export FC=ftn
export HIPCXX=$(hipconfig --hipclangpath)/clang++
export CRAY_ADD_RPATH=yes
export LIBSCI_ARCH_OVERRIDE=broadwell
# This is required to work around SIGSEGV in ectrans' SGEMM calls, which
# occur when "rome" or "milan" are used (backtrace points to openblas_sgemm__naples)

export LDFLAGS="-fuse-ld=bfd"

#. env-rocm.sh

export LD_LIBRARY_PATH=$CRAY_LD_LIBRARY_PATH:$LD_LIBRARY_PATH



### Print some exported variables
echo "+ export FFTW_ROOT=${FFTW_ROOT}"
#echo "+ export HDF5_ROOT=${HDF5_ROOT}"
#echo "+ export NETCDF_ROOT=${NETCDF_ROOT}"
echo "+ export MPI_HOME=${MPI_HOME}"
echo "+ export CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
echo "+ export CC=${CC}"
echo "+ export CXX=${CXX}"
echo "+ export FC=${FC}"
echo "+ export HIPCXX=${HIPCXX}"
echo "+ export CRAY_ADD_RPATH=${CRAY_ADD_RPATH}"
echo "+ export LIBSCI_ARCH_OVERRIDE=${LIBSCI_ARCH_OVERRIDE}"

module list 2>&1

set -x
ulimit -S -s unlimited

# Restore tracing to stored setting
{ if [[ -n "$tracing_" ]]; then set -x; else set +x; fi } 2>/dev/null

46 changes: 46 additions & 0 deletions arch/eurohpc/lumi/cray-gpu/17.0.1/toolchain.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
####################################################################
# HIP
####################################################################

set(CMAKE_HIP_ARCHITECTURES gfx90a)

####################################################################
# OpenMP
####################################################################

set( OpenMP_C_FLAGS "-fopenmp" )
set( OpenMP_CXX_FLAGS "-fopenmp" )
set( OpenMP_Fortran_FLAGS "-fopenmp" )
set( OpenMP_C_LIB_NAMES "craymp" )
set( OpenMP_CXX_LIB_NAMES "craymp" )
set( OpenMP_Fortran_LIB_NAMES "craymp" )
set( OpenMP_craymp_LIBRARY "craymp" )

####################################################################
# OpenACC
####################################################################

set( OpenACC_C_FLAGS "-hacc" )
set( OpenACC_CXX_FLAGS "-hacc" )
#set( OpenACC_Fortran_FLAGS "-hacc -hacc_model=auto_async_kernel:no_fast_addr:deep_copy" )
set( OpenACC_Fortran_FLAGS "-hacc" )

####################################################################
# General Flags (add to default)
####################################################################

set( ECBUILD_Fortran_FLAGS "${ECBUILD_Fortran_FLAGS} -M2260" )

###################################################################
# Libraries
###################################################################

set( BLAS_LIBRARIES "$ENV{CRAY_LIBSCI}" CACHE STRING "BLAS_LIBRARIES" FORCE )
set( LAPACK_LIBRARIES "$ENV{CRAY_LIBSCI}" CACHE STRING "LAPACK_LIBRARIES" FORCE )

#set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -craype-verbose" )
#set ( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -craype-verbose -fopenmp" )
#set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl, --as-needed" )
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=bfd")
#-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-relax -lhugetlbfs")
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-relax -lhugetlbfs -fuse-ld=bfd -craype-verbose")
2 changes: 2 additions & 0 deletions arch/toolchains/ecmwf-hpc2020-nvhpc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ set( OpenMP_C_LIB_NAMES "acchost" CACHE STRING "")
# NB: We have to add `-mp` again to avoid undefined symbols during linking
# (smells like an Nvidia bug)
set( OpenACC_Fortran_FLAGS "-acc=gpu -mp=gpu -gpu=cc80,lineinfo,fastmath,gvmode" CACHE STRING "" )
set( OpenACC_C_FLAGS "${OpenACC_Fortran_FLAGS}")

# Enable this to get more detailed compiler output
# set( OpenACC_Fortran_FLAGS "${OpenACC_Fortran_FLAGS} -Minfo" )

Expand Down
13 changes: 9 additions & 4 deletions bundle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ projects :

- ecbuild :
git : https://github.com/ecmwf/ecbuild
version : 3.8.0
version : master
bundle : false

- serialbox :
Expand All @@ -43,7 +43,7 @@ projects :

- eckit :
git : https://github.com/ecmwf/eckit
version : 1.24.4
version : master
require : ecbuild
cmake : >
ECKIT_ENABLE_TESTS=OFF
Expand All @@ -53,20 +53,22 @@ projects :
- field_api :
git : https://github.com/ecmwf-ifs/field_api.git
version : v0.3.0
optional: true
require : ecbuild
cmake : >
UTIL_MODULE_PATH=${CMAKE_SOURCE_DIR}/cloudsc-dwarf/src/common/module

- fckit :
git : https://github.com/ecmwf/fckit
version : 0.11.0
version : master
require : ecbuild eckit
cmake : >
FCKIT_ENABLE_TESTS=OFF

- atlas :
git : https://github.com/ecmwf/atlas
version : feature/MultiField
version : feature/pluto
optional: true
require : ecbuild eckit fckit
cmake : >
ATLAS_ENABLE_TESTS=OFF
Expand Down Expand Up @@ -99,10 +101,13 @@ options :
ENABLE_CLOUDSC_GPU_SCC_HOIST=ON
ENABLE_CLOUDSC_GPU_SCC_K_CACHING=ON
ENABLE_CLOUDSC_GPU_OMP_SCC_HOIST=ON
ATLAS_ENABLE_ACC=ON
ATLAS_ENABLE_CUDA=ON

- with-cuda :
help : Enable GPU kernel variants based on CUDA and CUDA-Fortran
cmake : >
ATLAS_ENABLE_CUDA=ON
ENABLE_CUDA=ON
ENABLE_CLOUDSC_GPU_SCC_CUF=ON
ENABLE_CLOUDSC_GPU_SCC_CUF_K_CACHING=ON
Expand Down
Loading