All pastes #1269368 Raw Edit

send receive 2

public text v1 · immutable
#1269368 ·published 2008-11-28 13:15 UTC
rendered paste body
//menggunakan semua host 
andrew fiade
andrew_fiade@yahoo.co.id

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, d, 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();

        }

    }

}