Memory allocation with `copyto!` in some circumstances
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 42/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 停滞
- 技术栈
- julia
- 领域
- performance
调研方向
从公开的 copyto! 分派开始,使用 MemoryLayout 将其与 _copyto! 路径进行比较,并复现 issue 中展示的 BlockArrays 基准测试。追踪公开调用会进行分配而较低层级的调用不会进行分配的原因;完成标准是,在不改变行为的情况下,报告中的 copyto! 用例不产生任何分配。
由索引模型根据 Issue 内容生成。
描述
I notice that copyto! sometimes allocates. I guess this could be avoided by simply adding @inline in front of the copyto!s?
Here is an example with BlockArrays:
using BenchmarkTools
using BlockArrays
dest = rand(4, 4)
src = BlockMatrix(rand(4, 4), [2, 2], [2, 2])
@btime copyto!($dest, $src)
Staring from a fresh Julia session, the above results in one allocation:
julia> @btime copyto!($dest, $src)
87.933 ns (1 allocation: 48 bytes)
There is no allocation if I do the following, which is exactly what copyto! does:
using ArrayLayouts: MemoryLayout, _copyto!
@btime _copyto!(MemoryLayout($dest), MemoryLayout($src), $dest, $src)
julia> @btime _copyto!(MemoryLayout($dest), MemoryLayout($src), $dest, $src)
73.099 ns (0 allocations: 0 bytes)
- 主要语言
- Julia
- 星标
- 57
- 派生
- 10
- 平均合并
- 1 天 9 小时
- 30 天内合并 PR
- 11
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
JuliaLinearAlgebra/ArrayLayouts.jl 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 45/100
JuliaLinearAlgebra/ArrayLayouts.jl#277 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 38/100
JuliaLinearAlgebra/ArrayLayouts.jl#253 · 5 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 48/100
JuliaLinearAlgebra/ArrayLayouts.jl#243 ·
维护者通常 1 天内回复
-
难度 5/5 一周以上 新手友好度 15/100
JuliaLinearAlgebra/ArrayLayouts.jl#185 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 35/100
JuliaLinearAlgebra/ArrayLayouts.jl#157 · 2 条评论 ·
维护者通常 1 天内回复
查看 JuliaLinearAlgebra/ArrayLayouts.jl 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
documentation invalid
难度 1/5 1-3 小时 新手友好度 88/100
JuliaPhysics/BeamletOptics.jl#190 ·
维护者通常 2 天内回复
-
mul! with a Symmetric or Hermitian factor throws for a matrix view whose columns are not contiguous可能已有人在做 @dkarrasch 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 72/100
JuliaLang/LinearAlgebra.jl#1829 ·
维护者通常 1 天内回复
-
`EnsembleSummary` `ci_type = :SEM` ribbon is `sqrt(N)` too wide for scalar states可能已有人在做 @isaacsas 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 88/100
SciML/SciMLBase.jl#1654 ·
维护者通常 3 天内回复