|
|
masuka |
Определение коммуникаторов для процесса в MPI. 06.06.2010, 00:39 |
|
05/06/10 5
|
Вопрос знатокам MPI - возможно ли из процесса узнать, в каких коммуникаторах он состоит? Если возможно, то как?
Вопрос вызван следующей проблемой: коммуникатор с трехмерной декартовой топологией "режется" на коммуникаторы с одномерной топологией по одной из размерностей с помощью функции MPI_Cart_sub. При этом, в адресном пространстве каждого из процессов (функция MPI_Cart_sub не локальная), помещается массив новых одномерных коммуникаторов (output аргумент MPI_Cart_sub). Далее для каждого из новых коммуникаторов необходимо выполнить функцию MPI_Reduce, НО - непонятно в каком именно из созданных коммуникаторов оказывается текущий процесс и, как следствие, непонятно на каком коммуникаторе вызывать, собственно, эту самую MPI_Reduce.
Не хотелось бы искать для каждого процесса в списке новых коммуникаторов (он может получаться довольно объемистым) тот, в который данный процесс попал при делении исходного коммуникатора и уже потом вызывать на нем MPI_Reduce. Также не хотелось бы в каждом процессе вызывать MPI_Reduce подряд для всех новых коммуникаторов. Можно ли обойтись без этого?
|
|
|
|
|
grgdvo |
Re: Определение коммуникаторов для процесса в MPI. 07.06.2010, 00:39 |
|
05/12/08 12
|
MPI_Cart_coord? MPI_Card_rank? не подойдут
|
|
|
|
|
masuka |
Re: Определение коммуникаторов для процесса в MPI. 07.06.2010, 16:21 |
|
05/06/10 5
|
Эти функции, в качестве первого параметра, принимают коммуникатор, в котором необходимо определить координаты вызывающего процесса по рангу или его ранг по координатам. Но его то как раз я и не знаю - у меня есть только большой массив коммуникаторов в каждом из процессов и каждый процесс содержится в каком-то одном из этих коммуникаторов. Как понять в каком, без перебора всех коммуникаторов в массивчике? Вот в чем вопрос.
|
|
|
|
|
masuka |
Re: Определение коммуникаторов для процесса в MPI. 08.06.2010, 12:00 |
|
05/06/10 5
|
Вопрос снимается - я, по своему невниманию и глупости, решил, что третий аргумент MPI_Cart_sub есть массив новых коммникаторов, когда на самом деле третий аргумент - это как раз коммуникатор, из вновь созданных, который содержит текущий процесс.
|
|
|
|
|
|
Страница 1 из 1
|
[ Сообщений: 4 ] |
|
Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы