Microsoft MPI не работает

Я пробую реализацию Microsoft MPI. Я установил CCP SDK отсюда:

http://www.microsoft.com/en-us/download/details.aspx?id=239

А затем в настройках моего проекта я добавил папку include, папку lib и упомянутый msmpi.lib.

С остальными настройками как есть, я создаю программу, а затем в командной строке запускаю программу, но после ее запуска ничего не происходит.

Вот код (он должен отображать номера идентификаторов для каждого потока):

#include "stdafx.h"
#include "mpi.h"
#include <stdio.h>

//Commands in cmd prompt
//cd "C:\Program Files\Microsoft Compute Cluster Pack\Bin"
//mpiexec.exe -n 2 "C:\Users\MyNameHere\Documents\Visual Studio 2012\Projects\tspMpi\Debug\tspMpi.exe"

int main(int argc, char* argv[]) 
{
 int  nTasks = 0, rank = 0; 

 MPI_Init(&argc,&argv); 
 MPI_Comm_size(MPI_COMM_WORLD,&nTasks);
 MPI_Comm_rank(MPI_COMM_WORLD,&rank);

 printf ("Number of threads = %d, My rank = %d\n", nTasks, rank);


  return 0;
 MPI_Finalize();
}

Как только я запускаю mpiexec.exe (команды в комментариях), программа просто ничего не делает, пока я не нажму Ctrl-C. Кто-нибудь знает, что я делаю неправильно? При сборке программы ошибок нет, и если я запускаю ее из Visual Studio, она действует так, как будто запущен только один процесс.


person Xavier Varricatt    schedule 21.10.2012    source источник
comment
Можете ли вы запустить образцы, поставляемые с SDK?   -  person zeFrenchy    schedule 21.10.2012
comment
Я не нашел никакой документации/образцов с SDK в ссылке, которую я показал.   -  person Xavier Varricatt    schedule 22.10.2012
comment
MPI_Finalize(); должен быть перед оператором возврата   -  person veda    schedule 22.10.2012
comment
Мне удалось решить проблему самому (думаю!) Из документации здесь (msdn.microsoft.com/en-us/library/cc136762(v=VS.85).aspx) я понял, что есть еще один продукт HPC, который я действительно предполагалось использовать. Вместо этого я решил попробовать этот продукт HPC, и когда я проделал те же шаги, теперь все работает нормально. Что не работает, так это то, что когда я использую оператор getchar, я не вижу вывода должным образом. Есть идеи, почему?   -  person Xavier Varricatt    schedule 22.10.2012
comment
Привет, Веда, спасибо, что указали на это тоже. Я тоже сделал эту поправку.   -  person Xavier Varricatt    schedule 22.10.2012


Ответы (1)


Я вообще не нашел SDK полезным, вот мои шаги, чтобы включить отладку кластера MPI в VS 2010 (VC10):

шаг 1. Установите MS-MPI: http://www.microsoft.com/en-us/download/details.aspx?id=36045 (только x64), это создает

C:\Program Files\Microsoft HPC Pack 2012\Inc
C:\Program Files\Microsoft HPC Pack 2012\Lib\amd64
C:\Program Files\Microsoft HPC Pack 2012\Lib\i386

шаг 2. Пример загрузки: http://msdn.microsoft.com/en-us/library/ee441265(v=vs.100).aspx#BKMK_debugMany

шаг 3. Настройка отладки: щелкните правой кнопкой мыши Startup Project > Properties > Debugging

Debugger to launch, change "Local Windows Debugger" to "MPI Cluster Debugger"
Run Environment, change "localhost/1" to "localhost/4"

Щелкните правой кнопкой мыши область панели инструментов Visual Studio, чтобы проверить «Расположение отладки», теперь вы можете переключать процессы и его потоки на панели инструментов «Место отладки», получайте удовольствие!

person Jichao    schedule 20.03.2013