树莓派派a

本文详细介绍树莓派集群的搭建过程,包括操作系统安装、SSH无密码登录配置、VNC远程桌面设置、WiFi网络配置、静态IP设置、NFS文件系统共享、并行计算库(PETSc, SLEPC)安装与测试,以及使用MPI执行并行程序的实例。文章还提供了基于NFS和SSH的自动化脚本,用于简化集群管理和并行程序部署。
摘要由CSDN通过智能技术生成

0、一些参考

树莓派发展介绍
爱好者64位

1、编译器

链接

arm安装petsc

一个链接

1、安装petsc(这一次未成功)

1、下载解压,到petsc-3.8.4目录下,1
2、配置时候,设置PETSC_ARCH环境变量,选项是下载mpich,把下载好的f2cblaslapack路径写上(f2cblaslapack下载地址),因为直接下载不好使,就先下载了,那个mpich也可以提前下载好,

./configure PETSC_ARCH=linux-arm --download-mpich --download-f2cblaslapack=/home/pi/yymFolder/f2cblaslapack-3.4.2.q3.tar.gz --with-debugging=0

如果换成这样的句子就编译不通过

./configure --with-cc=mpicc --with-cxx=mpic++ --with-fc=mpif90 --with-mpiexec=mpirun --download-f2cblaslapack

2、安装slepc

下载解包
2、到目录下,添加环境变量

export SLEPC_DIR=/home/pi/yymFolder/slepc-3.8.3  // 此只在当前有效

或者sudo vim /etc/profile
在文件底部添加
export SLEPC_DIR=/home/pi/yymFolder/slepc-3.8.3
然后保存退出,:wq
再更新一下环境变量
source /etc/profile

3、./configure (之后的make句子,就是系统自动提示的了)
4、建立slepc库

  make SLEPC_DIR=$PWD PETSC_DIR=/home/pi/yymFolder/petsc-3.8.4 PETSC_ARCH=linux-arm

5、make test
会出现测试成功的案例

安装petsc3-12-2(第2次未成功)

因为刚才那个不能运行例子所以再装了一个新的

使用之前自己装的openMPI做
 ./configure PETSC_ARCH=linux-arm --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-mpiexec=mpirun --download-f2cblaslapack --with-debugging=0
 
 make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=linux-arm all
 
 make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=linux-arm check

使用的是slepc3.12.2 ,操作和上面的一样

再次安装PETC(3、还是没成功)

1、这次使用的是mpich-3.3.1作为通信

然而整完了之后运行例子都过不去,说是分割(segament)有问题,下边的就可以看下mpich的安装吧
mpich安装的收就说有问题,不过运行例子是正确的。
首先需要gcc(树莓派自带的有),gfortran(需要自己装)

gcc -v  // 树莓派系统自带的有
sudo apt-get install gfortran
gfortran -v

1、首先下载tar.gz包,解压缩,进到解压之后的相应的mpich文件夹下
2、建一个文件夹,作为mpich的安装路径

mkdir  /home/pi/mpich-install

3、在刚解压的文件夹下配置mpich的安装信息

./configure --prefix=/home/pi/mpich-install

4、make 编译
5、make install 安装
6、添加环境变量

sudo vim /etc/profile   //在文件最后添加如下3个
export PATH=/home/pi/mpich-install/bin:$PATH
export INCLUDE=/home/pi/mpich-install/include:$INCLUDE
export LD_LIBRARY_PATH=/home/pi/mpich-install/lib:$LD_LIBRARY_PATH

使生效

source /etc/profile

检查安装正确没有

which mpicc

会显示

/home/pi/mpich-install/bin/mpicc

然后 测试一个例子
在mpich-3.3.1目录下找到example

mpicc -o hello hello.c
mpiexec -n 4 ./hello

会看到运行了4个进程

2、配置时候多了一个

–with–mpi-dir=/home/pi/mpich-install 这是第3种呈现方式*(第一种是全部download,第二种是指定下载的.tar.gz包)*,配置好了,在./configure 配置petsc时直接给出配置好的mpi的目录,

./configure PETSC_ARCH=linux-arm --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-mpiexec=mpirun --with-mpi-dir=/home/pi/mpich-install --download-f2cblaslapack --with-debugging=0

 make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=linux-arm all

make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=linux-arm check


最后又配置了一下,还是有点错

./configure PETSC_ARCH=linux-arm --with-mpiexec=mpirun --with-mpi-dir=/usr/local/openmpi --download-f2cblaslapack --with-debugging=0

(第4次安装petsc成功了)

解压缩之后,没有相应的arch,此时环境变量只能添加一个PETSC_DIR,在配置的时候,也不要指定相应的arch,在执行配置语句的时候只需要指定mpi和fblaslapack, ./configure --with… 这一句之后会生成相应的架构arch,


./configure --with-mpi-dir=/home/pi/mpich-install --download-fblaslapack  // 因为此时与petsc对应的mpich之前已经配置安装好了,所以可以直接这么用,


    make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=arch-linux2-c-opt all

 make PETSC_DIR=/home/pi/yymFolder/petsc-3.12.2 PETSC_ARCH=arch-linux2-c-opt check

(第5次安装petsc3.8.4)

1、只设置一个PETSC_DIR
2、./configure
3、把系统生成相应的arch添加到环境变量中去

export PETSC_DIR=/home/yym/src/petsc/petsc-3.8.4

和上边一样,首先只设置一个环境变量PETSC_DIR,就开始
./configure让系统自己识别arch,然后再自己生成相应的arch,然后再把架构
添加到环境变量中去

 ./configure --download-mpich==/home/yym/mpich-install --download-fblaslapack 
或者
./configure --with-mpi-dir=/home/pi/mpich-install --download-fblaslapack=/home/pi/src/fblaslapack-3.4.2.tar.gz

  make PETSC_DIR=/home/pi/yymFolder/petsc-3.8.4 PETSC_ARCH=arch-linux2-c-opt all

  make PETSC_DIR=/home/pi/yymFolder/petsc-3.8.4 PETSC_ARCH=arch-linux2-c-opt test

 make PETSC_DIR=/home/pi/yymFolder/petsc-3.8.4 PETSC_ARCH=arch-linux2-c-opt streams

然后需要设置两个环境变量,为了下一个slepc库的使用:
在/etc/profile文件中

export PETSC_ARCH=arch-linux2-c-debug  // 这里使用上面自动生成的架构
//使生效

source /etc/profile

总结3种方式

1、最简单,配置文件自动识别机器硬件 现场下载需要的通信基础和线性代数数学库完成配置
./configure --with-mpi-dir=/home/pi/mpich-install --download-fblaslapack
2、下载好相关安装包,再安装
 ./configure --download-mpich --download-f2cblaslapack=/home/pi/yymFolder/f2cblaslapack-3.4.2.q3.tar.gz
3、配置好环境,在安装petsc的时候,指定一下需要的东西的路径
 ./configure --with-mpi-dir=/home/pi/mpich-install --with-packages-dir=/adirectory 

不能提前指定arch,在配置之前可以指定PETSC_DIR这个环境变量,但arch不能指定,不然出错,环境变量在编译安装完成之后再添加。

如果运行例子出错提醒是找不到petsc.so.就添加一个环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/txdy827/software/petsc-3.8.4/arch-linux-cxx-debug/lib

二、基础操作

0 操作系统

官网
其他

1、开箱装系统

有两种方式,
1、直接下载镜像文件,2下载NOOBS引导安装程序写入SD卡
吾用第一种方式
去树莓派的官方网站https://www.raspberrypi.org ,下载镜像文件 (自己下载的是.zip文件,可以直接用balenaEtcher软件(https://www.balena.io/etcher/)直接刷进系统)

应该同时把ssh,和wpa_supplicant.conf文件设置好(为了开机就可以连的上)

系统设置

sudo raspi-config

2、使用putty.exe连接树莓派,

在E:googledown目录下。输入ip就能登陆了。如果putty中文乱码就:在打开putty.exe之后的window->translation中的Remote character set改为“UTF-8”。再输入登录名pi,输入密码就好了。
想要无显示器操作树莓派,只需要SD卡烧好系统之后,插卡开机,SSH登录即可。

3、ssh服务

3.1未开机操作

则把SD卡取下来,用在根目录下,创建一个空白的ssh文件(没有扩展名)就好了,另一种说法是在/boot分区下创建

3.2 命令行

或者命令行

service sshd restart

4、VNC

4.1开启服务

sudo raspi-config
依次选择
5 Interfacing Options  Configure connections to peripherals
 -> VNC
 -> Yes

4.2分辨率

sudo raspi-config
选择 Advanced Options > Resolution,选择一个合适的分辨率,1280*720

5、wifi网络配置

5.1 第一次使用时候

一个链接设置网络
把SD卡在电脑上读出,在/boot分区下配置wpa_supplicant.conf文件设置SSID 和密码,这样在启动树莓派时候,树莓派系统会自动读取wpa_supplicant.conf文件连接wifi设备。
设置格式:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="yym_desktop"
psk="hahaha369"
key_mgmt=WPA-PSK
priority=4
}

network={
ssid="lianhua"
psk="Y66x1H97"

priority=2
}

ssid网络的名字
psk:密码
priority:优先级,(不能为负,越大越优先)
scan_ssid:连接隐藏WiFi时需要指定该值为1

如果wifi没有密码则:

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}

5.2 之后再想设置WiFi时

WiFi这个文件在/etc/wpa_supplicant 目录下的 wpa_supplicant.conf,一样的修改
#保存文件后几秒钟应该就会自动连接到该wifi
#查看是否连接成功

ifconfig wlan0

5.3 一根网线连接笔记本

笔记本->控制面板\网络和 Internet\网络和共享中心->具体的网络->属性->共享->允许✔ -> VMware Network Adapter VMnet8
在命令行

arp -a

在192.168.137.1网段下的动态ip就是树莓派的

5.4、树莓派设置wifi静态ip

把/etc/network/路径下的interfaces文件设置成连接wifi。
然后修改/etc/dhcpcd.conf文件:添加:

sudo vi /etc/dhcpcd.conf

#设置局域网静态ip,
interface eth0
static ip_address=192.168.0.2/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1


#设置wifi固定ip
interface wlan0
static ip_address=192.168.43.2/24
static routers=192.168.43.1
static domain_name_servers=192.168.43.1 8.8.8.8

在这里插入图片描述

6、查询自己ip

1 有一个工具(Advanced IP Scanner)可以查询到和自己笔记本连接同一网段的设备。
2 或者路由器查询,host登录可查询

7、软件安装拆卸

链接

8、安全关机重启

关机

sudo shutdown -h now
sudo halt
sudo poweroff
sudo init 0

重启

sudo reboot
shutdown -r now
shutdown -r 18:23:52 #定时重启在18点23分52秒关闭

9.集群 (ssh-keygen连接)

9.1.修改hostname (pi001)

sudo raspi-config
在 Network Options->hostname 修改
在reboot就好了

9.2 安装mpich

上面有

9.3 安装软件(mpi4py)

//
wget https://bitbucket.org/mpi4py/mpi4py/downloads/mpi4py-2.0.0.tar.gz
sudo tar -zxvf mpi4py-2.0.0.tar.gz
cd mpi4py-2.0.0
sudo apt-get update
sudo apt-get install aptitude  // 安装这个aptitude ,不知道干啥用
sudo aptitude install python-dev
sudo apt install libopenmpi-dev
python setup.py build
sudo python setup.py install
export PYTHONPATH=/home/pi/mpi4py-2.0.0
mpiexec -n 5 python /home/pi/mpi4py-2.0.0/demo/helloworld.py

9.3建立ssh连接

:~ $ ssh-keygen  // 产生.ssh文件夹,并生成通信密码  按3下enter键产生公钥keys
cd .ssh
cp id_rsa.pub pi001

pi@pi001:~/.ssh $ ssh pi@192.168.0.11  // 远程登陆pi2
pi@pi002:~ $ ssh-keygen  // 在pi002生成ssh的公钥
pi@pi002:~ $ cd .ssh
cp id_rsa.pub pi002
pi@pi002:~/.ssh $ scp 192.168.0.2:/home/pi/.ssh/pi001 .  //把pi001的keys复制到当前pi002上
传输结果:
# pi001         100%  390   110.7KB/s   00:00    

pi@pi002:~/.ssh $ cat pi001 >> authorized_keys  //把pi001的keys写道授权的keys

pi@pi002:~/.ssh $ sudo chmod +rwx /home/pi/.ssh  // 修改权限
pi@pi002:~/.ssh $ exit


//重登pi001把其他的都远程拷贝过来,并添加到授权的keys中
pi@pi001:~/.ssh $ scp 192.168.0.3:/home/pi/.ssh/pi003 .
pi@pi001:~/.ssh $ cat pi003 >> authorized_keys

9.4一起跑例子

-f ~/mpi_config_file -f指定文件,文件指定mpi分配哪个节点开几个进程跑例子

pi@pi001:~ $ mpiexec -n 8 -f ~/mpi_config_file python /home/pi/mpi4py-2.0.0/demo/helloworld.py

Hello, World! I am process 1 of 8 on pi001.
Hello, World! I am process 3 of 8 on pi001.
Hello, World! I am process 2 of 8 on pi001.
Hello, World! I am process 0 of 8 on pi001.
Hello, World! I am process 4 of 8 on pi002.
Hello, World! I am process 5 of 8 on pi002.
Hello, World! I am process 6 of 8 on pi002.
Hello, World! I am process 7 of 8 on pi002.


10、集群(NFS)

sudo hostnamectl set-hostname pi003
再/etc/hosts修改一下pi003

在sudo vim /etc/hosts 修改节点名字

回答问题专业点:服务器centous,版本号,操作系统一下全答完
uname -m 输出主机的硬件架构名称 x86_64位
uname -r 内核发行号

修改主机名:/etc/hostname
/etc/hosts
然后重启

10.1简介:
nfs
nfs-utils NFS服务的主程序
rpcbind 中介问路的 centos 6是(rpc) centos5是portmap

在ubantu系统中只用

sudo apt-get install nfs-kernel-server

服务器共享一个自己的目录,客户端指定一个挂载点,远程挂载,访问客户端本机挂载点,等价于,访问远程服务器的目录,

NFS使用一些端口传输数据,服务重启时端口不固定,要告诉客户端使用的是哪个端口,用的是RPC(Remote Procedure Call)服务,

NFS功能多,(权限管理,磁盘限额等等),每个功能分配一个端口,功能启动顺序不同,随机分配端口号,所以端口号不固定,而客户端又要找到服务器,所以要服务器端先打开RPC服务(中介),,然后服务器再在RPC服务中注册信息,等着客户端来向RPC询问端口号,再去服务器端访问,

服务器挂载图
挂载图
NFS工作流程图
NFS工作流程图
工作流程图原理:
工作流程图原理
下载nfs软件包

sudo apt-get install nfs-kernel-server

修改配置文件,指定哪个文件是共享文件

 sudo vim /etc/exports
#文末添加
/home/pi/share * (rw,sync,no_root_squash,no_subtree_check)
#保存退出
#1 共享的目录
#2 *:允许所有的网段访问,也可以使用具体的IP
#3 rw 可读写,(ro只读)
#4 sync 资料同步写入内存和硬盘
#5 no_root_squash:root用户操作时,转成匿名
#6 no_subtree_check:不检查子目录的权限

ps ax | grep nfs
#结果如下:
pi@pi001:~ $ ps ax | grep nfs
   48 ?        I<     0:00 [nfsiod]
 1140 ?        S      0:00 [nfsd]
 1141 ?        S      0:00 [nfsd]
 1142 ?        S      0:00 [nfsd]
 1143 ?        S      0:00 [nfsd]
 1144 ?        S      0:00 [nfsd]
 1145 ?        S      0:00 [nfsd]
 1146 ?        S      0:00 [nfsd]
 1147 ?        S      0:00 [nfsd]
 1229 pts/0    S+     0:00 grep --color=auto nfs
#就是好了,

3、重启服务,将会自动映射端口:

sudo /etc/init.d/rpcbind restart
效果:[ ok ] Restarting rpcbind (via systemctl): rpcbind.service.

4、重启nfs服务:

sudo /etc/init.d/nfs-kernel-server restart
出现了错误
[....] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.serviceJob for nfs-server.service canceled.

有人说:还得下载
sudo apt-get install nfs-kernel-server package
sudo apt-get install nfs-client package
sudo apt-get install nfs-common 
然而其实是因为
配置文件 的*和小括号之间不能有空格  !!!
改了之后

sudo /etc/init.d/nfs-kernel-server restart
效果:[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.

10.2 客户端

在/mnt/下建立share文件夹,并修改权限

mkdir share
因为客户端的/mnt目录默认权限是root所以  修改组和属于
sudo chgrp -R pi share/
sudo chown -R pi share/

# sudo chmod pi:pi share/ 这一句不知道为啥不认

挂载

//  这一句不行,需要相同的文件夹,还要挂载时候给读写权限
 //sudo mount -t nfs 192.168.0.2:/home/pi/share /mnt/share  
 
 sudo mount -t nfs 192.168.0.253:/home/pi/share /home/pi/share -o rw // rw顺序还不能写反了(wr不行)
 
然后就可以共享服务器的那个文件夹了

客户端挂载之后,需要在服务器端操作一下(ls就行),客服端才刷新

#查看本地挂载信息 最后一行
pi@pi002:/mnt/share $ df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/root                    15G  4.0G  9.8G  29% /
devtmpfs                    1.8G     0  1.8G   0% /dev
tmpfs                       2.0G     0  2.0G   0% /dev/shm
tmpfs                       2.0G  8.5M  1.9G   1% /run
tmpfs                       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                       2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mmcblk0p1              253M   52M  201M  21% /boot
tmpfs                       391M     0  391M   0% /run/user/1000
192.168.0.2:/home/pi/share   15G  4.0G  9.8G  29% /home/pi/share

10.3跑程序

1、设置分布式进程配置文件,在/home/pi/目录下:

vim mpi_config_file,
在这个文件中:指定每个节点开启几个进程
node001:4
node002:4
node003:4
node004:4
node005:4

把mpi的例子程序cpi,拷贝到/home/pi/share/目录下
执行:mpiexec -n 20 -f /home/pi/mpi_config_file ./cpi

10.4 取消挂载

pi@pi002:/mnt/share $ sudo umount /home/pi/share/
#umount.nfs4: /mnt/share: device is busy  // 因为自己还在此目录下,所以不行
pi@pi002:/mnt/share $ cd ..
pi@pi002:/mnt $ ls
share
pi@pi002:/mnt $ sudo umount /mnt/share/
# 好了

服务器端 关闭 nfs 和rpc

sudo /etc/init.d/nfs-kernel-server stop
sudo /etc/init.d/rpcbind stop

登录树莓派之后,再ssh node001,一次,为了调用~/.ssh里边关联的东西,把树莓派各节点吊起来,

在源程序,目录下能跑,在共享文件目录下不能跑。待解决

//可行
mpiexec -n 24 -f /home/pi/mpi_config_file ./cpi

//可行,共享目录下
 mpiexec -n 8 -f /home/pi/mpi_config_file ./cpi

执行自己的程序:
需要把PETSC_DIR/PETSC_ARCH/lib这个库拷贝到共享文件夹下
并添加环境变量$LD_LIBRARY_PATH
1、把自己项目文件拷贝到共享文件夹下,
2、库添加到环境变量,
3、挂载时候加可读可写权限 -o rw
4、节点1可免密码登录节点2,节点2可免密码登录自己,(此时已经能跑程序了,但是节点2不能免密码登录节点1,节点1却也不能免密码登录自己,就很奇怪)

执行



10、5增加新节点

1、拷贝镜像
2、修改主机名

sudo vim /etc/hostname
#修改文件内容为:
pi005

3、修改/etc/hosts文件

sudo vim /etc/hosts

前两行:127.0.0.1或者127.0.1.1都可以

在(后面步骤)固定ip之前需要重启一下!!
4.0 固定IP;
4.1在/etc/network/interfaces文件中
把address 192.168.0.4,修改成address 192.168.0.6

sudo vim /etc/network/interfaces

4.2在/etc/resolv.conf文件中
添加
nameserver 192.168.0.1

sudo vim /etc/resolv.conf

nameserver 192.168.0.1  (这里不能复制粘贴,手写)

4.3重启网络
service networking restart
或者sudo /etc/init.d/networking restart
就可以看到设置好了
再登录时使用新ip登录192.168.0.7

5.1生成ssh密钥
ssh-keygen
5.2把生成的密钥发送给节点node001
scp id_rsa.pub pi@node001:~/.ssh/id_rsa.pub.node00n 改n
5.3、在node001节点上 cat id_rsa.pub.node00n >> authorized_keys 改n
5.4再把node001的authorized_keys传到新节点上

需要在节点node001上通报新节点!!
sudo vim /etc/hosts
添加新节点,

然后:

scp authorized_keys pi@node00n:~/.ssh/authorized_keys **改n**

11、编写远程挂在的脚本

主节点:
一个start_mount_other_nodes.sh

#!/bin/bash
ssh node002 "/home/pi/init/connect.sh"
ssh node003 "/home/pi/init/connect.sh"

从节点:
~/init/目录下:
connect.sh

#!/bin/bash
sudo mount -t nfs 192.168.0.253:/home/pi/share /home/pi/share -o rw

为了安全关机,可以远程命令使从节点关机:
从节点:
~/init/目录下
shutdown.sh

#!/bin/bash
sudo shutdown -h now

主节点:
shutdown_other_nodes.sh

#!/bin/bash
ssh node002 "/home/pi/init/shutdown.sh"
ssh node003 "/home/pi/init/shutdown.sh"

12、换使用openmpi来跑

安装openmpi的参考

mpich和openmpi都是实现mpi消息队列的一种软件。其中会有实现相同的功能,但具体实现细节(设计,调用方式)肯定会有不同的地方。
如下是一些尝试的结果:
1、配置文件只能放在程序的当前目录下。
2、mpiexec这个程序,需要写绝对路径。
3、mpich中的-f 参数,在openmpi中对应的参数是:-hostfile
4、配置文件的写法不同。

进来node001号节点之后:

1、启动nfs服务脚本程序:

cd ~
 sh start_nfs.sh

2、使各从节点挂载nfs文件系统:

中间需要大概半分钟的等待时间。等待cpu从操作系统重新交到shell手中时,再执行下一步。
(中间没出现错误信息就是正确执行了,如果其中有个别树莓派节点port22无效,连接不上,就重启一下那个树莓派,然后重新执行这一条命令。主节点重启从节点的脚本:修改这个脚本程序中的节点名字 再执行重启:./reboot_other_node.sh。)

cd ~
./start_mount_other_nodes.sh

3、到共享文件文件夹下,并找到要执行的程序:

cd /home/pi/share/
cd mydist_v4.0.0/mydist

或者
cd /home/pi/share/mydist_v4.0.0/mydist

4.0、指定各节点的开启内核线程的配置文件:

openmpi和mpich中的写法有所不同,
在pi@pi001:~/share/mydist_v4.0.0/mydist$路径下:
配置文件:30_2_mpi_config_file

node001 slots=2
node002 slots=2
node003 slots=2

4.1、编译程序(编译过了,可以跳过)

cd ~/share/mydist_v4.0.0/mydist/
mpicc cfd.c -o mydist -lm

# 执行程序:
mpirun -n 10 ./mydist

4.2、并行执行程序

-hostfile 指定使用哪个配置文件,
配置文件:指定内核线程数,通过修改配置文件设置各树莓派节点参与工作的内核线程个数。
-np 指定用户进程数
通过修改配置文件,进行实验。

/home/pi/openmpi/bin/mpirun  -hostfile 30_2_mpi_config_file -np 60 ./mydist


pi@pi001:~/share/mydist_v4.0.0/mydist$  
/home/pi/openmpi/bin/mpirun  -hostfile 48_2_mpi_config_file -np 96 ./mydist

#-hostfile 的作用和mpich中的-f一样,指定各节点的配置信息
#mpirun换成 /home/pi/openmpi/bin/mpirun
#或者/home/pi/openmpi/bin/mpiexec
#-hostfile后面的配置文件需要在当前目录下

4.3、切换另外两种算法进行计算:

修改para.dat文件中的参数:
参数: itime
等于 1 对应sgs算法
等于 2 对应lu_sgs算法
等于 3 的时候对应gmres算法

cd ~/share/mydist_v4.0.0/mydist/
 vi para.dat

4.4、切换迭代次数:

在程序的当前目录:打开cfd.c文件

cd /home/pi/share/mydist_v4.0.0/mydist
vi  cfd.c 

注释掉58,59两行

5、主节点关机其他各从节点:

cd ~
./shutdown_other_nodes.sh

6、主节点关机,断电完事。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值