Skip to content

Commit f39512c

Browse files
committed
use mapreduce from AcceleratedKernels in calc_max_scaled_speed
1 parent e63e887 commit f39512c

3 files changed

Lines changed: 14 additions & 19 deletions

File tree

Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ version = "0.15.10-DEV"
44
authors = ["Michael Schlottke-Lakemper <michael.schlottke-lakemper@uni-a.de>", "Gregor Gassner <ggassner@uni-koeln.de>", "Hendrik Ranocha <mail@ranocha.de>", "Andrew R. Winters <andrew.ross.winters@liu.se>", "Jesse Chan <jesse.chan@rice.edu>", "Andrés Rueda-Ramírez <am.rueda@upm.es>"]
55

66
[deps]
7+
AcceleratedKernels = "6a4ca0a5-0e36-4168-a932-d9be78d558f1"
78
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
89
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
910
CodeTracking = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2"
@@ -69,6 +70,7 @@ TrixiNLsolveExt = "NLsolve"
6970
TrixiSparseConnectivityTracerExt = "SparseConnectivityTracer"
7071

7172
[compat]
73+
AcceleratedKernels = "0.4.3"
7274
Accessors = "0.1.42"
7375
Adapt = "4.3"
7476
CUDA = "5.8.2"

src/Trixi.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ using ForwardDiff: ForwardDiff
6262
using HDF5: HDF5, h5open, attributes, create_dataset, datatype, dataspace
6363
using KernelAbstractions: KernelAbstractions, @index, @kernel, get_backend, Backend,
6464
allocate
65+
using AcceleratedKernels: AcceleratedKernels
6566
using LinearMaps: LinearMap
6667
if _PREFERENCE_LOOPVECTORIZATION
6768
using LoopVectorization: LoopVectorization, @turbo, indices

src/callbacks_step/stepsize.jl

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -207,26 +207,18 @@ function calc_max_scaled_speed(backend::Backend, u, mesh, constant_speed, equati
207207
@unpack contravariant_vectors, inverse_jacobian = cache.elements
208208

209209
num_elements = nelements(dg, cache)
210-
max_scaled_speeds = allocate(backend, eltype(u), num_elements)
211-
212-
kernel! = max_scaled_speed_KAkernel!(backend)
213-
kernel!(max_scaled_speeds, u, typeof(mesh), constant_speed, equations, dg,
214-
contravariant_vectors,
215-
inverse_jacobian;
216-
ndrange = num_elements)
217-
218-
return maximum(max_scaled_speeds)
219-
end
210+
init = neutral = AcceleratedKernels.neutral_element(Base.max, eltype(u))
211+
212+
# Provide a custom neutral and init element since we "reduce" over 1:num_elements
213+
max_scaled_speed = AcceleratedKernels.mapreduce(Base.max, 1:num_elements, backend; init, neutral) do element
214+
max_scaled_speed_per_element(u, mesh, constant_speed,
215+
equations, dg,
216+
contravariant_vectors,
217+
inverse_jacobian,
218+
element)
219+
end
220220

221-
@kernel function max_scaled_speed_KAkernel!(max_scaled_speeds, u, MeshT, constant_speed,
222-
equations,
223-
dg, contravariant_vectors, inverse_jacobian)
224-
element = @index(Global)
225-
max_scaled_speeds[element] = max_scaled_speed_per_element(u, MeshT, constant_speed,
226-
equations, dg,
227-
contravariant_vectors,
228-
inverse_jacobian,
229-
element)
221+
return max_scaled_speed
230222
end
231223

232224
include("stepsize_dg1d.jl")

0 commit comments

Comments
 (0)