File: Indexed.java

package info (click to toggle)
mpj 0.44%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 7,600 kB
  • ctags: 6,809
  • sloc: java: 49,853; ansic: 2,508; xml: 596; sh: 311; perl: 156; makefile: 26
file content (78 lines) | stat: -rwxr-xr-x 2,034 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package mpi.dtyp;

import mpi.*;
import java.util.Arrays;

/**
 * This example application, is to check and demonstrate the functonality of
 * contiguous datatypes. I'm writing an MPJ program by coverting a C program by
 * Forest Hoffman at following URL
 * http://www.linux-mag.com/2003-04/extreme_01.html
 * 
 */
public class Indexed {

  public static void main(String args[]) throws Exception {
    try {
      Indexed c = new Indexed(args);
    }
    catch (Exception e) {
    }
  }

  public Indexed() {
  }

  public Indexed(String[] args) throws Exception {
    int DIM = 8;
    MPI.Init(args);
    int i, j, k, rank, size, dest, src, tag;

    int[] blklen = new int[DIM];
    int[] displ = new int[DIM];
    double[] data = new double[(DIM * DIM)];
    rank = MPI.COMM_WORLD.Rank();
    size = MPI.COMM_WORLD.Size();
    Datatype parameterType;

    /* only the first process reads the parameters */
    for (i = 0; i < DIM; i++) {
      blklen[i] = DIM - i;
      displ[i] = (i * DIM) + i;
    }
    src = 0;
    dest = 1;
    tag = 10;
    Datatype indexedDT = Datatype.Indexed(blklen, displ, MPI.DOUBLE);
    indexedDT.Commit();

    if (rank == 1) {

      MPI.COMM_WORLD.Recv(data, 0, 1, indexedDT, src, tag);
      System.out.println("recv completed");

      for (j = 0; j < 64; j++) {
	System.out.print("data[" + j + "]=" + data[j] + " ");
      }

      /*
       * work out what would be test ? if (Arrays.equals(source,dest)) {
       * System.out.println("PASS"); }else { System.out.println("\n****");
       * System.out.println("FAIL"); System.out.println("****"); }
       */
    } else if (rank == 0) {
      for (i = 0; i < (DIM * DIM); i++)
	data[i] = (double) (i + 1);

      MPI.COMM_WORLD.Send(data, 0, 1, indexedDT, dest, tag);
      System.out.println("Send Completed");
    }
    try {
      Thread.currentThread().sleep(1000);
    }
    catch (Exception e) {
    }
    MPI.COMM_WORLD.Barrier();
    MPI.Finalize();
  }
}