У меня есть очень большие массивы экспериментальных данных, которые собираются с помощью пользовательского интерфейса, написанного на Python. Размеры массивов составляют порядка десятков гигабайт, они хранятся как целые числа без знака и преобразуются с помощью известных факторов в числа с плавающей запятой. Типичные размеры для этих массивов - 64 на 64 на 10 ^ 5 записей.
В питоническом интерфейсе все работает очень гладко. У нас есть визуализации в реальном времени, мы можем построить много поведений каждого одномерного подмассива (в длинном направлении), загрузить и закрыть их. Затем они сохраняются как файлы hdf5.
Когда я пытаюсь обработать их численно в Юлии на гораздо лучшем компьютере, все становится вялым. Супер медленный Отсутствие реакции. Поэтому я, очевидно, что-то делаю очень неправильно.
Во всех примерах кода могут быть следующие функции:
function centerandreshapedata(xxs::Array, factor::Number)
irrrelevant,largo=size(xxs)
aux=Array{Int16}(undef, 64,64, largo);
result=Array{Float16}(undef, 64,64, largo);
for j=1:64,k=1:64
aux[k,j,:]=xxs[j+(k-1)*64,:]
end
result=((aux.-2048).*factor);
# factor is converting the floats to Float64
result=convert.(Float16, result)
return result
end
function DiscreteLaplacian(data)
temp=copy(Datos)
(mu,lu)=size(Datos)
izq=reshape(temp[1,:],(1,lu))
der=reshape(temp[end,:],(1,lu))
#Padding the data
temp=vcat(izq, temp, der)
temp=hcat(temp[:,1], temp, temp[:,end])
largo,ancho=size(temp)
aux=Array{Float32}(undef, 3,3)
result=zeros(size(temp))
for j=2:largo-1, k=2:ancho-1
aux=temp[j-1:j+1,k-1:k+1]
result[j,k]=sum(LaplacianKernel.*aux)
end
#DO Crop the borders
result=result[2:end-1,2:end-1]
return result
end
Типичные вещи, которые мне нужно сделать с этими данными, - это изменение формы, применение операторов конечных разностей и других линейных преобразований, поиск по частям для определенных значений и тому подобное. Пользовательский интерфейс Python, кажется, гораздо отзывчивее, чем моя Джулия. Я очень озадачен этим.
Кроме того, составление графика с помощью PyPlot.jl занимает много времени, но это может быть другой вопрос.