Pembicaraan Wikipedia:Menyunting sebuah halaman

using System; using Alchemi.Parallel; using Environment = Alchemi.Parallel.Environment; namespace ConsoleApplication1 {

   class Program
   {
       static void Main(string[] args)
       {
           int size, rank, i, j,s,p,r;
           object data;
           DateTime tmenow = DateTime.Now;
           int mls = tmenow.Millisecond;
           Random rndnumber = new Random(mls);
           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,temp; int n = Int32.Parse(args[1]);
           data1 = new int[n];
           data3 = new int[n]; temp = new int[n];
        //   data1[1] = 13; data1[2] = 16; data1[3] = 14; 
           r = n % size;
           if (rank == 0)
           {
               s = n / size;
               int numWorkers = size - 1;
       
               Console.WriteLine("dikasih kesiapa ???jumlah prosesor {0}= {1}={2}={3}", numWorkers,s,size,rank);
               for (i = 0; i < n; i++)
               data1[i] = rndnumber.Next(0, 999);/* kriim ke pekerja */
               for (int d = 1; d <= numWorkers; d++)
               {
                   for (i = d * s; i < (s * (d + 1)); i++)
                   {
                      mpi.Send(data1[i], d, 0, comm);
                   }
               }
              /* terima dari pekerja*/
               Object offsetArray;
               int dest;
               Console.WriteLine("untuk dikerjakan proseor 0");
               for (int yi = 0; yi < s; yi++)
               {
                   //untuk id =0
                   data3[yi] = data1[yi];
                   Console.WriteLine("data ke {0} = {1}", yi, data3[yi]);
               }
               Console.WriteLine("============"); int tambah;
               tambah = s;
                  for (int d = 1; d <= numWorkers; d++)
                  {
                    mpi.Recv(out offsetArray, d, 0, comm, status);
                   temp = (int[])offsetArray;
                   for (i = d * s; i < (s * (d + 1)); i++)
                   {
                       data3[i] = temp[i];
                   }
                   }


                         for (i = 0; i < n; i++)
                        {
                           
                             Console.WriteLine("nilai awal {0}={1}", i, data3[i]);
                         }
     
           }
           else
           {
               Object payload;
               int[] nilai; int nilaidata;
               int[] nilai2; s = n / size;
               nilai2 = new int[n]; nilai = new int[n];
                           /* receive data from master */
               //terima dari master
               int id; id = rank-1; //karena di prosesor 0 dikirim melalui id=0
               //maka dibuat id=0
               int tampung;
            //   nilai2 = new int[s + 2];
               int kk = s;
               Console.WriteLine("identifikasi pekerje = {0} ",rank);
              
             //  for (i = 0; i < s ; i++)
               int d = rank;
               for (i = d * s; i < (s * (d + 1)); i++)
               {
                   mpi.Recv(out payload, 0, 0, comm, status);
                   tampung = (int)payload;
                   nilai2[i] = tampung; 
             Console.WriteLine("dikerjakan oleh pekerja {0} data {1}", i,nilai2[i]);
          
               }        //data ini harusnya disorting 
               //untuk percobaan dikirimkan 
               //id =1 . dari id kali s sampai id kalis+s
               int ss = s; int ii = 0;
                       // kirim ke master
              mpi.Send(nilai2, 0, 0, comm);
           }
           mpi.Finalise();
       }
   }

}

MPI Paralel simple dengna Visual C#

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,s,p,r;
           object data;
           DateTime tmenow = DateTime.Now;
           int mls = tmenow.Millisecond;
           Random rndnumber = new Random(mls);
           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,temp; int n = Int32.Parse(args[1]);
           data1 = new int[n];
           data3 = new int[n]; temp = new int[n];
        //   data1[1] = 13; data1[2] = 16; data1[3] = 14; 
           r = n % size;
           if (rank == 0)
           {
               s = n / size;
               int numWorkers = size - 1;
       
               Console.WriteLine("dikasih kesiapa ???jumlah prosesor {0}= {1}={2}={3}", numWorkers,s,size,rank);
               for (i = 0; i < n; i++)
               data1[i] = rndnumber.Next(0, 999);/* kriim ke pekerja */
               for (int d = 1; d <= numWorkers; d++)
               {
                   for (i = d * s; i < (s * (d + 1)); i++)
                   {
                      mpi.Send(data1[i], d, 0, comm);
                   }
               }
              /* terima dari pekerja*/
               Object offsetArray;
               int dest;
               Console.WriteLine("untuk dikerjakan proseor 0");
               for (int yi = 0; yi < s; yi++)
               {
                   //untuk id =0
                   data3[yi] = data1[yi];
                   Console.WriteLine("data ke {0} = {1}", yi, data3[yi]);
               }
               Console.WriteLine("============"); int tambah;
               tambah = s;
                  for (int d = 1; d <= numWorkers; d++)
                  {
                    mpi.Recv(out offsetArray, d, 0, comm, status);
                   temp = (int[])offsetArray;
                   for (i = d * s; i < (s * (d + 1)); i++)
                   {
                       data3[i] = temp[i];
                   }
                   }


                         for (i = 0; i < n; i++)
                        {
                           
                             Console.WriteLine("nilai awal {0}={1}", i, data3[i]);
                         }
     
           }
           else
           {
               Object payload;
               int[] nilai; int nilaidata;
               int[] nilai2; s = n / size;
               nilai2 = new int[n]; nilai = new int[n];
                           /* receive data from master */
               //terima dari master
               int id; id = rank-1; //karena di prosesor 0 dikirim melalui id=0
               //maka dibuat id=0
               int tampung;
            //   nilai2 = new int[s + 2];
               int kk = s;
               Console.WriteLine("identifikasi pekerje = {0} ",rank);
              
             //  for (i = 0; i < s ; i++)
               int d = rank;
               for (i = d * s; i < (s * (d + 1)); i++)
               {
                   mpi.Recv(out payload, 0, 0, comm, status);
                   tampung = (int)payload;
                   nilai2[i] = tampung; 
             Console.WriteLine("dikerjakan oleh pekerja {0} data {1}", i,nilai2[i]);
          
               }        //data ini harusnya disorting 
               //untuk percobaan dikirimkan 
               //id =1 . dari id kali s sampai id kalis+s
               int ss = s; int ii = 0;
                       // kirim ke master
              mpi.Send(nilai2, 0, 0, comm);
           }
           mpi.Finalise();
       }
   }

}

Kembali ke halaman Wikipedia "Menyunting sebuah halaman".