Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.01 KB | None | 0 0
  1. import mpi.MPI;
  2.  
  3. import java.util.concurrent.ThreadLocalRandom;
  4.  
  5. public class HelloWorld {
  6.     public static void main(String[] args) throws Exception{
  7.         MPI.Init(args);
  8.         double starttime, endtime;
  9.         int rank = MPI.COMM_WORLD.Rank();
  10.         int numranks = MPI.COMM_WORLD.Size();
  11.         final int N = 10;
  12.         int[] randomNumbers = new int[N];
  13.  
  14.         if(rank == 0){
  15.             randomNumbers = generateRandomUnsortedIntArray(N, 9);
  16.             System.out.println("unsorted array on rank 0 before bcast..");
  17.             for (int i = 0; i <= N-1; i++) {
  18.                 System.out.print(randomNumbers[i] + " ");
  19.             }
  20.             System.out.println("");
  21.             }
  22.  
  23.         MPI.COMM_WORLD.Bcast(randomNumbers, 0, N, MPI.INT, 0);
  24.  
  25.         //if (rank != 0) {
  26.         //    System.out.println("Broadcast complete on rank " + rank);
  27.         //}
  28.         MPI.COMM_WORLD.Barrier();
  29.         if (rank == 0) {
  30.             System.out.println("Rank 0 Sorted array:");
  31.             starttime = System.nanoTime();
  32.             insertionSort(randomNumbers);
  33.             for (int i = 0; i <= N-1; i++) {
  34.                 System.out.print(randomNumbers[i] + " ");
  35.             }
  36.             endtime = System.nanoTime();
  37.             System.out.println("");
  38.             System.out.println("Execution time (rank 0):" + (endtime - starttime));
  39.  
  40.         }
  41.         MPI.COMM_WORLD.Barrier();
  42.  
  43.         if(rank != 0){
  44.             starttime = System.nanoTime();
  45.             insertionSort(randomNumbers);
  46.             //for (int i = 0; i <= N-1; i++) {
  47.             //    System.out.print(randomNumbers[i] + " ");
  48.             //}
  49.             endtime = System.nanoTime();
  50.             System.out.println("");
  51.             System.out.println("Execution time (rank "+ rank + "):" + (endtime - starttime));
  52.         }
  53.  
  54.         if (rank == (numranks-1)) {
  55.             for (int i = 0; i <= N-1; i++) {
  56.                 System.out.print(randomNumbers[i] + " ");
  57.             }
  58.         }
  59.  
  60.  
  61.         MPI.Finalize();
  62.     }
  63.  
  64.     private static int[] generateRandomUnsortedIntArray(int length, int maxInt){
  65.         /*
  66.         Generates an array of length length and fills it with random
  67.         integers with a max value of maxInt then returns the array
  68.          */
  69.  
  70.         // Create array variable
  71.         int[] randArray = new int[length];
  72.  
  73.         // Iterate over 0..length
  74.         for(int i = 0; i < length; i++){
  75.             // Get next random number, then store it in array at current iteration point
  76.             randArray[i] = ThreadLocalRandom.current().nextInt(maxInt);
  77.         }
  78.  
  79.         // Return array
  80.         return randArray;
  81.  
  82.     }
  83.  
  84.     public static void insertionSort(int[] array) {
  85.         int N = array.length;
  86.         for (int i = 1; i < N; i++) {
  87.             int temp = array[i];
  88.             int j = i-1;
  89.             while (j >= 0 && array[j] > temp) {
  90.                 array[j+1] = array[j];
  91.                 j = j - 1;
  92.             }
  93.             array[j+1] = temp;
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement