gpt4 book ai didi

performance - 在 Julia 中分解一个没有任何内存分配的矩阵

转载 作者:行者123 更新时间:2023-12-05 03:24:27 24 4
gpt4 key购买 nike

Julia 支持矩阵的就地分解(对于某些分解)。
我想知道是否还可以消除函数内部的任何内存分配。

例如,有没有办法在没有隐藏内存分配的情况下对矩阵应用 Cholesky 分解?

最佳答案

非分配 LAPACK 函数在 Julia 中有绑定(bind)。它们记录在 Julia Documentation - Linear Algebra - LAPACK Functions 中.


Cholesky 分解 cholesky!(A) 会覆盖 A 并分配固定的少量内存,而 cholesky(A) 会分配更大的数额。在这里,分配(字节)确实随着 A 的大小呈二次方增长。

let n = 1000; M = rand(n,n); B = transpose(M)*M
cholesky(B)
@time cholesky(B)
# 0.023478 seconds (5 allocations: 7.630 MiB)
end

对比

let n = 1000; M = rand(n,n); B = transpose(M)*M
cholesky!(copy(B))
@time cholesky!(B)
# 0.021360 seconds (3 allocations: 80 bytes)
end

Oscar Smith 指出,性能差异很小。

关于performance - 在 Julia 中分解一个没有任何内存分配的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72309988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com