Julia支持矩阵的就地分解(对于某些因式分解)。
我想知道是否还可以消除函数中的内存分配。
例如,是否有一种方法在没有隐藏内存分配的矩阵上应用Cholesky因式分解?
发布于 2022-05-19 20:36:39
不分配LAPACK函数在Julia中有绑定。它们被记录在Julia文档.线性代数- LAPACK函数中。
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)
endvs
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正如奥斯卡·史密斯所指出的那样,性能差异很小。
https://stackoverflow.com/questions/72309988
复制相似问题