Константинов Семён. Технология SEQ-MPI. Передача от одного всем (broadcast). Вариант 1 #308
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Описание
Задача: повторить алгоритм передачи данных MPI_Bcast на основе дерева, используя только базовые операции
MPI_RecvиMPI_SendSEQ:
Программа копирует входной массив в выходной
MPI:
Алгоритм основан на k-арном дереве: каждый процесс из своего ранга процесса
prank, ранга корня дереваroot_prankи количества процессовpcountполучает свой ранг в деревеtree_rank = (prank - root_prank + pcount) % pcount. Из тех же данных вычисляются ранги в дереве и ранги процесса у родителя процесса и каждого из от 0 до k детей процесса.Сначала процессы ожидают данные от своего родителя (сначала данные о размере массива с помощью MPI_Recv с тегом tag_count, затем сам массив с тегом tag_count). Уже имеющие данные (сначала только корень) отсылают их своим детям через MPI_Send с аналогичными тегами.
Отчет содержит детали параллельной схемы и результаты экспериментов.
Чек-лист
<фамилия>_<первая_буква_имени>_<короткое_название_задачи>clang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)nesterov_a_vector_sum), а не вmaster