В чем разница между darray и subarray в mpi? - PullRequest
3 голосов
/ 19 апреля 2011

У меня есть проект параллельного ввода-вывода для класса параллельного программирования, и я должен реализовать производные типы данных.Я не совсем понял разницу между darray и subarray.Может ли darray быть получен из динамически распределенных массивов или нет?И в чем главное отличие?

1 Ответ

5 голосов
/ 30 марта 2012

Subarray позволяет вам описать один блок / фрагмент большего многомерного массива.Если у каждой задачи MPI есть один фрагмент / блок большого глобального массива (или если вы передаете куски локальных массивов между задачами), тогда MPI_Type_create_subarray - это путь;синтаксис очень прост.Для решения таких вещей, как PDE в регулярных сетках, это распределение очень распространено - у каждого процессора есть свой кусок глобальной сетки, с максимально возможным количеством локальных ячеек сетки.В случае MPI-IO каждая задача MPI создала бы подрешетку, соответствующую ее части глобального массива, и использовала бы ее в качестве представления для чтения / записи своей части домена в файл, содержащий все данные.

MPI_Type_create_darray допускает более сложные шаблоны распределенных массивов, чем single-chunk-each.Для вычислений с распределенной линейной алгеброй может иметь смысл распределять некоторые матрицы построчно - скажем, если есть 5 mpi-задач, задача 0 получает строки 0, 5, 10 ..., а задача 1 получает строки 1, 6,11 и так далее.Другие матрицы могут быть распределены по столбцам;или вы можете распределить их по блокам строк, столбцов или обоих.Эти распределения данных такие же, как были в злополучном HPF , что позволяет таким образом определять параллельные для данных схемы размещения массивов на основе массив за массивом.

Единственный способ, которым я когда-либо использовал MPI_Type_create_darray, и, действительно, единственный способ, которым я когда-либо видел его, - это создать представление MPI-файла большой матрицы для распределения данных в циклических fashion, чтобы можно было прочитать файл и затем использовать scalapack для выполнения параллельных операций линейной алгебры над распределенной матрицей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...