using System; using Alchemi.Parallel; using Environment = Alchemi.Parallel.Environment; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int size, rank, i, j; object data; MPI mpi = Alchemi.Parallel.Environment.GetInstance().GetMPI; mpi.Init(); mpi.Comm_Size(out size); mpi.Comm_Rank(out rank); MPI_Comm comm = new MPI_Comm("Andrew"); MPI_Status status = new MPI_Status(); int[] data1,data3; data1 = new int[5]; data3 = new int[5]; data1[1] = 13; data1[2] = 16; data1[3] = 14; if (rank == 0) { int numWorkers = size-1; Console.WriteLine("dikasih kesiapa ???jumlah prosesor {0}", numWorkers); /* kriim ke pekerja */ for (int d = 1; d <= numWorkers; d++) { mpi.Send(data1, 1, 0, comm);//format (Data, nomor prosesortujuan,tag nilainya 0, comm } /* terima dari pekerja*/ Object offsetArray; int dest; for ( int yi = 1; yi <= numWorkers; yi++) { // dest = status.Src; mpi.Recv(out offsetArray, yi, 0, comm, status); data3= (int[])offsetArray; for (i = 1; i < 4; i++) { Console.WriteLine("untuk master,data diterima dari pekerja {0}", data3[i]); } } } else { Object payload; int[] nilai; int[] nilai2; nilai2 = new int[5]; nilai = new int[5]; nilai2[1] = 3; nilai2[2] = 10; nilai2[3] = 4; /* receive data from master */ //terima dari master mpi.Recv(out payload, 0, 0, comm, status); nilai= (int[])payload; for (int k = 1; k < 4; k++) { Console.WriteLine("untuk pekerja,data diterima dari pid 0 nilai data {0}", nilai[k]); } // kirim ke master mpi.Send(nilai2, 0, 0, comm); } mpi.Finalise(); } } }