From what I can gather, there is no schedule yet to implement in Intel compiler the FINDLOC function, a Fortran 2008 intrinsic to find the location in array of an element with a particular value. Is this true? If yes, is it possible to encourage the decision makers in any way to take another look at this function, reinvestigate the user interest (if that would help), and add this to the development stack?
On a project I'm working on, there is a home-grown function (VALLOC) that is used extensively. But it has some performance limitations. Compared to test functions that are written in the same fashion as this home-grown VALLOC, MINLOC and MAXLOC intrinsics are about 10% faster on array sizes on the order of 1E6. So I'm thinking FINDLOC may be similarly faster than VALLOC. Hence our interest in getting the FINDLOC intrinsic added to an Intel compiler version in the near future. Now, due to company policy, I'm unable to post any of the code. However, I was hoping other users would also have a similar interest in FINDLOC.
For those of you who may not be familiar with the FINDLOC definition in Fortran 2008 standard, here is an excerpt from N1828 document at the WG5 link http://www.nag.co.uk/sc22wg5/links.html:
9.11 Find location in an array
The following transformational function has been added
finds the location in array of an element with value value.
array is an array of intrinsic type.
value is a scalar of a type that may be used for intrinsic comparisons.
dim is a scalar integer.
mask conforms with array and is of type logical.
kind is a scalar constant expression.
back is a scalar logical.
This function is modelled on the transformational function maxloc, replacing the search for a maximum value with a search for the value value. The result has the type and kind of array and the shape is determined from the shape of mask and the value of dim or its absence, just as for maxloc. The search is applied to all the elements of array to yield a scalar or to the elements of each rank-one section that spans dimension dim to yield a result of rank reduced by one.