LINUX.ORG.RU

История изменений

Исправление sshestov, (текущая версия) :

Давайте отделим мух от котлет.

  1. Если у вас действительно файл размером 2048х2048х2048 и в каждой точке float (что типа 4 байта), то сам файл занимает как бы 34 Гигабайта. Это, скажем прямо, не мало и только его чтение с диска занимает порядочно времени. А также начинаются всякие ограничения с памятью, когда копию его не сделаешь, в MPI-режиме не запустишь, два параллельных независимых процесса не сделаешь.

  2. Это что у вас за спектрограф такой, который выдает 2Д изображение со спектрами, да еще в таком разрешении, по каждому направлению. Как они регистрируются то? Сканируется по спектру, или по пространству (вроде как детекторы у нас - ПЗС-ки и CMOS-ы до сих пор двумерные)? Если время выполнения важно и хочется стандартных библиотек, то как вариант - в начале «обработки» ужать файл до размеров, которые соответствуют физическому (оптическому или спектральному, что суть одно и то же) разрешению спектрографа.

  3. Можно попробовать выяснить что будет, если перейти от Войта к более простой функции (если честно, я забыл как правильно получать Войта и нужно ли каждый раз делать свертку. Если с ваших слов «4 параметра» - то не нужно). Замена Войта на Гаусса или Лоренца дает принципиальное ускорение?

  4. Честно признаюсь, что в питоне не очень (вот именно сейчас постигаю все прелести и жутко плююсь). Давайте поверим коллегам выше и согласимся, что питон не умеет в многопоточность. Тем не менее разберем код

[code=python]

def fit_file(file): image = hs.load(file).T m = image.create_model() v1 = hs.model.components1D.Voigt() m.append(v1) m.multifit() return file, v1

[/code]

Там где цикл по пикселям и подстановка первого пиксела как начальные приближение в остальные? Видимо «под капотом»? У вас по много раз передача массивов туда-сюда не происходит? Image - это по-видимому исходная спектрограмма (или как она правильно будет?), a m - спектральный фит. На какой функции тормозит?

Исходная версия sshestov, :

Интересная у вас ситуация...

Давайте отделим мух от котлет.

  1. Если у вас действительно файл размером 2048х2048х2048 и в каждой точке float (что типа 4 байта), то сам файл занимает как бы 34 Гигабайта. Это, скажем прямо, не мало и только его чтение с диска занимает порядочно времени. А также начинаются всякие ограничения с памятью, когда копию его не сделаешь, в MPI-режиме не запустишь, два параллельных независимых процесса не сделаешь.

  2. Это что у вас за спектрограф такой, который выдает 2Д изображение со спектрами, да еще в таком разрешении, по каждому направлению. Как они регистрируются то? Сканируется по спектру, или по пространству (вроде как детекторы у нас - ПЗС-ки и CMOS-ы до сих пор двумерные)? Если время выполнения важно и хочется стандартных библиотек, то как вариант - в начале «обработки» ужать файл до размеров, которые соответствуют физическому (оптическому или спектральному, что суть одно и то же) разрешению спектрографа.

  3. Можно попробовать выяснить что будет, если перейти от Войта к более простой функции (если честно, я забыл как правильно получать Войта и нужно ли каждый раз делать свертку. Если с ваших слов «4 параметра» - то не нужно). Замена Войта на Гаусса или Лоренца дает принципиальное ускорение?

  4. Честно признаюсь, что в питоне не очень (вот именно сейчас постигаю все прелести и жутко плююсь). Давайте поверим коллегам выше и согласимся, что питон не умеет в многопоточность. Тем не менее разберем код

[code=python] def fit_file(file): image = hs.load(file).T m = image.create_model() v1 = hs.model.components1D.Voigt() m.append(v1) m.multifit() return file, v1 [/code]

Там где цикл по пикселям и подстановка первого пиксела как начальные приближение в остальные? Видимо «под капотом»? У вас по много раз передача массивов туда-сюда не происходит? Image - это по-видимому исходная спектрограмма (или как она правильно будет?), a m - спектральный фит.