Форум программистов, компьютерный форум CyberForum.ru

MPI_Comm_split - C++

Восстановить пароль Регистрация
 
Руслан92
Сообщений: n/a
26.01.2014, 22:44     MPI_Comm_split #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <mpi.h>
#include <conio.h>
#include <iostream>
using namespace std;
int main(int argc,char **argv)
{
    MPI_Init(&argc,&argv);
    MPI_Comm A,B,C;
    int rank,size,result,newrank;
    A=MPI_COMM_WORLD;
    MPI_Comm_dup(A,&B);
    MPI_Comm_rank(B,&rank);
    MPI_Comm_size(B,&size);
    MPI_Comm_split(B,rank<size/2,rank,&C);
    cout<<"Rank: "<<rank<<endl;
    MPI_Comm_rank(C,&newrank);
    cout<<"Newrank: "<<newrank<<endl;
    if(rank==0)
    {
        MPI_Comm_compare(A,B,&result);
        switch(result)
        {
        case MPI_IDENT:
            {
                cout<<"A and B are ident"<<endl;
                break;
            }
        case MPI_CONGRUENT:
            {
                cout<<"A and B are congruent"<<endl;
                break;
            }
                                case MPI_SIMILAR:
            {
                cout<<"A and B are similar"<<endl;
                break;
            }
        default:
            {
                cout<<"A and B are unequal"<<endl;
                break;
            }
        }
        MPI_Comm_compare(B,C,&result);
        switch(result)
        {
        case MPI_IDENT:
            {
                cout<<"B and C are ident"<<endl;
                break;
            }
        case MPI_CONGRUENT:
            {
                cout<<"B and C are congruent"<<endl;
                break;
            }
                                case MPI_SIMILAR:
            {
                cout<<"B and C are similar"<<endl;
                break;
            }
        default:
            {
                cout<<"B and C are unequal"<<endl;
                break;
            }
        }
    }
    MPI_Comm_free(&B);
    MPI_Comm_free(&C);
    MPI_Finalize();
    getch();
                return 0;
}
Есть такой вот код . Вопрос у меня такой, почему когда вместо MPI_Comm_split(B,rank<size/2,rank,&C) этой написать так, MPI_Comm_split(B,rank<size/2,1,&C) (т.е вместо rank = 1 ) ничего не изменится . Хотелось бы узнать как происходить упорядочивание с помощью ключа rank . И кстати, там ничего не изменится, если даже написать любые цифры, от 0.1 до -100 и rank*rank . Весь инет перерыл нигде не нашел , где было бы написано про это упорядочивание. А и еще, если вместо rank написать size-rank, то упорядочивание будет идти наоборот(понижаться). Нужно сделать до завтра. Помогите , чем сможете)

P.s : MPI_COMM_SPLIT(COMM, COLOR, KEY, NEWCOMM, IERR)
INTEGER COMM, COLOR, KEY, NEWCOMM, IERR
Разбиение коммуникатора COMM на несколько новых коммуникаторов по
числу значений параметра COLOR. В один коммуникатор попадают процессы
с одним значением COLOR. Процессы с большим значением параметра KEY по-
лучат больший ранг в новой группе, при одинаковом значении параметра KEY
порядок нумерации процессов выбирается системой.

Добавлено через 10 часов 40 минут
Кто нибудь может помощь?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru