Сохранить большой числовой вывод в файл изначально в Julia 1.0.0 - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь запустить программу в hpc-cluster. К сожалению, я не могу установить внешние пакеты (например, JLD2) в кластере. Это временная проблема, которая должна быть исправлена.

Я не хочу ждать все это время, и мне интересно, есть ли способ сохранить большой вывод (2-3 ГБ) в Julia без внешних зависимостей. Большая часть выходных данных представляет собой матрицу чисел. Ранее я использовал JLD2, который хранит данные в формате HDF5.

Дополнительный вопрос: есть ли обходной путь для этого с помощью команд оболочки, таких как использование pipe для получения выходных данных и использование awk // grep для сохранения данных? (что-то вроде julia -p 12 main.jl | echo "file").

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вы можете попробовать стандартную библиотеку 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 и просто сохранить.

0 голосов
/ 30 августа 2018

Вы можете написать в двоичном виде. Что-то вроде

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 .

...