Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ParallelMatrix {
- public final static int N = 1000; //Random size of matrix
- public static void main(String[] args) throws InterruptedException {
- long startTime = System.currentTimeMillis();
- //Create and multiply matrix of random size N.
- double [][] a = new double [N][N];
- double [][] b = new double [N][N];
- double [][] c = new double [N][N];
- int i,j,k;
- for(i = 0; i < N ; i++)
- for(j = 0; j < N ; j++){
- a[i][j] = i + j;
- b[i][j] = i * j;
- }
- //newFixedThreadPool(1)
- ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
- for(i = 0; i < N; i++) {
- for(j = 0; j < N; j++) {
- pool.submit(new Multi(N,i,j,a,b,c));
- }
- }
- pool.shutdown();
- pool.awaitTermination(1, TimeUnit.DAYS);
- long endTime = System.currentTimeMillis();
- System.out.println("Calculation completed in " +
- (endTime - startTime) + " milliseconds");
- }
- static class Multi implements Runnable {
- final int N;
- final double [][] a;
- final double [][] b;
- final double [][] c;
- final int i;
- final int j;
- public Multi(int N, int i, int j, double[][] a, double[][] b, double[][] c){
- this.N=N;
- this.i=i;
- this.j=j;
- this.a=a;
- this.b=b;
- this.c=c;
- }
- @Override
- public void run() {
- for(int k = 0; k < N; k++) c[i][j] += a[i][k] * b[k][j];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement