ubuntu mpi?Ubuntu软件中心

老铁们,大家好,相信还有很多朋友对于ubuntu mpi和Ubuntu软件中心的相关问题不太懂,没关系,今天就由我来为大家分享分享ubuntu mpi以及Ubuntu软件中心的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

在Ubuntu上安装消息传递接口Open MPI库的教程

OpenMPI是一种高性能消息传递库,最初是作为融合的技术和资源从其他几个项目(FT- MPI, LA-MPI, LAM/MPI,以及 PACX-MPI),它是MPI-2标准的一个开源实现,由一些科研机构和企业一起开发和维护。因此,OpenMPI能够从高性能社区中获得专业技术、工业技术和资源支持,来创建最好的MPI库。OpenMPI提供给系统和软件供应商、程序开发者和研究人员很多便利。易于使用,并运行本身在各种各样的操作系统,网络互连,以及一批/调度系统。

Open MPI并不是LAM/MPI, LA-MPI和FT-MPI的简单组合,而是一种全新的MPI实现,其完全实现了MPI-1.2和MPI-2规约,并且完全支持并发和多线程应用(也就是MPI_THREAD_MULTIPLE)。

为了有效有效支持大范围的并行机,开发了高性能驱动程序,其中包括TCP/IP, shared memory, Myrinet, Quadrics, and Infiniband,更多的机器支持可能会基于用户、市场和研究需要而增加。对于网络传输错误,Open MPI提供了一种可选的特性来检测数据的完整性。通过使用报文分段和拆分到多个网络设计,Open MPI不仅可以达到可用带宽的最大值,而且当节点使用多台网络设备的时候,可以动态处理网络设备的数据丢失。

Open MPI的运行时环境提供了启动和管理并行应用的基本服务。

Ubuntu安装 OpenMPI

1.下载OpenMPI

在官网()上下载最新版本的安装包,如:openmpi-1.8.4.tar.gz

2.解压并进行配置

代码如下:

tar-zxvf openmpi-1.8.4.tar.gz

cd openmpi-1.8.4

./configure--prefix="/usr/local/openmpi"

注意最后一行是将其安装到/usr/local/openmpi目录下,可以指定为其他目录,如,用户目录下。

3. Build并安装

代码如下:

make

sudo make install

可以在make后加参数-j8,表示用8核编译

4.添加环境变量

在.bashrc文件中添加下列几行

代码如下:

export PATH="$PATH:/usr/local/openmpi/bin"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/openmpi/lib/"

保存后,执行

代码如下:

sudo ldconfig

打开新的终端,使环境变量生效。

5.测试是否安装成功

代码如下:

mpirun

其他

Open MPI使用简单C语言面向对象系统实现,使用基于单一继承和引用计数的retain/release内存管理模型。一个object由一个结构体和单一实例化的class标识符组成。结构体的首个元素一个是指定父类结构体的指针。

宏指令会对C++类似的语义(如new, construct, destruct, delete)产生影响。因为C++项目的丰富经验和某些平台编译方面的问题,使得在开发Open MPI使用了面向对象方法,而不是直接使用C++。

一旦构造,对象引用计数被设置为1。当对象retain,计数递增,当对象release,计数递减。当计数到达0,会运行对象的析构器并释放内存。

Ubuntu21.04+CMake+Modules切换运行OpenMPI库和MPICH库

在处理并行库在单一系统中的切换使用问题时,可以利用环境变量管理工具如Modules来实现。以下步骤展示了如何在Ubuntu 21.04系统中安装并调用不同版本的OpenMPI库和MPICH库。

首先,确保已安装了必要的编译工具和环境。接着,进行如下操作:

1.安装OpenMPI 4.1.1版本。

2.安装MPICH 4.0.a2版本。

安装完毕后,可通过执行`module avail`命令查看所有可加载的模块。

为了加载并使用OpenMPI 4.1.1,执行`module load eric/openmpi-4.1.1`。此命令会显示"loaded",表示模块已成功加载。随后,执行`cmake../`和`cmake--build.--parallel 4`以编译并行程序。使用`mpirun-np 2./mpi_prj`来运行使用OpenMPI的MPI程序。

接下来,为了测试MPICH,先清理当前环境,执行`module load eric/mpich-4.0.a2`以加载MPICH。然后,重复上述编译和运行步骤,实现使用MPICH的MPI程序。

通过上述步骤,可以在同一环境下实现对不同并行库的调用与管理。为了方便未来查询,将此类内容整理并记录。

ubuntu benchmark怎么进行测试

一、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

参考

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

从下载atlas

cd ATLAS

mkdir build

cd build

../configure

make

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

2.安装与编译Linpack:

第一步,从www.netlib.org/benchmark/hpl网站上下载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的配置说明:

其中几个重要的参数(必须针对集群环境修改)

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测试程序

阅读剩余
THE END