Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508744
  • 博文数量: 35
  • 博客积分: 3472
  • 博客等级: 中校
  • 技术积分: 935
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-04 06:54
文章分类
文章存档

2014年(4)

2013年(2)

2011年(3)

2010年(9)

2009年(9)

2008年(8)

分类: LINUX

2014-01-08 13:49:58

一、Linpack简介
Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。

Performance Linpack,也叫高度并行计算基准测试,它对数组大小N没有限制,求解问题的规模可以改变,除基本算法(计算量)不可改变外,可以采用其它任何优化方法。前两种测试运行规模较小,已不是很适合现代计算机的发展。
HPL 是针对现代并行计算机提出的测试方式。用户在不修改任意测试程序的基础上,可以调节问题规模大小(矩阵大小)、使用CPU数目、使用各种优化方法等等来执 行该测试程序,以获取最佳的性能。HPL采用高斯消元法求解线性方程组。求解问题规模为N时,浮点运算次数为(2/3 * N^3-2*N^2)。因此,只要给出问题规模N,测得系统计算时间T,峰值=计算量(2/3 * N^3-2*N^2)/计算时间T,测试结果以浮点运算每秒(Flops)给出。HPL测试结果是TOP500排名的重要依据。


二、Linpack安装与测试
1. Linpack安装条件:
在安装HPL之前,系统中必须已经安装了编译器、并行环境MPI以及基本线性代数子方程(BLAS)或矢量图形信号处理库(VSIPL)两者之一。

在Ubuntu下,使用apt-get安装gfortran,mpich2,每个计算节点都需要安装
安装完后,可先使用mpicc编译helloworld验证mpi集群是否工作正常

hpl linpack缺省配置是使用atlas的库,所以这里我们安装ATLAS
参考http://blog.sina.com.cn/s/blog_708532ea0100m8nt.html

根据atlas的安装文档, 首先要switch off cpu throttling.首先安装cpufrequtils和cpufreqd这两个包, 也许还要安装powernowd包

从下载atlas
cd ATLAS
mkdir build
cd build
../configure
make

编译没有问题的话会在lib目录下生成几个静态库


2. 安装与编译Linpack:
第一步,从 网站上下载HPL包hpl.tar.gz并解包

cd hpl-2.1
cp setup/Make.Linux_PII_CBLAS_gm Make.x86_64
vi Make.x86_64

修改下列配置:
ARCH         = x86_64
TOPdir       = $(HOME)/projects/hpl-2.1

LAdir        = $(HOME)/projects/ATLAS/build/lib
LAinc        =
LAlib        = $(LAdir)/libcblas.a $(LAdir)/libatlas.a

然后开始编译:
make arch=x86_64
如果出现符号找不到的问题,请检查LAlib的库的位置

cd bin/x86_64
在这个目录下生成了两个文件, HPL.dat是linpack计算的配置文件, xhpl是测试程序

这里有关于HPL.dat的配置说明:
http://blog.csdn.net/yosoqoo/article/details/3563349
其中几个重要的参数(必须针对集群环境修改)
1            # 表示只做一次计算,使用下面的第一个数
100000 30 34 35  Ns  #矩阵大小,为了测试性能,一般取N*N*8 ~ 内存总量,集群时考虑总内存量

1            # of NBs
192 2 3 4      NBs  #分块大小,经验值192
4 1 4        Ps  # PxQ 应该等于整个集群的进程数,一般等于cpu核数
16 4 1        Qs  # P 一般<=Q

如果是单机,可以运行mpiexec -n 64 ./xhpl来看一下是否工作正常。
对于集群,首先需要保证所有机器的可以相互使用ssh无密码登录(比如要从s1登录到s2,需要把s1上的.ssh/id_rsa.pub内容拷贝到s2的.ssh/authorized_keys里。
然后创建mpi_hosts文件,内容就是集群内各机器名称,每个机器一行。

在每个机器上,都需要有相同的用户,以及同样的hpl-2.1路径和文件HPL.data,xhpl程序

运行mpiexec -n 64 -f mpi_hosts, ./xhpl

注意:

1. 矩阵不能太小,要保证矩阵数据可以占用大量内存,运行时可以free来查看内存使用量,用top,然后按1来查看cpu每个核的使用情况

2. 节点间数据传输量比较大,应该使用万兆网络,否则网络会成为瓶颈。
3.本文只是为了验证,并不是为了优化benchmark。如果要达到更好的benchmark数值,应该使用优化的blas库,比如intel的mkl。intel的mkl本身就带了linpack测试程序










阅读(18469) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~