安装HPL、GotoBLAS2、openmpi
来源:互联网 发布:淘宝潮男店铺粉丝排行 编辑:程序博客网 时间:2024/05/21 11:37
安装HPL
Linpack(Linear Equations Package)背景
主要软件包:
hpl-2.1.tar.gz
GotoBLAS2-1.13.tar.gz
openmpi-1.6.5.tar.gz
(1)安装GOTOBLAS2
下载GotoBLAS2-1.13.tar.gz
(网址https://www.tacc.utexas.edu/tacc-projects/gotoblas2)
在文件当前目录下解压# tar -zxvf GotoBLAS2-1.13.tar.gz
进入
#cd GotoBLAS2
编译
#make CC=gcc BINARY=64 TARGET=NEHALEM
注:
可以使用
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq –c查看cpu的型号
intel的NEHALEM架构还是AMD的OPTERON
如果编译出现错误请先输入#gmake clean再重新开始
如果成功则显示类似如下图:
(2)安装openmpi
解压
tar -zxvf openmpi-1.6.5.tar.gz
系统配置
cd openmpi-1.6.5
./configure --prefix=/opt/openmpi-1.6.5
/opt/openmpi-1.6.5是安装路径
编译
make
安装
make install
设置辅助检索路径
超级用户:
vim /etc/profile
在适当位置修改和添加:
export PATH=/opt/openmpi-1.6.5/bin:$PATH
export INCLUDE=/opt/openmpi-1.6.5/include:$INCLUDE
export LD_LIBRARY_PATH=/opt/openmpi-1.6.5/lib:$LD_LIBRARY_PATH
若是普通用户则修改用户目录下的~/.bash_profile文件:运行以下命令使得修改生效:
source /etc/profile(或者source.bashrc)
(注意可通过命令$env |grep -w LD_LIBRARY_PATH 和$env |grep -w PATH来查看修改是否成功)
在安装时可能需要一些软件,可通过yum install **进行安装
例如
*** C++ compiler and preprocessor
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl.exe... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
checking how to run the C++ preprocessor... /lib/cpp
configure: error: in `/usr/hpl/openmpi-1.6.5':
configure: error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details
是由于没有编译器,可以网上查找软件的名称,然后安装,一下指令可以完成该编译器的安装(保证在能联网的状态下)[root@pc1 ~]# yum install gcc-c++
(3)安装HPL
在用户目录下解压
tar -zxvf hpl-2.1.tar.gz
cd hpl-2.1
根据机器的情况复制Makefile模板:
cp setup/Make.Linux_PII_CBLAS Make.Linux
vi Make.Linux
根据如下情况修改Make.Linux
ARCH = Linux
TOPdir = /home/用户目录 / hpl-2.1
MPdir = /home/用户目录/openmpi安装目录/ openmpi-1.6.5
MPinc = $(MPdir)/include
MPlib = -L$(MPdir)/lib
LAdir = usr/local/mathlib/goto/GotoBLAS2的安装目录
LAlib = $(LAdir)/ libgoto2_nehalemp-r1.13.a
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) -I$(LAinc) -I$(MPinc)
CC = /home/用户目录/openmpi的安装目录/bin/mpicc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
LINKER = 同CC
LINKFLAGS =同CCFLAGS
我自己的修改是:
ARCH = Linux
TOPdir = /home/chenyu/Desktop / hpl-2.1
MPdir =/opt/ openmpi-1.6.5
MPinc = -I$(MPdir)/include
MPlib = -L$(MPdir)/lib
LAdir = /home/chenyu/Desktop/GotoBLAS2
LAlib = $(LAdir)/ libgoto2_nehalemp-r1.13.a
HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) -I$(LAinc) -I$(MPinc)
CC = /opt/ openmpi-1.6.5/bin/mpicc
CCNOOPT = $(HPL_DEFS)
CCFLAGS = $(HPL_DEFS) -fomit-frame-pointer -O3 -funroll-loops
LINKER = /opt/ openmpi-1.6.5/bin/mpicc
LINKFLAGS =$(CCFLAGS)
因为我的hpl安装在桌面
我的GotoBLAS2也安装在桌面
CC的路径是查看了which mpicc
/opt/ openmpi-1.6.5/bin/mpicc
编译
在HPL的安装目录下运行
make arch=Linux
如果编译成功会在hpl的安装目录下的bin/linux目录下有HPL.dat和xhpl文件
如果失败,重新编译前加入make arch=Linux clean_arch_all
HPL运行
进入安装hpl的目录的/bin/Linux(即编译生成的文件)
cd /home/用户名/Desktop/hpl-2.1/bin/Linux (因为我安装在桌面)
准备节点文件(用来运行的计算机或者虚拟机的名称)
vi nodes
内容为:
slave1
master
slave2
之类的
如果是多个,则需要同时打开这些虚拟机
修改HPL.dat,设置运算规模和进程数
vi HPL.dat
HPLinpack benchmark input file //文件头,说明
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any) //如果使用文件保留输出结果,设定文件名
6 device out (6=stdout,7=stderr,file) //输出方式选择(stdout,stderr或文件)
2 # of problems sizes (N) //指出要计算的矩阵规格有几种
1960 2048Ns //每种规格分别的数值
2 # of NBs //指出使用几种不同的分块大小
60 80 NBs //分别指出每种大小的具体值
2 # of process grids (P x Q-l //指出用几种进程组合方式
2 4 Ps //每对PQ具体的值
2 1 Qs
16.0 threshold //余数的阈值
1 # of panel fact //用几种分解方法
1 PFACTs (0=left, 1=Crout, 2=Right) //具体用哪种,0 left,1 crout,2 right
1 # of recursive stopping criterium //几种停止递归的判断标准
4 NBMINs (>= 1) //具体的标准数值(须不小于1)
1 # of panels in recursion //递归中用几种分割法
2 NDIVs //这里用一种NDIV值为2,即每次递归分成两块
1 # of recursive panel fact. //用几种递归分解方法
2 RFACTs (0=left, 1=Crout, 2=Right) //这里每种都用到(左,右,crout分解)
1 # of broadcast //用几种广播方法
3 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) //指定具体哪种(有1-ring,1-ring Modified,2-ring,2ring Modified,Long以及long-Modified)
1 # of lookahead depth //用几种向前看的步数
1 DEPTHs (>=0) //具体步数值(须大于等于0)
2 SWAP (0=bin-exch,1=long,2=mix) //哪种交换算法(bin-exchange,long或者二者混合)
64 swapping threshold //采用混合的交换算法时使用的阈值
0 L1 in (0=transposed,1=no-transposed) form //L1是否用转置形式
0 U in (0=transposed,1=no-transposed) form //U是否用转置形式表示
1 Equilibration (0=no,1=yes) //是否采用平衡状态
8 memory alignment in double (> 0) //指出程序运行时内存分配中的采用的对齐方式
修改
运行
mpirun -np 最大进程数 -machinefile nodes xhpl
成功运行后出现类似如下图:
其中的一个性能测试值,规格为29,分块是4,P=1,Q=1,运行时间接近0,运算速度Gflops
- 安装HPL、GotoBLAS2、openmpi
- CBLAS/GotoBLAS2/MKL/CUDA HPL Configuration
- gotoblas2 安装编译方法
- 安装openmpi
- 安装OpenMPI
- openMPI安装
- 安装openmpi
- Openmpi安装
- openmpi安装
- OpenMPI 安装
- HPL测试程序安装
- OpenMPI学习笔记(一)之OpenMPI安装
- ubuntu下安装openMPI
- openmpi自动安装脚本
- fedora16安装openmpi
- [转载]安装openmpi
- ubuntu下安装openMPI
- 安装配置openmpi
- IOS 多线程编程指南_GCD
- 大数据入门:各种大数据技术介绍
- [Book Note] Haskell: Monoid
- solution Of 1098. Insertion or Heap Sort (25)
- APP事件表通用字段视图的实现
- 安装HPL、GotoBLAS2、openmpi
- gradle dsl method not found : 'android()'
- 抽象类
- java学习个人笔记---finally模块的陷阱
- IOS开发之自动布局显示网络请求内容
- linux 后台执行scp
- 【Java】new String(char value[]) valueOf(char data[])
- 搜索一·24点
- 开发者必备的十二大Android开发资源