All pastes #1236989 Raw Edit

Send dan Receive

public text v1 · immutable
#1236989 ·published 2008-10-26 15:49 UTC
rendered paste body
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();

}

}

}