Support for argmin, argmax?
As the title says, is there a way to support ThreadsX.argmin and ThreadsX.argmax?
Sorry I am too new with Julia to be able to help.
The way I see it is to define the argmax reduction
oneargmax((mxi,mx),(i,ai)) = (mx<ai) ? (i,ai) : (mxi,mx)
# but I do not know how to define the generic initial value for the foldl/reduce in ThreadsX
myargmax(f, itr; init=(nothing,-1)) = ThreadsX.mapreduce(identity, oneargmax, zip(itr,Iterators.map(f,itr)); simd = Val(true), init)
I think I didn't implement them since there was no argmax(f, xs) etc. in Base before Julia 1.7. Now that we already have 1.7-rc, I think it's safe to implement them here.
I think your function is a useful implementation, but, to nitpick, we need to use isless instead of < for Base-compatibility.
You are not nitpicking, you are informing. I have resolved my need for this with explicit initial values and I am getting great performance from an old Xeon Phi with 256 threads