安装ALTAS,LAPACK, SCALAPACK, MUMPS记录 (2)

 
这次开始安装ATLAS和LAPACK的组合,先做出这个串行版本的,下次装BLACS和ScaLAPACK的并行版本。开

一。 BLAS,ATLAS 与 LAPACK

BLAS(Basic Linear Algebra Subroutines, )是做数值计算最重要的数学函数库,包含3个Level的线性代数运算,都是以Fortran语言写的高效率程序。BLAS Level 1-3 分别是 向量-向量运算,矩阵-向量运算和矩阵-矩阵运算,从计算复杂度O(n) 向 O(n^3)过渡。
官方的网站是 http://www.netlib.org/blas/ 从这里可以下载到最原始的BLAS(F77写的,只有FORTRAN接口的,不过后续也出了C接口的)还有些相关文档。一般你得到的是所有3个Level的函数源码,*.f, 包里面含有Makefile,安装上正确的 fortran编译器即可编译出自己的BLAS库(将源码编译成目标文件 *.o 然后用ar打包到 libblas.a),作为静态库供人使用。当然你也可以编译出共享库 (shared library). 
当然除了普通版本的BLAS更有针对你的机器做优化版本的BLAS,那就是ATLAS(Automatically Tuend Linear Algebra Subprograms),官方网站是 http://math-atlas.sourceforge.net/,当然要针对你的机器和平台进行优化,编译出结果的速度也就会相对慢一些。
LAPACK (Linear Algebra PACKage) 是在BLAS 基础上做出来的,针对线性代数方程组,线性最小二乘问题和矩阵特征值问题求解的软件包,也是用F77写的,LAPACK一般来说是没有官方做的C-API的。
LAPACK提供的一些函数也按功能分类,它的分类是按照函数功能的粒度来的,最高层是 driver routines 是求解具体问题的函数, 中间层是 computional routines 是在具体求解过程中需要用到的一些基本的矩阵变换,矩阵分解等操作,最底层是 auxiliary routines这些都是给上两层提供辅助的函数。
LAPACK里面用的BLAS的线性代数运算去整合它的求解。所以官方文档的最开始就说明了,LAPACK包里面虽然包括了一份最普通版本的BLAS,你可以编译,但如果有更高效的BLAS,要首先使用之。所以我们在这里就必须先安装ATLAS了。

二 。安装ATLAS, LAPACK
对于这两个包的安装,说白了就是将源代码编译成目标文件,或是组合成静态库,或是在编译的时候就编译成动态版本的,再组合成共享库。一般共享库使用的较多,默认安装ATLAS是 会编译成静态库的,指定选项的得到动态库。我试过现在的最新版本ATLAS(3.10.0)和LAPACK(3.4.3)的组合,安装虽然生成了两个共享库文件,但是再装之后的软件时可能会带来麻烦(这个可以放到最后再说)。正常安装的版本,我选的是 ATLAS(3.8.4)和LAPACK(3.1.1),生成标准的6个共享库文件,并测试通过。
由于ATLAS的安装包里面,提供了BLAS和普通版本,也有C的全部API接口,同时也包含了少部分的LAPACK函数的C-API接口,如果只用C-API仅仅用这个包就行了。不过很多LAPACK的函数是没有的,这就必须在找一份完整的LAPACK,与之同时安装,调用时候用Fortran的接口。
安装过程无外乎如下几个步骤:
1。 解压 ATLAS和LAPACK 的包到你方便操作的目录下
2。进入ATLAS目录,新建一个BUILD的子目录(也可以是任何其他地方的目录,提供给Build的时候用,只要不是跟ATLAS的源码目录相同即可)
3.  进入Build目录,进行configure 并指定一些相关的选项(包括编译器,编译选项还有系统相关的)
4. make build 
5. 做个有责任心的人的话,make check, make ptcheck, make time,保证没有报错的情况下,就可以安装生成的库文件到你的库目录了。
这里比较麻烦的有如下几点。
1. 安装ATLAS之前,要先安装一遍LAPACK! 有人肯定要问,我装ATLAS就是为了给LAPACK提供一个高效的BLAS,这又是为神码?
安装ATLAS其实是同时把LAPACK也给一起编译了,但是ATLAS里面没有完整的LAPACK,你就必须给ATLAS提供一个完整的LAPACK程序包。怎么提供呢,就是把LAPACK的 lapack_LINUX.a 提供给它,这就必须先编译一次LAPACK。
2. 编译LAPACK与ATLAS要用相同的编译器和编译选项
ATLAS是有赖机器及OS平台的,所以编译选项最好还是让它自己去找最优的,人为指定难免出错。LAPACK与ATLAS用相同的选项,这只能从ATLAS上取得。
先在给ATLAS BUILD目录同级建一个tmp目录,作为临时build目录,进去 configure 一下,吧跟LAPACK无关的选项都别带上,会在 tmp 下生成一个 make.inc, 里面就包含有ATLAS的 F77 和 F77FLAGS,copy到 LAPACK这边的make.inc中,指定给 FORTRAN和OPTS就可以了。
3. configure ATLAS时候的必要选项 
../configure -b 32 -D c -DPentiumCPS=2826 -Fa alg -fPIC
这些对提取F77和F77FLAGS的值够用了。-b 指定编译出库的类型(32位库还是64位库), -D c -DPentiumCPS是指定你的CPU的时钟频率,可以功过 grep MHz /proc/cpuinfo 得到。 要得到动态的共享库,就必须加上 -Fa alg -fPIC 编译选项,得到与位置无关的代码。
另外在编译好 LAPACK 之后,到 ATLAS/BUILD/ 下 configure 时再附加上 --prefix=xxx 和 --with-netlib-lapack=xxx/lapack_LINUX.a 就完整了 
其他一些编译选项,则可以 ../configure --help 查看,活在是去看官方的安装文档
4. make build 和一系列的测试之后,可以进入到 BUILD/lib 看到生成了静态库, *.a 未有 *.so出现,再次 make shared, make ptshared, 得到如下六个库文件,大工告成!
libatlas.so  libcblas.so  libf77blas.so  liblapack.so  libptcblas.so  libptf77blas.so
在 3.10.0 的 ATLAS 中没有了 --with-netlib-lapack指定lapack_LINUX.a 只需要 --with-netlib-lapack-tarfile,给出下载的包就行,不需要自己在去编译 LAPACK了。但是最后生成的 库文件也给整合了,不是上面的6个,而是两个 
libsatals.so libtatlas.so, 去 BUILD/lib 里面查看 Makefile, 可以看到确实被整合了的。为了依其上的软件能更通用,又不想自己去改Makefile的内容,就用老版本的组合了。
参考:
LAPACK 上的安装说明,ATLAS的安装手册(ATLAS./doc/atlas_install.pdf)

ALTAS,LAPACK, SCALAPACK, MUMPS记录相关推荐

  1. BLAS+BLACS+LAPACK+SCALAPACK安装

    最快的安装是用下面的scalapack_installer,它将自动联网安装SCALAPACK以及所需要的BLAS, BLACS,LAPACK. 下面是简短说明: INTRODUCTION The S ...

  2. openmpi参数_使用gfortan,openmpi以及BLAS, BLACS, Lapack, Scalapack编译SIESTA - 第一原理 - 小木虫 - 学术 科研 互动社区...

    1.编译openmpi (http://www.open-mpi.org/software/ompi/v1.6/) (1) ./configure --prefix=/home/x_guazh/sof ...

  3. 2021年图灵奖公布!72岁的美国科学家 Jack Dongarra 获奖

    刚刚,2021年计算机领域的最高奖项--图灵奖公布!美国计算机科学家 Jack J. Dongarra 获奖,以表彰他在高性能计算领域的卓越成就. >>>> 根据 ACM 的介 ...

  4. 多旋翼无人机ROSC++开发例程(一):环境配置

    文章目录 前言 1.ROS环境配置 2.串口绑定 3.添加开机启动项 4.Casadi环境配置 前言 作为一名无人机飞控方向的研究生,这几年在学习了许多大佬的开源项目和博客后进行了多旋翼无人机机载计算 ...

  5. Jack Dongarra/杰克 多加拉

    英文名:Jack Dongarra 中文名:杰克 多加拉 主   页:http://www.netlib.org/utk/people/JackDongarra/index.html 领   域:高性 ...

  6. VASP 5.4.4 保姆级安装全过程 (附带vaspkit)

    1. 准备好安装包 VASP 5.4.4 2. VASP安装前的准备   Install GNU Compiler sudo apt-get install make build-essential ...

  7. Ubuntu 20.04 安装CppAD 与 Ipopt 3.13.2避坑指南

    前言 前几天刚在Ubuntu 18.04下装完CppAD跟Ipopt 3.12.7,搞显卡驱动把整个电脑都搞崩了,现在换了Ubuntu 20.04.(以为N卡驱动可以没问题了,结果还是有问题..) 这 ...

  8. SIESTA安装——材料计算入门指引

    一览 前言 CentOS 7 下SIESTA的安装配置 gcc的安装 安装gcc依赖库文件 INSTALL GCC 并行计算库OpenMPI的安装 数学库编译及安装SIESTA 手动编译 安装BLAS ...

  9. ubuntu安装非线性优化器Ipopt

    ubuntu安装非线性优化器Ipopt Install CPPAD & Fortran sudo apt-get install cppad gfortran Get ipopt source ...

最新文章

  1. PTA基础编程题目集-6-9 统计个位数字
  2. 【精辟】人工智能先锋人物杰夫·辛顿说:“深度学习将无所不能”
  3. 47. Permutations II
  4. c++读取文件内容并保存到二维数组
  5. eclipse + maven搭建SSM框架
  6. 第三篇 :Mysql存储引擎、数据导入导出、管理表记录、匹配条件
  7. EE JSP:使用自定义标签库生成动态内容
  8. Java导入sql失败_java – 在hibernate中导入import.sql失败
  9. 2018-5-22-Python全栈开发day9-Python开发课程简介part2
  10. 2018焦作网络赛 - Poor God Water 一道水题的教训
  11. r roc函数_如何处理R(pROC包)中的多类ROC分析?
  12. 模糊的边界:内存和存储以全新方式融合
  13. [转载] Python字典按照keys排序输出为列表
  14. igs无法分配驱动器映射表_左神算法基础:哈希函数和哈希表
  15. 【Axure组件库】Axure移动端小程序组件库 移动端高交互元件库
  16. 微信小程序的点击、双击、长按事件
  17. cad中直径符号不显示_你知道在CAD制图软件中如何输入公差/直径符号吗?CAD入门学习技巧!...
  18. 2022-2028年中国高尔夫行业市场现状分析及投资前景评估报告
  19. SPJ数据库—初识sql语句(02)(注释版)
  20. 什么是数据库索引,索引有什么作用

热门文章

  1. 计算机的数学知识的手抄报图片大全,数学手抄报图片大全获奖作品
  2. 【Matlab数字识别】数字仪表图像识别【含源码 693期】
  3. 为什么阿里巴巴规定禁止超过三张表 join
  4. app运营,如何提高用户的参与度?
  5. python输入一个三位数、输出它的逆序数_从键盘任意输入一个3位整数
  6. 点集拓扑——基本知识点整理归纳
  7. 欢迎使用CSDN-markdown编辑器额企鹅去恶趣味
  8. VS2019+OpenCV4.5 鱼眼相机图像畸变矫正
  9. 《西游记》中师徒四人的形象探究及现实意义
  10. 谷胱甘肽修饰CdTe/CdS量子点(GSH-CdTe/CdSQDs);溶菌酶(Lyz)修饰Ag2S量子点(Lyz-Ag2S QDs)齐岳定制服务