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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Julia 1.0.0中本地保存大型数字输出到文件相关的知识,希望对你有一定的参考价值。

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

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

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

答案

你可以试试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中,并存储它。

另一答案

你可以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

以上是关于在Julia 1.0.0中本地保存大型数字输出到文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Julia 中,大型稀疏矩阵的 eigs() 函数出错了

在 Julia 中估计概率分布并从中采样

在 Julia 中保存和检索字典的正确方法是啥?

如何以特定格式在 Julia 中保存数组或矩阵?

Julia MongoDB 保存原始变量

如何将cmd中的命令输出到文本区域