올바르게 작동하는 MPICC 설치에도 불구하고 mpi4py를 설치할 때 MPICC 오류가 발생합니다.

StackOverflow https://stackoverflow.com//questions/21048329

  •  21-12-2019
  •  | 
  •  

문제

Ubuntu 12.04에 MPICH를 성공적으로 설치했으며 간단한 테스트 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를 컴파일하기 위해 MPI를 설치하기 위해 apt-get을 사용했을 뿐이며 수동으로 빌드하기 위해 별도의 설치 지침을 유지하는 대신 이러한 도구에 대해 기본 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.
도움이 되었습니까?

해결책

패키지 이름이 아닌 MPI4PY 패키지 URL에서 pip를 지정하여 시스템의 어떤 항목도 변경하지 않고 이 문제를 성공적으로 해결할 수 있었습니다.

pip install https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-1.3.1.tar.gz

다른 팁

openmpi-4.0.0을 사용하는 Ubuntu 18.04에서도 비슷한 문제가 발생했습니다.이전 버전의 openmpi-2.1.6을 설치하면 문제가 해결되었습니다.

apt-get install openmpi=2.1.6
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top