SciML / SciML/RecursiveArrayTools.jl
`ArrayPartition` indexing allocates more in the latest versions of the package
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 233
- Forks
- 76
- Avg merge
- 2h 17m
- Merged PRs (30d)
- 9
Description
Describe the bug 🐞
Hi, I have noticed, that in 3.x versions of the package indexing ArrayPartition type requires ~2x more allocations than in the 2.x versions. This can be illustrated by the following MRE
Minimal Reproducible Example 👇
using RecursiveArrayTools, BenchmarkTools
x1 = rand(500)
x2 = rand(2500)
x = ArrayPartition(x1,x2)
@btime z = x[301:2300]
#=
RecursiveArrayTools v2.38.10
4.000 μs (3 allocations: 15.69 KiB)
RecursiveArrayTools v3.33.0
3.800 μs (6 allocations: 39.19 KiB)
=#
Expected behavior
The amount of allocations shouldn't change.
Environment (please complete the following information):
- Output of
using Pkg; Pkg.status()
[6e4b80f9] BenchmarkTools v1.6.0
[731186ca] RecursiveArrayTools v3.33.0
- Output of
using Pkg; Pkg.status(; mode = PKGMODE_MANIFEST)
[7d9f7c33] Accessors v0.1.42
[79e6a3ab] Adapt v4.3.0
[4fba245c] ArrayInterface v7.18.0
[6e4b80f9] BenchmarkTools v1.6.0
[34da2185] Compat v4.16.0
[a33af91c] CompositionsBase v0.1.2
[187b0558] ConstructionBase v1.5.8
[a8cc5b0e] Crayons v4.1.1
[9a962f9c] DataAPI v1.16.0
[e2d170a0] DataValueInterfaces v1.0.0
[ffbed154] DocStringExtensions v0.9.4
[e2ba6199] ExprTools v0.1.10
[46192b85] GPUArraysCore v0.2.0
[3587e190] InverseFunctions v0.1.17
[82899510] IteratorInterfaceExtensions v1.0.0
[682c06a0] JSON v0.21.4
[b964fa9f] LaTeXStrings v1.4.0
[1914dd2f] MacroTools v0.5.16
[bac558e1] OrderedCollections v1.8.0
[69de0a69] Parsers v2.8.3
⌅ [aea7be01] PrecompileTools v1.2.1
[21216c6a] Preferences v1.4.3
[08abe8d2] PrettyTables v2.4.0
[3cdcf5f2] RecipesBase v1.3.4
[731186ca] RecursiveArrayTools v3.33.0
[189a3867] Reexport v1.2.2
[ae029012] Requires v1.3.1
[7e49a35a] RuntimeGeneratedFunctions v0.5.14
[1e83bf80] StaticArraysCore v1.4.3
[10745b16] Statistics v1.11.1
[892a3eda] StringManipulation v0.4.1
[2efcf032] SymbolicIndexingInterface v0.3.40
[3783bdb8] TableTraits v1.0.1
[bd369af6] Tables v1.12.0
[56f22d72] Artifacts v1.11.0
[2a0f44e3] Base64 v1.11.0
[ade2ca70] Dates v1.11.0
[8f399da3] Libdl v1.11.0
[37e2e46d] LinearAlgebra v1.11.0
[56ddb016] Logging v1.11.0
[d6f4376e] Markdown v1.11.0
[a63ad114] Mmap v1.11.0
[de0858da] Printf v1.11.0
[9abbd945] Profile v1.11.0
[9a3f8284] Random v1.11.0
[ea8e919c] SHA v0.7.0
[9e88b42a] Serialization v1.11.0
[fa267f1f] TOML v1.0.3
[cf7118a7] UUIDs v1.11.0
[4ec0a83e] Unicode v1.11.0
[e66e0078] CompilerSupportLibraries_jll v1.1.1+0
[4536629a] OpenBLAS_jll v0.3.27+1
[8e850b90] libblastrampoline_jll v5.11.0+0
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`
- Output of
versioninfo()
Julia Version 1.11.4
Commit 8561cc3d68d (2025-03-10 11:36 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 8 × Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, broadwell)
Threads: 1 default, 0 interactive, 1 GC (on 8 virtual cores)
Environment:
JULIA_WORKER_TIMEOUT = 180.0
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Julia MRE for ArrayPartition indexing and reproduce the allocation counts using BenchmarkTools. Compare the indexing behavior between RecursiveArrayTools 2.38.10 and 3.33.0; done means the 3.x implementation no longer shows the reported allocation increase for x[301:2300].
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100