2016-11-02 2 views
4

Общий контекст:Юлия параллельного выполнения убыстрение для крупномасштабных вычислений

Я разработал довольно большой Навье-Стокса (конечная разность) решатель, написанный на Fortran90. Он имеет адаптивные сетки (следовательно, проблема баланса нагрузки), и я пробовал различные методы (MPI, OpenMP & OpenMP-MPI hyrbid), чтобы распараллелить его. Однако он недостаточно масштабируется, т. Е. Согласно закону Амдаля он выполняет 96-97% вычислений параллельно. Кроме того, общий размер сетки составляет пару сотен миллионов точек, что потребовало бы увеличения в будущем.

Запрос:

Теперь, я имею в виду переход на Юле, так как она стала очень утомительным, чтобы сохранить и добавить дополнительные функциональные возможности существующего кода.

Проблема в том, что я не могу найти хороший ответ о параллельном исполнении Джулии. Я искал в Интернете, а также просмотрел много видео на YouTube. Я заметил, что большинство людей говорят, что Julia очень подходит для параллельных вычислений, некоторые даже предоставляют диаграмму, показывающую сокращение времени, прошедшего по сравнению с серийным кодом. Однако некоторые из ответов/видео довольно старые, что делает их немного ненадежными из-за растущего характера этого нового языка.

Поэтому я хотел бы знать, имеет ли язык возможность масштабирования даже для нескольких тысяч ядер?

Дополнительная информация:

Я все еще пытаюсь трудно улучшить ускорение моего существующего кода для достижения почти линейной производительности в течение нескольких тысяч ядер. Решателю необходимо обменивать перекрывающиеся точки 3-4 раза за один раз. Следовательно, это связано с огромными коммуникационными издержками. Однако неадаптивная сеточная версия кода легко масштабируется до 20k ядер.

Я также где-то читал, что Джулия не использует стандарт InfiniBand для передачи данных параллельно.

+0

не anwer, но может помочь: [использовать случай для параллельной julia] (http://link.springer.com/chapter/10.1007/978-3-319-32152-3_17). Нашел его с помощью ученого Google. К сожалению, это paywalled –

+0

@FelipeLema Спасибо! Это интересная статья. Однако, как вы правильно сказали, он не отвечает на вопрос. – Soni

ответ

1

В следующей статье представлены результаты масштабирования для проблем с ограничением параметров pde, но не в любом месте рядом с количеством ядер, которые вас интересуют: https://arxiv.org/abs/1606.07399. Я не видел никаких примеров, идущих до тысяч ядер.

Re infiniband: По умолчанию Julia использует общую память для связи внутри узла и TCP/IP через узлы, поэтому по умолчанию infiniband не поддерживается. Тем не менее, язык позволяет реализовать пользовательские транспорты, и я предполагаю, что кто-то добавит поддержку infiniband в какой-то момент, но я не смог найти какие-либо реализации с быстрым поиском google.

Смежные вопросы