SlideShare ist ein Scribd-Unternehmen logo
1 von 4
MPI_Comm_accept

menerimapermintaanuntukmembentukintercommunicatorbaru

    intMPI_Comm_accept(
    char *port_name,
    MPI_Info info,
    int root,
    MPI_Commcomm,
    MPI_Comm *newcomm
    );

    intMPI_Comm_accept(
    wchar_t *port_name,
    MPI_Info info,
    int root,
    MPI_Commcomm,
    MPI_Comm *newcomm
    );

Parameters

port_name
       [in] nama_port (string, digunakanhanyapada root)
info
       [in] implementasi-informasi yang berkaitan (handle, hanyapada root)
root
       [in] barisan / derajatpadacommdari node root (integer)
comm
       [in] commintracommunicator over which call is collective (handle)
newcomm
       [out] intercommunicator with client as remote group (handle)

Remarks

MPI_COMM_ACCEPT

membangunkomunikasidenganklien.Sebutsajakomunikatorkolektif.Inimengembalikansebuahintercom

municator yang

memungkinkankomunikasidenganklien.Port_nameharustelahterbentukmelaluipanggilanke
MPI_OPEN_PORT.informasi string didefinisikanolehaplikasi yang dapatmemungkinkankontrol yang

lebihtepatuntukmenerimapanggilan.


Thread and Interrupt Safety

This routine is thread-safe. Iniberartibahwarutinitasdapatdenganamandigunakanolehbeberapa threads

tanpaperluuntuksetiappenggunamemberikan threads lock.

Namunrutinitasinitidakselamanyaaman.Biasanyainidisebabkankarenapenggunaanalokasimemorisepert

imallocatauaktivitasruntime non-MPICH lainnya yang tidakaman.
Notes for Fortran

Semuarutinitas MPI dalamFortran (kecualiuntuk MPI_WTIME dan MPI_WTICK)

memilikiierrargumentambahan di akhirdaftarargumen. IERR adalah integer danmemilikiarti yang
samadengannilaikembalidarirutinitasdalam C. Dalam Fortran, rutinitas MPI adalahsubrutin,
dandipanggildenganinstruksipanggilan (statement)


All MPI objects (e.g., MPI_Datatype, MPI_Comm) are of type INTEGER in Fortran.

Errors

Semuarutinitas    MPI    (kecualiMPI_WtimedanMPI_Wtick)      mengembalikannilai   error.   Rutinitas   C
sebagainilaidarifungsidanrutinitasFortranpada     argument      terakhir.   Sebelumnilaidikembalikan,

penangan error akandipanggil. Secara default, pembatalanpenanganan error adalahtugasdari
MPI.Penanganankesalahandapatdiubahdengan :MPI_Comm_set_errhandler (for communicators),

MPI_File_set_errhandler (for files),

MPI_Win_set_errhandler (for RMA windows).

Rutinitas   MPI-1        MPI_Errhandler_setdapatdigunakan,     tetapipenggunaanyasudahditinggalkan,

Penanganankesalahan         MPI_ERRORS_RETURN      digunakankarenanilaierordapatdikembalikan. MPI
tidakmenjaminbahwasebuah          program   MPI   dapatberlanjutdalamdengan       error    sebelumnya,

namunimplementasidari MPI akanmengusahakanjikaadakemungkinan.


MPI_SUCCESS
       No error; MPI routine completed successfully.
MPI_ERR_INFO
       Invalid Info
MPI_ERR_COMM
       Invalid communicator.Sebuahkesalahanumumadalahdenganmenggunakankomunikator null
       dalampanggilan (bahkantidakdiperbolehkandalamMPI_Comm_rank).


Example Code

DibawahiniadalahilustrasidariMPI_Comm_accept.

#include "mpi.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>/* Sleep */
/*     TesinimemeriksauntukmemastikanbahwakeduaMPI_Comm_connectsuntukdua             port    yang
berbedasesuaidengan MPI MPI_Comm_acceptsterkait . Proses root membukadua port MPI
danmengirimkan port pertamauntuk proses 1 dan proses 2 kedua. Kemudian, proses
akarmenerimakoneksidari port keduadiikutioleh port pertama. Proses 1 dan 2 keduanyaterhubungkeroot
,tetapi proses ke-2     pertama kali akansleepselama 3 detikuntukmemberikan proses 1
waktuuntukmenghubungkankeroot.           Root         harusmenunggu*sampai          proses       2
menghubungkansebelummenerimakoneksidari proses 1.*/

int main( intargc, char *argv[] )
{
   intnum_errors = 0;
   int rank, size;
   char port1[MPI_MAX_PORT_NAME];
   char port2[MPI_MAX_PORT_NAME];
   MPI_Status status;
   MPI_Comm comm1, comm2;
   int data = 0;

     MPI_Init(&argc, &argv);
     MPI_Comm_size(MPI_COMM_WORLD, &size);
     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
     if (size < 3)
     {
         printf("Three processes needed to run this test.n");fflush(stdout);
         MPI_Finalize();
         return 0;
     }

     if (rank == 0)
     {
         printf("0: opening ports.n");fflush(stdout);
         MPI_Open_port(MPI_INFO_NULL, port1);
         MPI_Open_port(MPI_INFO_NULL, port2);
         printf("opened port1: <%s>n", port1);
         printf("opened port2: <%s>n", port2);fflush(stdout);

       MPI_Send(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD);
       MPI_Send(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 2, 0, MPI_COMM_WORLD);

       printf("accepting port2.n");fflush(stdout);
       MPI_Comm_accept(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2);
       printf("accepting port1.n");fflush(stdout);
       MPI_Comm_accept(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1);
       MPI_Close_port(port1);
       MPI_Close_port(port2);

       printf("sending 1 to process 1.n");fflush(stdout);
       data = 1;
       MPI_Send(&data, 1, MPI_INT, 0, 0, comm1);
       printf("sending 2 to process 2.n");fflush(stdout);
data = 2;
    MPI_Send(&data, 1, MPI_INT, 0, 0, comm2);

    MPI_Comm_disconnect(&comm1);
    MPI_Comm_disconnect(&comm2);
   }
   elseif (rank == 1)
   {
      MPI_Recv(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
      MPI_Comm_connect(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1);
      MPI_Recv(&data, 1, MPI_INT, 0, 0, comm1, &status);
      if (data != 1)
      {
          printf("Received %d from root when expecting 1n", data);
          fflush(stdout);
          num_errors++;
      }
      MPI_Comm_disconnect(&comm1);
   }
   elseif (rank == 2)
   {
      MPI_Recv(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status);
     /* Pastikanbahwa proses 1 memilikiwaktuuntukmelakukankoneksisebelum proses
inimencobauntuktersambung*/
      Sleep(3000);
      MPI_Comm_connect(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2);
      MPI_Recv(&data, 1, MPI_INT, 0, 0, comm2, &status);
      if (data != 2)
      {
          printf("Received %d from root when expecting 2n", data);
          fflush(stdout);
          num_errors++;
      }
      MPI_Comm_disconnect(&comm2);
   }
   MPI_Barrier(MPI_COMM_WORLD);
   MPI_Finalize();
   return 0;
}

Weitere ähnliche Inhalte

Was ist angesagt?

soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1Budi Kurniawan
 
Desain Kompiler - Kode Antara
Desain Kompiler - Kode AntaraDesain Kompiler - Kode Antara
Desain Kompiler - Kode AntaraIrfannur Diah
 
Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrahdede
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++farizky berian
 
Presentasi Pengenalan konsep pemrograman
Presentasi Pengenalan konsep pemrogramanPresentasi Pengenalan konsep pemrograman
Presentasi Pengenalan konsep pemrogramanMuraba Nasuha
 
How to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggurHow to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - ngangguridsecconf
 
Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Fazar Ikhwan Guntara
 
12c Komunikasi Data Serial Di Pc Dengan Vb
12c Komunikasi Data Serial Di Pc Dengan Vb12c Komunikasi Data Serial Di Pc Dengan Vb
12c Komunikasi Data Serial Di Pc Dengan Vbhandywicaksono
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antaraGunawan Manalu
 
12d Komunikasi Data Serial Pc Plc
12d Komunikasi Data Serial Pc    Plc12d Komunikasi Data Serial Pc    Plc
12d Komunikasi Data Serial Pc Plchandywicaksono
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahBraga Rezpect
 

Was ist angesagt? (20)

soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1soal-latihan-logika-algoritma-semester1
soal-latihan-logika-algoritma-semester1
 
Desain Kompiler - Kode Antara
Desain Kompiler - Kode AntaraDesain Kompiler - Kode Antara
Desain Kompiler - Kode Antara
 
Tugas sp algo
Tugas sp algoTugas sp algo
Tugas sp algo
 
Latihan latihan logika algoritma
Latihan latihan logika algoritmaLatihan latihan logika algoritma
Latihan latihan logika algoritma
 
Algoritma
AlgoritmaAlgoritma
Algoritma
 
Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2Fitrah hi hukum tugas so 2
Fitrah hi hukum tugas so 2
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
 
Presentasi Pengenalan konsep pemrograman
Presentasi Pengenalan konsep pemrogramanPresentasi Pengenalan konsep pemrograman
Presentasi Pengenalan konsep pemrograman
 
How to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggurHow to hack #IDSECCONF2014 ctf online challenge - nganggur
How to hack #IDSECCONF2014 ctf online challenge - nganggur
 
Pemrograman SAP - 1
Pemrograman SAP - 1Pemrograman SAP - 1
Pemrograman SAP - 1
 
Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma Penggunaan loop sebagai kerangka dasar algoritma
Penggunaan loop sebagai kerangka dasar algoritma
 
Asistensi 1 mod 3
Asistensi 1 mod 3Asistensi 1 mod 3
Asistensi 1 mod 3
 
Kompilasi13 ka p (1)
Kompilasi13 ka p (1)Kompilasi13 ka p (1)
Kompilasi13 ka p (1)
 
Praktikum 4A
Praktikum 4APraktikum 4A
Praktikum 4A
 
Pertemuan ke 5
Pertemuan ke 5Pertemuan ke 5
Pertemuan ke 5
 
12c Komunikasi Data Serial Di Pc Dengan Vb
12c Komunikasi Data Serial Di Pc Dengan Vb12c Komunikasi Data Serial Di Pc Dengan Vb
12c Komunikasi Data Serial Di Pc Dengan Vb
 
Intermediate code kode antara
Intermediate code   kode antaraIntermediate code   kode antara
Intermediate code kode antara
 
12d Komunikasi Data Serial Pc Plc
12d Komunikasi Data Serial Pc    Plc12d Komunikasi Data Serial Pc    Plc
12d Komunikasi Data Serial Pc Plc
 
Pt6 pt-loop komplek
Pt6 pt-loop komplekPt6 pt-loop komplek
Pt6 pt-loop komplek
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 

Ähnlich wie Mpi comm accept

MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docxMAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docxDikicandra6
 
Struktur perulangan dalam c++
Struktur perulangan dalam c++Struktur perulangan dalam c++
Struktur perulangan dalam c++Alvin Setiawan
 
Modularisasi – function dalam c++
Modularisasi – function dalam c++Modularisasi – function dalam c++
Modularisasi – function dalam c++Akmal Fajar
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiDevi Apriansyah
 
Pertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanPertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanTri Retna
 
Modul vii dan viii algo
Modul vii dan viii algoModul vii dan viii algo
Modul vii dan viii algoSTMIK AKAKOM
 
670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.docKikiFikriansyah1
 
Pengenalan konsep pemrograman
Pengenalan konsep pemrogramanPengenalan konsep pemrograman
Pengenalan konsep pemrogramanpurispace
 
adoc.pub_bahasa-pemrograman-c-language.pdf
adoc.pub_bahasa-pemrograman-c-language.pdfadoc.pub_bahasa-pemrograman-c-language.pdf
adoc.pub_bahasa-pemrograman-c-language.pdfMochamad Iqbal Faiz
 
Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++MunawirMunawir15
 
Laporan program chatting1
Laporan program chatting1Laporan program chatting1
Laporan program chatting1ichsanbarokah
 
Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_Helmi Mahfudhatul
 

Ähnlich wie Mpi comm accept (20)

Algoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/OutputAlgoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/Output
 
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docxMAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
MAKALAH PERULANGAN BAHASA C ( Diki Candra ).docx
 
Struktur perulangan dalam c++
Struktur perulangan dalam c++Struktur perulangan dalam c++
Struktur perulangan dalam c++
 
Struktur Kontrol
Struktur KontrolStruktur Kontrol
Struktur Kontrol
 
Sequence
SequenceSequence
Sequence
 
Modularisasi – function dalam c++
Modularisasi – function dalam c++Modularisasi – function dalam c++
Modularisasi – function dalam c++
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iii
 
Pertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & PemrogramanPertemuan 5 : Algoritma & Pemrograman
Pertemuan 5 : Algoritma & Pemrograman
 
Modul vii dan viii algo
Modul vii dan viii algoModul vii dan viii algo
Modul vii dan viii algo
 
about C Languages
about C Languagesabout C Languages
about C Languages
 
670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc670426587f8d8102a1eb712c3a13d9e5.doc
670426587f8d8102a1eb712c3a13d9e5.doc
 
Pengenalan konsep pemrograman
Pengenalan konsep pemrogramanPengenalan konsep pemrograman
Pengenalan konsep pemrograman
 
adoc.pub_bahasa-pemrograman-c-language.pdf
adoc.pub_bahasa-pemrograman-c-language.pdfadoc.pub_bahasa-pemrograman-c-language.pdf
adoc.pub_bahasa-pemrograman-c-language.pdf
 
modul algoritma Bab 2
modul algoritma Bab 2modul algoritma Bab 2
modul algoritma Bab 2
 
Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++Penggunaan prosedur dan fungsi pada pemrograman c++
Penggunaan prosedur dan fungsi pada pemrograman c++
 
Laporan program chatting1
Laporan program chatting1Laporan program chatting1
Laporan program chatting1
 
Algoritma pemrograman 6
Algoritma pemrograman 6Algoritma pemrograman 6
Algoritma pemrograman 6
 
Php 1
Php 1Php 1
Php 1
 
Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_Tugas_pemrograman3_1100631026_Helmi_MH_
Tugas_pemrograman3_1100631026_Helmi_MH_
 
Pertemuan1.ppt
Pertemuan1.pptPertemuan1.ppt
Pertemuan1.ppt
 

Mpi comm accept

  • 1. MPI_Comm_accept menerimapermintaanuntukmembentukintercommunicatorbaru intMPI_Comm_accept( char *port_name, MPI_Info info, int root, MPI_Commcomm, MPI_Comm *newcomm ); intMPI_Comm_accept( wchar_t *port_name, MPI_Info info, int root, MPI_Commcomm, MPI_Comm *newcomm ); Parameters port_name [in] nama_port (string, digunakanhanyapada root) info [in] implementasi-informasi yang berkaitan (handle, hanyapada root) root [in] barisan / derajatpadacommdari node root (integer) comm [in] commintracommunicator over which call is collective (handle) newcomm [out] intercommunicator with client as remote group (handle) Remarks MPI_COMM_ACCEPT membangunkomunikasidenganklien.Sebutsajakomunikatorkolektif.Inimengembalikansebuahintercom municator yang memungkinkankomunikasidenganklien.Port_nameharustelahterbentukmelaluipanggilanke MPI_OPEN_PORT.informasi string didefinisikanolehaplikasi yang dapatmemungkinkankontrol yang lebihtepatuntukmenerimapanggilan. Thread and Interrupt Safety This routine is thread-safe. Iniberartibahwarutinitasdapatdenganamandigunakanolehbeberapa threads tanpaperluuntuksetiappenggunamemberikan threads lock. Namunrutinitasinitidakselamanyaaman.Biasanyainidisebabkankarenapenggunaanalokasimemorisepert imallocatauaktivitasruntime non-MPICH lainnya yang tidakaman.
  • 2. Notes for Fortran Semuarutinitas MPI dalamFortran (kecualiuntuk MPI_WTIME dan MPI_WTICK) memilikiierrargumentambahan di akhirdaftarargumen. IERR adalah integer danmemilikiarti yang samadengannilaikembalidarirutinitasdalam C. Dalam Fortran, rutinitas MPI adalahsubrutin, dandipanggildenganinstruksipanggilan (statement) All MPI objects (e.g., MPI_Datatype, MPI_Comm) are of type INTEGER in Fortran. Errors Semuarutinitas MPI (kecualiMPI_WtimedanMPI_Wtick) mengembalikannilai error. Rutinitas C sebagainilaidarifungsidanrutinitasFortranpada argument terakhir. Sebelumnilaidikembalikan, penangan error akandipanggil. Secara default, pembatalanpenanganan error adalahtugasdari MPI.Penanganankesalahandapatdiubahdengan :MPI_Comm_set_errhandler (for communicators), MPI_File_set_errhandler (for files), MPI_Win_set_errhandler (for RMA windows). Rutinitas MPI-1 MPI_Errhandler_setdapatdigunakan, tetapipenggunaanyasudahditinggalkan, Penanganankesalahan MPI_ERRORS_RETURN digunakankarenanilaierordapatdikembalikan. MPI tidakmenjaminbahwasebuah program MPI dapatberlanjutdalamdengan error sebelumnya, namunimplementasidari MPI akanmengusahakanjikaadakemungkinan. MPI_SUCCESS No error; MPI routine completed successfully. MPI_ERR_INFO Invalid Info MPI_ERR_COMM Invalid communicator.Sebuahkesalahanumumadalahdenganmenggunakankomunikator null dalampanggilan (bahkantidakdiperbolehkandalamMPI_Comm_rank). Example Code DibawahiniadalahilustrasidariMPI_Comm_accept. #include "mpi.h" #include<stdio.h> #include<stdlib.h> #include<string.h> #include<windows.h>/* Sleep */
  • 3. /* TesinimemeriksauntukmemastikanbahwakeduaMPI_Comm_connectsuntukdua port yang berbedasesuaidengan MPI MPI_Comm_acceptsterkait . Proses root membukadua port MPI danmengirimkan port pertamauntuk proses 1 dan proses 2 kedua. Kemudian, proses akarmenerimakoneksidari port keduadiikutioleh port pertama. Proses 1 dan 2 keduanyaterhubungkeroot ,tetapi proses ke-2 pertama kali akansleepselama 3 detikuntukmemberikan proses 1 waktuuntukmenghubungkankeroot. Root harusmenunggu*sampai proses 2 menghubungkansebelummenerimakoneksidari proses 1.*/ int main( intargc, char *argv[] ) { intnum_errors = 0; int rank, size; char port1[MPI_MAX_PORT_NAME]; char port2[MPI_MAX_PORT_NAME]; MPI_Status status; MPI_Comm comm1, comm2; int data = 0; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); if (size < 3) { printf("Three processes needed to run this test.n");fflush(stdout); MPI_Finalize(); return 0; } if (rank == 0) { printf("0: opening ports.n");fflush(stdout); MPI_Open_port(MPI_INFO_NULL, port1); MPI_Open_port(MPI_INFO_NULL, port2); printf("opened port1: <%s>n", port1); printf("opened port2: <%s>n", port2);fflush(stdout); MPI_Send(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 1, 0, MPI_COMM_WORLD); MPI_Send(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 2, 0, MPI_COMM_WORLD); printf("accepting port2.n");fflush(stdout); MPI_Comm_accept(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); printf("accepting port1.n");fflush(stdout); MPI_Comm_accept(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); MPI_Close_port(port1); MPI_Close_port(port2); printf("sending 1 to process 1.n");fflush(stdout); data = 1; MPI_Send(&data, 1, MPI_INT, 0, 0, comm1); printf("sending 2 to process 2.n");fflush(stdout);
  • 4. data = 2; MPI_Send(&data, 1, MPI_INT, 0, 0, comm2); MPI_Comm_disconnect(&comm1); MPI_Comm_disconnect(&comm2); } elseif (rank == 1) { MPI_Recv(port1, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); MPI_Comm_connect(port1, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm1); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm1, &status); if (data != 1) { printf("Received %d from root when expecting 1n", data); fflush(stdout); num_errors++; } MPI_Comm_disconnect(&comm1); } elseif (rank == 2) { MPI_Recv(port2, MPI_MAX_PORT_NAME, MPI_CHAR, 0, 0, MPI_COMM_WORLD, &status); /* Pastikanbahwa proses 1 memilikiwaktuuntukmelakukankoneksisebelum proses inimencobauntuktersambung*/ Sleep(3000); MPI_Comm_connect(port2, MPI_INFO_NULL, 0, MPI_COMM_SELF, &comm2); MPI_Recv(&data, 1, MPI_INT, 0, 0, comm2, &status); if (data != 2) { printf("Received %d from root when expecting 2n", data); fflush(stdout); num_errors++; } MPI_Comm_disconnect(&comm2); } MPI_Barrier(MPI_COMM_WORLD); MPI_Finalize(); return 0; }