MPI

Vikipedi, özgür ansiklopedi
Atla: kullan, ara

MPI (Message Passing Interface) bir bilgisayar iletişim protokolüdür. Dağıtık bellekli bir sistemde paralel program koşan düğümlerin arasındaki iletişim için kullanılan fiilen standart bir protokoldür. MPI uygulamaları Fortran, C, C++ ve Ada programlarından çağrılan kütüphane yordamlarından oluşur. MPI 'ın diğer eski mesaj geçirmeli kütüphanelere olan üstünlüğü taşınabilir (MPI pek çok dağıtık bellekli mimari üzerinde uygulanmıştır) ve hızlı (çünkü her bir uygulama üzerinde çalıştığı hardware için optimize edilmektedir) olmasıdır.

Aşağıda bir "Merhaba Dünya" uygulaması görülmektedir. Her bir işlemciye "Merhaba" mesajı yollanmakta bu mesaj işlendikten sonra sonuçlar ana işlemciye dönmekte ve çıktı mesajları ekrana yazılmaktadır.

// MPI Testi

#include <mpi.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
  char idstr[32];
  char buff[128];
  int numprocs;
  int myid;
  int i;
  MPI_Status stat; 

  MPI_Init(&argc,&argv); 
  MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
  MPI_Comm_rank(MPI_COMM_WORLD,&myid); 

  if(myid == 0)
  {
    printf(" %d tane islemcim var\n", numprocs);
    for(i=1;i<numprocs;i++)
    {
      sprintf(buff, "Merhaba %d! ", i);
      MPI_Send(buff, 128, MPI_CHAR, i, 0, MPI_COMM_WORLD);
    }
    for(i=1;i<numprocs;i++)
    {
      MPI_Recv(buff, 128, MPI_CHAR, i, 0, MPI_COMM_WORLD, &stat);
      printf("%s\n", buff);
    }
  }
  else
  {
    MPI_Recv(buff, 128, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &stat);
    sprintf(idstr, "Islemci %d ", myid);
    strcat(buff, idstr);
    strcat(buff, "goreve hazir\n");
    MPI_Send(buff, 128, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
  }

  MPI_Finalize();
  return 0;
}

Dış bağlantılar[değiştir | kaynağı değiştir]