majia29 / techcard Goto Github PK
View Code? Open in Web Editor NEWTechCard
TechCard
Overview - Spark 2.4.4 Documentation
https://spark.apache.org/docs/2.4.4/
Overview - Spark 2.3.4 Documentation
https://spark.apache.org/docs/2.3.4/
ATLAS NumPy SciPy Theano 的python科学计算环境搭建 - 文章
https://weibo.com/p/2304186cb8e53d0102vta7
作者:冯扬(8119)
Theano是一个python库,提供了定义、优化以及评估数学表达式的库,尤其适合处理高维数组。使用Theano能获得和C差不多的处理速度,并且当利用GPU进行计算时,效率要优于CPU上运行的C语言程序。利用Theano能快速验证各种算法模型。
但是在Linux上安装theano是一件非常痛苦的事情,从theano的文档中看到,其依赖条件非常多:
(1) 64-bit Linux(最佳)
(2) python 2.4以上
(3) g 4.2以上
(4) NumPy 1.5.0以上
(5) SciPy 0.8以上
(6) BLAS支持Level-3
事实上,在安装过程中发现,如果要安装NumPy,还需要安装ATLAS,而ATLAS则又依赖于lapack ……
这其中涉及到:
ATLAS是python下的一个线性代数库,是基于另外两个线性代数库BLAS和lapack的;
NumPy提供了一个在python中做科学计算的基础库,它重在数值计算,甚至可以说是用于多维数组处理的库;
SciPy是基于numpy,提供了一个在python中做科学计算的工具集,也就是说它是更上一个层次的库;
Theano则是基于NumPy以及SciPy的一个更高级的用于科学计算的库。
这里假设python和g 已经按要求装好,并且符合版本要求,以下根据安装的步骤来进行说明:
首先介绍下环境,多核服务器,cpu时钟频率2668MHz,Linux-64bit,非root权限。所有源码放在/data4/open_src中
各开发包的版本为:
BLAS blas.tgz //www.netlib.org/blas/
lapack 3.2.2 lapack.tgz //www.netlib.org/lapack/#_previous_release
ATLAS 3.8.4 atlas3.8.4.tar.bz2 //sourceforge.net/projects/math-atlas/files/Stable/
NumPy 1.7.1 numpy-1.7.1.tar.gz https://pypi.python.org/pypi/numpy
SciPy 0.12.0 scipy-0.12.0.tar.gz https://pypi.python.org/pypi/scipy
Theano 0.6.0 Theano-0.6.0rc3.tar.gz //deeplearning.net/software/theano/#download
以下是安装步骤:
step 1. 编译BLAS
(1) 解压:tar -xvzf blas.tgz
(2) cd BLAS
(3) 修改 make.inc 中的编译选项:
PLAT = _LINUX
FORTRAN = gfortran
OPTS = -O2-m64 -fPIC
NOOPT = -O0-m64 -fPIC
LOADER = gfortran
(4) 编译BLAS:make
编译完成后,会生成blas_LINUX.a文件
step 2. 配置ATLAS
在安装ATLAS之前需要先编译lapack,但是为了能使得编译成功,需要保证lapack的编译选项与ATLAS一致。因此首先配置ATLAS,然后将相关编译配置拷贝到lapack中
(1) 解压:tar -xvjf atlas3.8.4.tar.bz2
(2) cd ATLAS
(3) 创建一个build目录,用于存放ATLAS的编译配置:mkdiratlas_build
(4) cd atlas_build
(5) 执行configure进行配置:../configure -b 64 -D c-DPentiumCPS=2668 -Fa alg -fPIC--with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a--prefix=~/.local
其中的参数说明如下:
-b 指定编译出库的类型(32位库还是64位库)
-D c -DPentiumCPS 是指定你的CPU的时钟频率,可以通过 grep MHz/proc/cpuinfo 得到
-Fa alg -fPIC 得到与位置无关的代码,生成动态的共享库
--prefix 为安装路径
--with-netlib-lapack则是制定lapack库文件(此时lapack库文件还没有生成,先随便指定一个)
(6)完成配置后,在Make.inc文件中找到F77和F77FLAGS的参数配置,这两个配置将会赋给lapack的FORTRAN和OPTS
ps:对于ATLAS3.10及以上版本,设置--with-netlib-lapack会出错,需要直接指定lapack的压缩包(--with-netlib-lapack-tarfile=),它在编译过程中会自动解压和编译lapack,最终生成的so文件也由之前的6个整合成两个。ATLAS3.10以上版本对后续安装NumPy没有影响,但是在使用的时候会造成有些库文件找不到的现象。因此这里使用的是ATLAS3.8.4版本。
step 3. 编译lapack
(1) 解压:tar -xvzf lapack.tgz
(2) cd lapack-3.2.2
(3) 拷贝生成make.inc: cp make.inc.examplemake.inc
(4) 修改make.inc:
将其中FORTRAN和OPTS的值设置得跟 ATLAS/atlas_build/Make.inc中的F77和F77FLAGS一致
同时设置
PLAT = _LINUX
BLASLIB =/data4/open_src/BLAS/blas$(PLAT).a
(5) 编译:make build
(6) 编译成功后,会在根目录生成两个库文件:lapack_LINUX.a 和tmglib_LINUX.a
step 4. 编译并安装ATLAS
(1) cd ATLAS
(2) 删除原配置:rm -rf atlas_build
(3) 重新配置ATLAS:参考 step 2,并设置--with-netlib-lapack=/data4/open_src/lapack-3.2.2/lapack_LINUX.a
(4) 在atlas_build中进行编译:make build
ps:这个过程相当漫长,耐心等待!!
(5) check编译结果:
make check
make ptcheck (对于多核服务器)
make time
ps:如果check过程中没有报错,则可以放心进行以后的步骤;如果出现报错,也可以尝试进行后续步骤,是否成功就要靠人品了。
(6) 编译动态库:
cd lib
make shared
make ptshared (对于多核服务器)
cd ..
如果在 lib 下面出现libatlas.so, libcblas.so,libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so这6个动态库文件,则表示编译成功
(7) 安装ATLAS:make install
由于之前设置了--prefix=/.local 因此ATLAS将被安装到/.local/lib 中
(8) cp ./lib/*.so /.local/lib/.bashrc中添加 exportLD_LIBRARY_PATH=
(9) 设置环境变量:在/.local/lib:$LD_LIBRARY_PATH 并执行 source/.bashrc
step 5. 安装NumPy
(1) 解压 tar -xvzf numpy-1.7.1.tar.gz
(2) cd numpy-1.7.1
(3) 拷贝生成sit.cfg: cp site.cfg.examplesite.cfg
(4) 配置site.cfg:
1> 打开[DEFAULT],并设置 library_dirs 和include_dirs ,使得在编译的时候能够找到atlas库
library_dirs =/.local/lib/.local/include
include_dirs =
2> 打开[blas_opt],并设置libraries
libraries = ptf77blas,ptcblas, atlas
3> 打开[lapack_opt],并设置libraries
libraries = lapack,ptf77blas, ptcblas, atlas
ps:如果在ATLAS安装过程中,没有生成libptf77blas和libptcblas,则需要设置两个libraries为
libraries =f77blas, cblas, atlas
libraries =lapack, f77blas, cblas, atlas
(5) 利用python构建NumPy:python setup.pybuild
(6) 利用python安装NumPy:python setup.py install--prefix=/.local/.local/lib/python2.7/site-packages/numpy
(7) 安装完成后,NumPy被安装在
(8) 设置环境变量:在~/.bashrc中添加 exportPYTHONPATH=~/.local/lib/python2.7/site-packages:$PYTHONPATH 并执行source ~/.bashrc
step 6. 安装SicPy
(1) 解压: tar -xvzf scipy-0.12.0.tar.gz
(2) cd scipy-0.12.0
(3) 设置site.cfg:可以直接将NumPy的site.cfg拷贝到当前目录中
(4) 利用python构建SciPy:python setup.pybuild
(5) 利用python安装SciPy:python setup.py install--prefix=/.local/.local/lib/python2.7/site-packages/scipy
(6) 安装完成后,SciPy被安装在
step 7. 安装Theano
有了以上的准备后,安装Theano就是一个非常简单的过程了。直接利用python就可以完成安装:
(1) 解压:tar -xvzfTheano-0.6.0rc3.tar.gz
(2) cd Theano-0.6.0rc3
(3) python setup.py install--prefiex=/.local/.local/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg
(4) 安装完成后,SciPy被安装在
至此,完成了ATLAS NumPy SciPy Theano的python科学计算环境的搭建
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.