# By default, Julia/LLVM does not use fused multiply-add operations (FMAs).1# Since these FMAs can increase the performance of many numerical algorithms,2# we need to opt-in explicitly.3# See https://ranocha.de/blog/Optimizing_EC_Trixi for further details.4@muladd begin5#! format: noindent67function set_zero!(du, dg, cache)8set_zero!(trixi_backend(du), du, dg, cache)910return nothing11end1213# Used by both `dg::DGSEM` and `dg::FDSBP`14function set_zero!(::Nothing, du, dg, cache)15# du .= zero(eltype(du)) doesn't scale when using multiple threads.16# See https://github.com/trixi-framework/Trixi.jl/pull/924 for a performance comparison.17@threaded for element in eachelement(dg, cache)18du[.., element] .= zero(eltype(du))19end2021return nothing22end2324function set_zero!(::Backend, du, dg, cache)25# Broadcasting is parallel on the GPU26du .= zero(eltype(du))27return nothing28end2930# define types for parabolic solvers31include("solvers_parabolic.jl")3233include("dg.jl")34include("dgmulti/dgmulti.jl")35end # @muladd363738