pemrograman mpi (1) - didik.blog.undip.ac.id · i akan dibahas tentang pemrograman paralel dengan...

51
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi Pemrograman MPI (1) Kuliah#11 TSK617 Pengolahan Paralel - TA 2011/2012 Eko Didik Widianto Teknik Sistem Komputer - Universitas Diponegoro

Upload: tranliem

Post on 24-Apr-2019

228 views

Category:

Documents


0 download

TRANSCRIPT

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Pemrograman MPI (1)Kuliah#11 TSK617 Pengolahan Paralel - TA 2011/2012

Eko Didik Widianto

Teknik Sistem Komputer - Universitas Diponegoro

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Tentang Kuliah #11Pemrograman MPI: Pemrograman Memori Terdistribusi

I Akan dibahas tentang pemrograman paralel dengan MPImenggunakan rutin-rutin pustaka

I Arsitektur memori: distributed atau hybridI Model programming: message passingI Paralelisme: SIMD dan MIMD

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Kompetensi DasarI Setelah mempelajari bab ini, mahasiswa akan mampu:

1. [C2] Mahasiswa akan mampu menjelaskan karakteristik dankonfigurasi arsitektur memori terdistribusi

2. [C2] Mahasiswa akan mampu menjelaskan model pemrogramanmessage passing

3. [C3] Mahasiswa akan mampu membuat dan mengaplikasikan rutinpustaka MPI (OpenMPI dan/atau MPICH) untuk membuat programparalel di atas sistem terdistribusi

4. [C5] Mahasiswa akan mampu memprogram suatu aplikasikomputasi matrik menggunakan MPI sesuai dengan spesifikasidesain serta menghitung faktor speedupnya

5. [C5] Mahasiswa akan mampu melakukan profiling dari suatuprogram paralel MPI

I LinkI Website: http://didik.blog.undip.ac.id/2012/02/25/

kuliah-tsk-617-pengolahan-paralel-2011/I Standar: http://www.mpi-forum.orgI Tutorial: http://www.mcs.anl.gov/mpi, http://www.mcs.anl.

gov/research/projects/mpi/tutorial/index.htmlI Buku: “Using MPI-2: Portable Parallel Programming with the

Message-Passing Interface”, Gropp, Lusk, and Thakur, MIT Press,1999

I Email: [email protected]

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Arsitektur Memori ParalelShared, Distributed dan Hybrid

I Sebelumnya dibahas arsitektur shared, berikutnya adalahdistributed dan/atau hybrid (MPP, Massively ParallelProcessors)

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Arsitektur (Top500)Implementasi Arsitektur

Sumber: http://www.top500.org/overtime/list/38/archtype

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Model Pemrograman Paralel

I Model memberikan abstraksi di atas suatu hardware danarsitektur memori

I Namun, tidak spesifik untuk arsitektur tertentu

I Sebelumnya dengan Thread di OpenMP dan PThread,berikutnya Message Passing

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Arsitektur Memori Terdistribusi

I Tiap prosesor mempunyai memori lokal sendiri

I Sehingga prosesor dapatberoperasi secara independen

I Perubahan ke lokal memori tidakmembawa efek ke memori lain

I Konsep cache coherencetidak berlaku

I Jika memerlukan interprosesor,tugas programmer secaraeksplisit mendefinisikanbagaimana dan kapan data akandikomunikasikan

Distributed

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Memori Terdistribusi

I Kelebihan:I scalable jumlah prosesor dan ukuran memori dapat ditingkatkanI Tiap prosesor dapat mengakses memorinya tanpa interferensi dan

overhead, seperti di koherensi cacheI Cost effective: dapat menggunakan PC komoditas, off-the-self

processorI Kekurangan:

I tugas programmer semakin kompleks terkait detail komunikasi dataI Mapping data struktur berbasis memori globlal bisa susah

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Arsitektur Memori HybridI Terdiri dari arsitektur memori shared dan distributed

I Komponen memori sharedbiasanya mesin SMP koheren

I Prosesor di mesin SMPmempunyai akses globalke memori mesintersebut

I Komponen distributed adalahjaringan SMP multiple

I SMP hanya tahumemorinya saja

I Komunikasi jaringandiperlukan untukmemindahkan data darisatu SMP ke lainnya

Hybrid

I Trend ke depan menggunakan tipe arsitektur memori ini

Cache Coherence

I Komponen memori sharedbiasanya mesin SMP koheren

I Prosesor di mesin SMPmempunyai akses globalke memori mesintersebut

I Komponen distributed adalahjaringan SMP multiple

I SMP hanya tahumemorinya saja

I Komunikasi jaringandiperlukan untukmemindahkan data darisatu SMP ke lainnya

Generic Cache Coherence

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Fluid Turbulance Modelling

http://roach.coas.oregonstate.edu/index.html

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

The Open Source Computed TomographySimulator

http://www.ctsim.org/

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Memori Terdistribusi

I Distributed Memory MultiprosesorI Menggunakan beragam topologi jaringan (koneksi)

I Crossbar, ring, mesh dan torus 2-D dan 3-D, hypercube, tree,butterfly

I Menciptakan ilusi bahwa semua node saling terhubung satudengan yang lainnya

I Parameter performansi utama:I Latency (α): delay antara waktu pengiriman dan penerimaanI Bandwidth (1/β): Bandwidth efektifI Bandwidth link = #jalur/waktu-per-bit

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Bisection Bandwidth

I Adalah bandwitdh di titik perpotongan yang membagijaringan menjadi dua yang sama persis

I Diperlukan oleh algoritma dimana semua prosesor inginberkomunikasi dengan yang lainnya

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Topologi Jaringan

Pemrograman MPI (1)

@2012,Eko DidikWidianto

PendahuluanArsitektur, ModelPemrograman

Memori Terdistribusi

Aplikasi

Topologi Jaringan diMemori Terdistribusi

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Topologi Jaringan

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Distributed Memory

I Di distributed, prosesor tidak mempunyai mapping kememori yang terhubung ke prosesor lain

I Transfer data ke memori lain dilakukan dengan protokoljaringan

I Di message passing, task menggunakan memori lokalnyasendiri saat komputasi

I Beberapa task dapatditempatkan di mesin fisikyang sama

I Transfer data antar tasklewat pesan komunikasi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Message PassingI Tiap prosesor dalam suatu program message passing

menjalankan sebuah sub-programI Umumnya sama di tiap prosesor (SPMD)

I Semua komunikasi, sinkronisasi memerlukanpemanggilan sub-rutin dari pustaka

I Distribusi kerja dan data berdasarkan nilai myrank

I Berkomunikasi berpasangan (point-to-point) dengan rutinkhusus send & receive

I Tidak ada variabel shared → tidak perlu lockI Sinkronisasi: barrier

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Message Passing Interface (MPI)

I Standar library yang dikembangkan oleh kelompokakademik dan patner industri (mulai tahun 1990)

I Untuk mempercepat penggunaan dan portabilitas modelpemrograman

I Mendefinisikan rutin/fungsi, bukan implementasiI Implementasi MPI (free)

I OpenMPII MPICH2, etc

I Referensi MPI:I Standar: http://www.mpi-forum.orgI http://www.mcs.anl.gov/mpi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Message Passing InterfaceReferensi Buku

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Message Passing InterfaceKonsep Message Passing

I Semua operasi dilakukan dengan panggilan rutin pustakaI Definisi rutin: mpi.h (C), mpif.h (Fortran)

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Routing Message di MPII Routing message antar komputer dilakukan oleh proses

daemon yang dijalankan di komputer, membentuk ’virtualmachine’

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Model Pembuatan ProsesMPMD dan SPMD

Multiple Program Multiple Data

I Program berbeda dieksekusi olehtiap prosesor

Single Program Multiple Data

I Program yang sama dieksekusioleh tiap prosesor

I Statemen kontrol memilih bagianberbeda untuk eksekusi di tiapprosesor

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Kontrol Proses

I Di MPI, proses-proses yang terdefinisi dalam grupkomunikasi diberi rank

I rank dimulai dari 0 dan seterusnya

I Program menggunakan statemen kontrol (misalnya if)untuk melakukan eksekusi spesifik

I Contoh:if (rank == 0) ... /* do this */;

if (rank == 1) ... /* do this */;

I Model master-slaveI Satu proses (master), melakukan satu set action dan

semua proses lainnya (slaves) melakukan action identik,namun dengan data berbedaif (rank == 0) ... /* master do this */;

else ... /* all slaves do this */;

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Pembuatan ProsesStatik dan Dinamik

I Pembuatan proses secara statikI Proses yang dibuat oleh MPI (normal)I Semua executable dijalankan bersamaanI Dilakukan saat satu mesin menjalankan program terkompile

I Pembuatan Proses secara Dinamik di MPMD

I Tersedia di MPI-2I Satu prosesor mengeksekusi

proses master

I prosesor lain menjalankanproses dari proses master

I Overhead: process creation

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Mencari Environment MPII Berapa proses yang berpartisipasi dalam komputasi?

MPI_Comm_size() memberikan jumlah prosesI Proses manakah aku? MPI_Comm_rank() memberikan

rank sbg identitas proses#include <mpi.h>

#include <stdio.h>

int main( int argc, char *argv[] ) {

int rank, size;

MPI_Init( &argc, &argv ); /*Begin MPI*/

/*Below statements execute independently

in each process*/

MPI_Comm_rank( MPI_COMM_WORLD, &rank );

MPI_Comm_size( MPI_COMM_WORLD, &size );

printf( "I am %d of %d\n", rank, size );

MPI_Finalize(); /*End MPI*/

return 0;

}

I Kompiler/Linker: mpicc.openmpiI Run: mpiexec.openmpi -np 4 mpi_hello

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Metode Pengiriman dan PenerimaanMessageKomunikasi Point-to-Point

I Mengirimkan sebuah message antar prosesmenggunakan rutin send() dan receive()

I MPI menggunakan MPI_send() dan MPI_receive()

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Tag MessageI Digunakan oleh proses penerima untuk mengidentifikasi

messageI Didefinisikan oleh user bertipe integer

I Jika type matching tidak diperlukan, tag message wildcarddapat digunakan (MPI_ANY_TAG)

I MPI_recv() akan cocok dengan sebarang MPI_send()

I Contoh: mengirim message x dengan tag 5 dari proses 1ke proses 2 dan menyimpannya sebagai y

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Unsafe Message Passing

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Solusi Transfer MPICommunicator

I Proses dapat dikelompokkan ke dalam grupI Tiap message dikirimkan dalam suatu konteks dan harus

diterima dalam konteks yang samaI Grup dan konteks membentuk communicator

I Communicator mendefinisikan domain komunikasiI Set proses yang diijinkan untuk berkomunikasi antar mereka

I Sebuah proses diidentifikasikan dengan rank dalam grupyang berasosiasi dengan suatu communicator

I Default communicator: MPI_COMM_WORLDI Communicator yang grupnya berisi semua proses inisial

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Tipe Data

Tipe Data MPI Tipe Data CMPI_CHAR char

MPI_INT intMPI_LONG longMPI_FLOAT float

MPI_DOUBLE doubleMPI_UNSIGNED_CHAR unsigned char

MPI_UNSIGNED_SHORT unsigned shortMPI_UNSIGNED unsigned int

MPI_UNSIGNED_LONG unsigned long

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Parameter MPI_Send()

I Di MPI dasar, transfer disebut blockingI Rutin menunggu sampai semua action lokal telah dilakukan

(fungsi return)

I Buffer message dideskripsikan dengan (buf, count,datatype)

I Proses targe dispesifikasikan dengan dest, yaitu rank dariproses target dalam communicator comm

I Saat fungsi ini return, data telah dikirimkan ke seistem danbuffer buf dapat digunakan kembali

I Message ini mungkin belum diterima oleh proses target

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Parameter MPI_receive()

I Menunggu sampai message yang cocok (source dan tag)diterima dari sistem dan buffer dapat digunakan

I source adalah rank dalam communicator comm atauMPI_ANY_SOURCE

I tag adalah tag yang harus cocok dengan yang dikirimsumber atau MPI_ANY_TAG

I Menerima lebih sedikit datatype daripada count berartiOK, kalau lebih berarti terjadi error

I status berisi informasi lebih lanjut (misalnya ukuranmessage)

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Informasi Status

I Status merupakan struktur data yang dialokasikan diprogram userint recvd_tag, recvd_from, recvd_count;

MPI_Status status;

MPI_Recv(..., MPI_ANY_SOURCE, MPI_ANY_TAG, ..., &status )

recvd_tag = status.MPI_TAG;

recvd_from = status.MPI_SOURCE;

MPI_Get_count( &status, datatype, &recvd_count );

I Kode!

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Tag dan Context

I Pemisahan message yang digunakan dapat dilakukandengan tag

I Tapi ini memerlukan librari yang patuh terhadap tag yangdigunakan oleh pustaka lain

I Ini dapat diatasi dengan penggunaan tag wildcard

I Context berbeda dari tagI Wildcard tidak diijinkanI Dialokasikan secara dinamik oleh sistem saat suatu

pustaka mensetup sebuah communicator

I Tag yang didefinisikan oleh user masih disediakan olehMPI untuk kemudahan user dalam mengorganisasikanaplikasi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Bahasan

PendahuluanArsitektur Memori dan Model PemrogramanMemori TerdistribusiAplikasiTopologi Jaringan di Memori Terdistribusi

Message Passing

Message Passing InterfaceMessage Passing InterfaceMetode Pembuatan ProsesMPI EnvironmentMetode Transfer MessageInformasi StatusContoh Program MPI

Kompilasi dan Eksekusi Program

Lisensi

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Contoh Program MPISend dan Receive (Blocking)

#include <mpi.h>

#include <stdio.h>

int main( int argc, char **argv )

{

int rank, buf;

MPI_Status status;

MPI_Init(&argc, &argv);

MPI_Comm_rank( MPI_COMM_WORLD, &rank );

/* Process 0 sends and Process 1 receives */

if (rank == 0) {

buf = 123456;

MPI_Send(&buf,1,MPI_INT,1,0,MPI_COMM_WORLD);

}

else if (rank == 1) {

MPI_Recv(&buf,1,MPI_INT,0,0,MPI_COMM_WORLD,&status );

printf("Received %d\n", buf );

}

MPI_Finalize();

return 0;

}

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterfaceMessage Passing Interface

Metode Pembuatan Proses

MPI Environment

Transfer Message

Informasi Status

Contoh Program MPI

Kompilasi danEksekusi Program

Lisensi

Contoh Program MPISend dan Receive (Blocking)

#include <mpi.h>#include <stdio.h>#include <stdlib.h>int main( int argc, char **argv ){

char message[20];int rank, i, size, mtag = 99;MPI_Status status;MPI_Init(&argc, &argv);MPI_Comm_size( MPI_COMM_WORLD, &size);MPI_Comm_rank( MPI_COMM_WORLD, &rank);/* Process 0 sends and Process 1 receives */if (rank == 0) {

strcpy(message, "Hello, world");for (i=1; i<size; i++)MPI_Send(message,13,MPI_CHAR,i,mtag,MPI_COMM_WORLD);

} else {MPI_Recv(message,20,MPI_CHAR,0,mtag,MPI_COMM_WORLD,&status );printf( "Message from process =%d : %.13s\n", rank,message);

}MPI_Finalize();return 0;

}

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Mensetup Environment Message Passing

I Seringkali komputer yang digunakan untuk komputasiditentukan dalam sebuah file

I Dengan nama file: hostfile atau machinesI File berisi nama-nama komputer dan jumlah proses yang

harus berjalan di komputer tersebutI Algoritma implementasi memilih komputer dari daftar yang

harus menjalankan program pengguna

I Pengguna dapat membuat file mesinnya sendiri. Misalnya

grid01.siskom.undip.ac.id 2

grid02.siskom.undip.ac.id

grid03.siskom.undip.ac.id

I Jika file mesin tidak ditentukan, maka digunakan file mesindefault atau program hanya berjalan di komputer tunggal

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Kompilasi Program MPI

I Perintah tergantung implementasi MPI yang digunakan (diuBuntu kedua-duanya ada)

I OpenMPI (digunakan di kuliah ini), MPICH2

I Perintah di uBuntuI Kompilasi: mpicc.openmpiI Eksekusi: mpirun.openmpi atau mpiexec.openmpi (perintah

standar MPI-2)

I Mengkompilasi program MPI

mpicc -o prog prog.c

I Mengeksekusi program MPI di SPMD

mpiexec -n no_procs prog

I Mengeksekusi di multi komputer

mpiexec -machinefile machines -n 4 prog

Pemrograman MPI (1)

@2012,Eko DidikWidianto

Pendahuluan

Message Passing

Message PassingInterface

Kompilasi danEksekusi Program

Lisensi

Lisensi

Creative Common Attribution-ShareAlike 3.0 Unported (CCBY-SA 3.0)

I Anda bebas:I untuk Membagikan — untuk menyalin, mendistribusikan,

dan menyebarkan karya, danI untuk Remix — untuk mengadaptasikan karya

I Di bawah persyaratan berikut:I Atribusi — Anda harus memberikan atribusi karya sesuai

dengan cara-cara yang diminta oleh pembuat karyatersebut atau pihak yang mengeluarkan lisensi.

I Pembagian Serupa — Jika Anda mengubah, menambah,atau membuat karya lain menggunakan karya ini, Andahanya boleh menyebarkan karya tersebut hanya denganlisensi yang sama, serupa, atau kompatibel.

I Lihat: Creative Commons Attribution-ShareAlike 3.0Unported License