python科学计算环境配置_ATLAS + NumPy + SciPy + Theano 的Python科学计算环境搭建

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                http://www.netlib.org/blas/

lapack    3.2.2      lapack.tgz              http://www.netlib.org/lapack/#_previous_release

ATLAS      3.8.4      atlas3.8.4.tar.bz2      http://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  http://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的编译配置:mkdir atlas_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:对于ATLAS 3.10及以上版本,设置--with-netlib-lapack会出错,需要直接指定lapack的压缩包(--with-netlib-lapack-tarfile=),它在编译过程中会自动解压和编译lapack,最终生成的so文件也由之前的6个整合成两个。ATLAS 3.10以上版本对后续安装NumPy没有影响,但是在使用的时候会造成有些库文件找不到的现象。因此这里使用的是ATLAS 3.8.4版本。

step 3. 编译lapack

(1) 解压:tar -xvzf lapack.tgz

(2) cd lapack-3.2.2

(3) 拷贝生成make.inc: cp make.inc.example make.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

(9) 设置环境变量:在~/.bashrc中添加 export LD_LIBRARY_PATH=~/.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.example site.cfg

(4) 配置site.cfg:

1> 打开[DEFAULT],并设置 library_dirs 和 include_dirs ,使得在编译的时候能够找到atlas库

library_dirs = ~/.local/lib

include_dirs = ~/.local/include

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.py build

(6) 利用python安装NumPy:python setup.py install --prefix=~/.local

(7) 安装完成后,NumPy被安装在 ~/.local/lib/python2.7/site-packages/numpy

(8) 设置环境变量:在~/.bashrc中添加 export PYTHONPATH=~/.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.py build

(5) 利用python安装SciPy:python setup.py install --prefix=~/.local

(6) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/scipy

step 7. 安装Theano

有了以上的准备后,安装Theano就是一个非常简单的过程了。直接利用python就可以完成安装:

(1) 解压:tar -xvzf Theano-0.6.0rc3.tar.gz

(2) cd Theano-0.6.0rc3

(3) python setup.py install --prefiex=~/.local

(4) 安装完成后,SciPy被安装在 ~/.local/lib/python2.7/site-packages/Theano-0.6.0rc3-py2.7.egg

至此,完成了ATLAS + NumPy + SciPy + Theano的python科学计算环境的搭建

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

朋友圈有趣的灵魂都去哪了?这几个优质公号给你答案

全世界有3.14 % 的人已经关注了数据与算法之美又到每周限量推荐公众号的时间啦关注了那么多公众号,百无聊奈地看文章你是否觉得时间被浪费,生命被辜负了?在号的数量上做减法,质量上做加法接下来给大家推荐最近一直在阅读的几个优质…

Istio 1.10 发布及官网改版

本文译自 Istio 官方文档 [1],有部分修改。北京时间 5 月 19 日,我们很高兴地宣布 Istio 1.10 的发布!我们要特别感谢我们的发布经理 Sam Naser[2] 和 张之晗 [3],以及整个测试和发布工作组在 1.10 中的工作。这是我们 2021 年的第…

CSS各属性表

1、CSS 背景属性(Background) 属性描述CSSbackground在一个声明中设置所有的背景属性。1background-attachment设置背景图像是否固定或者随着页面的其余部分滚动。1background-color设置元素的背景颜色。1background-image设置元素的背景图像。1backgrou…

深入探讨编程到底需要知道多少数学知识

全世界只有3.14 % 的人关注了数据与算法之美这篇文章中我会深入探讨编程中所需要的数学知识。你可能已经都知道了。对于基本的编程,你需要知道下面的:加减乘除 — 实际上,电脑会帮你作加减乘除运算。你仅需要知道什么时候运用它们。模运算 —…

zabbix2.0安装与配置

一、zabbix服务端安装:官方下载:http://www.zabbix.com/download.php1.安装配置所需要软件(zabbix需要一个lamp环境)[rootlocalhost ~]# yum install httpd php php-devel php-gd php-bcmath php-mbstring mysql-devel mysql-serverphp-xml php-mysql gd…

BeetleX.FastHttpApi之控制器调度设计

为了可以更灵活地在Webapi应用服务中分配线程资源,BeetleX.FastHttpApi在线程调度上直接细化到Action级别;组件不仅可以精准控制每个Action的最大RPS限制,还能精细到控制使用多少线程资源来处理这些API的请求。接下来详细讲解组件针对这一块的…

Java类加载机制深度分析

为什么80%的码农都做不了架构师?>>> Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载&…

北大清华团队编写!200多个科学实验+视频,和爸爸一起在家做

自从2017年2月份教育部从小学一年级起将科学课列入必修课,学校、家长都意识到科学素养对于孩子成长的重要性。好多家长都跃跃欲试,想陪孩子把科学“玩”起来。可是具体到如何给孩子做科学启蒙,面对的问题还真不少:生活中有哪些科学…

如何搭建一个指标体系

2019独角兽企业重金招聘Python工程师标准>>> 今天跟大家聊聊,如何搭建一个指标体系。 1、什么是指标体系 “指标体系”这个概念是应用比较广泛的,我们从正式出版物中摘取一个定义: 指标体系,即统计指标体系&#xff0c…

2018年最后一个月最值得关注的13个优质公号

全世界有3.14 % 的人已经关注了数据与算法之美在这个知识千变万化的时代只有不断学习、充实自我,才能跟上时代以下13个顶级公众号能让你扩宽视野,紧跟时代的潮流近现代史研究通讯ID:jxsdyjtx2015▲长按二维码“识别”关注设置为星标近现代史研…

.NET Worker Service 如何优雅退出

上一篇文章中我们了解了 .NET Worker Service 的入门知识[1],今天我们接着介绍一下如何优雅地关闭和退出 Worker Service。Worker 类从上一篇文章中,我们已经知道了 Worker Service 模板为我们提供三个开箱即用的核心文件,其中 Worker 类是继…

大数据告诉你,中国女人有多勤奋

全世界只有3.14 % 的人关注了数据与算法之美前段时间,美国国家统计局发布了一组关于世界各国劳动参与率的数据,中国赫然位列世界第一,劳动总量世界第一,劳动参与率世界第一。所谓劳动总量,就是所有工作的人的工作时间的…

get+php+mysql_Apache+PHP+MySql 的安装及配置

每一项技术用的人多了,就会有人将其进行优化,做成一个简单、实用、大众化的工具,这对于初识者来说是非常方便的,但是对于长久学习或工作这方面的人技术人员来说是不可取的,所以还是要学习基础的实用方法。因此&#xf…

记一次 .NET 车联网云端服务 CPU爆高分析

一:背景 1. 讲故事前几天有位朋友wx求助,它的程序CPU经常飙满,没找到原因,希望帮忙看一下。这些天连续接到几个cpu爆高的dump,都看烦了????????????,希望后面再来几个其他方面的dump&#xff0…

java swing 示例_JAVA简单Swing图形界面应用演示样例

JAVA简单Swing图形界面应用演示样例package org.rui.hello;import javax.swing.JFrame;/*** 简单的swing窗体* author lenovo**/public class HelloSwing {public static void main(String[] args) {JFrame framenew JFrame("hello Swing");frame.setDefaultCloseOpe…

.NET上海社区线下Meetup - 5.22 Blazor Day

Blazor 是一个 Web UI 框架,Blazor 旨在简化快速的单页面 .Net 浏览器应用的构建过程,它虽然使用了诸如 CSS 和 HTML 之类的 Web 技术,但它使用 C#语言和 Razor 语法代替 JavaScript 来构建可组合的 Web UI 。通过提供用于编译到 …

入门机器学习,开启人工智能大门!

AI这个词相信大家都非常熟悉,近几年来人工智能圈子格外热闹,光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域,Python已经成为了主流。一方面因为这门语言简单易上手&#x…

java集合框架的结构_集合框架(Collections Framework)详解及代码示例

简介集合和数组的区别:数组存储基础数据类型,且每一个数组都只能存储一种数据类型的数据,空间不可变。集合存储对象,一个集合中可以存储多种类型的对象。空间可变。严格地说,集合是存储对象的引用,每个对象…

Unity3D OpenVR 虚拟现实 保龄球打砖块游戏开发

据说水哥买了 Valve Index 设备,既然这个设备这么贵,不开发点有(zhi)趣(zhang)游戏就感觉对不起这个设备。本文将来开始着手开发一个可玩性不大,观赏性极强的保龄球打砖块游戏。这仅仅只是一个入…

mac mysql 移动硬盘_MAC一些高能过程记录(一些没必要的坑)

搞计算机的,谁电脑上没个数据库,不管用不用的着,有时候总需要,比如调试下博客呀之类的, 毕竟一般都会觉得数据库很好玩啊1.MySql安装:dmg、pkg什么的直接装吧,结束后会给你一个提示,上面会有密…