当前位置:文档之家› MPICH2的linux下多台主机高性能计算

MPICH2的linux下多台主机高性能计算

MPICH2的linux下多台主机高性能计算
MPICH2的linux下多台主机高性能计算

MPICH2的linux下安装及其实现多台主机高性能计算

上课提交实验需要,做MPICH的安装及其实现多台主机高性能计算。实验不难,经过一天的时间终于成功实现,特记录下全过程供有需要的人参考。

一、实验目的:

1、了解建设高性能计算机集群系统的过程;

2、熟悉利用MPICH搭建高性能计算机的方法。

二、实验环境:

软件环境: MPICH版本:mpich2-1.4.1p1.tar.gz

操作系统版本:CentOS5.5

硬件环境:三台主机

三、实验步骤:

(一) 集群网络环境介绍

1、本实验的集群网络环境包含三个节点:

一个主节点namenode,本实验的主节点为njrhero;

两个从节点datanode,本实验的从节点为njr和njrhero1。

2、各节点之间用局域网连接,相互之间可以ping通。

3、三个节点均运行在CentOS系统上,且都以root用户登录系统。

(二) SSH无密码验证配置

利用MPICH搭建并行高性能计算环境需要使用SSH协议,SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

SSH配置成功后,namenode可以使用SSH无密钥登陆并启动datanode进程,同样,在datanode上也可以用SSH无密钥登陆到namenode,datanode之间也可以实现无密钥登陆。也可以在datanode上启动或关闭MPICH。

注意:CentOS5.5 在安装完毕后,默认启动sshd服务,可以在“系统”->“管理”->“服务”中查看sshd服务是否启动。如果系统中没有安装sshd服务,则执行命令sudo yum install ssh来安装,还要安装远程数据同步工具rsync,可通过LAN/WAN快速同步多台主机间的文件,执行命令sudo yum install rsync 即可。

namenode 作为客户端,要实现无密钥验证,连接到服务端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,然后将公钥复制到datanode上。当namenode通过SSH链接datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。namenode收到加密数据之后再用私钥解密,并将解密数据回传给datanode,datanode确认解密数无误后,就允许namenode进行无密钥验证链接了。这就是公钥认证过程,期间不需要用户手工输入密码。其中关键过程是将客户端namenode的公钥复制到服务端datanode上。

SSH的配置过程如下:

1、安装和启动SSH

在三台机器上均执行以下命令:

#sudo yum install ssh (若已经安装可省略此步骤)

#sudo yum install rsync

#ssh sudo /etc/init.d/ssh restart 启动服务(也可重启虚拟机)

2、在三台机器的/etc/hosts文件中添加所有节点名和相应的IP 地址,添

加内容如下:

59.64.139.63 njrhero

59.64.138.38 njr

59.64.138.160 njrhero1

3、配置各节点的无密钥验证登陆

为实现集群网络环境中的各节点都可作为namenode节点,本实验在三台机器上均做了相同的namenode配置。

1)在root目录下生成密钥对

namenode和datanode均进入root目录下执行以下命令,每个节点都会生成一个.ssh目录,

【root@njrhero ~】#ssh-keygen –t rsa

回车将出现以下代码,

Generating public/private rsa key pair.

Enter file in which to save the key (root/.ssh/id_rsa):

一路回车就可以了。产生密钥成功后将出现:

Your identification has been saved in root/.ssh/id_rsa.

Your public key has been saved in root/.ssh/id_rsa.pub.

进入到.ssh目录

【root@njrhero .ssh】#ls –al

可以看到以下三个文件(分别代表私钥,公钥,已知主机):

id-rsa id_rsa.pub known_hosts

2)在每个节点的.ssh目录下新建authorized_keys文件:【root@njrhero .ssh】#touch authorized_keys

注意:此时在各个节点执行:ssh 节点主机名,这样系统就可以记住该用户,用户以后在自己主机上执行此命令就不再需要输入密码了。

3)将每个节点的公钥用scp命令(安全拷贝)传送到另外两个节点:主机njrhero执行如下命令:

【root@njrhero .ssh】# scp –r

id_rsa.pub root@njr:~/.ssh/pubkey_njrhero

【root@njrhero .ssh】# scp –r

id_rsa.pub root@njrhero1:~/.ssh/pubkey_njrhero

这样,就可以将njrhero上生成的密钥传到主机njr和njrhero1的root用户下,并重命名为pubkey_njrhero。

主机njr执行如下命令:

【root@njr .ssh】# scp –r id_rsa.pub root@njrhero:~/.ssh/pubkey_njr 【root@njr .ssh】# scp –r

id_rsa.pub root@njrhero1:~/.ssh/pubkey_njr

主机njrhero1执行如下命令:

【root@njrhero1 .ssh】# scp –r

id_rsa.pub root@njrhero:~/.ssh/pubkey_njrhero1

【root@njrhero1 .ssh】# scp –r

id_rsa.pub root@njr:~/.ssh/pubkey_njrhero1

4)在每个节点的.ssh目录下,将另外两个节点传过来的公钥文件的内容复制到本目录下的authorized_keys文件中,并将authorized_keys文件的权限改为600。

主机njrhero执行命令:

【root@njrhero .ssh】#cat pubkey_njr >> authorized_keys

【root@njrhero .ssh】#cat pubkey_yenjrhero1 >> authorized_keys

【root@njrhero .ssh】#cat id_rsa.pub >> authorized_keys

(注意:此步很重要,方便主机可以无密钥登陆本主机)

【root@njrhero .ssh】#chmod 600 authorize_keys

主机njr执行命令:

【root@njr .ssh】# cat pubkey_njrhero >> authorized_keys

【root@njr .ssh】# cat pubkey_yenjrhero1 >> authorized_keys 【root@njr .ssh】# cat id_rsa.pub >> authorized_keys

【root@njr .ssh】# chmod 600 authorize_keys

主机njrhero1执行命令:

【root@njrhero1 .ssh】#cat pubkey_njrhero >> authorized_keys 【root@njrhero1 .ssh】#cat pubkey_njr >> authorized_keys

【root@njrhero1 .ssh】#cat id_rsa.pub >> authorized_keys

【root@njrhero1 .ssh】#chmod 600 authorize_keys

至此,SSH配置完毕,三个节点可以使用SSH无密钥相互访问。

在主机njrhero上执行如下命令进行测试:

【root@njrhero .ssh】#ssh njr

【root@njrhero .ssh】#ssh njrhero1

若可以成功登陆到njr、njrhero1两台主机上,则证明SSH无密钥成功配置。

三) 安装MPICH2

在每台机器上安装MPICH2软件。

1、解压缩软件包

#tar –zxvf mpich2-1.4.1p1.tar.gz

2、创建安装目录

#mkdir /usr/MPICH -install

3、进入mpich2解压目录

#cd mpich2-1.4.1p1

4、设置安装目录

#./configure –prefix=/usr/MPICH-install

5、编译

#make

6、安装

#make install

7、退出到root目录

#cd ..

8、通过编辑.bashrc文件修改环境变量

#vi .bashrc

修改后的.bashrc文件如下:

# .bashrc

# User specific aliases and functions

PATH="$PATH:/usr/MPICH-install/bin"

执行.bashrc文件使设置生效:

#source .bashrc

9、测试环境变量设置

#which mpicc

#which mpiexec

#which mpirun

10、创建主机名称集合文件(用于启动集群时用)

#vi machinefile

内容为:

njrhero

njr

njrhero1

(四) 测试

本实验选用MPICH压缩包中自带的程序:cpip.c来对集群环境进行测试。先在njr主机的/home/test文件夹下对cpi.c源文件进行编译:

[root@njr test]#mpicc cpip.c -o cpip

执行完后可以生成cpip可执行文件。

在不采用集群环境的情况下,只在机器njr上运行程序的结果如图一所示:

在集群环境下测试,注意:本实验是将源文件cpip.c放在各台主机的/home/test文件夹下,并要求各主机都进行编译。请务必要求三台主机都有相同的路径,即test文件夹路径都一样,且内容也一样,主要包括:machinefile,cpip.c源文件。连接三台机器时运行程序的结果如图二所示:

显然,图示结果表明,本实验搭建的MPICH集群环境可以运行,但由于选作测试的程序相对来说很简单,所以在此没能体现出高性能计算机在计算上的高效性,如果采用相对复杂的计算程序,则高性能计算机集群系统的高效性将得到很好的体现。

LINUX中限制CPU和内存占用率方法

查看cpu占用 在命令行中输入 top 即可启动 top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。 使用top查看系统负荷 top命令可以动态监视系统负荷,包括CPU、内存的使用率和占用资源较多的进程详情等。 动态查看系统负荷(占用一个终端) top 显示后退出 top -n 1 以文本方式输出,以备其它程序使用 top -b 好了,我们现在来看限制CPU和内存占用率方法 脚本内容: 代码如下 #!/bin/sh UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 20 || $10 ; 25 && id -u $2 ; 500) print $1}'` for PID in $UPID do renice +10 $PID echo renice +10 $PID done

我对上面的脚本进行了修改,可以让其针对整个服务器的进程进行限制. 修改后的脚本: 代码如下 #!/bin/sh UPID=`top -bn 1 | grep ^ *[1-9] | awk '{ if($9 ; 50 || $10 ; 25 ) print $1}'` for PID in $UPID do renice +10 $PID echo renice +10 $PID done 可以将这个脚本放到cron中运行,让其每分钟检查一次: 代码如下 chmod +x limit.sh vi /etc/crontab */1 * * * * /bin/sh /root/soft_shell/limit.sh

并行计算1

并行计算 实 验 报 告 学院名称计算机科学与技术学院专业计算机科学与技术 学生姓名 学号 年班级 2016年5 月20 日

一、实验内容 本次试验的主要内容为采用多线程的方法计算pi的值,熟悉linux下pthread 形式的多线程编程,对实验结果进行统计并分析以及加速比曲线分析,从而对并行计算有初步了解。 二、实验原理 本次实验利用中值积分定理计算pi的值 图1 中值定理计算pi 其中公式可以变换如下: 图2 积分计算pi公式的变形 当N足够大时,可以足够逼近pi,多线程的计算方法主要通过将for循环的计算过程分到几个线程中去,每次计算都要更新sum的值,为避免一个线程更新sum 值后,另一个线程仍读到旧的值,所以每个线程计算自己的部分,最后相加。三、程序流程图 程序主体部分流程图如下:

多线程执行函数流程图如下: 四、实验结果及分析

令线程数分别为1、2、5、10、20、30、40、50和100,并且对于每次实验重复十次求平均值。结果如下: 图5 时间随线程的变化 实验加速比曲线的计算公式类似于 结果如下: 图5 加速比曲线 实验结果与预期类似,当线程总数较少时,线程数的增多会对程序计算速度带来明显的提升,当线程总数增大到足够大时,由于物理节点的核心数是有限的,因此会给cpu带来较多的调度,线程的切换和最后结果的汇总带来的时间开销较大,所以线程数较大时,增加线程数不会带来明显的速度提升,甚至可能下降。 五、实验总结

本次试验的主要内容是多线程计算pi的实现,通过这次实验,我对并行计算有了进一步的理解。上学期的操作系统课程中,已经做过相似的题目,因此程序主体部分相似。不同的地方在于,首先本程序按照老师要求应在命令行提供参数,而非将数值写定在程序里,其次是程序不是在自己的电脑上运行,而是通过ssh和批处理脚本等登录到远程服务器提交任务执行。 在运行方面,因为对批处理任务不够熟悉,出现了提交任务无结果的情况,原因在于windows系统要采用换行的方式来表明结束。在实验过程中也遇到了其他问题,大多还是来自于经验的缺乏。 在分析实验结果方面,因为自己是第一次分析多线程程序的加速比,因此比较生疏,参考网上资料和ppt后分析得出结果。 从自己遇到的问题来看,自己对批处理的理解和认识还比较有限,经过本次实验,我对并行计算的理解有了进一步的提高,也意识到了自己存在的一些问题。 六、程序代码及部署 程序源代码见cpp文件 部署说明: 使用gcc编译即可,编译时加上-pthread参数,运行时任务提交到服务器上。 编译命令如下: gcc -pthread PI_3013216011.cpp -o pi pbs脚本(runPI.pbs)如下: #!/bin/bash #PBS -N pi #PBS -l nodes=1:ppn=8 #PBS -q AM016_queue #PBS -j oe cd $PBS_O_WORKDIR for ((i=1;i<=10;i++)) do ./pi num_threads N >> runPI.log

如何在超算中心使用fluent做并行计算——入门

现在国内的开放式机群环境越来越多,许多都部署了fluent(大好事),不过还是有许多人不太清楚如何利用这些有用的资源。这里结合我所在单位的情况做一个简单的介绍,其他的机群环境大同小异。 1、什么是机群?有什么特点? 机群又叫集群,当然就是许多的计算机(废话),因为机器太多 了,又需要协同工作,所以需要按照一定的方式来管理,管理 的结构形式叫做拓扑(这个不用管)。机群使用的电脑是刀片(又 薄又长的机箱)形式(为了便于插入机柜),一个刀片一般称为 一个节点。 一般而言,机群会分为三种节点:管理节点(若干台),编译节 点(若干台),计算节点(其余全部)。这三种节点的配置略有 不同(废话),管理节点主要用来存储使用机群的用户的信息,如名字,密码,可以使用机器数的权限,用户状态等等;编译 节点一般用来预查程序故障,用户的程序先在这里试运行,查 看是否与系统兼容等;计算节点用来直接计算其他节点提供来 的程序。 就配置而言,管理节点和编译节点一般相同,会部署软件环境; 计算节点只会部署简单的必要运行文件。计算机点之间会采用 高速交换机,速度可达几十GB/s,如IB等;计算节点与编译、登陆节点之间采用普通的万兆交换机。 2、如何使用机群? 机群中一般采用linux操作系统来操作(多用户情况下效率高),

用户会通过远程登录软件(如xshell)来登录到登陆节点进行个 人的操作(一般会通过VPN网络加密数据传输)。 Linux集群将程序任务分解发送到计算节点上时,是通过LSF作 业调度系统(也有其他的,如PBS等)来实现的,这个系统的 作用是使整个机群负载均衡,便于管理,所以我们使用fluent 也要通过这个系统。在成熟的集群中,用户登录之后,默认便 可以使用作业调度系统了。使用时,除了常见的linux命令以外,调度系统也有一些简单的命令,这个一般会有手册介绍,常用 的就3、5个,很好记。 3、如何在集群中使用fluent? 因为fluent是成熟的封装好的商业软件,所以用户直接使用命 令调用即可。 但是因为大部分的linux下的远程登录是不支持图形界面的,所 以我们看不到在windows下的熟悉界面,无法进行操作。其实, fluent最早也是linux下的软件,它提供了一种jou脚本来操作 各种命令(即帮助中的TUI命令),我们在windows的图形界面 中,也可以在控制台窗口中查看如何使用。这样,我们在启动 fluent软件时,指定它的jou执行脚本即可使软件按照我们的意 图来进行操作了。如果在帮助中找太慢,可以在windows的 fluent图形界面下,右下角控制台中用回车键显示文字命令,q 键返回。 4、实例

Linux下使用cpulimit限制进程的cpu使用率

Linux下使用cpulimit限制进程的cpu使用率 很用Linux时可能大家经常发现莫名其妙就变的非常慢,这时多半是后台进程使用的cpu和内存太多了。如何限制每个进程的cpu使用资源呢? 可以使用cpulimit限制每个进程的cpu使用率,使用率用百分百来表示。 安装cpulimit 使用源码安装 # cd /tmp # wget '网址http://' 网址:https://www.doczj.com/doc/22233116.html,/cpulimit/cpulimit-1.1.tar.gz # tar cpulimit-1.1.tar.gz # cd cpulimit-1.1 # make # cp cpulimit /usr/local/sbin/ # rm -rf cpulimit* Debian / Ubuntu 用户 使用apt-get更方便的安装 $ sudo apt - get update $ sudo apt - get install cpulimit 如何使用cpulimit? 限制firefox使用30% cpu利用率 # cpulimit -e firefox -l 30 限制进程号1313的程序使用30% cpu利用率 # cpulimit -p 1313 -l 30 根据进程名找出pid的方法 # ps aux | less # ps aux | grep firefox # pgrep -u vivek php-cgi # pgrep lighttpd 可以使用绝对路径限制进程的cpu利用率 # cpulimit -P /opt/firefox/firebox -l 30 单核cpu和多核cpu 单核cpu的使用率范围为0%-100%,四核cpu的使用率范围为0%-400%.

windows 系统下启动linux主机群的fluent并行操作

windows 系统下启动linux主机群的fluent并行操作 第一步,首先在linux系统下安装好fluent,包括更改环境变量,操作如下: ANSYS 12.0产品的linux安装方法 1.将ANSYS 12.0 安装光盘放进光驱,后,系统会自动Mount,但是这个Mount指定的参数可能不对,则需要执行以下命令: 1.mkdir dvdrom_dir (在根目录下) 2.mount -t iso9660 /dev/cdrom dvdrom_dir 3.cd dvdrom_dir 4../INSTALL (直接运行命令INSTALL即可) 2. 出现下图请选择“I AGREE ”并单击“Next” 3 出现下图请选择对应的操作系统,并单击“ Next” 4. 出现下图,请在“Install directory:” 里写入安装的路径,或者单击“Browse”选择,这里就使用默认路径了

5.出现下图,请选择要安装的产品 6. 出现下图,请单击“Next” 7.出现下图,请选择“Next”

8.出现下图,请选择Next 9. 出现下图证明安装正在进行 10.出现下图证明产品安装完毕,请单击“ Next” 11. 出现下图,请单击“Exit” 12. 出现下图,产品安装完毕,请单击“Next”

13.弹出以下窗口,配置服务器相关信息 请在hostname1下面输入服务器主机名,如“server”,并单击OK。如果碰到无法输入的情况,这时直接点击cancel。再进入ansys的安装目录, ../ansys_inc/shared_files/licensing下,编辑文件ansyslmd.ini,内容为: SERVER=1055@hostname ANSYSLI_SERVERS=2325@hostname 注意:大小写一致。

linux c程序获取cpu使用率及内存使用情况

想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了。方法就是读取proc下的文件来获取了。cpu使用率:/proc/stat ,内存使用情 况:/proc/meminfo 看程序: /*************************************************************** * @file: statusinfo.c * * @brief: 从linux系统获取cpu及内存使用情况 * * @version 1.0 * * @author 抹黑 * * @date 2009年3月17日 * ***************************************************************/ typedef struct PACKED //定义一个cpu occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned int user; //定义一个无符号的int类型的user unsigned int nice; //定义一个无符号的int类型的nice unsigned int system;//定义一个无符号的int类型的system unsigned int idle; //定义一个无符号的int类型的idle }CPU_OCCUPY; typedef struct PACKED //定义一个mem occupy的结构体 { char name[20]; //定义一个char类型的数组名name有20个元素 unsigned long total; char name2[20]; unsigned long free; }MEM_OCCUPY; get_memoccupy (MEM_OCCUPY *mem) //对无类型get函数含有一个形参结构体类弄的指针O

并行计算第一次实验报告

并行计算上机实验报告题目:多线程计算Pi值 学生姓名 学院名称计算机学院 专业计算机科学与技术时间

一. 实验目的 1、掌握集群任务提交方式; 2、掌握多线程编程。 二.实验内容 1、通过下图中的近似公式,使用多线程编程实现pi的计算; 2、通过控制变量N的数值以及线程的数量,观察程序的执行效率。 三.实现方法 1. 下载配置SSH客户端 2. 用多线程编写pi代码 3. 通过文件传输界面,将文件上传到集群上 4.将命令行目录切换至data,对.c文件进行编译 5.编写PBS脚本,提交作业 6.实验代码如下: #include

#include #include #include #include #include static double PI=0; static int N=0; static int numOfThread=0; static int length=0; static int timeUsed=0; static int numOfThreadArray[]={1,2,4,6,8,10,12,14,16,20,24,30}; static int threadArraySize=12; static int nTime=4; static int repeatTime=30; static double totalTime=0; struct timeval tvpre, tvafter; pthread_mutex_t mut; clockid_t startTime,endTime;

Linux查看CPU和内存使用情况

Linux 查看CPU 和内存使用情况 在系统维护的过程中,随时可能有需要查看CPU 使用率,并根据相应信息分析系统状况的需要。在CentOS 中 可以通过top 命令来查看CPU 使用状况。运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。退出 top 的命令为q (在top 运行中敲q 键一次)。 top 命令是Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows 的任务管理器 可以直接使用top 命令后,查看%MEM 的内容。可以选 择按进程查看或者按用户查看,如想查看oracle 用户的进程内存使用情况的话可以使用如下的命令: $ top -u oracle 内容解释: PID :进程的ID USER :进程所有者 PR:进程的优先级别,越小越优先被执行 NInice :值 VIRT :进程占用的虚拟内存 RES:进程占用的物理内存

SHR :进程使用的共享内存 僵死状态, N 表示该进程优先值为负数 %CPU :进程占用CPU 的使用率 %MEM :进程使用的物理内存和总内存的百分比 TIME+ :该进程启动后占用的总的 CPU 时间,即占用 CPU 使用时间的累加值。 COMMAND :进程启动命令名称 操作实例 : 即可启动 top top 的全屏对话模式可分为 3 部分:系统信息栏、命令 输入栏、进程列表栏。 第一部分 -- 最上部的 系统信息栏 第一行( top ): 00:11:04”为系统当前时刻; 3:35”为系统启动后到现在的运作时间; “2 users ”为当前登录到系统的用户,更确切的说 是登录到用户的终端数 -- 同一个用户同一时间对系统多个 终端的连接将被视为多个用户连接到系统,这里的用户数也 将表现为终端的数目; S :进程的状态。 S 表示休眠, R 表示正在运行, Z 表示 在命令行中输入 “- ” top ”

22进程、线程与并行计算(windows 编程技术)

第22章 进程、线程与并行计算 进程是正在运行的程序,线程是轻量级的进程。多任务的并发执行会用到多线程(multithreading ),而CPU 的多核(mult-core )化又将原来只在巨型机和计算机集群中才使用的并行计算带入普通PC 应用的多核程序设计中。 本章先介绍进程与线程的概念和编程,再给出并行计算的基本概念和内容。下一章讨论基于多核CPU 的并行计算的若干具体编程接口和方法。 22.1 进程与线程 进程(process )是执行中的程序,线程(thread )是一种轻量级的进程。 22.1.1 进程与多任务 现代的操作系统都是多任务(multitask )的,即可同时运行多个程序。进程(process )是位于内存中正被CPU 运行的可执行程序实例,参见图22-1。 图22-1 程序与进程 目前的主流计算机采用的都是冯·诺依曼(John von Neumann )体系结构——存储程序计算模型。程序(program )是在内存中顺序存储并以线性模式在CPU 中串行执行的指令序列。对于传统的单核CPU 计算机,多任务操作系统的实现是通过CPU 分时(time-sharing )和程序并发(concurrency )完成的。即在一个时间段内,操作系统将CPU 分配给不同的程序,虽然每一时刻只有一个程序在CPU 中运行,但是由于CPU 的速度非常快,在很短的时间段中可在多个进程间进行多次切换,所以用户的感觉就像多个程序在同时执行,我们称之为多任务的并发。 22.1.2 进程与线程 程序一般包括代码段、数据段和堆栈,对具有GUI (Graphical User Interfaces ,图形用户界面)的程序还包含资源段。进程(process )是应用程序的执行实例,即正在被执行的程进程(内存中) 可执行文件(盘上) 运行

Fluent17.2在基于Linux下PC集群的并行计算

Fluent17.2在基于Linux PC集群的并行计算 软件需求可联系QQ:2294976284

目录 一、CentOS7.2.1.15安装及配置 (3) 1.1软件下载及安装 (3) 1.2配置 (4) 1.2.1网络配置 (4) 1.2.2用户名更改 (4) 二、计算集群配置 (5) 2.1NFS配置 (5) 2.2无密访问连接(RSH、SSH) (8) 2.2.1SSH配置 (8) 三、Ansys17.2安装及配置 (9) 3.1图形化安装过程 (10) 3.2安装License server (16) 3.3配置和启动License server (19) 3.4启动fluent GUi界面 (23) 3.4fluent并行计算 (24)

一、CentOS7.2.1.15安装及配置 1.1软件下载及安装 为方便后期软件环境的配置,采用CentOS-7-x86_64-Everything-1511.ISO版本,安装采用光盘转U盘启动,可以通过UltraISO软件实现,在软件中“文件”打开CentOS7的ISO镜像文件,“启动”选择“写入硬盘映像”,硬盘驱动器选择插入的U盘,保证U盘空间在9G 以上,写入方式选择USB-HDD+v2,点击写入等待完成即可,注意写入过程会格式化整个U 盘,为防止文件丢失,作为启动U盘应为空白盘。 U盘插入目标电脑,以BIOS模式启动,清华同方电脑为启动时按F12进入,选择U盘点击开始安装,出现安装界面后选择第二项“Test and install…”,为防止Fluent计算环境配置出错,采用英文环境安装,进入图形化安装界面,“DATE&TIME”选择city Shanghai,调整时间后左上角点击Done返回上一级页面;点击SOFTWARE SELECTION进入软件安装界面,由于linux下软件依赖性强,对于系统不是很精通选择全部安装,在左侧每一项对应的右侧选项上左键选中,依次全选后点击Done返回;点击INSTALLATION DESTINATION进行系统安装位置的配置,上方选择要安装系统的硬盘,下方选择“I will configure a portitioning”,点击Done进行配置,若选择安装的硬盘内有其他文件占用空间,选择左下方条目,选择“—”号弹出删除界面,点击并选择Delete It将删除原有文件并释放空间,选择“New mount points will…”下的下拉框,格式选为Standard,上方选择“Click here to creat them automatically”将自动产生分区,依次点击,在右侧Desired Capacity进行容量分配,其中/boot和/swap选择 4GiB~10GiB,/和/home分配剩余所有空间,其中/home可以分配很大,(参考个人总容量为931G,

Linux查看CPU和内存使用情况

Linux查看CPU和内存使用情况 在系统维护的过程中,随时可能有需要查看CPU 使用率,并根据相应信息分析系统状况的需要。在Ce ntOS 中,可以通过top 命令来查看CPU 使用状况。运行top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式-- 用基于top 的命令,可以控制显示方式等等。退出top 的命令为q (在top 运行中敲q 键一次)。 操作实例: 在命令行中输入“top” 即可启动top top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。 第一部分-- 最上部的系统信息栏: 第一行(top): “00:11:04”为系统当前时刻; “3:35”为系统启动后到现在的运作时间; “2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数-- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目; “load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程; 第二行(Tasks): “59 total”为当前系统进程总数; “1 running”为当前运行中的进程数; “58 sleeping”为当前处于等待状态中的进程数; “0 stoped”为被停止的系统进程数; “0 zombie”为被复原的进程数; 第三行(Cpus): 分别表示了CPU 当前的使用率; 第四行(Mem): 分别表示了内存总量、当前使用量、空闲内存量、以及缓冲使用中的内存量; 第五行(Swap): 表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(S wap)被频繁使用的情况,将被视作物理内存不足而造成的。 第二部分-- 中间部分的内部命令提示栏: top 运行中可以通过top 的内部命令对进程的显示方式进行控制。内部命令如下表: s - 改变画面更新频率 l - 关闭或开启第一部分第一行top 信息的表示

Materials Studio Linux 集群安装手册(比较详细)

Materials Studio Linux集群安装手册 一、安装Linux操作系统,进行系统配置 一般都建议最小化安装,不用安装图形界面。下面我以red hat enterprise linux 6.0 x86-64在AMD Athlon(tm)64 X2 Dual Core Processor 4400+ 电脑上的安装为例。rhel6.0的安装过程和windows差不多,一路下一步(或Next)基本就ok了,在您要进行哪种类型的安装?你如果是第一次安装,是新硬盘的话可以选使用所有空间,并勾选下边的查看并修改分区布局,然后下一步,你可以看下大概的分区情况,在Red Hat Enterprise Linux 的默认安装是基本服务器安装。如果对Linux不太熟的话,最好选择软件开发工作站(或Software Development Workstation),这样基本上把要用的软件都安装上了,然后再选上下边的现在自定义(或 Customize now),再下一步,然后把所有能选上的软件都选上,再一路下一步。安装完以后,创建一个非root用户,比如创建一个msi用户,root和msi用户密码设的简单一些比较好,别一会儿你自己都忘了,我是root和msi用的一个密码,当然将来你自己真正组建集群用于计算的时候再设置复杂一些,这样课题提高系统的安全性。 gcc glibc-2.3.4-2.43 (32-bit and 64-bit) libgcc-3.4.6-11 (32-bit and 64-bit) libstdc++-33-3.4.6-11 (32-bit and 64-bit) compat-libstdc++-33-3.2.3-47.3 (32-bit) hpmpi-2.03.01.00-20090402r.x86_64 这几个补丁,好像除了hpmpi-2.03.01.00-20090402r.x86_64和 libstdc++-33-3.4.6-11 (32-bit)没有装上之外,别的都给你装好了。这里要说的是,这些补丁每个节点都要装,千万记住。你可以用命令: rpm -qa|grep gcc 查询,当然你要查libstdc++就要用命令:rpm -qa|grep libstdc++了。对于hpmpi-2.03.01.00-20090402r.x86_64和libstdc++-33-3.4.6-11 (32-bit)的安装可以用命令rpm安装,首先切换到这两个软件包所在的目录下,执行下列命令,格式如下: rpm -ivh libstdc++-33-3.4.6-11.i386.rpm rpm -ivh hpmpi-2.03.01.00-20090402r.x86_64.rpm

浅谈多核CPU、多线程与并行计算

0.前言 最近发觉自己博客转帖的太多,于是决定自己写一个原创的。笔者用过MPI 和C#线程池,参加过比赛,有所感受,将近一年来,对多线程编程兴趣一直不减,一直有所关注,决定写篇文章,算是对知识的总结吧。有说的不对的地方,欢迎各位大哥们指正:) 1.CPU发展趋势 核心数目依旧会越来越多,依据摩尔定律,由于单个核心性能提升有着严重的瓶颈问题,普通的桌面PC有望在2017年末2018年初达到24核心(或者16核32线程),我们如何来面对这突如其来的核心数目的增加?编程也要与时俱进。笔者斗胆预测,CPU各个核心之间的片内总线将会采用4路组相连:),因为全相连太过复杂,单总线又不够给力。而且应该是非对称多核处理器,可能其中会混杂几个DSP处理器或流处理器。 2.多线程与并行计算的区别 (1)多线程的作用不只是用作并行计算,他还有很多很有益的作用。 还在单核时代,多线程就有很广泛的应用,这时候多线程大多用于降低阻塞(意思是类似于 while(1) { if(flag==1) break;

sleep(1); } 这样的代码)带来的CPU资源闲置,注意这里没有浪费CPU资源,去掉sleep(1)就是纯浪费了。 阻塞在什么时候发生呢?一般是等待IO操作(磁盘,数据库,网络等等)。此时如果单线程,CPU会干转不干实事(与本程序无关的事情都算不干实事,因为执行其他程序对我来说没意义),效率低下(针对这个程序而言),例如一个IO操作要耗时10毫秒,CPU就会被阻塞接近10毫秒,这是何等的浪费啊!要知道CPU是数着纳秒过日子的。 所以这种耗时的IO操作就用一个线程Thread去代为执行,创建这个线程的函数(代码)部分不会被IO操作阻塞,继续干这个程序中其他的事情,而不是干等待(或者去执行其他程序)。 同样在这个单核时代,多线程的这个消除阻塞的作用还可以叫做“并发”,这和并行是有着本质的不同的。并发是“伪并行”,看似并行,而实际上还是一个CPU在执行一切事物,只是切换的太快,我们没法察觉罢了。例如基于UI 的程序(俗话说就是图形界面),如果你点一个按钮触发的事件需要执行10秒钟,那么这个程序就会假死,因为程序在忙着执行,没空搭理用户的其他操作;而如果你把这个按钮触发的函数赋给一个线程,然后启动线程去执行,那么程序就不会假死,继续响应用户的其他操作。但是,随之而来的就是线程的互斥和同步、死锁等问题,详细见有关文献。 现在是多核时代了,这种线程的互斥和同步问题是更加严峻的,单核时代大都算并发,多核时代真的就大为不同,为什么呢?具体细节请参考有关文献。我

基于Linux的集群存储系统

文章编号:1007-757X(2006)08-0053-03 基于Linux的集群存储系统 郭国文 摘 要:介绍了集群存储系统常用的模式、相关技术特点及其工作原理,以及L inux集群系统的软件构成,最后用实例说明了如何在L inux下构建集群存储系统 关键词:集群;均衡;节点;镜像 中图分类号:T P311.1 文献标识码:A 1 引言 集群(Cluster),是由一群同时运行同一个应用的服务器组成的服务器组,形成一个虚拟的服务器,为客户端用户提供统一的服务。为了均衡集群服务器的负载,达到优化系统性能的目的,集群服务器将众多的访问请求,分散到系统中的不同节点进行处理。从而实现了更高的有效性和稳定性。[1]早在几年前,集群技术就被应用于数据中心的服务器设备上,效果显著。与分布式文件系统相比,集群存储系统有几大优势:因为数据不需要从一个文件系统拷贝或复制到另一个文件系统,通过集群系统共享应用和数据的任务执行起来要比在单独的设备上执行快得多;集群可以为文件和文件系统提供更多的空间;如果集群内的某台服务器出现了故障,另一台服务器就可以把它的工作接手过来,故障恢复也成为了现实;用户也可以同时对位于其网络上的存储设备里的所有文件进行访问。 2 集群存储常见的两种模式的比较 集群中的每个节点能够访问集群中所有节点的所有数据、重做日志文件、控制文件和参数文件。数据磁盘由于在全局范围内可用,允许所有节点访问数据库。每个节点都有自己的重做日志和控制文件,但其他节点必须能够访问这些文件,以便在系统故障时恢复该节点。通过应用集群技术,不仅可有效提升数据中心服务器系统的稳定性、可用性及可管理性,同时,允许用户使用价格相对低廉的配置(如刀片)捆绑来替代昂贵的单块集成电路的高端服务器,在不影响性能的情况下节约了存储成本。 集群存储常见的两种模式是镜像服务器双机(如图1所示)和双机与磁盘阵列柜(如图2所示)。[2]集群中镜像服务器双机系统是硬件配置最简单和价格最低廉的解决方案,通常镜像服务的硬件配置需要两台服务器,在每台服务器有独立操作系统硬盘和数据存储硬盘,每台服务器有与客户端相连的网卡,另有一对镜像卡或完成镜像功能的网卡。 镜像服务器具有配置简单,使用方便,价格低廉诸多优点,但由于镜像服务器需要采用网络方式镜像数据,通过镜像软件实现数据的同步,因此需要占用网络服务器的CP U及内存资源,镜像服务器的性能比单一服务器的性能要低一些。 有一些镜像服务器集群系统采用内存镜像的技术,这个技术的优点是所有的应用程序和网络操作系统在两台服务器上镜像同步,当主机出现故障时,备份机可以在几乎没有感觉的情况下接管所有应用程序。但是因为两个服务器的内存完全一致,当系统应用程序带有缺陷从而导致系统死机时,两台服务器会同步死机。同时,在大数据量读写过程中两台服务器在某些状态下会产生数据不同步,因此镜像服务器适合那些预算较少、对集群系统要求不高的用户。 与镜像服务器双机系统相比,双机与磁盘阵列柜互联结构多出了第三方生产的磁盘阵列柜,目前,豪威公司、精业公司等许多公司都生产有磁盘阵列柜,在磁盘阵列柜中安装有磁盘阵列控制卡,阵列柜可以直接将柜中的硬盘配置成为逻辑盘阵。磁盘阵列柜通过SCSI电缆与服务器上普通SCSI卡相连,系统管理员需 直接在磁盘柜上配置磁盘阵列。 图1 镜像服务器双机 双机与磁盘阵列柜互联结构不采用内存镜像技术,因此需要有一定的切换时间(通常为60—180秒),它可以有效的避免由于应用程序自身的缺陷导致系统全部死机,同时由于所有的数据全部存储在磁盘阵列柜中,当工作机出现故障时, 作者简介:郭国文,浙江万里学院,讲师,宁波 315100

在Linux系统中使用w命令和uptime命令查看系统负载

在Linux系统中使用w命令和uptime命令查看系统负载 在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top或者atop命令,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令,相信大家比较熟悉了,它主要是用来查询系统最近一次启动后运行了多长时间,而w命令则相对就冷门一些了,下面就详细介绍如何使用这两个命令: 1. w命令 [root@tektea ~]# w 14:44:27 up 62 days, 3 min, 2 users, load average: 0.00, 0.01, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 218.18.74.196 13:38 1:01m 0.00s 0.00s -bash root pts/1 218.18.74.196 14:43 0.00s 0.00s 0.00s w 使用man w查询的Linux对该命令的介绍是“Show who is logged on and what they are doing.”,w命令可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作,这些信息对于Linux系统管理员来说都是价值的,另外其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况。 2. uptime命令 [root@tektea ~]# uptime 14:51:15 up 62 days, 10 min, 2 users, load average: 0.02, 0.01, 0.00 uptime命令回显中的load average所表示的意思和w命令相似,都是表示过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。 这里需要注意的是load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数,例如,本输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲,比如本例中的输出,CPU是比较空闲的。

传统并行计算框架与MR的区别

现在MapReduce/Hadoop以及相关的数据处理技术非常热,因此我想在这里将MapReduce的优势汇总一下,将MapReduce与传统基于HPC集群的并行计算模型做一个简要比较,也算是对前一阵子所学的MapReduce知识做一个总结和梳理。 随着互联网数据量的不断增长,对处理数据能力的要求也变得越来越高。当计算量超出单机的处理能力极限时,采取并行计算是一种自然而然的解决之道。在MapReduce出现之前,已经有像MPI这样非常成熟的并行计算框架了,那么为什么Google还需要MapReduce,MapReduce相较于传统的并行计算框架有什么优势,这是本文关注的问题。 文章之初先给出一个传统并行计算框架与MapReduce的对比表格,然后一项项对其进行剖析。 MapReduce和HPC集群并行计算优劣对比 ▲ 在传统的并行计算中,计算资源通常展示为一台逻辑上统一的计算机。对于一个由多个刀片、SAN构成的HPC集群来说,展现给程序员的仍旧是一台计算机,只不过这台计算拥有为数众多的CPU,以及容量巨大的主存与磁盘。在物理上,计算资源与存储资源是两个相对分离的部分,数据从数据节点通过数据总线或者高速网络传输到达计算节点。对于数据量较小的计算密集型处理,这并不是问题。而对于数据密集型处理,计算节点与存储节点之间的I/O将成为整个系统的性能瓶颈。共享式架构造成数据集中放置,从而造成I/O传输瓶颈。此外,由于集群组件间耦合、依赖较紧密,集群容错性较差。 而实际上,当数据规模大的时候,数据会体现出一定的局部性特征,因此将数据统一存放、统一读出的做法并不是最佳的。 MapReduce致力于解决大规模数据处理的问题,因此在设计之初就考虑了数据的局部性原理,利用局部性原理将整个问题分而治之。MapReduce集群由普通PC机构成,为无共享式架构。在处理之前,将数据集分布至各个节点。处理时,每个节点就近读取本地存储的数据处理(map),将处理后的数据进行合并(combine)、排序(shuffle and sort)后再分发(至reduce节点),避免了大量数据的传输,提高了处理效率。无共享式架构的另一个好处是配合复制(replication)策略,集群可以具有良好的容错性,一部分节点的down机对集群的正常工作不会造成影响。 硬件/价格/扩展性 传统的HPC集群由高级硬件构成,十分昂贵,若想提高HPC集群的性能,通常采取纵向扩展的方式:即换用更快的CPU、增加刀片、增加内存、扩展磁盘等。但这种扩展方式不能支撑长期的计算扩展(很容易就到顶了)且升级费用昂贵。因此相对于MapReduce集群,HPC集群的扩展性较差。 MapReduce集群由普通PC机构成,普通PC机拥有更高的性价比,因此同等计算能力的集群,MapReduce集群的价格要低得多。不仅如此,MapReduce集群

Pyhton 如何实现多线程并行计算

Pyhton 如何实现多线程并行计算 一、串行计算 先看一段简单的代码: import time t0=time.time() for k in range(30): values=k*k print(values) time.sleep(1) t1=time.time() print('运行时间为:',int(t1-t0)) 上面的例子中,我们用一个for循环计算自然数的平方。这里我们一个自然数计算完才能接着计算另外一个数。这种计算方式我们称为“串行计算”。早期为什么采用这种串行计算呢?因为以前个人电脑CPU是单核的,硬件的条件决定了程序的处理方式。 能不能几个数同时计算?好比如在银行的营业厅排队,如果只开一个窗口办理业务,你需要等前面一个人办完,才轮到你,如果能开多个窗口,显然会快很多。这种开多个窗口处理业务的想法,在计算机中的应用就是“并行计算”。多个窗口对应的就是计算机有多个核。(理解了“并行计算”,就容易进一步理解分布式计算。) 二、多核与线程 个人电脑的处理器最早是单核的。 多内核(multicore chips)是指在一枚处理器(chip)中集成两个或多个完整的计算引擎(内核)。 2005年4月,英特尔仓促推出简单封装双核的奔腾D和奔腾四至尊版840。 但真正的“双核元年”,则被认为是2006年。这一年的7月23日,英特尔基于酷睿(Core)架构的处理器正式发布。2006年11月,又推出面向服务器、工作站和高端个人电脑的至强(Xeon)5300和酷睿双核和四核至尊版系列处理器。 进入2009年,处理器已经由双核升级到四核时代,在斯坦福大学召开的Hot Chips大会上,IBM、富士通、AMD和Intel等众多芯片制造商展示出其六核、八核等多核服务器处

在Windows平台上使用多核CPU加速Fluent计算

在Windows平台上使用多核CPU加速Fluent计算 摘要:当利用Fluent计算3维问题时,普通PC显得相当吃力,尤其是使用其默认的串行版本时。其实Fluent完全可以通过简单的设置来进行并行计算。本文只示例一种在现在主流配置PC(CPU有2-6个核心)下的Windows版Fluent并行计算的设置, 关于Linux/Unix平台或并行集群计算机(分布式存储)等环境下的并行设置,请参考Fluent 官方文档(User’s Guide & Tutorial Guide)。 示例硬件软件环境: OS: M$ Windows7 64bit version CPU: AMD Athlon?IIX4 641 Quad-Core(四核心) RAM: 4.00GB Fluent:v6.36 求解问题: 大作业3(略) 步骤: 1.准备case文件 使用并行计算时,前期参数模型设置的方法与串行计算完全相同,区别只在与网格的分区与进程个数的指定。因此这里不再介绍Case Setup过程(设置边界条件、设置求解器、设置非预混模型等等)。本文假设已设置好并保存的case的名称为Project3.cas 。 2.启动并行版本的Fluent Fluent可以以多种方式启动并行版本,这里只介绍在多处理器计算机上通过命令行启动的方式。 a)打开Windows命令行窗口(i.e., Win-R 输入cmd回车) b)移动(cd)至Fluent可执行文件目录(i.e., X:/Program Files/Fluent.inc/ntbin/win64)(我实在不知道在M$ Word中怎么把这半行搞上去!!!) 将X换为相应盘符,对于32bit Windows版本须将win64换为 ntx86。 e.g., c)在cmd窗口输入fluent –t3: e.g., 根据你CPU的核心数量设置-t选项后的数字,这里的CPU是四核心的,所以设置的是3个。 3.设置并行求解器 File->Run

分布式与并行计算报告

并行计算技术及其应用简介 XX (XXX,XX,XXX) 摘要:并行计算是实现高性能计算的主要技术手段。在本文中从并行计算的发展历程开始介绍,总结了并行计算在发展过程中所面临的问题以及其发展历程中出现的重要技术。通过分析在当前比较常用的实现并行计算的框架和技术,来对并行计算的现状进行阐述。常用的并行架构分为SMP(多处理系统)、NUMA (非统一内存存储)、MPP(巨型并行处理)以及集群。涉及并行计算的编程模型有MPI、PVM、OpenMP、TBB及Cilk++等。并结合当前研究比较多的云计算和大数据来探讨并行计算的应用。最后通过MPI编程模型,进行了并行编程的简单实验。 关键词:并行计算;框架;编写模型;应用;实验 A Succinct Survey about Parallel Computing Technology and It’s Application Abstract:Parallel computing is the main technology to implement high performance computing. This paper starts from the history of the development of Parallel Computing. It summarizes the problems faced in the development of parallel computing and the important technologies in the course of its development. Through the analysis of framework and technology commonly used in parallel computing currently,to explain the current situation of parallel computing.Framework commonly used in parallel are SMP(multi processing system),NUMA(non uniform memory storage),MPP(massively parallel processing) and cluster.The programming models of parallel computing are MPI, PVM, OpenMP, TBB and Cilk++, etc.Explored the application of parallel computing combined with cloud computing and big data which are very popular in current research.Finally ,through the MPI programming model,a simple experiment of parallel programming is carried out. Key words:parallel computing; framework; programming model; application; experiment 1引言 近年来多核处理器的快速发展,使得当前软件技术面临巨大的挑战。单纯的提高单机性能,已经不能满足软件发展的需求,特别是在处理一些大的计算问题上,单机性能越发显得不足。在最近AlphaGo与李世石的围棋大战中,AlphaGo就使用了分布式并行计算技术,才能获得强大的搜索计算能力。并行计算正是在这种背景下,应运而生。并行计算或称平行计算时相对于串行计算来说的。它是一种一次可执行多个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。可分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用多个处理器并发的执行计算。其中空间上的并行,也是本文主要的关注点。 并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种有效手段。它的基本思想是用多个处理器来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。并行计算系统既可以是专门设计的,含有多个处理器的超级计算机,也可以是以某种方式互联的若干台的独立计算机构成的集群。通过并行计算集群完成数据的处理,再将处理的结果返回给用户。 目前常用的并行计算技术中,有调用系统函数启动多线程以及利用多种并行编程语言开发并行程序,常用的并行模型有MPI、PVM、OpenMP、TBB、Cilk++等。利用这些并行技术可以充分利用多核资源适应目前快速发展的社会需求。并行技术不仅要提高并行效率,也要在一定程度上减轻软件开发人员负担,如近年来的TBB、Cilk++并行模型就在一定程度上减少了开发难度,提高了开发效率,使得并行软件开发人员把更多精力专注于如何提高算法本身效率,而非把时间和精力放在如何去并行一个算法。

相关主题
文本预览
相关文档 最新文档