Header Image - BioAPI

Monthly Archives

10 Articles

Адаптивные сетки

В предыдущих статьяъ был предложен метод разделения данных при решении задачи Дирихле для уравнения Лапласа. В данной статье рассматривается аналогичная задача, но с использованием адаптивных сеток. Адаптивные сетки это сетки с непостоянным размером ячеек. Где надо у их ячеек большой шаг. Где надо наоборот мелкий, для более точного решения.

Новые эксперименты на кластере

Для исправления недостатков предыдущего эксперимента было решено переписать сервер на языке си, а так же встроить синхронизацию в решатель, чтобы избежать накладных расходов на передачу управления от решателя к скрипту синхронизации и обратно. Этот эксперимент проводился на кластере ОмГТУ, для расчётов было задействовано 9 и 16 ядер, а так же управляющий компьютер в качестве компьютера клиента, т.е. на нём были запущены сервер и вычислитель с одной подзадачей.

Экстраполяция

Экстраполяция это такой способ сделать часть работы, получить результаты, а оставшиеся результаты предсказать на основе того, что было получено. Метод конечно не сверхточный. При определённых условиях может показывать совершенно иные результаты. Но кто сейчас может предсказывать со стопроцентной вероятностью.

Результаты просчётов

Наконец переходим к самому интересному к результатам просчётов. Долгий путь был проделан только лишь ради этого момента. Конечно в кластере ОмГТУ не так много узлов всего, а свободных было и того меньше. Мне позволили использовать не более 16 узлов одновременно. Или точнее 16 процессоров, которые расположены на 2-х узлах.

Клиент-серверная архитектура

Здесь для читателя будет предложена клиент-серверная архитектура, которую я использовал для реализации вычислений. Ранее уже объяснялась необходимость использования серверного приложения для синхронизации вычислений. Конечно, если бы информация не была такой важной, то можно было бы просто распараллелить её обработку и позже получить результаты. Однако, из-за того, что это не так и часть информации никогда не попадёт в ЦОД и нужен сервер. Клиент-серверная архитектура оправдывает себя и при рассылке задач на вычислительные узлы и их сбор по завершению решения. К сожалению, это некоторый велосипед, повторно реализующий функции MPI.

Критерий остановки

Сами вычисления уже описаны, но когда их стоит завершить? Здесь поможет критерий остановки. Критерий остановки это такое условие, при выполнении которого мы считаем, что задача решена.

Перехлёсты

В прошлой статье я упоминал про перехлёсты, здесь я расскажу что это такое и почему именно так, а не иначе. Ничего сложного в этом нет, это просто границы смежных областей. Казалось бы такой пустяк, однако, не совсем. Есть некоторые мелочи, на которых следует заострить внимание. Поехали!

Схема вычислений для уравнения Лапласа

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

Разделение объекта

В предыдущей статье было начато описание преобразования объекта, а так же были заданы некоторые условия по разделению объекта на под области. Сформулируем их ещё раз:

  1. Объект должен быть разделён на приблизительно равные области.
  2. Граница между областями должна быть минимальна.

Преобразование объекта

В предыдущих статьях цикла было описан переход от аналитической постановки задачи Дирихле к её вычислительному аналогу. В этой статье я начну описывать свои программные изыски для реализации просчётов на кластере. Это всё ещё не код, но уже довольно близко к нему. Самого кода скорее всего не будет, потому что не вижу смысла его выкладывать на сайте, возможно ограничусь какими-то краткими частями и комметрированием почему я сделал так, а не иначе. Об этом позже, а сейчас описание преобразования объекта.