Кто-нибудь знает, можно ли скомпилировать MPI с помощью gcc
?. Мне нужно использовать gcc
, № mpicc
.Как скомпилировать MPI с gcc?
ответ
mpicc
уже использует gcc
в качестве движка
Странно, мой 'mpicc' использует' icc' в качестве backend ... –
Да, можно, конечно, составить программу MPI без удобства mpicc
обертки. В большинстве реализаций mpicc
- это сценарий оболочки (или аналогичный), который устанавливает переменные среды, находит и связывает различные библиотеки, все виды материалов, которые вы могли бы поместить в Makefile.
Предлагаю вам найти экземпляр сценария mpicc
и разложить его.
mpicc
- это всего лишь обертка вокруг определенного набора компиляторов. В большинстве реализаций их обтекатели mpicc
понимают особый вариант, например -showme
(Open MPI) или -show
(Open MPI, MPICH и производные), который предоставляет полный список опций, которые оболочка передает на компилятор.
Например, в Open MPI обертки - это программы на C++, которые читают файлы конфигурации обычного текста и строят параметры командной строки, которые затем передаются компилятору. mpicc -showme
показывает полный список таких параметров:
$ mpicc -showme
icc
-I/opt/MPI/openmpi-1.5.3/linux/intel/include
-I/opt/MPI/openmpi-1.5.3/linux/intel/include/openmpi
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-Wl,-rpath,/opt/MPI/openmpi-1.5.3/linux/intel/lib
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-L/opt/MPI/openmpi-1.5.3/linux/intel/lib
-lmpi
-ldl
-Wl,--export-dynamic
-lnsl
-lutil
(это на самом деле одна строка, что я расколол здесь, чтобы улучшить читаемость)
Это тот частный случай, Intel C Compiler icc
используется в качестве интерфейса компилятор, но у нас также есть варианты, которые используют GCC. Вы также можете получить список параметров, необходимых для Комплексы фазы (обычно известный как CFLAGS
) с mpicc -showme:compile
:
$ mpicc -showme:compile
-I/opt/MPI/openmpi-1.5.3/linux/intel/include
-I/opt/MPI/openmpi-1.5.3/linux/intel/include/openmpi
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
, а также список опций, которые нужно передать в компоновщик (известный как LDFLAGS
) с mpicc -showme:link
:
$ mpicc -showme:link
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-Wl,-rpath,/opt/MPI/openmpi-1.5.3/linux/intel/lib
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-L/opt/MPI/openmpi-1.5.3/linux/intel/lib
-lmpi
-ldl
-Wl,--export-dynamic
-lnsl
-lutil
Их можно использовать, например в Makefile
, как это:
...
CFLAGS += $(shell mpicc -showme:compile)
LDFLAGS += $(shell mpicc -showme:link)
...
Насколько я знаю -showme:compile
и -showme:link
являются специфическими для открытия MPI и другие реализации только дать полный список опций при вызове с -show
.
Я по-прежнему считаю, что лучше использовать mpicc
, потому что, если это произойдет, если что-то в настройке MPI будет изменено, оно будет немедленно отражено в оболочке, в то время как вам придется вручную изменить сценарий сборки/Makefile
(если вы не используете -showme:compile
и -showme:link
, чтобы получить параметры автоматически).
mpicc -compile_info
для MPICH.
Да, вы можете использовать gcc на самом деле.Но в моем случае (на Ubuntu) mpicc является просто оболочкой НКИ, здесь вывод команды mpicc -showme
:
gcc -I/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent -I/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent/include -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-rpath -Wl,/usr/lib/openmpi/lib -Wl,--enable-new-dtags -L/usr/lib/openmpi/lib -lmpi
В то время как в Open MPI docs:
командаОткрытого MPI настоятельно рекомендую вам просто используйте «компиляторы» Open MPI для компиляции ваших приложений MPI. То есть вместо использования (например) gcc для компиляции вашей программы, используйте mpicc.
Повторяем приведенное выше утверждение: команда Open MPI настоятельно рекомендует использовать компиляторы-оболочки для компиляции и соединения приложений MPI. Если вы говорите: «Но я не хочу использовать компиляторы-обертки!», Пожалуйста, юмористируйте нас и попробуйте. Посмотрите, работают ли они на вас. Обязательно сообщите нам, если они не сработают для вас. Многие люди используют свои «компиляторы-обертки»! менталитет о плохом поведении от плохо реализованных компиляторов оболочек в середине 1990-х годов. В наши дни все намного лучше; Компиляторы оболочки могут обрабатывать практически любую ситуацию и намного надежнее, чем вы пытаетесь жестко закодировать флаги компилятора и компоновщика Open MPI вручную. Это, как говорится, есть очень-очень-очень-то - ситуации, когда использование компиляторов-оболочек может быть проблематичным - например, вложение нескольких компиляторов-оболочек из нескольких проектов. Следовательно, Open MPI обеспечивает обходной путь, чтобы узнать, какие флаги командной строки вам нужны для компиляции приложений MPI.
Здесь этот ответ полезен для вас.
- 1. Как скомпилировать программу (с gcc)?
- 2. Как скомпилировать MPI с gfortran вместо ifort?
- 3. Невозможно скомпилировать с помощью «gcc»
- 4. Как скомпилировать GCC из PHP
- 5. Скомпилировать библиотеку, использующую mpi (AGMG)
- 6. Невозможно скомпилировать C++ с gcc
- 7. Как скомпилировать Scintilla с GCC на Windows?
- 8. Как скомпилировать код SIMD с помощью gcc
- 9. Как скомпилировать с gcc внутри OpenWRT
- 10. Как скомпилировать glib с помощью gcc
- 11. Как скомпилировать gcc с общей библиотекой?
- 12. Как скомпилировать гибридную программу OpenMP и MPI на OS X
- 13. Невозможно скомпилировать с помощью GCC на EC2
- 14. Как скомпилировать wth gcc, intel static libraries?
- 15. Как скомпилировать GCC на x86 для Sun4v?
- 16. как скомпилировать gcc 3.4 на archlinux?
- 17. GCC: Скомпилировать сборку с уточненным соответствием коду?
- 18. Скомпилировать программу c/C++ с помощью gcc
- 19. как скомпилировать MPI и не-MPI версию той же программы с automake?
- 20. Как скомпилировать Opencv API на gcc
- 21. Как скомпилировать gcc для машины Intel Atom?
- 22. Как скомпилировать GCC-4.0 на Mountain Lion
- 23. Как скомпилировать Objective C++ в GCC?
- 24. Как скомпилировать встроенную функцию C с литералами с GCC?
- 25. Как скомпилировать в Xcode с помощью gcc с -ansi -pedantic?
- 26. Как скомпилировать приложение с помощью Libcurl с GCC на MinGW
- 27. Как запустить (и скомпилировать) файл C с аргументами с gcc?
- 28. Как скомпилировать архив библиотеки с файлом исходного кода с gcc?
- 29. gcc не может скомпилировать файлы C с помощью mpi.h
- 30. Как скомпилировать с DevIL?
Возможно, но почему вы хотите? Обычно завернутый компилятор (mpicc здесь) намного удобнее и будет каким-то образом оптимизирован. – Hbcdev
для cmake вы не должны использовать обертку [здесь] (https://cmake.org/pipermail/cmake/2011-June/045037.html), потому что CMake определяет, как скомпилировать программы MPI без нее.) Просто используйте ' find_package (MPI REQUIRED) '. Это намного чище, чем оболочка, чтобы установить флаги link/compile. – dashesy