Anda di halaman 1dari 51

Pemrograman MPI (1)

@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface

Pemrograman MPI (1)


Kuliah#11 TSK617 Pengolahan Paralel - TA 2011/2012

Eko Didik Widianto


Teknik Sistem Komputer - Universitas Diponegoro

Kompilasi dan
Eksekusi Program
Lisensi

Tentang Kuliah #11


Pemrograman MPI: Pemrograman Memori Terdistribusi

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Akan dibahas tentang pemrograman paralel dengan MPI


menggunakan rutin-rutin pustaka
I
I
I

Arsitektur memori: distributed atau hybrid


Model programming: message passing
Paralelisme: SIMD dan MIMD

Kompetensi Dasar

Pemrograman MPI (1)


@2012,Eko Didik
Widianto

I Setelah mempelajari bab ini, mahasiswa akan mampu:

1. [C2] Mahasiswa akan mampu menjelaskan karakteristik dan


2.
3.
4.
5.

konfigurasi arsitektur memori terdistribusi


[C2] Mahasiswa akan mampu menjelaskan model pemrograman
message passing
[C3] Mahasiswa akan mampu membuat dan mengaplikasikan rutin
pustaka MPI (OpenMPI dan/atau MPICH) untuk membuat program
paralel di atas sistem terdistribusi
[C5] Mahasiswa akan mampu memprogram suatu aplikasi
komputasi matrik menggunakan MPI sesuai dengan spesifikasi
desain serta menghitung faktor speedupnya
[C5] Mahasiswa akan mampu melakukan profiling dari suatu
program paralel MPI

I Link
I

I
I

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

kuliah-tsk-617-pengolahan-paralel-2011/
Standar: http://www.mpi-forum.org
Tutorial: http://www.mcs.anl.gov/mpi, http://www.mcs.anl.
gov/research/projects/mpi/tutorial/index.html
Buku: Using MPI-2: Portable Parallel Programming with the
Message-Passing Interface, Gropp, Lusk, and Thakur, MIT Press,
1999
Email: didik@undip.ac.id

Pendahuluan
Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Bahasan

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi

Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

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

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
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

Message Passing Interface


Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi

Lisensi

Arsitektur Memori Paralel


Shared, Distributed dan Hybrid

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

Sebelumnya dibahas arsitektur shared, berikutnya adalah


distributed dan/atau hybrid (MPP, Massively Parallel
Processors)

Arsitektur (Top500)
Implementasi Arsitektur

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

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

Model Pemrograman Paralel

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 memberikan abstraksi di atas suatu hardware dan


arsitektur memori
I

Namun, tidak spesifik untuk arsitektur tertentu

Sebelumnya dengan Thread di OpenMP dan PThread,


berikutnya Message Passing

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
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

Message Passing Interface


Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi

Lisensi

Pemrograman MPI (1)

Arsitektur Memori Terdistribusi

@2012,Eko Didik
Widianto
Pendahuluan
Arsitektur, Model
Pemrograman

Tiap prosesor mempunyai memori lokal sendiri

Memori Terdistribusi
Aplikasi
Topologi Jaringan di
Memori Terdistribusi

I Sehingga prosesor dapat

Message Passing

beroperasi secara independen

Message Passing
Interface

I Perubahan ke lokal memori tidak

Kompilasi dan
Eksekusi Program

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

Lisensi

Distributed

Memori Terdistribusi

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Arsitektur, Model
Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di
Memori Terdistribusi

I Kelebihan:
I
I

scalable jumlah prosesor dan ukuran memori dapat ditingkatkan


Tiap prosesor dapat mengakses memorinya tanpa interferensi dan
overhead, seperti di koherensi cache
Cost effective: dapat menggunakan PC komoditas, off-the-self
processor

I Kekurangan:
I
I

tugas programmer semakin kompleks terkait detail komunikasi data


Mapping data struktur berbasis memori globlal bisa susah

Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Pemrograman MPI (1)

Arsitektur Memori Hybrid


I

@2012,Eko Didik
Widianto

Terdiri dari arsitektur memori shared dan distributed

Pendahuluan
Arsitektur, Model
Pemrograman

Prosesor di mesin SMP


mempunyai akses global
ke memori mesin
tersebut

Aplikasi
Topologi Jaringan di
Memori Terdistribusi

Message Passing
Message Passing
Interface

Hybrid

Komponen distributed adalah


jaringan SMP multiple
I

Memori Terdistribusi

Komponen memori shared


biasanya mesin SMP koheren

SMP hanya tahu


memorinya saja
Komunikasi jaringan
diperlukan untuk
memindahkan data dari
satu SMP ke lainnya

Trend ke depan menggunakan tipe arsitektur memori ini

Kompilasi dan
Eksekusi Program
Lisensi

Cache Coherence
I

Komponen memori shared


biasanya mesin SMP koheren
I

Prosesor di mesin SMP


mempunyai akses global
ke memori mesin
tersebut

Komponen distributed adalah


jaringan SMP multiple
I

SMP hanya tahu


memorinya saja
Komunikasi jaringan
diperlukan untuk
memindahkan data dari
satu SMP ke lainnya

Generic Cache Coherence

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
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

Message Passing Interface


Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi

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

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

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

http://www.ctsim.org/

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi
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

Message Passing Interface


Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Metode Transfer Message
Informasi Status
Contoh Program MPI
Kompilasi dan Eksekusi Program
Lisensi

Lisensi

Memori Terdistribusi

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Arsitektur, Model
Pemrograman
Memori Terdistribusi
Aplikasi

Distributed Memory Multiprosesor


I

Menggunakan beragam topologi jaringan (koneksi)


I

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

Menciptakan ilusi bahwa semua node saling terhubung satu


dengan yang lainnya
Parameter performansi utama:
I
I
I

Latency (): delay antara waktu pengiriman dan penerimaan


Bandwidth (1/): Bandwidth efektif
Bandwidth link = #jalur/waktu-per-bit

Topologi Jaringan di
Memori Terdistribusi

Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Bisection Bandwidth

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Arsitektur, Model
Pemrograman
Memori Terdistribusi

Adalah bandwitdh di titik perpotongan yang membagi


jaringan menjadi dua yang sama persis
Diperlukan oleh algoritma dimana semua prosesor ingin
berkomunikasi dengan yang lainnya

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
Arsitektur, Model
Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di
Memori Terdistribusi

Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Distributed Memory

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

Di distributed, prosesor tidak mempunyai mapping ke


memori yang terhubung ke prosesor lain
I

Transfer data ke memori lain dilakukan dengan protokol


jaringan

Di message passing, task menggunakan memori lokalnya


sendiri saat komputasi

Beberapa task dapat


ditempatkan di mesin fisik
yang sama
Transfer data antar task
lewat pesan komunikasi

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

Semua komunikasi, sinkronisasi memerlukan


pemanggilan sub-rutin dari pustaka
I

Umumnya sama di tiap prosesor (SPMD)

Distribusi kerja dan data berdasarkan nilai myrank

Berkomunikasi berpasangan (point-to-point) dengan rutin


khusus send & receive
I
I

Tidak ada variabel shared tidak perlu lock


Sinkronisasi: barrier

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

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Message Passing Interface (MPI)

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing

Standar library yang dikembangkan oleh kelompok


akademik dan patner industri (mulai tahun 1990)
I

Untuk mempercepat penggunaan dan portabilitas model


pemrograman

Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Mendefinisikan rutin/fungsi, bukan implementasi

Kompilasi dan
Eksekusi Program

Implementasi MPI (free)

Lisensi

I
I

OpenMPI
MPICH2, etc

Referensi MPI:
I
I

Standar: http://www.mpi-forum.org
http://www.mcs.anl.gov/mpi

Message Passing Interface


Referensi Buku

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
I

Semua operasi dilakukan dengan panggilan rutin pustaka


Definisi rutin: mpi.h (C), mpif.h (Fortran)

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

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Pemrograman MPI (1)

Model Pembuatan Proses

@2012,Eko Didik
Widianto

MPMD dan SPMD

Pendahuluan
Message Passing

Multiple Program Multiple Data

Single Program Multiple Data

Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

I Program berbeda dieksekusi oleh

tiap prosesor

I Program yang sama dieksekusi

oleh tiap prosesor


I Statemen kontrol memilih bagian

berbeda untuk eksekusi di tiap


prosesor

Kontrol Proses

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

Di MPI, proses-proses yang terdefinisi dalam grup


komunikasi diberi rank

Message Passing
Message Passing
Interface
Message Passing Interface

rank dimulai dari 0 dan seterusnya

Metode Pembuatan Proses


MPI Environment

Program menggunakan statemen kontrol (misalnya if)


untuk melakukan eksekusi spesifik
I

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

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 */;

Transfer Message
Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Pembuatan Proses
Statik dan Dinamik

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing

Pembuatan proses secara statik


I
I
I

Proses yang dibuat oleh MPI (normal)


Semua executable dijalankan bersamaan
Dilakukan saat satu mesin menjalankan program terkompile

Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Pembuatan Proses secara Dinamik di MPMD

Kompilasi dan
Eksekusi Program
Lisensi

Tersedia di MPI-2

Satu prosesor mengeksekusi


proses master
I

prosesor lain menjalankan


proses dari proses master
Overhead: process creation

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

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
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;
}

Kompiler/Linker: mpicc.openmpi

Run: mpiexec.openmpi -np 4 mpi_hello

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

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

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

MPI menggunakan MPI_send() dan MPI_receive()

Tag Message
I

Digunakan oleh proses penerima untuk mengidentifikasi


message

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing

Didefinisikan oleh user bertipe integer

Jika type matching tidak diperlukan, tag message wildcard


dapat digunakan (MPI_ANY_TAG)
I

MPI_recv() akan cocok dengan sebarang MPI_send()

Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Contoh: mengirim message x dengan tag 5 dari proses 1


ke proses 2 dan menyimpannya sebagai y

Kompilasi dan
Eksekusi Program
Lisensi

Unsafe Message Passing

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

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface

Proses dapat dikelompokkan ke dalam grup

Message Passing Interface

Tiap message dikirimkan dalam suatu konteks dan harus


diterima dalam konteks yang sama

MPI Environment

Grup dan konteks membentuk communicator


I
I

Communicator mendefinisikan domain komunikasi


Set proses yang diijinkan untuk berkomunikasi antar mereka

Sebuah proses diidentifikasikan dengan rank dalam grup


yang berasosiasi dengan suatu communicator

Default communicator: MPI_COMM_WORLD


I

Communicator yang grupnya berisi semua proses inisial

Metode Pembuatan Proses

Transfer Message
Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Pemrograman MPI (1)

Tipe Data

@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface

Tipe Data MPI


MPI_CHAR
MPI_INT
MPI_LONG
MPI_FLOAT
MPI_DOUBLE
MPI_UNSIGNED_CHAR
MPI_UNSIGNED_SHORT
MPI_UNSIGNED
MPI_UNSIGNED_LONG

Tipe Data C
char
int
long
float
double
unsigned char
unsigned short
unsigned int
unsigned long

Message Passing Interface


Metode Pembuatan Proses
MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Parameter MPI_Send()

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

Di MPI dasar, transfer disebut blocking


I

Rutin menunggu sampai semua action lokal telah dilakukan


(fungsi return)

Buffer message dideskripsikan dengan (buf, count,


datatype)

Proses targe dispesifikasikan dengan dest, yaitu rank dari


proses target dalam communicator comm

Saat fungsi ini return, data telah dikirimkan ke seistem dan


buffer buf dapat digunakan kembali
I

Message ini mungkin belum diterima oleh proses target

Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Parameter MPI_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

Menunggu sampai message yang cocok (source dan tag)


diterima dari sistem dan buffer dapat digunakan

source adalah rank dalam communicator comm atau


MPI_ANY_SOURCE

tag adalah tag yang harus cocok dengan yang dikirim


sumber atau MPI_ANY_TAG
Menerima lebih sedikit datatype daripada count berarti
OK, kalau lebih berarti terjadi error

status berisi informasi lebih lanjut (misalnya ukuran


message)

Kompilasi dan
Eksekusi Program
Lisensi

Bahasan
Pendahuluan
Arsitektur Memori dan Model Pemrograman
Memori Terdistribusi
Aplikasi
Topologi Jaringan di Memori Terdistribusi

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Informasi Status

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface

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 );

Kode!

Metode Pembuatan Proses


MPI Environment
Transfer Message
Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Tag dan Context

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing

Pemisahan message yang digunakan dapat dilakukan


dengan tag
I

Context berbeda dari tag


I
I

Tapi ini memerlukan librari yang patuh terhadap tag yang


digunakan oleh pustaka lain
Ini dapat diatasi dengan penggunaan tag wildcard

Wildcard tidak diijinkan


Dialokasikan secara dinamik oleh sistem saat suatu
pustaka mensetup sebuah communicator

Tag yang didefinisikan oleh user masih disediakan oleh


MPI untuk kemudahan user dalam mengorganisasikan
aplikasi

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

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing
Message Passing
Interface
Message Passing Interface
Metode Pembuatan Proses
MPI Environment
Transfer Message

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

Informasi Status
Contoh Program MPI

Kompilasi dan
Eksekusi Program
Lisensi

Contoh Program MPI


Send dan Receive (Blocking)

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

#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;
}

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)

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

#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;
}

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

Mensetup Environment Message Passing

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan
Message Passing

Seringkali komputer yang digunakan untuk komputasi


ditentukan dalam sebuah file
I
I

Dengan nama file: hostfile atau machines


File berisi nama-nama komputer dan jumlah proses yang
harus berjalan di komputer tersebut
Algoritma implementasi memilih komputer dari daftar yang
harus menjalankan program pengguna

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

Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Kompilasi Program MPI

Pemrograman MPI (1)


@2012,Eko Didik
Widianto
Pendahuluan

Perintah tergantung implementasi MPI yang digunakan (di


uBuntu kedua-duanya ada)
I

Perintah di uBuntu
I
I

OpenMPI (digunakan di kuliah ini), MPICH2

Kompilasi: mpicc.openmpi
Eksekusi: mpirun.openmpi atau mpiexec.openmpi (perintah
standar MPI-2)

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

Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Pemrograman MPI (1)

Lisensi

@2012,Eko Didik
Widianto

Creative Common Attribution-ShareAlike 3.0 Unported (CC


BY-SA 3.0)
I

Anda bebas:
I

Di bawah persyaratan berikut:


I

untuk Membagikan untuk menyalin, mendistribusikan,


dan menyebarkan karya, dan
untuk Remix untuk mengadaptasikan karya

Atribusi Anda harus memberikan atribusi karya sesuai


dengan cara-cara yang diminta oleh pembuat karya
tersebut atau pihak yang mengeluarkan lisensi.
Pembagian Serupa Jika Anda mengubah, menambah,
atau membuat karya lain menggunakan karya ini, Anda
hanya boleh menyebarkan karya tersebut hanya dengan
lisensi yang sama, serupa, atau kompatibel.

Lihat: Creative Commons Attribution-ShareAlike 3.0


Unported License

Pendahuluan
Message Passing
Message Passing
Interface
Kompilasi dan
Eksekusi Program
Lisensi

Anda mungkin juga menyukai