티스토리 뷰
제대로 된 BLAS계열 패키지를 설치하지 않으면 numpy와 scipy의 성능이 제대로 나오지 않는다.
요즘 대부분의 서버가 멀티코어 시스템으로 구성되어 있기 때문에 코어를 충분히 활용할 수 있도록 numpy와 scipy를 설치해 주어야 한다.
아래 내용은 openblas를 이용하여 numpy와 scipy를 설치하는 방법이다.
하지만! openblas에 문제가 있는 것인지, 테스트(최하단 소스코드 참고)를 해보면 scipy 테스트에서 에러가 발생하고,
numpy.test(verbose=2)와 scipy.test(verbose=2) 등의 테스트도 제대로 통과하지 못한다 (CentOS 5.7 (Final)에 설치).
잘 설치되시는 분 저 좀 알려주시길..! ㅠ
<openblas, numpy, scipy 설치>
아래 내용은 http://stackoverflow.com/questions/11443302/compiling-numpy-with-openblas-integration 의 글을 그대로 가져다 편집한 내용이다.
OpenBlas 컴파일
:$ git clone git://github.com/xianyi/OpenBLAS # wget으로 다운로드 해도 됨. $ cd OpenBLAS && make FC=gfortran $ sudo make PREFIX=/home/dwlee/softwares/library/openblas install $ sudo ldconfig
numpy 다운로드
:$ git clone https://github.com/numpy/numpy $ cd numpy
site.cfg
에 아래와 같이 설정:.... [openblas] libraries = openblas library_dirs = /home/dwlee/softwares/library/openblas/lib # 설치 환경에 따라 다름
# 설치 환경에 따라 다름
include_dirs = /home/dwlee/softwares/library/openblas/includeconfiguration 확인하고 build & install
$ python setup.py config
아래와 같이 openblas에 대한 경로가 잡혀있는지 확인해 본다.
FOUND: libraries = ['openblas'] library_dirs = ['/home/dwlee/softwares/library/openblas/lib'] language = c define_macros = [('NO_ATLAS_INFO', -1)] include_dirs = ['/home/dwlee/softwares/library/openblas/include']
ATLAS가 잡혀있지 않았나 확인한다 (잡혀있으면 안 됨).
$ python setup.py build && python setup.py install
scipy도 numpy와 동일하게 설치
#!/home/dwlee/python/python27/bin/pythonimport numpyimport sysimport timeittry:import numpy.core._dotblasprint 'FAST BLAS'except ImportError:print 'slow blas'print "version:", numpy.__version__print "maxint:", sys.maxintx = numpy.random.random((1000,1000))setup = "import numpy; x = numpy.random.random((1000,1000))"count = 5t = timeit.Timer("numpy.dot(x, x.T)", setup=setup)print "dot:", t.timeit(count)/count, "sec"
#!/home/dwlee/python/python27/bin/pythonimport timeitsetup = "import numpy;\import scipy.linalg as linalg;\x = numpy.random.random((1000,1000));\z = numpy.dot(x, x.T)"count = 5t = timeit.Timer("linalg.cholesky(z, lower=True)", setup=setup)print "cholesky:", t.timeit(count)/count, "sec"t = timeit.Timer("linalg.svd(z)", setup=setup)print "svd:", t.timeit(count)/count, "sec"
<Numpy 테스트 결과의 예>
FAST BLAS version: 1.8.0.dev-3f10c36 maxint: 9223372036854775807 dot: 0.0949754238129 sec
<Scipy 테스트 결과의 예>
cholesky: 0.080588388443 sec
svd: 1.13443040848 sec
참고:
http://osdf.github.io/blog/numpyscipy-with-openblas-for-ubuntu-1204.html
http://mkseo.pe.kr/stats/?p=970
'Python > 요리 방법' 카테고리의 다른 글
bisect 모듈의 insort 함수 (0) | 2015.06.19 |
---|---|
Cython 간단한 예제 (0) | 2015.02.28 |
몬티홀(Monty Hall) 문제 코드 (0) | 2014.02.17 |
An algorithm of Permutation in DNA Computing (0) | 2011.12.23 |
Eclipse + Python (0) | 2011.09.22 |
- Total
- Today
- Yesterday
- CanDrA
- GSX 1000 pro
- TCGA
- pandas
- 설치
- GSX 1200 pro
- TensorBoard
- destructor
- QT
- 이상한 문자
- 볼륨 낮춤
- PyQt
- Visual C++
- MSVC++
- Accelerated C++
- QPrinter.A4
- C++
- QPrinter.Letter
- armadillo c++
- dll
- matrix multiplication
- structure
- Python
- cython
- 볼륨 조절
- volume dial
- how to solve it
- ctypes
- tensorflow
- Item 9
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |