Неправильное число процессоров в mpi

Извините, я уверен, что сделал глупую ошибку, но не сработало.

Я собираю простой mpi hello world:

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

int main (argc, argv)
     int argc;
     char *argv[];
{
  int rank, size;

  MPI_Init (&argc, &argv);      /* starts MPI */
  MPI_Comm_rank (MPI_COMM_WORLD, &rank);        /* get current process id */
  MPI_Comm_size (MPI_COMM_WORLD, &size);        /* get number of processes */
  printf( "Hello world from process %d of %d\n", rank, size );
  MPI_Finalize();
  return 0;
}

А также:

> mpicc -o hello_world_c hello_world.c
> mpirun -np 4 hello_world_c

Но возвращается:

Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1
Hello world from process 0 of 1

Но мой компьютер - это ядро i7 с 4 ядрами. И все вроде бы нормально, т.е. cat / proc / cpuinfo показывает 4 процессора

что происходит??? Заранее спасибо!!!!

 Shawn Chin03 апр. 2012 г., 12:02
Не похоже, что это проблема с вашим кодом MPI. Какую библиотеку MPI вы установили? Как вы это установили?

Ответы на вопрос(4)

УСТАНОВИТЬ

Теперь скомпилируйте и выполните код

Решение Вопроса

которая может быть связана с вашей установкой mpi.

Обратите внимание:

Существует разница между процессором и ядром. это не то же самое.

 John Fadria03 апр. 2012 г., 12:51
нет нет, я использую Ubuntu и обычную установку. Пакет mpich2
 Jonathan Dursi03 апр. 2012 г., 14:53
Позвольте мне просто добавить к этому: конкретная проблема с установкой, которую вы видите здесь, вероятно, заключается в том, что вы запускаете свою программу с mpirun, который относится к инсталляции mpi, отличной от той, с которой вы скомпилировали ссылку. Убедитесь, что одни и те же mpirun, mpicc и ваши библиотеки mpi находятся первыми в ваших различных путях.
 John Fadria03 апр. 2012 г., 12:16
Хорошо спасибо!!! Вы знаете, что я должен изменить в моей установке MPI ???
 lolo03 апр. 2012 г., 13:48
попробуйте использовать эту ссылку:auriza.site40.net/notes/mpi/openmpi-on-ubuntu-904
 lolo03 апр. 2012 г., 12:21
Как вы это установили? какой компьютер ты используешь? ты используешь win7?

Во-первых, удалите все пакеты mpi, которые установлены на вашем компьютере. Если ваш сервер Ubuntu, вы можете использовать команду:

sudo apt-get purge mpi mpich2 openmpi-common

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

which mpiexec

Если вы ничего не получили в ответ, вы уже удалили все пакеты.

Затем переустановите пакет mpich2

sudo apt-get install mpich2

Попробуйте скомпилировать и запустить свой код снова! Надеюсь, это поможет!

Я не знаю, как вы можете скомпилировать это:

 int main (argc, argv)
 int argc;
 char *argv[];

будет изменен на

 int main (int argc, char *argv[])

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

Ваш ответ на вопрос