Я успешно установил MPICH на Ubuntu 12.04 и могу заставить простые тестовые программы C компилироваться и запускаться, как и ожидалось.
Теперь я пытаюсь использовать pip для установки mpi4py, просто через pip install mpi4py
. Сначала я выполнил sudo apt-get build-dep python-mpi4py
, который работал нормально.
Я работаю с virtualenv, поэтому эта установка mpi4py не с sudo (и не должна быть).
Вот команда и ошибка, которую я обнаружил после длинного набора вывода консоли, который выглядит как обычный материал компиляции (я могу распечатать все вывода консоли, если это необходимо, но я думаю, что большая часть из них является стандартным компилятором предупреждения, указывающие на отсутствие проблем).
(local-dev)espears@espears-w:~$ pip install mpi4py
src/ext/mpi_swig.c: In function ‘SWIG_Python_AddErrorMsg’:
src/ext/mpi_swig.c:859:5: error: format not a string literal and no format arguments [-Werror=format-security]
cc1: some warnings being treated as errors
error: command '/usr/bin/mpicc' failed with exit status 1
----------------------------------------
Cleaning up...
Command /home/espears/.virtualenvs/local-dev/bin/python -c "import setuptools, tokenize;__file__='/home/espears/.virtualenvs/local-dev/build/mpi4py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-5o6OwN-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/espears/.virtualenvs/local-dev/include/site/python2.7 failed with error code 1 in /home/espears/.virtualenvs/local-dev/build/mpi4py
Traceback (most recent call last):
File "/home/espears/.virtualenvs/local-dev/bin/pip", line 11, in <module>
sys.exit(main())
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/__init__.py", line 185, in main
return command.main(cmd_args)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/basecommand.py", line 161, in main
text = '\n'.join(complete_log)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 31: ordinal not in range(128)
Но which mpicc
дает ожидаемый результат: /usr/bin/mpicc
и, как упоминалось выше, если я использую этот mpicc
для компиляции простых тестовых программ .c, они работают нормально.
Я видел несколько ссылок, описывающих параметр флага fPIC
для компиляции MPI, но я просто использовал apt-get для установки MPI и, в частности, хочу полагаться только на собственные пакеты Ubuntu для этих инструментов, а не поддерживать отдельные инструкции по установке для ручной сборки. их.
Как определить, почему mpicc
не работает в процессе установки mpi4py
?
Добавлено
Следующее из вывода консоли, по-видимому, является командой компиляции, которая вызывает проблемы.
building 'mpi4py._mpi_swig' extension
/usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
Это дает следующую ошибку, когда я сам пытаюсь из командной строки:
(local-dev)espears@espears-w:~$ /usr/bin/mpicc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -fPIC -I/usr/include/python2.7 -c src/ext/mpi_swig.c -o build/temp.linux-x86_64-2.7/src/ext/mpi_swig.o
gcc: error: src/ext/mpi_swig.c: No such file or directory
gcc: fatal error: no input files
compilation terminated.
mpi_swig.c
автоматически создается SWIG, а затем удаляется. - person Hristo Iliev   schedule 10.01.2014src/
здесь упоминается. Все элементыmpicc
mpiexec
иmpirun
выглядят нормально, когда я их изучаю, и все построено для MPICH. - person ely   schedule 10.01.2014