Составители:
Рубрика:
59
с
одинаковым
значением
split
образуют
новую
группу
.
Ранг
в
новой
группе
определяется
значением
rank
.
Если
процессы
A
и
B
вызывают
MPI_Comm_split
с
одинаковым
значением
split
,
а
аргумент
rank
,
переданный
процессом
A,
меньше
,
чем
аргумент
,
переданный
процессом
B,
ранг
A
в
группе
,
соответствующей
новому
коммуникатору
,
будет
меньше
ранга
процесса
B.
Если
же
в
вызовах
используется
одинаковое
значение
rank
,
система
присвоит
ранги
произвольно
.
Для
каждой
подгруппы
создается
собственный
коммуникатор
newcomm
.
MPI_Comm_split
должны
вызвать
все
процессы
из
старого
коммуникатора
,
даже
если
они
не
войдут
в
новый
коммуникатор
.
Для
этого
в
качестве
аргумента
split
в
подпрограмму
передается
предопределенная
константа
MPI_UNDEFINED
.
Соответствующие
процессы
вернут
в
качестве
нового
коммуникатора
значение
MPI_COMM_NULL
.
Новые
коммуникаторы
,
созданные
подпрограммой
MPI_Comm_split
,
не
пересекаются
,
однако
с
помощью
повторных
вызовов
подпрограммы
MPI_Comm_split
можно
создавать
и
перекрывающиеся
коммуникаторы
.
Пометить
коммуникатор
comm
для
удаления
int MPI_Comm_free(MPI_Comm *comm)
MPI_COMM_FREE(COMM, IERR)
Обмены
,
связанные
с
этим
коммуникатором
,
завершаются
обычным
образом
,
а
сам
коммуникатор
удаляется
только
после
того
,
как
на
него
не
будет
активных
ссылок
.
Данная
операция
может
применяться
к
коммуникаторам
интра
-
и
интер
-.
Сравнение
двух
коммуникаторов
(
comm1
)
и
(
comm2
)
int MPI_Comm_compare(MPI_Comm comm1, MPI_Comm comm2, int *result)
MPI_COMM_COMPARE(COMM1, COMM2, RESULT, IERR)
Выходной
параметр
:
•
result
целое
значение
,
которое
равно
MPI_IDENT
,
если
контексты
и
группы
коммуникаторов
совпадают
;
MPI_CONGRUENT
,
если
совпадают
только
группы
;
MPI_SIMILAR
и
MPI_UNEQUAL
,
если
не
совпадают
ни
группы
,
ни
контексты
.
В
качестве
аргументов
нельзя
использовать
пустой
коммуникатор
MPI_COMM_NULL
.
Присвоение
коммуникатору
comm
строкового
имени
name
int MPI_Comm_set_name(MPI_Comm com, char *name)
MPI_COMM_SET_NAME(COM, NAME, IERR)
Определение
имени
коммуникатора
int MPI_Comm_get_name(MPI_Comm comm, char *name, int *reslen)
MPI_COMM_GET_NAME(COMM, NAME, RESLEN, IERR)
Выходной
параметр
:
•
name
строковое
имя
коммуникатора
comm.
;
•
reslen
длина
имени
.
Имя
представляет
собой
массив
символьных
значений
,
длина
которого
должна
быть
не
менее
MPI_MAX_NAME_STRING
.
Страницы
- « первая
- ‹ предыдущая
- …
- 57
- 58
- 59
- 60
- 61
- …
- следующая ›
- последняя »
