NumPy, SciPyãã¡ããã¨ã¤ã³ã¹ãã¼ã«ããï¼CentOS+Python2.7+easy_installï¼
ç ç©¶å®¤ã«æ°ããRedHatã®è¨ç®æ©ãæ¥ããããªã®ã§ãèªåã®MacBookã«VirtualBoxã使ç¨ãã¦CentOSãå ¥ãã¦èªåã®ç°å¢ã¥ããï¼æ¥å¹´å ¥ã£ã¦æ¥ãå¾è¼©ã«Pythonã叿ããããã®ç·´ç¿ã¡ã¢ã
ç®æ¨ï¼ã·ã¹ãã ã¨ã¯å¥ã®Pythonãã½ã¼ã¹ããã¤ã³ã¹ãã¼ã«ãyumã§ATLASãeasy_installã§numpyã¨scipyãã¤ã³ã¹ãã¼ã«ãã¦ã¡ããã¨ATLASã使ç¨ããnumpy, scipyç°å¢ãæ§ç¯ãã
1. NumPy, SciPy
RedHat, CentOSã ã¨yumã§ã¤ã³ã¹ãã¼ã«ã§ããnumy, scipyãPython2.6ã¨å¤ããã·ã¹ãã ã§ä½¿ã£ã¦ããã®ãæ±ããªãæ¹ãããã¨æãã®ã§èªåã®ã¦ã¼ã¶ãã¼ã«ã«ã«Python2.7ãå
¥ãã¦ãå®å®çã®numpyã¨scipyï¼å·ç彿ã¯1.6.1ã¨0.10.0ï¼ãã¤ã³ã¹ãã¼ã«ãã¾ãã
numpyã¨scipyã¯è¡åãé«éã«è¨ç®ãã¦ãããã¢ã¸ã¥ã¼ã«ã§ããããã®çç±ã¯è£ã§fortranã¨ãã使ãã¤ã¤è¶
é«éãªè¨ç®ã©ã¤ãã©ãªãå¼ã³åºãã¦ãããã§ãã
numpy, scipyã¯
ã使ç¨ãã¾ãããã®2ã¤ã¯è¨ç®åéã§ã¹ã¿ã³ãã¼ãã«ãªã£ã¦ãã¦ãæ§ã ãªç§å¦è¨ç®ã©ã¤ãã©ãªã§ä½¿ç¨ããã¦ããããã§ãããã®2ã¤ãæé©ã«ã³ã³ãã¤ã«ããã¦ãããã¨ã¯è¨ç®é度ã«ç´çµãããããè²ã ãªä¼æ¥ããã®2ã¤ãç¬èªã«æé©ãªã³ã³ãã¤ã«ããã¦å®è£ ãã¦ãã¾ãã
ããªã¼ã§æåãªã®ã¯
- ATLAS: ãªã¼ãã³ã½ã¼ã¹ã®è¨ç®ã©ã¤ãã©ãª
- MKL(Intel Math Kernel Library): ã¤ã³ãã«ã販売ãã¦ãææã®è¨ç®ã©ã¤ãã©ãªããã ãå¦è¡çãªå©ç¨ã«éã£ã¦ããªã¼çãããããã
- Accelerate Framework: Macã§Xcodeãã¤ã³ã¹ãã¼ã«ããã¨ä»ãã¦ããAppleã®è¨ç®ã©ã¤ãã©ãª
MacãªãScipy-superpackã§ã¤ã³ã¹ãã¼ã«ããã¨Accelerate Frameworkã使ãããã«ã¤ã³ã¹ãã¼ã«ãã¦ãããã®ã§ä½ã®åé¡ããªãã§ããï¼ä¹
ãã¶ãã«æ¢ãããNot Foundã«ãªã£ã¦ã¾ããã»ã»ã»Macã§æ°ããç°å¢æ§ç¯ããã¨ãã¯ããã©ããããªããª(-_-;)
LinuxãªãATLASãMKLã«ãªãã¾ããéåº¦ãæ±ãããªãMKLã§ããããããªã«é«åº¦ãªè¨ç®ãããããã§ã¯ãªãã®ã§ATLASã«ãã¾ãã
ATLASã¯ã³ã³ãã¤ã«æ¸ã¿ã®ãã®ãyumããè½ã¨ãã¾ãããéåº¦ãæ±ãããªãèªåã®ç°å¢ã«åãããã«ã³ã³ãã¤ã«ããæ¹ãããã¿ããã§ããã§ãã³ã³ãã¤ã«ã®æ¹æ³ã調ã¹ã¦ãããåãããªãããé«åº¦ãªè¨ç®ãããããã§ã¯(ry
ã¡ããã¨ã½ã¼ã¹ããã¤ã³ã¹ãã¼ã«ãããæ¹ã¯ãã®ããããåèã«ããã¨è¯ãããã§ã
http://www.scipy.org/Installing_SciPy/Linux
http://www.kkaneko.com/rinkou/linux/atlaslinux.html
Numpy, Scipyãã½ã¼ã¹ããã³ã³ãã¤ã«ãããã¨ããã¨ATLASã®ãã¹ãè¨å®ãããã¨ãè²ã
ããã©ãããããªã®ã§ãeasy_installã§ãæè»½ã¤ã³ã¹ãã¼ã«ãã¾ãã
2. Python2.7ã®ã¤ã³ã¹ãã¼ã«
è¨ç®æ©ã®èªåã®ã¢ã«ã¦ã³ãã§ä½¿ç¨ããPython2.7ãã¤ã³ã¹ãã¼ã«ãããnumpy, scipyã®ã¤ã³ã¹ãã¼ã«ã ããç®çã®æ¹ã¯ããã¯é£ã°ãã¦ãã ããã
#ãããç¡ããã°gccãã¤ã³ã¹ãã¼ã«ãã¦ãã yum install gcc #Python2.7ãèªåã®ãã£ã¬ã¯ããªã«ã¤ã³ã¹ãã¼ã« cd /home/èªåã®ã¦ã¼ã¶å mkdir src cd src wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 tar -xvjf Python-2.7.2.tar.bz2 cd Python-2.7.2 ./configure --prefix=/home/èªåã®ã¦ã¼ã¶å/python2.7.2 make
ããã§è²ã ãªã¢ã¸ã¥ã¼ã«ãç¡ãã¨è¨ããããããããªãã®ã§ãå¿ è¦ãªãã®ããããªãyumã§ã¤ã³ã¹ãã¼ã«ãã¦ãããzlib-develã¯å¾ã®easy_installã«å¿ è¦ãªã®ã§å¿ é ãèªåã¯sqlite3ã¨opensslã使ãããã®ã§ããããã¤ã³ã¹ãã¼ã«ãã¾ãã
yum install zlib-devel sqlite-devel openssl-devel make make install cd /home/èªåã®ã¦ã¼ã¶å/python2.7.2 ./bin/python ./bin/python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory #ä½ãè¶³ããªããããã®ã§èª¿ã¹ã¾ã ldd ./bin/python #ããã¼ã£ã¨åºãä¸ã§libpython2.7.so.1.0ãnot foundãªã®ã§ãä»ã®ã¨åããã£ã¬ã¯ããªã«ã³ãã¼ãã¦ãã #ï¼ãã®ããæ¹ã§ããã®ãæªããããããã®ãµã¼ãã§ä¸äººãã使ããªãã®ãªãã·ã³ããªãã¯ãªã³ã¯ã§ãOKï¼ï¼ cp ./lib/libpython2.7.so.1.0 /lib64/ ./bin/python
ããã§åãã¯ã
ãã®ã¾ã¾ã ã¨pythonã³ãã³ãã¯ã·ã¹ãã ã®pythonãå¼ã³åºãã¾ã¾ãªã®ã§ã
cd /home/èªåã®ã¦ã¼ã¶å vi .bashrc export PYTHONPATH=/home/èªåã®ã¦ã¼ã¶å/python2.7/lib/python2.7/site-packages/ export PATH=/home/èªåã®ã¦ã¼ã¶å/python2.7/bin:$PATH
ã®2è¡ã追å ãããã©ã«ãã®pythonã³ãã³ãã®ãã¹ã®åã«èªåã®python2.7ã®ãã¹ãéãã®ã§ãåãã°ã¤ã³ããã¨pythonã³ãã³ãã§èªåã®pythonãå¼ã³åºãããã«ãªãã¾ãã
èªåã®pythonã§easy_installã使ããããã«ãã¾ã
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg sh setuptools-0.6c11-py2.7egg --prefix=/home/èªåã®ã¦ã¼ã¶å/python2.7
3. ATLAS, numpy, scipyã®ã¤ã³ã¹ãã¼ã«
ã¾ãSSEå½ä»¤ã使ããã確èªãã¾ã
cat /proc/cpuinfo
#èªåã®ç°å¢ã§ã¯ãããªæãã§ãã
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 syscall nx lm constant_tsc up rep_good pni monitor ssse3 lahf_lm
SSE3ã使ãããããã®ã§atlas-sse3-develãã¤ã³ã¹ãã¼ã«ãããSSEã®æ°åã大ããã»ã©å¤åéããnumpy, scipyã®ã³ã³ãã¤ã«ã«fortranã®ã³ã³ãã¤ã©ãå¿ è¦ãªã®ã§gfortranãã¤ã³ã¹ãã¼ã«ãã
yum install atlas-sse3-devel gcc-gfortran #numpyã¨ãã¹ãã«ä½¿ç¨ããnoseã®ã¤ã³ã¹ãã¼ã« easy_install nose numpy #ããªãç大ã«è¦åã¨ãåºããã©æ°ã«ããªã
>>>import numpy >>>numpy.show_config() atlas_threads_info: libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = f77 include_dirs = ['/usr/include'] blas_opt_info: libraries = ['ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = c include_dirs = ['/usr/include'] atlas_blas_threads_info: libraries = ['ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = c include_dirs = ['/usr/include'] lapack_opt_info: libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = f77 include_dirs = ['/usr/include'] lapack_mkl_info: NOT AVAILABLE blas_mkl_info: NOT AVAILABLE mkl_info: NOT AVAILABLE >>>numpy.test() #èªåã®ç°å¢ã§ã¯ãã¹ãæåãATLASã使ããã¦ãã£ã½ããmklã¯å ¥ã£ã¦ãããããªãã®ã§ä»æ¹ãªãã
#scipyã®ã³ã³ãã¤ã«ã«ã¯g++(gcc-c++)ãå¿ è¦ yum install gcc-c++ #scipyã®ã¤ã³ã¹ãã¼ã« easy_install scipy
èªåã®ç°å¢ã§ã¯numpyããããªãç大ã«è¦åã¨ãè²ã åºããã©å¤§ä¸å¤«ãªã®ãã»ã»ã»
>>>import scipy >>>scipy.show_config() umfpack_info: NOT AVAILABLE atlas_threads_info: libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = f77 include_dirs = ['/usr/include'] blas_opt_info: libraries = ['ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = c include_dirs = ['/usr/include'] atlas_blas_threads_info: libraries = ['ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = c include_dirs = ['/usr/include'] lapack_opt_info: libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas'] library_dirs = ['/usr/lib64/atlas-sse3'] define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] language = f77 include_dirs = ['/usr/include'] lapack_mkl_info: NOT AVAILABLE blas_mkl_info: NOT AVAILABLE mkl_info: NOT AVAILABLE #numpyã«ãªãã£ãumfpackãNOT AVAILABLEã«ãªã£ã¦ãã #ã³ã³ãã¤ã«ã®ã¨ãã«ãä½ãè¨ããã¦ããããªæ°ããã¾ãã >>>scipy.test()
èªåã®ç°å¢ã§ã¯FAILEDãumfpacké¢ä¿ã ãããï¼failures=8ã ããèªåããã®æ©è½ã使ããªãã大ä¸å¤«ããªã調ã¹ããumfpackã¯çè¡åã®ç·å½¢æ¹ç¨å¼ãè§£ããããããããªããã±ã¼ã¸ããããèªåã§ã¯ä»ã®ã¨ãã使ãã¤ããããªãã®ã§æ¾ã£ã¦ãããã
å¤åããã§ã¡ããã¨ATLASã使ãnumpy, scipyã®ã¤ã³ã¹ãã¼ã«ãã§ããã¯ããããããææ°ã®fedoraã¨ãubuntuãªãPython2.7ã§ãyumã¨ãapt-getã§ä¸çºãªãã§ããã©ãã¼ã
[2012/2/4 追è¨]
numpyã®ã½ã¼ã¹ããã¦ã³ãã¼ããã¦site.cfg.exampleãè¦ã¦ã¿ãããç¹ã«è¨å®ããªãã¨ããã©ã«ãã§ATLASã使ããããªè¨å®ã«ãªã£ã¦ããã¿ããã§ãã