Add unrolled_mapcall function #26
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a functional form of
Base.Cartesian.@ncallto UnrolledUtilities:unrolled_mapcall(f, op, itrs...), which is roughly equivalent toop(unrolled_map(f, itrs...)...). This function reduces compilation time by manually splatting the arguments ofopinto a function call instead of relying on the compiler to infer and inline the result ofCore._apply_iterate(Base.iterate, op, unrolled_map(f, itrs...)). @charleskawczynski's work in CliMA/ClimaCore.jl#2225 has shown that this change and the changes in #25 could allow us to reduce the latency of ClimaCore broadcast expressions.Note: This PR is split off from #25, so it currently includes both sets of changes. Once that PR is merged in, this one should be rebased.