2014-02-02 4 views
0

Рассмотрим метод MPI_Type_indexed. Я отправляю/получаю элементы из массива, которые расположены в случайном порядке. Например, элементы в позициях 5, 16, 102, 1001, ... Было бы лучше, если бы я расположил их рядом друг с другом, прежде чем настраивать тип данных MPI?MPI_Type_indexed макет памяти

ответ

1

Определите «лучше».

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

Оценка производительности - это очень не нужно, если, возможно, у вас так много значений, чтобы выбрать из того, что они не все вписываются в память, и ОС должна прибегать к поисковому вызову. Даже тогда доступ к жесткому диску может все же быть быстрее, чем сетевой трафик, поэтому прирост производительности может оказаться незначительным по сравнению с неотъемлемыми накладными расходами на передачу сообщения. Я даже не рассматриваю алгоритмические накладные расходы на сортировку вашего массива. Конечно, как всегда, единственный верный ответ на вопрос «было бы более эффективным, если бы я сделал X вместо Y?» это «профиль и сам».

Короче говоря, я бы не стал переставлять ваши данные, если вы специально не хотите использовать производные типы данных MPI по любой причине. Для этого сценария были созданы производные типы данных.

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