Как скомпилировать и запустить C/C++ MPI-коды в cmd на окнах без Visual Studio
Я устанавливаю MS-MPI
Мне нравится кодировать в возвышенном тексте специально C/C++
Я запускаю код в cmd используя gcc/g++
Как я могу скомпилировать и запустить коды MPI из CMD
Я не люблю визуальную студию
Итак, есть ли способ я могу скомпилировать и запустить мои C/C++ MPI коды с MS-MPI в cmd
Я знаю, что есть вопрос в заголовке: Компилировать C++ MPI Code на Windows
но нет четкого ответа или комментария. вот почему я переспрашиваю сейчас
2 ответа
1. Загрузите установщики MS-MPI SDK и Redist и установите их. Ссылку для скачивания можно найти на нашей домашней https://msdn.microsoft.com/en-us/library/bb524831.aspx
2. После установки вы можете проверить, что переменные среды MS-MPI были установлены (вы захотите использовать эти env vars в Visual Studio). 3. Откройте Visual Studio и создайте новый проект консольного приложения Visual C++ Win32. Давайте назовем его MPIHelloWorld и используем настройки по умолчанию.
4. Установите каталоги включения, чтобы компилятор мог найти файлы заголовков MS-MPI. Обратите внимание, что мы будем собирать 64-битную версию, поэтому мы будем указывать каталог include на $(MSMPI_INC);$(MSMPI_INC)\x64. Если вы будете собирать для 32 бит, пожалуйста, используйте $ (MSMPI_INC); $ (MSMPI_INC) \ x86
5.Установите компоновщик lib (обратите внимание, я добавляю msmpi.lib к дополнительным зависимостям, а также добавляю $(MSMPI_LIB64) в каталоги дополнительных библиотек). Обратите внимание, что мы будем собирать 64-битную версию, поэтому мы укажем каталоги дополнительных библиотек на $(MSMPI_LIB64). Если вы собираете 32-битную версию, пожалуйста, используйте $(MSMPI_LIB32). Если вы видите эти сообщения об ошибках ниже, скорее всего, вы создаете 32-битную версию, но при этом указали 64-битную библиотеку связывания.
LNK1120: 5 неразрешенных внешних объектов LNK2019: неразрешенный внешний символ _MPI_Comm_rank@8, на который ссылается функция _main LNK2019: неразрешенный внешний символ _MPI_Finalize@0, на который ссылается функция _main LNK2019: неразрешенный внешний символ _MPI_Init@8, на который ссылается внешняя функция _NR _ 28I ссылка на функцию _NR в функции _main LNK2019: неразрешенный внешний символ _MPI_Send@24, на который ссылается функция _main 6. Кодировать и создать простую программу Hello World 7. Попробуйте запустить программу в командной строке 8. Я рекомендую использовать HPC Pack для запуска MPI на разных машинах. Однако вы по-прежнему можете запускать задания на разных компьютерах без пакета HPC, в котором вам нужно будет установить MS-MPI на всех машинах и запустить демон SMPD на каждом компьютере с помощью команды smpd –d. Убедитесь, что вы добавили необходимые правила брандмауэра для своего приложения. Чтобы запустить приложение MPIHelloWorld.exe с 2 процессами, 1 на hostA и 1 на hostB, вы можете использовать следующую команду mpiexec -hosts 2 hostA 1 hostB 1 -wdir \hostA\c$\SomeDirectory MPIHelloWorld.exe
Кроме того, вы можете использовать командную строку для компиляции и компоновки вашей программы (заменив шаги 1-6 выше). Обратите внимание, что я добавил "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64" в переменную среды пути, чтобы были доступны cl.exe и link.exe.
Чтобы скомпилировать вашу программу в файлы.obj: cl /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include" /I"C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x64" /Я. /I"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ Включить" /I"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include" /c MPIHelloWorld.cpp
Связывание файлов.obj: ссылка / машина:x64 /out:MpiHelloWorld.exe /dynamicbase "msmpi.lib" /libpath:"C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64" /LIBPATH:"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64" MPIHelloWorld.obj
Но я лично рекомендую вам программировать с использованием Visual Studio, вы получаете больше преимуществ по сравнению с другими, если вы программируете на C / C++ или любом другом языке, и я также хочу сначала предложить вам, VS 2008 довольно мощный и, вероятно, один из лучшие IDE для программирования на C++ (по крайней мере с поддерживающим плагином, таким как Visual Assist X).
Имейте в виду, однако, что C++ - сложный язык для правильных компиляторов, и что уровень предупреждений по умолчанию довольно удобен для загрузки. Так что он будет терпеть плохой / неправильный код довольно часто. Всегда желательно проверять код и на других компиляторах - по крайней мере в g ++ с высоким уровнем предупреждения в строгом режиме.
Также рекомендуется установить более высокий уровень предупреждения в Visual Studio.