• Tidak ada hasil yang ditemukan

Pemrograman MPI (1) Kuliah#11 TSK617 Pengolahan Paralel - TA 2011/2012. Eko Didik Widianto. Teknik Sistem Komputer - Universitas Diponegoro

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pemrograman MPI (1) Kuliah#11 TSK617 Pengolahan Paralel - TA 2011/2012. Eko Didik Widianto. Teknik Sistem Komputer - Universitas Diponegoro"

Copied!
51
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

I

Tiap 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

I

Mapping data struktur berbasis memori globlal bisa susah

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

I

Bandwidth (1/β): Bandwidth efektif

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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’

(29)

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

(30)

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

(31)

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

(32)

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

I

Overhead: process creation

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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

(47)

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;

}

(48)

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;

}

(49)

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

(50)

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

(51)

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

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.

I

Lihat:

Creative Commons Attribution-ShareAlike 3.0

Unported License

Referensi

Dokumen terkait

Berikut adalah cara menjalankan program penelusuran sistem pakar penyakit tanaman kedelai, dan akan dijelaskan logika bagaimana hubungan antara hasil analisa dan

dalam Al-Quran surat An-Nisa’ ayat 3 yang artinya “...maka kawinilah wanita-wanita yang kamu senangi, dua, tiga, atau empat....” 11 Ayat tersebut menjelaskan

Hal ini sejalan dengan penelitian Al Faris, dkk (2015) dalam survei cross sectional yang dilakukan terhadap 127 remaja putri Saudi (13-18 tahun) dan 69 remaja putri

Orang yang berada dalam masa keanggotaan asuransi pensiun dari negara-negara yang terikat Kesepakatan Penjumlahan Asuransi dengan Jepang (per bulan April 2005, Jepang sedang

Calon perawat EPA tetap dapat mengikuti ujian nasional meskipun telah kembali ke negara asal. Permohonan untuk mengikuti ujian ini membutuhkan kualifikasi ujian nasional yang

Bilamana para Pihak yang diundang (Pengusul DAK) tidak dapat hadir saat pelaksanaan kegiatan Sosialisasi Petunjuk Teknis dan Konsultasi Program Penyelenggaraan DAK, maka

Penelitian bertujuan untuk memberikan gambaran mengenai tekanan darah pada pasien post hemodialisa berdasarkan umur, jenis kelamin dan berat badan di PKU

Segala puji dan syukur kepada Tuhan Yesus Kristus dan Bunda Maria buat segala berkat dan penyertaanNya sehingga penulis dapat menyelesaikan penelitian dan