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

GPU support for surface fluxes #113

Closed
9 of 10 tasks
Tracked by #1980
sriharshakandala opened this issue Aug 15, 2023 · 1 comment
Closed
9 of 10 tasks
Tracked by #1980

GPU support for surface fluxes #113

sriharshakandala opened this issue Aug 15, 2023 · 1 comment
Assignees
Labels
GPU SDI 🏅 Software Design Issue

Comments

@sriharshakandala
Copy link
Member

sriharshakandala commented Aug 15, 2023

The Climate Modeling Alliance

Software Design Issue 📜

Purpose

SurfaceFluxes.jl is required for the computation of boundary conditions for the atmosphere model. As such, GPU compatibility is a necessity. This issue defines pending tasks for GPU support.

Cost/Benefits/Risks

People and Personnel

@LenkaNovak @sriharshakandala @charleskawczynski @simonbyrne

Components

  • UniversalFunctions.jl : Contains expressions for similarity and stability correction functions for use within the SurfaceFluxes.jl package.
  • SurfaceFluxes.jl : Contains functions that compute physical properties at the lower boundary of an atmosphere simulation, using the Monin-Obukhov similarity theory(MOST). This includes fluxes of momentum, heat, moisture and scale variables for use in the MOST.

Inputs

Results and Deliverables

  • GPU compatible SurfaceFluxes.jl package, tested in both single and double precision configurations.

Task Breakdown And Schedule

  • Set up correct dependencies for CUDA.
  • Identify failing tests
  • Update test_profiles.jl to specialize based on device.
  • Update test_convergence.jl to specialize based on device.
  • Update test_universal_functions.jl to specialize based on device.
  • PR Enable GPU tests #86. GPU Tests are currently disabled. These need to be brought back online-
    # FIXME: Refactor tests to work on GPUs as in `Thermodynamics.jl`
    #if get(ARGS, 1, "Array") == "CuArray"
    # using CUDA
    # import CUDAKernels: CUDADevice
    # ArrayType = CUDA.CuArray
    # CUDA.allowscalar(false)
    # device(::T) where {T <: CuArray} = CUDADevice()
    #else
    ArrayType = Array
    device(::T) where {T <: Array} = CPU()
    #end
  • Documented, GPU compatible toolbox for surface flux calculations for use within ClimaAtmos.jl.

SDI Revision Log

9/11/2023: Moves all GPU specific items from other issues #83 # into #113
10/27/2023: Device specialisation not necessary -> current solution removes error print statements which is sufficient: the resulting issue is tracked in CliMA/ClimaAtmos.jl#2136

CC

@charleskawczynski
Copy link
Member

Closed by #22.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
GPU SDI 🏅 Software Design Issue
Projects
None yet
Development

No branches or pull requests

4 participants