⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scatterv.java

📁 MPI for java for Distributed Programming
💻 JAVA
字号:
package mpi.ccl;/* MPI-Java version :    Sang Lim (slim@npac.syr.edu)    Northeast Parallel Architectures Center at Syracuse University    12/2/98*/import mpi.*;public class scatterv {  static public void main(String[] args) throws MPIException {  }  public scatterv() {  }  public scatterv(String[] args) throws Exception {        final int MAXLEN = 10;    int myself,tasks;    MPI.Init(args);    myself = MPI.COMM_WORLD.Rank();    tasks = MPI.COMM_WORLD.Size();     if(tasks > 8) {      if(myself == 0)        System.out.println("scatterv must run with less than 8 tasks! ");      MPI.Finalize();      return;    }    int root,i=0,j,k,stride=15;    int out[] = new int[tasks*stride];    int in[]  = new int[MAXLEN];    int dis[] = new int[MAXLEN];    int scount[] = new int[MAXLEN];        for(i = 0; i < MAXLEN;i++){       dis[i] = i*stride;       scount[i] = 5;       in[i] = 0;    }    scount[0] = 10;        for (i = 0;i < tasks*stride;i++)       out[i] = i;        MPI.COMM_WORLD.Scatterv(out,0,scount,dis,MPI.INT,in,0,scount[myself],MPI.INT,0);    String [] messbuf = new String [1] ;    if(myself==0){       System.out.println("Original array on root...");       for(i=0; i<tasks*stride; i++)          System.out.print(out[i]+" ");       System.out.println();       System.out.println();       System.out.println("Result on proc 0...");       System.out.println("Stride = 15 "+"Count = "+scount[0]);       for(i=0; i<MAXLEN; i++)          System.out.print(in[i]+" ");       System.out.println();       System.out.println();       // Reproduces output of original test case, but deterministically       int nmess = tasks < 3 ? tasks : 3 ;       for(int t = 1 ; t < nmess ; t++) {           MPI.COMM_WORLD.Recv(messbuf, 0, 1, MPI.OBJECT, t, 0) ;           System.out.print(messbuf [0]) ;       }    }        if(myself==1){        StringBuffer mess = new StringBuffer() ;        mess.append("Result on proc 1...\n");	mess.append("Stride = 15 "+"Count = "+scount[1] + "\n");	for(i=0; i<MAXLEN; i++)	    mess.append(in[i]+" ");	mess.append("\n");	mess.append("\n");        messbuf [0] = mess.toString() ;        MPI.COMM_WORLD.Send(messbuf, 0, 1, MPI.OBJECT, 0, 0) ;    }    if(myself==2){        StringBuffer mess = new StringBuffer() ;        mess.append("Result on proc 2...\n");        mess.append("Stride = 15 "+"Count = "+scount[2] + "\n");        for(i=0; i<MAXLEN; i++)           mess.append(in[i]+" ");	mess.append("\n");        messbuf [0] = mess.toString() ;        MPI.COMM_WORLD.Send(messbuf, 0, 1, MPI.OBJECT, 0, 0) ;    }    if(myself == 0)  System.out.println("Scatterv TEST COMPLETE");    MPI.Finalize();  }}// Things to do////   Make output deterministic by gathering and printing from root.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -