public reduce_scatter(String[] args) throws Exception { final int MAXLEN = 10000; int out[] = new int[MAXLEN * 100]; int in[] = new int[MAXLEN * 100]; int i, j, k; int myself, tasks; int recvcounts[] = new int[128]; MPI.Init(args); myself = MPI.COMM_WORLD.Rank(); tasks = MPI.COMM_WORLD.Size(); if (tasks > 8) { if (myself == 0) { System.out.println("reduce_scatter must run with 8 tasks!"); } MPI.Finalize(); return; } j = 10; // for(j=1;j<=MAXLEN*tasks;j*=10) { for (i = 0; i < tasks; i++) recvcounts[i] = j; for (i = 0; i < j * tasks; i++) out[i] = i; MPI.COMM_WORLD.Reduce_scatter(out, 0, in, 0, recvcounts, MPI.INT, MPI.SUM); for (k = 0; k < j; k++) { if (in[k] != tasks * (myself * j + k)) { System.out.println( "bad answer (" + in[k] + ") at index " + k + " of " + j + "(should be " + tasks * (myself * j + k) + ")"); break; } } // } MPI.COMM_WORLD.Barrier(); if (myself == 0) System.out.println("Reduce_scatter TEST COMPLETE"); MPI.Finalize(); }