免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6097 | 回复: 2
打印 上一主题 下一主题

[转]MPI cluster技术简介与鸟哥的架设实例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-24 10:11 |只看该作者 |倒序浏览
  MPI简介 

  MPI(Message Passing Interface)是消息传递并行程序设计的标准之一,当前通用的是MPI1.1规范。正在制定的MPI2.0规范除支持消息传递外,还支持MPI的I/O规范和进程管理规范。MPI正成为并行程序设计事实上的工业标准。
  MPI的实现包括MPICH、LAM、IBM MPL等多个版本,最常用和稳定的是MPICH,曙光天潮系列的MPI以MPICH为基础进行了定制和优化。

  MPICH含三层结构,最上层是MPI的API,基本是点到点通信,和在点到点通信基础上构造的集群通信(Collective Communication);中间层是ADI层(Abstract Device Interface),其中device可以简单地理解为某一种底层通信库,ADI就是对各种不同的底层通信库的不同接口的统一标准;底层是具体的底层通信库,例如工作站机群上的p4通信库、曙光1000上的NX库、曙光3000上的BCL通信库等。

  MPICH的1.0.12版本以下都采用第一代ADI接口的实现方法,利用底层device提供的通信原语和有关服务函数实现所有的ADI接口,可以直接实现,也可以依靠一定的模板间接实现。自1.0.13版本开始,MPICH采用第二代ADI接口。

  我们将MPICH移植到曙光3000高效通信库BCL(Basic Communication Library)上(简称MPI_BCL)。MPI_BCL的接口标准与MPICH版本1.1完全一致,满足MPI1.1标准。同时,也支持ch_p4的通信库,即利用TCP/IP通信机制。从网络硬件角度说,MPI_BCL针对系统网络,MPI_ch_p4针对高速以太网。

1.MPI的程序设计

  MPI1.1标准基于静态加载,即所有进程在加载完以后就全部确定,直至整个程序结束才终止,在程序运行期间没有进程的创建和结束。一个MPI程序的所有进程形成一个缺省的组,这个组被MPI预先规定的Communicator MPI_COMM_WORLD所确定。

  MPI环境的初始化和结束流程如下:在调用MPI例程之前,各个进程都应该执行MPI_INIT,接着调用MPI_COMM_SIZE获取缺省组(group)的大小,调用MPI_COMM_RANK获取调用进程在缺省组中的逻辑编号(从0开始)。然后,进程可以根据需要,向其它节点发送消息或接收其它节点的消息,经常调用的函数是MPI_SEND和MPI_RECV。最后,当不需要调用任何MPI例程后,调用MPI_FINALIZE消除MPI环境,进程此时可以结束,也可以继续执行与MPI无关的语句。

  上面提到的六个函数:MPI_INIT,MPI_COMM_SIZE,MPI_COMM_RANK,MPI_SEND,MPI_RECV,MPI_FINALIZE 实际上构成了编写一个完整的MPI程序所需例程的最小集。

2.MPI的几个重要特征

  下面分别介绍MPI的几个重要特征:Communicator(通信空间)、Group(进程组)、Context_id(上下文标识)、Data Types(数据类型)。
MPI提供Communicator来指定通信操作的上下文,提供了通信操作的执行空间。在某个通信空间(或上下文)中发送的消息必须在相同的空间中接收,不同空间中的消息互不干扰。定义一个Communicator,也就指定了一组共享该空间的进程,这些进程组成了该Communicator的Group。

  Communicator通过其特征属性Context_id来区分,同一个进程不同的Communicator有不同的Context_id。因此Context_id是另一个区分消息的标志。

  MPI引入消息的Data Type属性的目的有两个:一是支持异构系统计算;二是允许消息来自不连续的或类型不一致的存储区,例如,可以传送数组的一列,或传送一个结构值,而该结构的每个元素的类型不同。Data Types定义了消息中不连续的数据项及其可能不同的数据类型。Data Type由应用程序在执行时通过基本的数据类型创建。

3.消息

  一个消息相当于一封信,消息内容相当于信本身,消息的接收者相当于信封上的内容。因此通常将前者称为消息的buffer, 后者称为消息的envelop。


  buffer: message address, count, datatype;
  envelop: process id, message tag,communicator

  在MPI以前的大多数通信系统中,消息buffer通常仅由buffer的地址和长度决定(例如曙光1000上的NX通信系统),那么在MPI的消息格式中为什么要引入Data Type呢?这有两个主要原因:

  支持异构计算:不同系统有不同的数据表示。解决这一问题的方法是预先定义一些基本数据类型,MPI实现过程中对这些类型进行转换,例如转换为XDR格式,接收时进行反转。

  派生的数据类型(Derived Data Types):允许消息来自于不连续的和类型不一致的存储区域。

4.MPI应用程序的编译

Include文件

  C语言应用程序应有
    #include \"mpi.h\"
  若使用cc编译,命令行应有:
    -I/cluster/mpi/net/include (net版)
    -I/cluster/bcl/include -I/cluster/rms/include -I/cluster/sdr/include -I/cluster/mpi/mesh/include (mesh版)

  Fortran语言应用程序应有
   include \'mpif.h\'
  若使用f77编译, 命令行应有:
    -I/cluster/mpi/net/include (net版)
    -I/cluster/bcl/include -I/cluster/rms/include -I/cluster/sdr/include -I/cluster/mpi/mesh/include (mesh版)

MPI库文件

C语言
  C语言程序编译时需作下述链接:
    -L/cluster/mpi/net/lib -lmpi -lbsd (net版)
    -L/cluster/mpi/mesh/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr (mesh版)
  数学函数库还应链接: -lm

Fortran语言
  Fortran编译时应作下述链接:
    -L/cluster/mpi/net/lib -lmpi -lbsd (net版)
    -L/cluster/mpi/mesh/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr (mesh版)

mpif77和mpicc

  MPI提供了两个工具(mpif77和mpicc)来简化MPI应用程序的编译。用户可以直接地使用命令行方式mpicc或mpif77来编译C或Fortran程序,编译方式与cc和f77完全一致。如:
    mpif77 -c foo.f
    mpicc -c foo.c
    mpif77 -o foo foo.o
    mpicc -o foo foo.o
  有时链接时需一些特殊库, 应在链接时注明。使用mpicc和mpif77省略了有关MPI的路径设置。

5.MPI应用程序的运行

  应用程序编译好后,使用mpirun命令运行MPI应用程序。mpirun命令完整的格式如下:
    mpirun [-h|-?|-help] [-sz size|-sz hXw] [-np nprocs] [-pl poolname] <progname [argument]>;
  各个选项的值由用户从命令行中显示地指定,选项的含义如下:
  -h
  -?
  -help:显示帮助信息。

  -sz <size| hXw>;
  指定物理节点的数目。有两种指定形式,一是直接指定size值,另一种是指定物理节点的矩形域的长和宽。size值和h*w的值如果超过所在pool的节点数,sz项的值取pool的节点数,h*w值取整个pool。两者的缺省值分别为所在pool的节点数和整个pool。

  -np <nprocs>;
  用户期望运行的进程数。进程数与实际申请的物理节点数没有任何联系,因为允许一个节点上运行同一个应用的多个进程。如果未指定,取实际sz项的值。

  -pl poolname
  应用程序执行的pool。应用程序的每次执行能且只能在一个pool中执行。缺省值为系统为用户设置的缺省的pool名(每个用户在创建时已自行指定或系统分配了一个缺省的pool)。

  在运行选项后,是用户的程序名。该可执行文件必须在所指定的或缺省的pool中的所有节点上能找到,并且与启动节点上的路径一致。用户程序名后的一切字符串都视为其参数(不包括被shell解释的重定向等,对shell解释的一些特殊字符,如需作为参数,应作相应的转换)。因此运行选项与用户程序名有先后的顺序,先运行选项,后用户程序名和参数。


MPI的使用

环境设置

一.1000A

环境变量的设置

  在曙光天潮 1000A并行系统中,MPICH 安装于 ‘/usr/local/mpich’, 因此应设置相应的环境变量。若使用csh ,则在 $HOME/.cshrc 文件中加入以下内容:

  set path=( $path /usr/local/mpich/bin )
  setenv MANPATH ${MANPATH}: /usr/ local/mpich/man

  类似地,若使用ksh 或 bsh,则应在 $HOME/.profile文件中加入相应内容。

[注]: 通常系统管理员已为你设置好环境。

Architecture和Device

  Architecture (简记为ARCH) 是指MPICH所用的机器类型;而device(简记为DEV) 是指MPICH采用何种方式实现处理机之间的通信。对应于每个ARCH/DEV对的MPI库和命令置于子目录 ‘/usr/local/mpich/lib/<ARCH>;/<DEV>;’中, 对于 1000A来说, 即是 ‘/usr/local/mpich/lib/rs6000/ch_p4,这一路径一般也应置于用户的 $HOME/.cshrc文件中, 否则有些命令将用全路径名称。

二.2000-I及3000

  在曙光3000系统中,MPI省缺地安装于\"/cluster/mpi\"下,因此应设置相应的环境变量。若使用csh,则在$HOME/.cshrc文件中加入相关内容;类似地,若使用ksh或bsh,则应在$HOME/.profile文件中加入相应内容。模板文件在\"/cluster/userenv/CSHRC, PROFILE\"。

[注]:往往系统管理员已为你设置好环境。若在系统设置为MESH版的同时,运行网络版MPI程序,只需按网络版要求设置环境变量MPI_ROOT即可。另外,还需系统管理员开放所需节点用户的rsh权限。

  为使用方便起见,我们建议用户作如下的设置:

(1)设置环境变量

csh类:
  setenv MPI_INSTALL_DIR /cluster/mpi
  #according to the network setting to select MPI protocol
  if ( -f /cluster/config/sys.conf ) then
  @ net={ grep NET /cluster/config/sys.conf }
  if ($net) then
  setenv MPI_ROOT $MPI_INSTALL_DIR/net
  else
  @ mesh={ grep MESH /cluster/config/sys.conf }
  if ($mesh) then
  setenv MPI_MODE 1
  setenv MPI_ROOT $MPI_INSTALL_DIR/mesh
  endif
  endif
  else
  echo \"/cluster/config/sys.conf is not found\"
  endif


ksh类:
  MPI_INSTALL_DIR=/cluster/mpi
  export MPI_INSTALL_DIR
  #according to the network setting to select MPI protocal
  if [ -f /cluster/config/sys.conf ]
  then
  if cat /cluster/config/sys.conf | grep NET
  then
  export MPI_ROOT=$MPI_INSTALL_DIR/net
  else
  if cat /cluster/config/sys.conf | grep MESH
  then
  export MPI_MODE=1
  export MPI_ROOT=$MPI_INSTALL_DIR/mesh
  fi
  fi
  else
  echo \"/cluster/config/sys.conf is not found\"
  fi

(2)增加路径

  MPI系统本身提供了一些命令,例如简化的编译命令mpicc和mpif77,命令行执行命令mpirun等。建议用户将以下路径加入自己的命令路径中。
  set path=( $path $MPI_ROOT/bin ) 或
  export PATH=$PATHMPI_ROOT/bin
  
  用户可以随时使用man命令获取MPI各函数的帮助信息,需加入如下的帮助信息路径。
  setenv MANPATH $MANPATH: $MPI_ROOT/man 或
  export MANPATH=$MANPATHMPI_ROOT/man

[注]上述路径和环境变量在用户模板启动文件CSHRC和PROFILE中均已设置,用户可以检查系统缺省配置的.cshrc或.profile文件。不要改动.rhosts和.login文件。


  
INCLUDE文件

一.1000A

C语言应用程序开头应有:

  #include “ mpi.h”
  若使用cc 编译,命令行应有: - I/usr/local/mpich/include

Fortran语言应用程序开头应有:

  include ’mpif.h’
  若使用Fortran 编译, 命令行应有: -I/usr/local/mpich/include

二.2000-I及3000

在C语言应用程序中添加:
  #include \"mpi.h\"
  编译的时候,建立头文件路径为:
  net版:-I/cluster/mpi/net/include
  mesh版:-I/cluster/bcl/include -I/cluster/rms/include -I/cluster/sdr/include -I/cluster/mpi/mesh/include

在Fortran语言应用程序添加:
  include \'mpif.h\'
  编译的时候,建立头文件路径为:
  net版:-I/cluster/mpi/net/include
  mesh版:-I/cluster/bcl/include -I/cluster/rms/include -I/cluster/sdr/include -I/cluster/mpi/mesh/include

  
MPI库文件

一.1000A

C语言:

  使用C编译器时需作下述链接:
  -L/usr/local/mpich/lib/rs6000/ch_p4 -lmpi -lbsd

  数学函数库还应链接: -lm

Fortran语言:

  使用Fortran编译器时应作下述链接:
  - L/usr/local/mpich/lib/rs6000/ch_p4 -lmpi -lbsd


二.2000-I及3000

C语言:

  使用C编译器时需作下述链接:
  -L/cluster/mpi/net/lib -lmpi -lbsd (net版)
  -L/cluster/mpi/mesh/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr (mesh版)

  数学函数库还应链接:-lm

Fortran语言:

  使用Fortran编译器时应作下述链接:
  -L/cluster/mpi/net/lib -lmpi -lbsd (net版)
  -L/cluster/mpi/mesh/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr (mesh版)

  MPI提供了两个工具(mpif77和mpicc)来简化MPI应用程序的编译,在曙光3000系统上, 若编译器仅安装在login节点上,编译过程应在login节点进行。


  
编译MPI程序

一.1000A

  MPICH提供了两个工具来简化MPI应用程序的编译, 在曙光1000A并行系统上,编译过程应在主控节点进行。

make

  MPICH应用程序常常需要链接特殊的库和编译选项, 这时用户就要使用Makefile。为方便用户, MPICH提供了一个 make 文件的模板 ,同时也提供了命令‘mpireconfig’,以按所用并行机特点将这一模板转换为用户可用的‘Makefile’。这一模板即为 ‘/usr/local/mpich/examples/Makefile.in’ 文件。

  用户将其转换为自己可用的‘Makefile’文件的过程如下:

  1.用户 login 入主控节点 (如carrot), 并转入适当子目录下, 如包括MPI应用程序test.f 的子目录下。
  2.将文件拷入子目录 % cp /usr/local/mpich/examples/Makefile.in 下。
  3. 由 ‘Makefile.in’ 产生 ‘Makefile’ 文件:% mpireconfig Makefile。
  4. 按需要修改Makefile。

  上述过程产生的 Makefile 中包含一个Fortram程序 (pi3.f) 和两个C语言程序 (cpi.c和cpilog.c) 的编译命令, 按需要加入或修改所需要的内容, 如按 pi3.f 的编译命令加入test.f 编译所需内容或将 pi3 改为 test, 以备编译 test.f 之需。xlc 与 xlf 的编译选项也应按需要修改。

  编译有关程序只需使用下述命令:
    % make

  则 ‘Makefile’ 中所有列入的程序均被编译, 若只编译 test.f, 则需键入命令:
    % make test

  这时只编译test.f并生成目标test。

mpif77和 mpicc

  MPICH提供了两个命令 (mpif77和mpicc) 来编译和链接Fortran或C语言程序, 用户可使用此二命令编译MPI应用程序, 特别是当程序只包含少量文件时。mpif77 (mpicc) 与一般Fortran (或C) 编译命令使用方式类似, 可加入同样的选项,如:

    mpif77 -c foo.f
    mpicc -c foo.c 与
    mpif77 -o foo foo.o
    mpicc -o foo foo.o

  有时链接时需一些特殊库,应在链接时注明。

二.2000-I及3000

make

  MPI应用程序常常需要链接特殊的库和编译选项, 这时用户就要使用\"makefile\"。按需要修改makefile,主要是编译器路径的设置。编译有关程序只需使用下述命令:
    % make
  则 \'makefile\' 中所有列入的程序均被编译,若只编译test.f,则需键入命令
    % make test
  这时只编译test.f并生成目标文件test。

  用户可以用以下的Makefile文件模板作C程序的编译:
  # Makefile for compiling MPI programs on Dawning-3000 system.
  #
  # This makefile is used to compile and link with MPI programs for BCL-1e
  # communication library and RMS resource management system written in C.
  #
  CC = /usr/bin/cc

  CLINKER = /usr/bin/cc
  OPTFLAGS =
  LIBS = -L$(MPI_ROOT)/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr
  INCLUDES = -I/cluster/bcl/include -I/cluster/rms/inc -I$(MPI_ROOT)/include
  default: hello-world
  hello-world: hello-world.o
  $(CLINKER) $(OPTFLAGS) ${INCLUDES} -o hello-world hello-world.o ${LIBS}
  /bin/rm -f *.o *~
  clean:
  /bin/rm -f *.o *~ $(default)
  .c.o:
  $(CC) $(CFLAGS) ${INCLUDES} -c $*.c

  Fortran程序的Makefile文件模板如下:
  # Makefile for compiling MPI programs on Dawning-3000 system.
  #
  # This makefile is used to compile and link with MPI programs for BCL-1e
  # communication library and RMS resource management system written in Fortran.
  #
  F77 = /usr/bin/f77
  CLINKER = /usr/bin/f77
  OPTFLAGS =
  LIBS = -L$(MPI_ROOT)/lib -L/cluster/bcl/lib -L/cluster/rms/lib -L/cluster/sdr/lib -lmpi -lbcl -lrms -lsdr
  INCLUDES = -I/cluster/bcl/include -I/cluster/rms/inc -I$(MPI_ROOT)/include
  default: hello-world
  hello-world: hello-world.o
  $(CLINKER) $(OPTFLAGS) ${INCLUDES} -o hello-world hello-world.o ${LIBS}
  /bin/rm -f *.o *~
  clean:
  /bin/rm -f *.o *~ $(default)
  .f.o:
  $(F77) $(CFLAGS) ${INCLUDES} -c $*.f

mpif77和mpicc

  如果用户设置了正确的MPI系统命令的执行路径,就可以直接地使用命令行方式mpicc或mpif77来编译C或Fortran程序,编译方式与cc和f77完全一致。

  MPI提供了两个命令 (mpif77和mpicc) 来简化编译和链接MPI Fortran或C语言程序的过程,用户可使用此二命令编译MPI应用程序,特别是当程序只包含少量文件时。mpif77 (mpicc) 与一般Fortran (或C) 编译命令使用方式类似, 可加入同样的选项(详细选项可见有关编译器选项的说明),如:
    mpif77 -c foo.f
    mpicc -c foo.c
    mpif77 -o foo foo.o
    mpicc -o foo foo.o

  有时链接时需一些特殊库, 应在链接时注明。使用mpicc和mpif77省略了有关MPI的路径设置。


  
运行MPI程序

一.1000A

  在曙光天潮1000A系统上, 所有MPI应用程序均应在计算节点 (即node1 - node 8或hnode1 - hnode 运行, 因此在应用程序编译好后, 用户应登录到适当节点, 运行应用程序。

  MPICH提供了如下方式来运行MPI程序, 现分述如下.

1.mpirun 命令

  命令mpirun -help会给出全部可用的选项, 适当地使用这些选项能更好地运行应用程序, 并改善系统运行状况。

  mpirun的基本格式为:

    mpirun [mpirun-options…] <progname>; [options…]

  其中 [mpirun-options…], 主要选项如下:

    -np <np>;      要加载的进程个数。

    -p4pg <pgfile>;  按照pgfile文件中的要求加载用户进程。pgfile文件描述用户在那些结点上加载什么样的用户进程。该文件的格式为:

  第一行:<结点名>; <0>; <用户要加载的进程--允许使用绝对路径>;
  第二行:<结点名>; <1>; <用户要加载的进程--允许使用绝对路径>;
              ......
  第n行:<结点名>; <1>; <用户要加载的进程--允许使用绝对路径>;

  其中n为用户要加载进程的个数。结点名可以相同,也可以不同。且用户使用此选项后, -np选项无效。

  最简单的运行一个MPI应用程序的例子是:

    % mpirun -np 4 a.out,它将在并行机上加载4个用户执行程序 --a.out。

  一般情况下最好用-p4pg选项,pgfile文件包含有关进程在哪些节点上运行的信息。如你已登录到节点node1, 并用4个节点执行你的并行程序 a. out, 执行文件的全路径是:/public/user1/example/a.out, 则pgfile内容如下:

  node1 0 /public/user1/example/a.out
  node2 1 /public/user1/example/a.out
  node3 1 /public/user1/example/a.out
  node4 1 /public/user1/example/a.out

  这时的执行命令为:

    % mpirun -p4pg pgfile a.out

  你也可以在一个节点(如node1)上模拟多进程并行程序的执行, 这时pgfile的一个例子是:

  node1 0 /public/user1/example/a.out
  node1 1 /public/user1/example/a.out
  node1 1 /public/user1/example/a.out
  node1 1 /public/user1/example/a.out

2.程序的直接执行

  用户也可以不用mpirun, 而直接运行目标程序(a.out),但此时需用pgfile,其命令格式如下:

    % a.out -p4pg pgfile

3.使用计算网

  使用计算网的优点是通信速度快, 程序运行性能得到改善。建议用户使用计算网来运行MPI应用程序,这时只需将pgfile中第一列的nodei (其中1≤i≤ 改为hnodei。则pgfile内容将改为:

  hnode1 0 /public/user1/example/a.out
  hnode2 1 /public/user1/example/a.out
  hnode3 1 /public/user1/example/a.out
  hnode4 1 /public/user1/example/a.out
  则,用户进程a.out的加载命令为:

    %mpirun -p4pg pgfile a.out

  或者,

    %a.out -p4pg pgfile

二.2000-I及3000

  在曙光3000系统上,所有MPI应用程序均应在计算节点运行,因此在应用程序编译好后,使用mpirun命令运行MPI应用程序。mpirun命令完整的格式如下:
  mpirun [-h|-?|-help] [-sz size|-sz hXw] [-np nprocs] [-pl poolname] <progname [argument]>;

  各个选项的值由用户从命令行中显示地指定,选项的含义如下:
  -h
  -?
  -help:显示帮助信息。

  -sz <size| hXw>;
  指定物理节点的数目有两种指定形式。一是直接指定size值,另一种是指定物理节点的矩形域的长和宽。size值和h*w的值如果超过所在pool的节点数,sz项的值取pool的节点数,h*w值取整个pool。两者的缺省值分别为所在pool的节点数和整个pool。

  -np <nprocs>;
  用户期望运行的进程数。进程数与实际申请的物理节点数没有任何联系,因为允许一个节点上运行同一个应用的多个进程。如果未指定,取实际sz项的值。

  -pl <poolname>;
  应用程序执行的pool。应用程序的每次执行能且只能在一个pool中执行。缺省值为系统为用户设置的缺省的pool名(每个用户在创建时已自行指定或系统分配了一个缺省的pool)。

  在运行选项后,是用户的程序名。该可执行文件必须在所指定的或缺省的pool中的所有节点上能找到,并且与启动节点上的路径一致。用户程序名后的一切字符串都视为其参数(不包括被shell解释的重定向等,对shell解释的一些特殊字符,如需作为参数,应作相应的转换)。因此运行选项与用户程序名有先后的顺序,先运行选项,后用户程序名和参数。

  执行mpirun命令的一些简洁方式举例如下:

    mpirun [-np nprocs][-pl poolname] <progname [argument]>;
  未显示指出物理节点数,缺省值是整个pool的节点数。表明该应用程序在整个pool的所有节点上运行。如果nprocs >; pool的节点总数,每个节点上至少有一个进程;否则仅在该pool中nprocs个节点上执行,每个节点上运行一个进程。

    mpirun [-pl poolname] <progname [argument]>;
  未显示指出物理节点数和进程数,两者的缺省值是pool的节点总数。

    mpirun [-np nprocs] <progname [argument]>;
  未显示指出物理节点数和pool名,该程序在缺省的pool的所有节点上运行。

    mpirun [-pl poolname] <progname [argument]>;
  未显示指出物理节点数和进程数,该程序在pool内所有节点上运行,每个节点上一个进程。

    mpirun <progname [argument]>;
  在缺省的pool内的所有节点上运行该程序,每个节点上一个进程。

  用户调式MPI程序时,可以启动DCDB(Dawning Cluster DeBugger),在该环境下进行程序的调试。曙光3000安装有MPI版1.1版本(MPI_ch_p4),使用方法与曙光1000A上或任何网络环境上MPI的使用方法相同。MPI_ch_p4(MPI网络版)的系统路径在/cluster/mpi/net,在设置环境变量时要注意,具体运行方法参见曙光1000A

论坛徽章:
0
2 [报告]
发表于 2004-06-24 12:19 |只看该作者

[转]MPI cluster技术简介与鸟哥的架设实例

Is there anybody  like cluster too?

论坛徽章:
0
3 [报告]
发表于 2004-06-24 15:02 |只看该作者

[转]MPI cluster技术简介与鸟哥的架设实例

顶一下~~~我like,但偶的水平还远远做不了cluster~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP