#c #mpi
#c #mpi
Вопрос:
Я хочу запускать параллельные коды на одном компьютере с процессором core i7. Я могу скомпилировать свой код, но у меня проблемы с его запуском.
Я компилирую свой код с помощью mpicxx, и когда я запускаю его с помощью «mpirun -np 8 . / a.out», выполняется только один процесс. Моя операционная система — linux ubuntu 11.04.
Работа что я должен делать?
Например, я хочу запустить этот код:
#include <iostream>
#include <mpi.h>
using namespace std;
int main(int argc, char **argv)
{
int mynode, totalnodes;
MPI_Init(amp;argc,amp;argv);
MPI_Comm_size(MPI_COMM_WORLD, amp;totalnodes);
MPI_Comm_rank(MPI_COMM_WORLD, amp;mynode);
cout << "Hello world from process " << mynode;
cout << " of " << totalnodes << endl;
MPI_Finalize();
}
Я использую mpich2 с mpirun — версия: 1.3.1
Комментарии:
1. вы должны сообщить нам, какую версию MPI вы используете.
2. Также какую ВЕРСИЮ mpich2 вы используете. Они изменили диспетчер процессов с MPD на Hydra между версиями 1.2 и 1.3, поэтому подробности о том, как запустить параллельное приложение, меняются. Вы можете видеть, что он работает под управлением mpirun —version.
3. «Предположим»? Meh, у вас есть эта проблема в вашей конкретной версии. В последней версии вы должны использовать mpiexec и правильно определенный машинный файл.
4. Есть несколько альтернатив: вы можете использовать бэкпорт, взять последний пакет из «экспериментальной» ветки вашего дистрибутива и установить его вручную или путем настройки диспетчера пакетов, или просто скомпилировать его из исходного пакета дистрибутива. Однако это вопрос, который следует задавать индивидуально и, возможно, на другом сайте вопросов и ответов.
5. Что именно происходит, когда вы пытаетесь запустить его, как указано выше?
Ответ №1:
Если вы используете операционную систему ubuntu, вы также можете выполнять свои коды с помощью mpiexec -n 8 /path/to/application, и машинный файл не требуется, просто убедитесь, что вы правильно установили библиотеку mpich. для этого вы можете использовать synaptic package manager для установки библиотеки.
Ответ №2:
В вашей версии mpich2 рекомендуется использовать mpiexec вместо mpirun.
Чтобы запустить приложение, вы должны написать машинный файл с таким синтаксисом:
machine1[:number of cores]
...
machinen[:number of cores]
Одна строка для каждой машины, с необязательным количеством ядер, перед которым стоит двоеточие, пример:
node0:2
node1:3
Затем вы вызываете свое приложение таким образом:
mpiexec -f machinefile -n <number of processes> yourapplication
Попробуйте и расскажите нам, что у вас получится.
Помните, что в конфигурации по умолчанию mpich2 требует конфигурации ssh без входа в систему для запуска процессов.
Комментарии:
1. Я не знаю, как я могу записать машинный файл
2. Для вашего простого случая вам нужен файл с именем
machinefile
в одной строкеlocalhost:8
. Затем запуститеmpiexec -f machinefile -n 8 /path/to/application arguments
.3. теперь у меня проблема с компиляцией. ошибка usr /bin / ld: не удается найти -lcr collect2: ld вернул 1 статус выхода диспетчер процессов работал, но компилятор теперь не работает!
4. это сайт вопросов и ответов, а не сайт «мы заставляем ваши вещи работать». Задавайте каждый вопрос отдельно.