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
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Tentang Kuliah #11
Pemrograman MPI: Pemrograman Memori Terdistribusi
I
Akan dibahas tentang
pemrograman paralel dengan MPI
menggunakan rutin-rutin pustaka
I
Arsitektur memori:
distributed atau hybrid
I
Model programming:
message passing
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Kompetensi Dasar
I
Setelah mempelajari bab ini, mahasiswa akan mampu:
1.
[C2] Mahasiswa akan mampu menjelaskan karakteristik dan
konfigurasi arsitektur memori terdistribusi
2.
[C2] Mahasiswa akan mampu menjelaskan model pemrograman
message passing
3.
[C3] Mahasiswa akan mampu membuat dan mengaplikasikan rutin
pustaka MPI (OpenMPI dan/atau MPICH) untuk membuat program
paralel di atas sistem terdistribusi
4.
[C5] Mahasiswa akan mampu memprogram suatu aplikasi
komputasi matrik menggunakan MPI sesuai dengan spesifikasi
desain serta menghitung faktor speedupnya
5.
[C5] Mahasiswa akan mampu melakukan profiling dari suatu
program paralel MPI
I
Link
I
Website:
http://didik.blog.undip.ac.id/2012/02/25/
kuliah-tsk-617-pengolahan-paralel-2011/
I
Standar:
http://www.mpi-forum.org
I
Tutorial:
http://www.mcs.anl.gov/mpi
,
http://www.mcs.anl.
gov/research/projects/mpi/tutorial/index.html
I
Buku: “Using MPI-2: Portable Parallel Programming with the
Message-Passing Interface”, Gropp, Lusk, and Thakur, MIT Press,
1999
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Arsitektur Memori Paralel
Shared, Distributed dan Hybrid
I
Sebelumnya dibahas arsitektur shared, berikutnya adalah
distributed dan/atau hybrid (MPP, Massively Parallel
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Arsitektur (Top500)
Implementasi Arsitektur
Sumber: http://www.top500.org/overtime/list/38/archtype
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Model Pemrograman Paralel
I
Model memberikan abstraksi di atas suatu hardware dan
arsitektur memori
I
Namun, tidak spesifik untuk arsitektur tertentu
I
Sebelumnya dengan Thread di OpenMP dan PThread,
berikutnya
Message Passing
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Arsitektur Memori Terdistribusi
I
Tiap prosesor mempunyai memori lokal sendiri
I
Sehingga prosesor dapat
beroperasi secara independen
I
Perubahan ke lokal memori tidak
membawa efek ke memori lain
I
Konsep cache coherence
tidak berlaku
I
Jika memerlukan interprosesor,
tugas programmer secara
eksplisit mendefinisikan
bagaimana dan kapan data akan
dikomunikasikan
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Memori Terdistribusi
I
Kelebihan:
I
scalable jumlah prosesor dan ukuran memori dapat ditingkatkan
ITiap prosesor dapat mengakses memorinya tanpa interferensi dan
overhead, seperti di koherensi cache
I
Cost effective: dapat menggunakan PC komoditas, off-the-self
processor
I
Kekurangan:
I
tugas programmer semakin kompleks terkait detail komunikasi data
IMapping data struktur berbasis memori globlal bisa susah
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Arsitektur Memori Hybrid
I
Terdiri dari arsitektur memori shared dan distributed
I
Komponen memori shared
biasanya mesin SMP koheren
I
Prosesor di mesin SMP
mempunyai akses global
ke memori mesin
tersebut
I
Komponen distributed adalah
jaringan SMP multiple
I
SMP hanya tahu
memorinya saja
I
Komunikasi jaringan
diperlukan untuk
memindahkan data dari
satu SMP ke lainnya
Hybrid
Cache Coherence
I
Komponen memori shared
biasanya mesin SMP koheren
I
Prosesor di mesin SMP
mempunyai akses global
ke memori mesin
tersebut
I
Komponen distributed adalah
jaringan SMP multiple
I
SMP hanya tahu
memorinya saja
I
Komunikasi jaringan
diperlukan untuk
memindahkan data dari
satu SMP ke lainnya
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Fluid Turbulance Modelling
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
The Open Source Computed Tomography
Simulator
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Memori Terdistribusi
I
Distributed Memory Multiprosesor
I
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 satu
dengan yang lainnya
I
Parameter performansi utama:
I
Latency (α): delay antara waktu pengiriman dan penerimaan
IBandwidth (1/β): Bandwidth efektif
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Bisection Bandwidth
I
Adalah bandwitdh di titik perpotongan yang membagi
jaringan menjadi dua yang sama persis
I
Diperlukan oleh algoritma dimana semua prosesor ingin
berkomunikasi dengan yang lainnya
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Topologi Jaringan
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Arsitektur, Model Pemrograman Memori Terdistribusi Aplikasi Topologi Jaringan di Memori Terdistribusi Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Topologi Jaringan
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Distributed Memory
I
Di distributed, prosesor tidak mempunyai mapping ke
memori yang terhubung ke prosesor lain
I
Transfer data ke memori lain dilakukan dengan protokol
jaringan
I
Di message passing, task menggunakan memori lokalnya
sendiri saat komputasi
I
Beberapa task dapat
ditempatkan di mesin fisik
yang sama
I
Transfer data antar task
lewat pesan komunikasi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Message Passing
I
Tiap prosesor dalam suatu program message passing
menjalankan sebuah sub-program
I
Umumnya sama di tiap prosesor (SPMD)
I
Semua komunikasi, sinkronisasi memerlukan
pemanggilan sub-rutin dari pustaka
I
Distribusi kerja dan data berdasarkan nilai myrank
I
Berkomunikasi berpasangan (point-to-point) dengan rutin
khusus send & receive
I
Tidak ada variabel shared → tidak perlu lock
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Message Passing Interface (MPI)
I
Standar library yang dikembangkan oleh kelompok
akademik dan patner industri (mulai tahun 1990)
I
Untuk mempercepat penggunaan dan portabilitas model
pemrograman
I
Mendefinisikan rutin/fungsi, bukan implementasi
I
Implementasi MPI (free)
I
OpenMPI
I
MPICH2, etc
I
Referensi MPI:
I
Standar: http://www.mpi-forum.org
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Message Passing Interface
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Message Passing Interface
Konsep Message Passing
I
Semua operasi dilakukan dengan panggilan rutin pustaka
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Routing Message di MPI
I
Routing message antar komputer dilakukan oleh proses
daemon yang dijalankan di komputer, membentuk ’virtual
machine’
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Model Pembuatan Proses
MPMD dan SPMD
Multiple Program Multiple Data
I
Program berbeda dieksekusi oleh
tiap prosesor
Single Program Multiple Data
I
Program yang sama dieksekusi
oleh tiap prosesor
I
Statemen kontrol memilih bagian
berbeda untuk eksekusi di tiap
prosesor
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Kontrol Proses
I
Di MPI, proses-proses yang terdefinisi dalam grup
komunikasi 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-slave
I
Satu proses (master), melakukan satu set action dan
semua proses lainnya (slaves) melakukan action identik,
namun dengan data berbeda
if (rank == 0) ... /* master do this */;
else ... /* all slaves do this */;
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Pembuatan Proses
Statik dan Dinamik
I
Pembuatan proses secara statik
I
Proses yang dibuat oleh MPI (normal)
I
Semua executable dijalankan bersamaan
I
Dilakukan saat satu mesin menjalankan program terkompile
I
Pembuatan Proses secara Dinamik di MPMD
I
Tersedia di MPI-2
I
Satu prosesor mengeksekusi
proses master
I
prosesor lain menjalankan
proses dari proses master
IOverhead: process creation
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses
MPI Environment
Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses
MPI Environment
Transfer Message Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Mencari Environment MPI
I
Berapa proses yang berpartisipasi dalam komputasi?
MPI_Comm_size() memberikan jumlah proses
I
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.openmpi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Metode Pengiriman dan Penerimaan
Message
Komunikasi Point-to-Point
I
Mengirimkan sebuah message antar proses
menggunakan rutin send() dan receive()
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Tag Message
I
Digunakan oleh proses penerima untuk mengidentifikasi
message
I
Didefinisikan oleh user bertipe integer
I
Jika type matching tidak diperlukan, tag message wildcard
dapat digunakan (
MPI_ANY_TAG)
I
MPI_recv() akan cocok dengan sebarang MPI_send()
I
Contoh: mengirim message x dengan tag 5 dari proses 1
ke proses 2 dan menyimpannya sebagai y
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Solusi Transfer MPI
Communicator
I
Proses dapat dikelompokkan ke dalam
grup
I
Tiap message dikirimkan dalam suatu
konteks dan harus
diterima dalam konteks yang sama
I
Grup dan konteks membentuk
communicator
I
Communicator mendefinisikan domain komunikasi
I
Set proses yang diijinkan untuk berkomunikasi antar mereka
I
Sebuah proses diidentifikasikan dengan rank dalam grup
yang berasosiasi dengan suatu communicator
I
Default communicator:
MPI_COMM_WORLD
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Tipe Data
Tipe Data MPI
Tipe Data C
MPI_CHAR
char
MPI_INT
int
MPI_LONG
long
MPI_FLOAT
float
MPI_DOUBLE
double
MPI_UNSIGNED_CHAR
unsigned char
MPI_UNSIGNED_SHORT
unsigned short
MPI_UNSIGNED
unsigned int
MPI_UNSIGNED_LONG
unsigned long
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Parameter MPI_Send()
I
Di MPI dasar, transfer disebut
blocking
I
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 dari
proses target dalam communicator
comm
I
Saat fungsi ini return, data telah dikirimkan ke seistem dan
buffer buf dapat digunakan kembali
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment
Transfer Message
Informasi Status Contoh Program MPI Kompilasi dan Eksekusi 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 atau
MPI_ANY_SOURCE
I
tag adalah tag yang harus cocok dengan yang dikirim
sumber atau
MPI_ANY_TAG
I
Menerima lebih sedikit
datatype daripada count berarti
OK, kalau lebih berarti terjadi error
I
status berisi informasi lebih lanjut (misalnya ukuran
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message
Informasi Status
Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message
Informasi Status
Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Informasi Status
I
Status merupakan struktur data yang dialokasikan di
program user
int 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 );
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message
Informasi Status
Contoh Program MPI Kompilasi dan Eksekusi Program Lisensi
Tag dan Context
I
Pemisahan message yang digunakan dapat dilakukan
dengan
tag
I
Tapi ini memerlukan librari yang patuh terhadap tag yang
digunakan oleh pustaka lain
I
Ini dapat diatasi dengan penggunaan tag wildcard
I
Context berbeda dari tag
I
Wildcard tidak diijinkan
I
Dialokasikan secara dinamik oleh sistem saat suatu
pustaka mensetup sebuah communicator
I
Tag yang didefinisikan oleh user masih disediakan oleh
MPI untuk kemudahan user dalam mengorganisasikan
aplikasi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program Lisensi
Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
Message Passing
Message Passing Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program Lisensi
Contoh Program MPI
Send 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 Didik Widianto Pendahuluan Message Passing Message Passing Interface
Message Passing Interface Metode Pembuatan Proses MPI Environment Transfer Message Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program Lisensi
Contoh Program MPI
Send 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 Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Mensetup Environment Message Passing
I
Seringkali komputer yang digunakan untuk komputasi
ditentukan dalam sebuah file
I
Dengan nama file:
hostfile atau machines
I
File berisi nama-nama komputer dan jumlah proses yang
harus berjalan di komputer tersebut
I
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 mesin
default atau program hanya berjalan di komputer tunggal
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Kompilasi Program MPI
I
Perintah tergantung implementasi MPI yang digunakan (di
uBuntu kedua-duanya ada)
I
OpenMPI (digunakan di kuliah ini), MPICH2
I
Perintah di uBuntu
I
Kompilasi: mpicc.openmpi
I
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
Pemrograman MPI (1) @2012,Eko Didik Widianto Pendahuluan Message Passing Message Passing Interface Kompilasi dan Eksekusi Program Lisensi
Lisensi
Creative Common Attribution-ShareAlike 3.0 Unported (CC
BY-SA 3.0)
I
Anda bebas:
I
untuk
Membagikan — untuk menyalin, mendistribusikan,
dan menyebarkan karya, dan
I
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 karya
tersebut atau pihak yang mengeluarkan lisensi.
I