Chinaunix首页 | 论坛 | 博客
  • 博客访问: 585720
  • 博文数量: 86
  • 博客积分: 3214
  • 博客等级: 中校
  • 技术积分: 1105
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-01 18:26
文章分类

全部博文(86)

文章存档

2011年(5)

2010年(49)

2009年(3)

2008年(29)

分类: 系统运维

2010-12-05 16:11:12


    我的机子是赛扬双核的,系统采用vmware7虚拟的fedora12。在安装虚拟机的时候默认的是单cpu模式,建议如果自己的机子是多核的话在vm的属性里将cpu的数量改成自己cpu的数量,以提高并行计算的并发度。
mpi并行执行的时候通过ssh实现节点间通信,所以安装是还要对ssh服务进行配置,稍后大家会看到。
安装步骤:
1.配置ssh
1.1在当前用户下执行$ssh-keygen -d
   提示密钥存放的目录 回车就好
   提示输入密码,为了方便期间不要输入 两次回车确认
1.2$cd ~/.ssh
   $cp id_dsa.pub authorized_keys 
   将自己的共有密钥放在自己的认证密钥里 这样在$ssh localhost时就 不用输入密码了
   但如果是集群环境的话要将自己的公共密钥放到要访问的其他节点的authorized_keys里
1.3修改/etc/hosts文件,将所有节点名称极其ip地址填入。在
   127.0.0.1 localhost.localdomain localhost
   下面一行填入
  (本机ip) node1
  (本机ip) node2
   注:我的是双核 故添加两个节点。
1.4修改(或创建)/etc/hosts.equiv文件
   将所有你允许访问本机进行mpi计算的节点填入,一行一个节点名。这一步是为了使节
   点对其它的节点放权。文件如下:
   node1
   node2
1.5测试一下吧
   $ssh node1
   $ssh node2
   如果不用输入密码的话 就说明配置成功了
2安装mpich.
2.1下载mpich-1.2.7
2.2$tar xzvf mpich.tar.gz
   $cd mpich-1.2.7pl
   ./configure --prefix=/usr/local/mpi -rsh=ssh --disable-weak-symbols
   (注: 选项 --disable-weak-symbols 的使用是为避免 MPICH 1.2.5 的一个 bug,否则产生 的     库中将没有 MPI_File_xxxx 等函数 (只有 PMPI_File_xxx 等函数)
   )
   make
   make install  (注:这步需要root权限)
   安装完毕
3配置环境变量
 分别将“/usr/local/mpi/bin” 和“/usr/local/mpi/man” 加入到环境变量PATH 和MANPATH       中。(不确定有用)
只需在目录/etc/profile.d 中创建两个文件mpich.sh 和mpich.csh, 它们分别对Bourne shell和C shell 起作用, 这两个文件的内容如下:
先是mpich.sh的
#!/bin/bash
export MANPATH=${MANPATH}:/usr/local/mpi/man
export PATH=${PATH}:/usr/local/mpi/bin
然后是mpich.csh的
#!/bin/csh
if ( $?MANPATH == 0 ) then
setenv MANPATH :/usr/local/mpi/man
else
setenv MANPATH ${MANPATH}:/usr/local/mpi/man
endif
setenv PATH ${PATH}:/usr/local/mpi/bin
然后$cd /etc
   $./profile   让新加的PATH立即生效
4测试一下 给个简单的例子
 #include
 #include
 #include
 int main(argc,argv)int argc;char *argv[];
 {
   int myid,numprocs;
   int namelen;
   char processor_name[MPI_MAX_PROCESSOR_NAME];
   
   MPI_Init(&argc, &argv);
   MPI_Comm_rank(MPI_COMM_WORLD, &myid);
   MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
   MPI_Get_processor_name(processor_name,&namelen);
   fprintf(stderr,"Hello World!process %d of %d on  %s\n",myid,numprocs,processor_name);
   MPI_Finalize();
  }
保存为test.c
然后编译mpicc  -o test test.c
   执行mpirun -np 2 test
若出现如下结果则说明运行成功
Hello World!process 0 of 2 on localhost
Hello World!process 1 of 2 on localhost

到此结束 望高手多多指教





阅读(8233) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-07 09:56:10

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com