Igorr
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вопрос по MPI (Intel MPI Library 4.0). Есть кластер из двух компов (оба 4-х ядерные, соединены через роутер): Head Node (Comp1, OS: WS2008R2, ) и Workstation Node (Comp2, OS: W7x64). С MPI библиотекой идёт тестовый пример test.f90: Код: program main use mpi implicit none integer i, size, rank, namelen, ierr character (len=MPI_MAX_PROCESSOR_NAME) :: name integer stat(MPI_STATUS_SIZE) call MPI_INIT (ierr) call MPI_COMM_SIZE (MPI_COMM_WORLD, size, ierr) call MPI_COMM_RANK (MPI_COMM_WORLD, rank, ierr) call MPI_GET_PROCESSOR_NAME (name, namelen, ierr) if (rank.eq.0) then print *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name do i = 1, size - 1 call MPI_RECV (rank, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr) call MPI_RECV (size, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr) call MPI_RECV (namelen, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr) call MPI_RECV (name, namelen, MPI_CHARACTER, i, 1, MPI_COMM_WORLD, stat, ierr) print *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name enddo else call MPI_SEND (rank, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr) call MPI_SEND (size, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr) call MPI_SEND (namelen, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr) call MPI_SEND (name, namelen, MPI_CHARACTER, 0, 1, MPI_COMM_WORLD, ierr) endif call MPI_FINALIZE (ierr) end | Получил из него test.exe. 1) Запускаю в командной строке Код: mpiexec -hosts 1 Comp1 4 \\Comp1\CcpSpoolDir\Test\Test\x64\Debug\test.exe | Получаю Output1: Код: Hello word: rank 0 of 4 running on Comp1.domain.my Hello word: rank 1 of 4 running on Comp1.domain.my Hello word: rank 2 of 4 running on Comp1.domain.my Hello word: rank 3 of 4 running on Comp1.domain.my | 2) Запускаю команду Код: mpiexec -hosts 1 Comp2 4 \\Comp1\CcpSpoolDir\Test\Test\x64\Debug\test.exe | Получаю Output2: Код: Hello word: rank 0 of 4 running on Comp2.domain.my Hello word: rank 1 of 4 running on Comp2.domain.my Hello word: rank 2 of 4 running on Comp2.domain.my Hello word: rank 3 of 4 running on Comp2.domain.my | 3) Запускаю команду Код: mpiexec -hosts 2 Comp1 4 Comp2 4 \\Comp1\CcpSpoolDir\Test\Test\x64\Debug\test.exe | Ничего не получаю - процессы (по ~20% CPU) виснут как на Comp1 (4 процесса) так и на Comp2 (4 процесса). Опции: "-machinefile \\Comp1\CcpSpoolDir\machines.Windows" (machines.Windows с соответствующим содержанием /Comp1 и Comp2/), "-[g]env I_MPI_FABRICS shm:tcp" и "-wdir \\Comp1\CcpSpoolDir\Test\Test\x64\Debug" не помогают. Опция -verbose показывет в прокрутке много строк, но потом останавливается на Код:и ни с места. При нажатии Ctrl^C или закрытии окна командной строки процессы вырубаются. Как заставить прогу правильно работать на двух компьютерах одновременно? Добавление При использовании опции "-genv I_MPI_DYNAMIC_CONNECTION 1" получаю только Output1, с компа Comp2 - ничего. Процессы висят на обоих компах. | Всего записей: 2020 | Зарегистр. 01-05-2002 | Отправлено: 06:50 13-11-2011 | Исправлено: Igorr, 21:16 14-11-2011 |
|