无需超级用户mpi多机执行

在之前的一篇博文中(Linux下mpi环境配置与执行步骤(Ubuntu为例) ),有讨论过如何使用MPI在两个不同的机器上执行程序,在那篇博文中使用了超级用户权限。不幸的是,有些情况下,我们不能拥有操作系统的超级用户权限,导致我们不能修改除用户目录以外的目录,因此写这篇博文讨论如何使用普通用户来实现mpi程序的编译和双机器执行。如果知道了如果双机器执行,多机器道理是相通的。

此文针对没有多少linux经验的读者,只要你会打开终端,这个问题可以被很好的解决。

前提

假设有两台机器,两台机器的主机名称分别为A、B,并且知道两台机器的IP(如果你不知道,请咨询管理员),假设A机器的IP为192.168.1.5,机器B的ip为192.168.1.6;

假设在两台机器上有同一个用户名为讲述方便,暂时假设这个用户名为demo;

假设两台机器上安装了完全相同的mpi版本。

不满足假设条件,请绕行。

步骤

完成无需超级用户mpi程序的编译和执行,分以下几步:

1、设置两台机器上PATH,使得在两台机器上分别可以执行mpicc --version命令。

2、设置两台机器相互之间可以免密码登陆。

3、执行自己的程序

1、设置两台机器上的PATH

假设你现在在A机器上,使用的是demo账户。

打开终端(Terminal),执行如下命令:

mpicc --version

如果上面的命令得到类似如下结果,直接可以去第2步:

gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果得到类似如下结果,则继续。

mpicc: command not found

打开终端,执行如下命令

echo "export PATH=`locate mpicc | grep -v ‘^/home/‘ | grep -E ‘/mpicc$‘ | sed ‘s/\/mpicc$//‘`:$PATH" >> ~/.bashrc

关闭终端,打开一个新的终端,再执行mpicc --version看看结果是否正确,如果还是不正确,这里就暂时不写此种情况下的解决方案了(穷尽所有情况太麻烦了)。

执行如下命令来登陆B机器(前提中假设了B机器的IP为192.168.1.6),在提示输入密码的时候,输入用户的密码,因为我们假设用的是demo用户,你此时要输入的是demo的密码。注意密码并不显示,输入完成后,直接敲击回车即可。

ssh [email protected]

如果成功登陆,执行如下命令:

echo "export PATH=`locate mpicc | grep -v ‘^/home/‘ | grep -E ‘/mpicc$‘ | sed ‘s/\/mpicc$//‘`:$PATH" >> ~/.bashrc

然后执行exit命令退出机器B。

2、设置两台机器之间相互无密码登陆。

仍然假设现在用的是机器A(IP为192.168.1.5),打开终端,执行如下命令

ssh-keygen -t rsa

上面的命令在执行的时候可能要等待你的输入,不要输入任何内容,直接敲击回车即可。

执行如下命令:

ssh [email protected] mkdir -p .ssh

执行上述命令后,会等待你输入demo在机器B(假设的IP为192.168.1.6)上的密码,输入密码后,敲击回车。

执行如下命令:

cat .ssh/id_rsa.pub | ssh [email protected] ‘cat >> .ssh/authorized_keys‘

执行如下命令,以登陆B机器:

ssh [email protected]

继续执行如下命令:

ssh-keygen -t rsa

遇到让输入yes或者no的地方是如yes或者y。遇到其他情况的等待输入,一律敲击回车。

cat .ssh/id_rsa.pub | ssh [email protected] ‘cat >> .ssh/authorized_keys‘

最后执行如下命令,以推出机器B

exit

完成上面的命令后,就可以实现demo用户在两个机器之间无密码相互登陆了。

3、执行自己的程序

仍然假设你在A机器上,ip的相关假设继续保持。

将程序拷贝到A机器上,对于没有linux经验的读者,请特别注意你拷贝的程序在哪个目录下,如果你不能在终端下找到自己的程序,那么这一切你都白做了。

假设你的程序拷贝到了A机器的/home/demo/目录下,那么你打开终端之后,执行 cd ~/ 即可进入这个目录。

在终端中进入源代码目录后,如果你的程序有Makefile,直接执行make命令即可(一般人写的makefile,这样执行会产生可执行文件的,如果不是一般人写的,请咨询写makefile的人)。

由于我们使用的两个机器是独立的,他们之间没有共享磁盘,你若要使用mpi在两个机器上执行,你必须将在A机器上生成的可执行程序拷贝到B机器上。如果你不了解mpi的执行方式,请保证在两个机器上的可执行程序存放在同一个目录下。

为方便,你可以把程序放到用户根目录(~/ 就是用户根目录),然后再拷贝到B机器上。

拷贝程序的命令如下(假设你的程序叫main.exe)

scp ~/main.exe [email protected]:~/

下面你要新建一个文本文件,这个文本文件第一行写A机器的IP,第二行写B机器的IP。文件名随意,最好使用英文。

我门假设的A、B两个机器的IP分别是192.168.1.5和 192.168.1.6,所以我们的文件中可以这样写

192.168.1.5
192.168.1.6

假设我门命名这个文件为hosts,并且保存在~/目录下,那么我门就可以打开终端,启动我们的程序了。

cd ~/
mpiexec -f ./hosts -n 2 ./main.exe

结束语

如果你是linux新手(不知道怎么使用终端的都是新手),一定要严格执行每一个命令,按照说明一步步执行。注意命令中的下划线,短线,英文点 .,大小写字母,/,~等。这篇博文暂时写完了,剩下的就是祝你好运了。

时间: 2024-10-14 05:37:13

无需超级用户mpi多机执行的相关文章

postgresql 致命错误: 已保留的连接位置为执行非复制请求的超级用户预留

最近监控系统的数据库监控总是延迟,查看日志报错: 2015-08-27 10:20:19,534 ERROR Traceback (most recent call last): File "oracle_mon.py", line 306, in <module> update_status(ip, 'stop', timer.end_date) File "oracle_mon.py", line 285, in update_status pg.d

超级用户和组管理

超级用户: root账号通常用于系统的维护和管理,具有所有访问权限,一般不推荐直接使用root账号登录系统, 在Linux系统安装过程中,系统会自动创建一个 用户账号,这个默认的用户就称为“标准 用户” sudo: su 是 substitute user的缩写,表示使用另一个用户的身份 sudo命令用来以其他身份来执行命令,预设的身份为root 用户使用sudo时,必须先输入密码,之后 有5分钟的有效期限,超过期限则须重输密码 若未经授权的用户企图使用sudo,则会发出警告邮件给管理员 添加组

系统中多种隐藏超级用户添加方法第1/2页

我们可以从防范的角度出发,如果查找隐藏用户 一.如何在图形界面建立隐藏的超级用户 图形界面下适用本地或开3389终端服务的肉鸡上.上面我提到的那位作者说的方法很好,但是较为复杂,还要用到psu.exe(让程序以系统用户身份运行的程序),如果在肉鸡上的话还要上传psu.exe.我说的这个方法将不用到psu.exe这个程序.因为Windows2000有两个注册表编辑器:regedit.exe和regedt32.exe.XP中regedit.exe和regedt32.exe实为一个程序,修改键值的权限

初识CentOS(二)&mdash;&mdash;获得超级用户(root)权限

为了安全起见,linux对普通用户权限限制较大,但我们平时还是需要超级用户权限的,这类似于windows里的管理员权限.本文简单介绍如何在centos中获取超级用户权限,各linux发行版类似 在登陆界面选择"other"后输入用户名root及密码直接登陆即可.如图: 二.普通用户进入超级用户状态 在终端输入su -,然后输入密码即可,如图:大专栏  初识CentOS(二)--获得超级用户(root)权限34.png" /> 三.以普通用户使用超级用户权限 一些命令的执

Ansible-Tower快速入门-4.以超级用户帐号登录【翻译】

以超级用户帐号登录 首先,登录tower需要使用tower服务器所在的URL,格式如下:https://<tower server name>/ 注意:tower安装了一个自签名证书用于HTTPS通信,你可能需要你的浏览器接受这个证书,如果你想要替换证书,可以查看“安装和设置”章节. 登录使用你安装tower过程中所设置的用户名和密码,默认情况下,用户名为”admin”,密码为”password”,你可以通过点击在用户标签上的admin帐户进行修改. 注意:关于普通用户,超级用户和组织管理员的

cookie 用户第一次访问时执行

? 1 <span style="color: rgb(255, 0, 0);"><script type="text/javascript" src="/js/jquery.Cookies.js"></script></span> ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3

超级用户find: `/home/pipi/.gvfs&#39;: 权限不够

http://blog.csdn.net/pipisorry/article/details/39536433 用  sudo su 命令切换成的根用户,在找某文件的时候报错 [email protected]:/home/pipi# find / -perm -2000 /sbin/unix_chkpwd find: `/home/pipi/.gvfs': 权限不够 就是普通用户pipi的主目录下的一个叫 .gvfs 的目录, dr-x------  2 pipi pipi        0 

hive超级用户drop partition权限问题bug

今天有个etl开发在drop partition的时候遇到了问题,因为是使用了自己的账号,而hdfs中对应partition的文件属主是hdfs的,在删除时会因为权限问题报错,切换用户为hdfs,做drop partition的错误,还是报错,看来没这么简单. 查看表的hdfs属性,目录的属主不是hdfs且目录对 hdfs没有写权限: [[email protected] ~]$ hadoop fs -ls -d hdfs://xxxx:9000/bip/external_table/vipdw

Hadoop-2.2.0中文文档—— Common - 超级用户模拟别的用户

pcDuino3下支持mmc启动,官方的Uboot是采用SPL框架实现的,因为内部的SRAM空间达到32K,我们完全可以在这32K空间内编写一个完整可用小巧的bootloader来完成引导Linux kernel的目的. 我们首先介绍下SPL框架,可以先看下<GNU ARM汇编--(十八)u-boot-采用nand_spl方式的启动方法>和<GNU ARM汇编--(十九)u-boot-nand-spl启动过程分析>,NAND_SPL也算是SPL框架下的一种模式. 当使用Nand f