Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MPI, проблемы с получением сообщений 
:(
    Опции темы
Siryus
Дата 7.6.2008, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.6.2008

Репутация: нет
Всего: нет



Помогите, пожалуйста,  мне решить проблему.
Есть несколько паралельных процессов, которые что то там считают. И есть один главный (нулевой) процес который раздает даные процессам для обработки и собирает от них результаты. Мне нужно получать даные от того процесса, который первым закончил обработку своих даных и начал отсылать сообщение нулевому процессу. Вот такой код работать не хочет


 ! 
MAKCim
Модератор: Пользуйтесь тегом код!


    
Код

int flag = 0;
    MPI_Status status;
    MPI_Request request;

    if (myid == 0)
    { 
                        int * b;
        cout << "I am 0 thread";
        
                         while (!flag) // ждем прием от 1-го или 2-го процесса
                         {
                                    MPI_Irecv(&b, MAXCOUNT, MPI_INT, 1, 0, MPI_COMM_WORLD,&request); 
                                    MPI_Irecv(&b, MAXCOUNT, MPI_INT, 2, 0, MPI_COMM_WORLD,&request);

            MPI_Test(&request,&test,&status);
                          }
        // ...
    }
    if (myid == 1)
    { 
        cout << "I am 1 thread";
                        // ...

        MPI_Isend(&a, 3, MPI_INT, 0, 0, MPI_COMM_WORLD,&request1);  // ждем окончание пересылки
        MPI_Wait (&request1,&status1); // ждем окончание пересылки
    }

    if (myid == 1)
    { 
        cout << "I am 1 thread";
                        // ...

        MPI_Isend(&a, 3, MPI_INT, 0, 0, MPI_COMM_WORLD,&request1); // ждем окончание пересылки
        MPI_Wait (&request1,&status1); // ждем окончание пересылки
    }



здесь 1 и 2 процессы начинаю передавать а нулевой их не принимает даные ни от первого ни от второго.
Если в нулевом использовать не MPI_Test, а MPI_Wait то все работаетно тогда даные будут 
получатся по очереди , сначала от первого а потом от второго, мне нужно получать даные 
от того кто первым справился с обработкой даных

Это сообщение отредактировал(а) MAKCim - 7.6.2008, 11:51
PM MAIL   Вверх
bsa
Дата 7.6.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Тебе обязательно использовать именно эту библиотеку? Может проще реализовать с помощью очереди и семафора?
PM   Вверх
andrew_121
Дата 11.6.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Siryus: Из Вашего кода, я ровным счетом нечего не понял.
Что за переменная a ???

Гуглите - MPICH2. Куча инфы.

Добавлено через 2 минуты и 50 секунд
bsa:  MPI, MPICH1, MPICH2 - Кроссплатформенные библиотеки.
Обычно для кодинга под Виндавз, их не используют. Можно предположить что код портируемый.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 11.6.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



может стоит посмотреть в сторону boost::mpi? 
это надстройка над интерфейсом mpi, работает с 
  • Open MPI 1.0.x
  • LAM/MPI 7.x
  • MPICH 1.2.x
правда сам не использовал, но все-же..

Добавлено через 1 минуту и 40 секунд
Цитата(andrew_121 @  11.6.2008,  11:41 Найти цитируемый пост)
MPI, MPICH1, MPICH2 - Кроссплатформенные библиотеки.
Обычно для кодинга под Виндавз, их не используют.

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

Добавлено через 3 минуты и 51 секунду
в общем насколько я знаю это сложная и тяжеловесная штука, поэтому bsa и написал про очередь, тем более в примере очень все примитивно... обычный синхронный обмен сообщениями 
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 11.6.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Lazin:
Цитата

да ну  
просто это достаточно редкая вещь, кластеры мало кто программирет


Я это и имел ввиду. Особено под Виндавз.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
jonie
Дата 11.6.2008, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



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


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
andrew_121
Дата 11.6.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Вот, почитал boost::mpi, круто задвинули. Поудобней чем MPICH. Надо освоить!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.