Как стать автором
Обновить

Комментарии 9

Когда на диск пишете — упираетесь только в производительность диска?
Не факт. Глубоких проверок пока не было, поскольку здесь скорость исполнения критичной не была. «Пока гром не грянет».
А как много данных сбрасываете на диск между вычислительными итерациями? Может быть, проще было бы применить специальные функции для параллельного вывода данных.
В зависимости от режима работы программы, варьируется и вывод. Либо полная двумерная табличка в формате, если не ошибаюсь, известном как map (данные по столбцам, координаты x,z пишется в первых двух столбцах), либо одномерная (сечение при фиксированном x), и содержатся в ней цифры из 5 массивов.

С параллельным выводом идея витала давненько, но
а) в спецификациях OpenMP должных функций не обнаружено (в отличие от MPI)
б) реализовать что-либо средствами синхронизации OpenMP — максимум, это возможно параллельно буферизовать данные где-то в памяти, а скидывать их на диск всё равно одним потоком придётся.

Давно витала идея, что выгоднее писать на диск в бинарном формате, и читать уже отдельной маленькой программкой. Либо, оставить вывод по сути таким же, но делать его не в файл, а разрешить программе загаживать оперативную память, периодически скидывая всё на диск разом.

Однако все силы ранее были брошены на оптимизацию вычислительной части, а сейчас — на спешный поиск путей повышения стабильности разностной схемы и шаманство с разного рода искусственной вязкостью и дисперсией. Не до скорости, когда устойчивого счёта нет.
Спасибо за развернутый ответ. А для паралелльного вывода, я как раз и хотел MPI предложить.

Либо, оставить вывод по сути таким же, но делать его не в файл, а разрешить программе загаживать оперативную память, периодически скидывая всё на диск разом.
Можно попробовать расчеты скидывать на ram-диск, что сильно снизит время ввода/вывода.
Что ж, отойду от праздника (трезв, но 4 часа из одного города в другой в нескольких автобусах с непривычки чуток утомляют), разберусь с устойчивостью, а там видно будет.

На т.н. «внутренние файлы» FORTRAN косился на днях.

Как назло, C-версия программы, ещё мало модернизированная, но вполне работающая и доводимая до ума, потерялась. Не знаток, но вполне вероятно, средства там могут оказаться более эффективными.
Кстати, спасибо за идею с ram-диском, как-то не знал о такой технологии.
Какая задача решалась?
Кратко можно охарактеризовать как поведение слоя вечной мерзлоты под действием повышения температуры окружающей среды.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории