c/c++并行计算

 现在要跟老师做个关于遗传算法的程序,想通过几台机器运行,找到了几篇好的文章,但还没有仔细看和验证。

网址一:http://www.cnblogs.com/cy163/archive/2007/01/19/624281.html

网址二:http://blog.chinaunix.net/u1/37798/showart_320560.html

关于在Windows环境下,利用Visual C++ 6 实现并行计算

1.  从这个帖子知道http://www.lasg.ac.cn/cgi-bin/forum/topic.cgi?forum=4&topic=2256&start=15Windows 有针对Windows环境的 并行软件/支持软件。环境下简便的配置MPICH2

看你是干什么用的。

总体而言linux cluster 要比windows cluster性能好一些。

如果你们实验室的总体开发实力比较强,那么你可以搭建linux的并行cluster

如果你们对linux不太熟那么建一个linux cluster只是一个痛苦的开始。应为从开发调试到版本管理,配置布置都是麻烦事。好处是锻炼人。

另外一个选择是搭建基于windows的并行环境。我们当时就是使用windows MPI 搭建的并行环境。因为大多人对windows下的开发环境比较熟悉。为了项目的进度牺牲一点性能也是可以的。

下面我提供一些我做并行时知道的和用到的资源,希望有用。

windows 下的并行环境搭建

1. Download MPICh2

http://www-unix.mcs.anl.gov/mpi/mpich/

   有两个版本可以下载一个是MPICH.nt.1.2.5

另外一个版本是MPICH2.0

建议下载mpich2较前面一个版本稳定一些。

1.1运行配置实例:

winxp+mpich2

1. 各台机器上要有相同帐户和密码,且大小写正确,不能是空密码,最好不是guest权限

2. 关各机防火墙

3. wmpiregister.exe 注册那个各机相同的账号

////////////////////////////

Sample 测试

1.单机测试 只需要一台机器即可

mpiexec -np -localonly 4 cpi.exe

2.联机测试

设自己的机器叫node1设个共享目录sharefolder权限设置为允许 everyone 完全控制

sharefoldercpi.exe文件

mpiexec -hosts 2 node1 2 node2 2 //node1/sharefolder/cpi.exe

这个测试是在node1 node2 上分别开2个进程运行 //node1/sharefolder/cpi.exe

mpiexec -hosts 2 node1 2 node2 2 -map z://node1/sharefolder z:/cpi.exe

这个测试是在 node1 sharefolder 目录映射成网络硬盘 z: 然后再在node1 node2 上分别开2个进程运行 cpi.exe ,程序运行完毕后取消网络硬盘 z: 映射网络硬盘的方法对mpi里文件操作有好处

使用 configfile

mpich2_config.txt 文件内容为 -hosts 2 node1 2 node2 2 //node1/sharefolder/cpi.exe

mpiexec -configfile mpich2_config.txt

wmpiexec.exe比以前的图形界面稳定多了

1.2具体的开发环境的配置见《MPICH 并行程序设计环境简介.pdf

 

Linux 下的并行环境搭建

1.下载MPI

LAM-MPI是一个比较好的MPI实现你装redhat 或者federal 或者SUSE的时候,full install的时候都已经安装了。

如果没有安装去下面下载

http://www.lam-mpi.org/

2.配置cluster

Using Linux to build a typical Cluster System for High Performance Computing

http://web.csie.chu.edu.tw/~cs87668/cluster.htm

只不过这篇文章使用Linux下的MPICH进行配置的。一般来说MPICH Linux的性能略微逊于LAM-MPI

3.配置开发环境

配置Linux下的开发环境就比较麻烦了。

建议使用Eclipse +Total View

http://www.etnus.com/TotalView/MPI.html

 

论坛

http://www.lasg.ac.cn/cgi-bin/forum/forums.cgi?forum=4

工具

http://www.intel.com/cd/software/products/asmo-na/eng/cluster/index.htm

http://www.intel.com/cd/software/products/asmo-na/eng/cluster/mpi/index.htm

 

http://www.lsc.nd.edu/research/PIPT/

并行的调试如果是windows下的调试建议使用windbg remote 或者vs2003或者2005进行。



2. 一篇很好的 在Windows 环境下 安装 MPICH 的文章。“MPICH 并行程序设计环境简介”

3. Windows Cluster Server 2003是一款支持并行的 操作系统,但需要 硬件是  64位CPU
***********************************************************************************************************************************
基于MPI的fftw函数库应用
     前面已经介绍了很多fftw函数库相关的东西,再举一个用MPI和fftw结合的例子:(环境是MPI和fftw都正确安装好了)
        有机会的话再介绍一下MPI(基于消息传递的接口),这个比fftw的安装和使用要复杂多了




#include "fftw_mpi.h"
#include"mpi.h"
#include<stdio.h>

int main(int argc, char **argv)
{
      int i;
      const int N=8;
      int local_n=2,local_start=0,local_n_after_transform=2,
             local_start_after_transform=0;
      fftw_mpi_plan plan;
      fftw_complex *data,*in;
     
      MPI_Init(&argc,&argv);

      plan = fftw_mpi_create_plan(MPI_COMM_WORLD, N, FFTW_FORWARD, FFTW_ESTIMATE);
             
      data= (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);

      fftw_mpi_local_size(plan,&local_n,&local_start,&local_n_after_transform,
           &local_start_after_transform,N);
      
      for(i=0; i<N; i++)/*测试数据 */
       {
         in[i].re = i;
         in[i].im= i+1;
        }
      for(i=0;i<local_n;i++)
      {
          data[i]=in[i+local_start];
          }
      fftw_mpi(plan, 1, data, NULL);

      fftw_mpi_destroy_plan(plan);
      for(i=0; i<N; i++)
      printf("%f,%fi/n",data[i].re,data[i].im );
      MPI_Finalize();

}

 

 发表于: 2007-06-13,修改于: 2007-06-13 18:35 已浏览511次,有评论20条 推荐 投诉

  网友评论
  guoguofish 时间:2007-06-16 16:50:35 IP地址:210.75.110.★
 
也不知道这个fftw支持是哪一版的MPI.我下了mpich和mpich2.
这个并行计算的意思是网络中多台机器并行还是一块CUP内的多核之间的并行,现在双核心CPU很流行.
如果是前者,那上面这个例子是否是它在一台机器上启动,然后它会自动寻找其它安装有 MPI的局域网中的机器,接下来开始并行计算。

 
  wangfanlion 时间:2007-06-16 18:49:01 IP地址:58.19.126.★
 
最新的fftw(3.2alpha)库已经开始支持MPI了,当然是俩个版本都支持
mpich要想实现并行,需要多台计算机,组成群集计算机,在很多大学都有,我们学校就有,不过单台计算机可以模拟并行,mpich有这样的指令
要想局域网的计算机同时参与运行,需要都安装了moich,而且要配置,否则也是不行的!!

你可能感兴趣的:(c/c++并行计算)