Upload
lamphuc
View
224
Download
0
Embed Size (px)
Citation preview
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