Linux并行计算平台搭建及应用 王彦棡 2010年5月
主要内容 基础知识 MPI的配置 如何使用Linux并行计算环境
基础知识 Linux是一套免费使用和自由传播的类Unix操作系统,它主要用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
基础知识 /bin: 存放常用命令 /etc: 系统管理所要的配置文件和子目录 /home: 存放用户主目录的地方 /lib: 系统基本的动态链接库 /opt: 可以选择的 /proc: 虚拟系统, 是由系统初起时内存中产生的 /tmp: 存放各程序执行时所产生的临时文件 /usr: 占空间最大的目录,用户的很多应用程序和文件几乎全在这个目录中
ls/cd/rm/mkdir/cp/mv/cat/tar – 编辑器vim。 – man手册工具。 常用cmd命令操作 – 常用目录文件操作: ls/cd/rm/mkdir/cp/mv/cat/tar – 编辑器vim。 – man手册工具。 – 对于删除修改等危险操作和不熟的命令切记要谨慎执行。
主要内容 基础知识 MPI的配置 如何使用Linux并行计算环境
设置无密码的远程登录-SSH (基于公钥认证方式) 创建密钥对 执行: ssh-keygen -t dsa (或rsa,则之后对应文件名dsa改为rsa) 遇到问题直接回车即可。 该命令将会在~/.ssh目录下创建id_dsa和id_dsa.pub两个密钥文件,其中id_dsa保存私钥,id_dsa.pub保存公钥。
*注:如果之前共享了/home目录,则每台机器上的authorized_keys文件实际是同一个,只需在本机操作该文件即可。 设置无密码的远程登录-SSH 在目标机器上对本机公钥授权 将上一步中本机生成的公钥文件中的内容,复制到目标机器的~/.ssh/authorized_keys文件中,则可以实现本机该用户对目标机器的无密码访问。 scp ~/.ssh/id_dsa.pub <target>:tmpfile ssh <target> “cat tmpfile >> /.ssh/authorized_keys” *注:如果之前共享了/home目录,则每台机器上的authorized_keys文件实际是同一个,只需在本机操作该文件即可。
配置(./configure [config-args]) 编译(make) 安装(make install) 简单测试(编译和执行例程) MPICH安装配置 下载MPICH(最新版1.2.7p1): http://www-unix.mcs.anl.gov/mpi/mpich1/downloads/mpich.tar.gz 配置(./configure [config-args]) 编译(make) 安装(make install) 简单测试(编译和执行例程)
MPICH安装配置 一个典型配置实例: ./configure -cc=gcc -c++=g++ -fc=gfortran -f90=gfortran \ -rsh=ssh \ --with-device=ch_p4 \ --enablef77 \ --enable-f90 \ --prefix=/opt/mpich *注1:如使用gfortran编译器进行Fortran语言绑定,需要事先设定环境变量export F77_GETARGDECL=" "。 *注2:make install安装时可能会在复制pi3f90报错,这实际不影响安装,是由于src/fortran/configure中没能自动检测到Fortran 90程序后缀造成的,可在该文件相关位置进行修改,使其产生正确输出。
MPICH2安装配置 一个典型配置实例: ./configure --prefix=/usr/local/mpich2 \ --enable-cxx \ --enable-f77 \ --enable-f90 \ CC=icc \ CXX=icpc \ F77=ifort \ F90=ifort *注:MPICH2的C++接口实现中存在一个BUG,这会造成在使用mpicxx编译C++程序时编译器报告SEEK_SET等宏被重复定义的告警信息,设置编译选项-DMPICH_IGNORE_CXX_SEEK可以忽略这个问题。
主要内容 基础知识 MPI的配置 如何使用Linux并行计算环境
如何登录和上传文件 Windows本身不支持SSH登录,必须使用第三方模拟终端程序登录系统,用支持STFP或SCP的软件上传文件。 PUTTY NetTerm/SecureNetTerm Xmanager/SecureCRT..... Linux系统在不同的桌面环境下启动终端后,直接执行ssh命令远程登录,用scp命令远程拷贝文件。 Gnome-terminal Xterm Konsole
常用路径变量 对于BASH,登录之后执行以下两个配置文件: .bash_profile .bashrc 需要着重注意的几个环境变量: PATH 可执行程序搜索路径 MAN_PATH man工具手册搜索路径 LD_LIBRARY_PATH 动态链接库搜索路径 环境变量的设置会影响到编译时是否使用了正确的编译环境,是否能生成正确的可执行文件。
PBS 提交作业: qsub -l nodes=<x>:ppn=<y> -q <queuename> scriptfile 查看和跟踪作业: qstat [-f] [jobid] tracejob <jobid> 删除作业: qdel <jobid> 作业输出信息: scriptfile.o(jobid) / scriptfile.e(jobid)
LSF 提交作业: bsub -n <cpus> -q <queuename> -o <output> exefile args 查看和跟踪作业: bjobs [-l] [jobid] bhist <jobid> 删除作业: bkill <jobid> 作业输出信息: bsub中output指定
并行环境下应用软件安装移植 如软件带有configure自动配置程序,选择合适的参数进行配置,再进行make编译。 典型配置安装过程: tar zxvf <...>.tar.gz 解压 (cd xxxxxx) ./configure [configargs] make make install 查看README、INSTALL文件或是doc目录下相关文档,或是执行configure --help可以了解configure配置的相关参数含义和选项。
并行环境下应用软件安装移植 如无configure程序,找到关键的Makefile文件,并根据当前的实际环境进行修改后执行make进行编译。 CC/CXX C/C++编译器 FC/F77/F90 Fortran/Fortran77/Fortran90(95)编译器 CFLAGS/FFLAGS 默认C/Fortran编译参数 LDFLAGS 默认连接器参数 MPICC(CXX,FC,F77,F90) 对应的MPI编译器 XXXLIB(S) 一些需要进行链接的函数库 修改完毕后执行make命令进行编译,生成可执行文件。