在 Julia 1.0.0 中将大数字输出保存到本地文件

Save large numeric output to file natively in Julia 1.0.0

我正在尝试 运行 hpc-cluster 中的程序。不幸的是,我无法在集群上安装外部包(例如 JLD2)。这是一个临时问题,应该得到修复。

我不想一直等待,我想知道是否有任何方法可以在没有外部依赖性的情况下在 Julia 中保存大输出 (2-3 GB)。大多数输出​​是数字矩阵。我之前使用的是 JLD2,它以 HDF5 格式存储数据。

额外问题:是否有使用 shell 命令解决此问题的方法,例如使用管道获取输出并使用 awk//grep 保存数据? (类似于 julia -p 12 main.jl | echo "file")。

您可以 write 作为二进制文件。类似于

julia> x = rand(2,2);

julia> write("test.out", x)

julia> y = reshape(reinterpret(Float64, read("test.out")), 2,2)

julia> x == y
true

如果只是缺少 HDF5,您可以使用 NPZ.jl

您可以试试 Serialization 标准库。

要使用多个变量,您可以按顺序存储它们:

x = rand(10)
y = "foo"

using Serialization
# write to file
open("data.out","w") do f
    serialize(f, x)
    serialize(f, y)
end

# load from file
open("data.out") do f
    global x2, y2
    x2 = deserialize(f)
    y2 = deserialize(f)
end

或者您可以将它们放在 Dict 中,然后存储它。