Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 1.59 KB | None | 0 0
  1. import java.util.Random
  2.  
  3. p1 = 500
  4. p2 = 500
  5. threads = 1
  6.  
  7.  
  8. def giveTasks(int workers, int tasks){
  9.     int[] taskArray = new int[workers+1]
  10.     taskArray[0] = 0
  11.     for (i = 1; i<=Math.min(workers,tasks); i++) {
  12.         taskArray[i]=taskArray[i-1]+tasks/workers+Math.max(tasks%workers-i+1,0)
  13.     }
  14.    
  15.     return taskArray
  16. }
  17.  
  18. class Matrix{
  19.     public int[][] table
  20.     public Matrix(int p1, int p2){
  21.         table = new int[p1][p2]
  22.     }
  23.     public Matrix(int[][] matrix){
  24.         table = matrix
  25.     }
  26. }
  27.  
  28. def createMatrix(int lines, int columns){
  29.  int[][] matrix = new int[lines][columns]
  30.  Random rn = new Random()
  31.  for(i=0; i<lines;i++)
  32.     for(j=0;j<columns;j++)
  33.         matrix[i][j]=rn.nextInt(100)
  34.  return matrix
  35. }
  36.  
  37. Matrix matrix1 = new Matrix(createMatrix(p1,p2))
  38. Matrix matrix2 = new Matrix(createMatrix(p2,p1))
  39. Matrix matrix = new Matrix(p1,p2)
  40.  
  41.  
  42. int[] taskArray = giveTasks(threads, p1)
  43.  
  44. def queue = []
  45. int tn = 0
  46.  
  47. for (int i = 1; i < threads + 1; i++) {
  48.     int start = taskArray[i-1]
  49.     int stop = taskArray[i]
  50.  
  51.     def thread = Thread.start {
  52.         for (int job = start; job < stop; job++) { //line for matrix1
  53.             int sum = 0
  54.             for (int j = 0; j < p1; j++) {
  55.                 for (int k = 0; k < p1; k++)
  56.                     sum += matrix1.table[job][k] + matrix2.table[k][j]
  57.                 matrix.table[job][j] = sum
  58.             }
  59.         }
  60.         tn += 1
  61.         println "Thread " + tn + "finished"
  62.         println "start: " + start +" stop: "+ stop
  63.     }
  64.  
  65.     queue << thread
  66. }
  67. queue*.join()
  68. matrix.table.each { println it }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement