Skip to content

Commit 37a864f

Browse files
Merge pull request #1987 from CliMA/dy/level_placeholder
Add LevelPlaceholderSpace
2 parents 476d93c + 83f7959 commit 37a864f

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

NEWS.md

+5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ ClimaCore.jl Release Notes
44
main
55
-------
66

7+
v0.14.15
8+
-------
9+
10+
- Added support for mixing extruded and horizontal spaces in GPU kernels. PR [#1987](https://github.com/CliMA/ClimaCore.jl/pull/1987).
11+
712
v0.14.14
813
-------
914

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ClimaCore"
22
uuid = "d414da3d-4745-48bb-8d80-42e94e092884"
33
authors = ["CliMA Contributors <clima-software@caltech.edu>"]
4-
version = "0.14.14"
4+
version = "0.14.15"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

src/Operators/common.jl

+14-5
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,21 @@ end
6969

7070
# Functions for CUDASpectralStyle
7171
struct PlaceholderSpace <: Spaces.AbstractSpace end
72+
struct LevelPlaceholderSpace <: Spaces.AbstractSpace end
7273
struct CenterPlaceholderSpace <: Spaces.AbstractSpace end
7374
struct FacePlaceholderSpace <: Spaces.AbstractSpace end
7475

75-
76+
placeholder_space(current_space, parent_space) = current_space
7677
placeholder_space(current_space::T, parent_space::T) where {T} =
7778
PlaceholderSpace()
78-
placeholder_space(current_space, parent_space) = current_space
79+
placeholder_space(
80+
current_space::Spaces.AbstractPointSpace,
81+
parent_space::Spaces.AbstractFiniteDifferenceSpace,
82+
) = LevelPlaceholderSpace()
83+
placeholder_space(
84+
current_space::Spaces.AbstractSpectralElementSpace,
85+
parent_space::Spaces.ExtrudedFiniteDifferenceSpace,
86+
) = LevelPlaceholderSpace()
7987
placeholder_space(
8088
current_space::Spaces.CenterFiniteDifferenceSpace,
8189
parent_space::Spaces.FaceFiniteDifferenceSpace,
@@ -93,8 +101,12 @@ placeholder_space(
93101
parent_space::Spaces.CenterExtrudedFiniteDifferenceSpace,
94102
) = FacePlaceholderSpace()
95103

104+
@inline reconstruct_placeholder_space(current_space, parent_space) =
105+
current_space
96106
@inline reconstruct_placeholder_space(::PlaceholderSpace, parent_space) =
97107
parent_space
108+
@inline reconstruct_placeholder_space(::LevelPlaceholderSpace, parent_space) =
109+
Spaces.level(parent_space, left_idx(parent_space)) # extract arbitrary level
98110
@inline reconstruct_placeholder_space(
99111
::CenterPlaceholderSpace,
100112
parent_space::Spaces.FaceFiniteDifferenceSpace,
@@ -111,9 +123,6 @@ placeholder_space(
111123
::FacePlaceholderSpace,
112124
parent_space::Spaces.CenterExtrudedFiniteDifferenceSpace,
113125
) = Spaces.FaceExtrudedFiniteDifferenceSpace(parent_space)
114-
@inline reconstruct_placeholder_space(current_space, parent_space) =
115-
current_space
116-
117126

118127
strip_space(obj, parent_space) = obj
119128

0 commit comments

Comments
 (0)