1+ # neutral_element moved over from GPUArrays.jl
2+ neutral_element(op, T) =
3+ error(""" AcceleratedKernels.jl needs to know the neutral element for your operator `$op `.
4+ Please pass it as an explicit keyword argument `neutral`.""" )
5+ neutral_element(:: typeof (Base.:(| )), T) = zero(T)
6+ neutral_element(:: typeof (Base.:(+ )), T) = zero(T)
7+ neutral_element(:: typeof (Base. add_sum), T) = zero(T)
8+ neutral_element(:: typeof (Base.:(& )), T) = one(T)
9+ neutral_element(:: typeof (Base.:(* )), T) = one(T)
10+ neutral_element(:: typeof (Base. mul_prod), T) = one(T)
11+ neutral_element(:: typeof (Base. min), T) = typemax(T)
12+ neutral_element(:: typeof (Base. max), T) = typemin(T)
13+ neutral_element(:: typeof (Base. _extrema_rf), :: Type{<:NTuple{2,T}} ) where {T} = typemax(T), typemin(T)
14+
15+
116include(" mapreduce_1d.jl" )
217include(" mapreduce_nd.jl" )
318
@@ -6,7 +21,7 @@ include("mapreduce_nd.jl")
621 reduce(
722 op, src::AbstractArray, backend::Backend=get_backend(src);
823 init,
9- neutral=GPUArrays. neutral_element(op, eltype(src)),
24+ neutral=neutral_element(op, eltype(src)),
1025 dims::Union{Nothing, Int}=nothing,
1126
1227 # CPU settings
@@ -72,7 +87,7 @@ mcolsum = AK.reduce(+, m; init=zero(eltype(m)), dims=2)
7287function reduce(
7388 op, src:: AbstractArray , backend:: Backend = get_backend(src);
7489 init,
75- neutral= GPUArrays . neutral_element(op, eltype(src)),
90+ neutral= neutral_element(op, eltype(src)),
7691 dims:: Union{Nothing, Int} = nothing ,
7792
7893 # CPU settings
103118function _reduce_impl(
104119 op, src:: AbstractArray , backend;
105120 init,
106- neutral= GPUArrays . neutral_element(op, eltype(src)),
121+ neutral= neutral_element(op, eltype(src)),
107122 dims:: Union{Nothing, Int} = nothing ,
108123
109124 # CPU settings
137152 mapreduce(
138153 f, op, src::AbstractArray, backend::Backend=get_backend(src);
139154 init,
140- neutral=GPUArrays. neutral_element(op, eltype(src)),
155+ neutral=neutral_element(op, eltype(src)),
141156 dims::Union{Nothing, Int}=nothing,
142157
143158 # CPU settings
@@ -203,7 +218,7 @@ mcolsumsq = AK.mapreduce(f, +, m; init=zero(eltype(m)), dims=2)
203218function mapreduce(
204219 f, op, src:: AbstractArray , backend:: Backend = get_backend(src);
205220 init,
206- neutral= GPUArrays . neutral_element(op, eltype(src)),
221+ neutral= neutral_element(op, eltype(src)),
207222 dims:: Union{Nothing, Int} = nothing ,
208223
209224 # CPU settings
234249function _mapreduce_impl(
235250 f, op, src:: AbstractArray , backend:: Backend ;
236251 init,
237- neutral= GPUArrays . neutral_element(op, eltype(src)),
252+ neutral= neutral_element(op, eltype(src)),
238253 dims:: Union{Nothing, Int} = nothing ,
239254
240255 # CPU settings
0 commit comments