Anda di halaman 1dari 0

II-1

BAB II
DASAR TEORI
II.1 Komputasi Paralel
II.1.1 Pengenalan Komputasi Paralel
Pada umumnya sebuah perangkat lunak dibangun dengan menggunakan paradigma komputasi
serial, di mana perangkat lunak tersebut dirancang untuk dieksekusi oleh sebuah sebuah mesin
yang mempunyai sebuah CPU. Pada komputasi serial, permasalahan diselesaikan dengan
serangkaian instruksi yang dieksekusi satu demi satu oleh CPU, di mana hanya satu instruksi
yang bisa berjalan pada satu waktu saja. Hal ini akan memunculkan permasalahan untuk eksekusi
program yang membutuhkan sumber daya komputasi (prosesor dan memori) yang besar, yaitu
waktu eksekusi yang panjang, padahal beberapa instruksi atau kumpulan instruksi sebenarnya
dapat dieksekusi secara bersamaan tanpa mengganggu kebenaran program.

Permasalahan yang muncul dalam komputasi serial tersebut dapat diatasi dengan menggunakan
komputasi paralel, di mana waktu eksekusi program dapat dipersingkat dengan membagi program
menjadi task-task yang dapat dikerjakan secara terpisah untuk kemudian dieksekusi secara
paralel. Tidak semua task dapat dikerjakan secara terpisah (sebagai contoh adalah penghitungan
deret Fibonacci), sehingga tidak semua permasalahan dapat memperoleh keuntungan jika solusi
permasalahan tersebut dieksekusi secara paralel. Dalam pembagian task, diperlukan juga
pembangunan graf ketergantungan task untuk menentukan ketergantungan antar task (saat suatu
task membutuhkan hasil komputasi dari task lain). Pembagian pogram menjadi task-task juga
harus memperhatikan granularity (perbandingan antara waktu komputasi dengan waktu
komunikasi) dari task-task tersebut. Semakin besar granularity (coarse-grained), akan semakin
kecil beban yang dibutuhkan untuk interaksi antar task.

Tujuan utama penggunaan komputasi paralel adalah untuk mempersingkat waktu eksekusi
program yang menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu
program menggunakan komputasi paralel antara lain :
1. Untuk permasalahan yang besar, terkadang sumber daya komputasi yang ada sekarang
belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan tersebut
2. Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan atau internet

II-2
3. Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin
yang murah sebagai alternatif penggunaan satu mesin yang bagus tapi mahal, walaupun
menggunakan n buah prosesor
4. Adanya keterbatasan kapasitas memori pada mesin untuk komputasi serial

Penggunaan komputasi paralel sebagai solusi untuk mempersingkat waktu yang dibutuhkan untuk
eksekusi program mempunyai beberapa hambatan. Hambatan-hambatan tersebut antara lain
adalah :
1. Hukum Amdahl : percepatan waktu eksekusi program dengan menggunakan komputasi
paralel tidak akan pernah mencapai kesempurnaan karena selalu ada bagian program
yang harus dieksekusi secara serial.
2. Hambatan yang diakibatkan karena beban jaringan : dalam eksekusi program secara
paralel, prosesor yang berada di mesin yang berbeda memerlukan pengiriman dan
penerimaan data (atau instruksi) melalui jaringan. Untuk program yang dibagi menjadi
task-task yang sering membutuhkan sinkronisasi, network latency menjadi masalah
utama. Permasalahan ini muncul karena ketika suatu task membutuhkan data dari task
yang lain, state ini dikirimkan melalui jaringan di mana kecepatan transfer data kurang
dari kecepatan prosesor yang mengeksekusi instruksi task tersebut. Hal ini menyebabkan
task tersebut harus menunggu sampai data sampai terlebih dahulu, sebelum
mengeksekusi instruksi selanjutnya. J umlah waktu yang dibutuhkan untuk berkomunikasi
melalui jaringan antar dua titik adalah jumlah dari startup time, per-hop time, dan per-
word transfer time.
3. Hambatan yang terkait dengan beban waktu untuk inisiasi task, terminasi task, dan
sinkronisasi.
II.1.2 Arsitektur Komputer Paralel
Taksonomi Flynn membagi arsitektur komputer paralel dengan menggunakan sudut pandang
instruksi dan data, sehingga terdapat empat jenis arsitektur komputer paralel :

SISD
(Single Instruction, Single Data)
SIMD
(Single Instruction, Multiple Data)
MISD
(Multiple Instruction, Single Data)
MIMD
(Multiple Instruction, Multiple Data)

1. SISD (Single Instruction, Single Data) : arsitektur ini adalah arsitektur yang mewakili
komputer serial, di mana hanya ada satu prosesor dan satu aliran masukan data (memori),

II-3
sehingga hanya ada satu task yang dapat dieksekusi pada suatu waktu. Arsitektur von
Neumann termasuk dalam jenis ini.
2. SIMD (Single Instruction, Multiple Data) : pada arsitektur ini, eksekusi sebuah instruksi
akan dilakukan secara bersamaan oleh beberapa prosesor, di mana suatu prosesor dapat
menggunakan data yang berbeda dengan prosesor lain. Karakteristik lain dari arsitektur ini
adalah alur eksekusi instruksi yang deterministik (state dari instruksi dan data pada suatu
waktu dapat dengan mudah diketahui). Arsitektur ini cocok untuk program yang dapat dibagi
menjadi task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem pengolah
grafik.
3. MISD (Multiple Instruction, Single Data) : pada arsitektur ini, berbagai instruksi akan
dieksekusi secara bersamaan oleh beberapa prosesor dengan menggunakan data yang sama.
Arsitektur ini kurang populer karena hanya sedikit permasalahan yang membutuhkan solusi
dengan menggunakan karakteristik arsitektur ini. Contoh permasalahan yang mungkin
membutuhkan arsitektur ini antara lain adalah multiple frequency filter dan program pemecah
sandi yang menggunakan beberapa algoritma kriptografi sekaligus.
4. MIMD (Multiple Instruction, Multiple Data) : pada arsitektur ini, berbagai instruksi dapat
dieksekusi oleh beberapa prosesor di mana masing-masing prosesor dapat menggunakan data
yang berbeda. Eksekusi instruksi pada arsitektur ini dapat dilakukan secara sinkron (pada
suatu rentang waktu, jumlah instruksi yang dieksekusi oleh semua prosesor adalah sama)
maupun asinkron, deterministik maupun non-deterministik. Selain itu, arsitektur ini dapat
melakukan pekerjaan sesuai dengan karakteristik dari ketiga asitektur sebelumnya.

Pada komputasi paralel, cara pengaksesan memori mempunyai pendekatan yang berbeda dengan
komputasi serial. Pada umumnya, ada dua buah arsitektur memori pada komputer paralel, yaitu
shared memory dan distributed memory.
1. Shared memory : arsitektur ini menyediakan global addressing sehingga berbagai prosesor
mempunyai cara pengaksesan memori yang seragam. Setiap perubahan pada suatu lokasi
memori oleh suatu prosesor akan selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur
ini antara lain adalah pengaksesan memori yang user friendly dan performansi yang baik
dalam penggunaan data bersama antar task. Sedangkan kekurangannya antara lain adalah
kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana akan terjadi peningkatan
traffic antara prosesor ke shared memory dan antara cache coherent system dengan memori
sebenarnya.


II-4
Berdasarkan frekuensi akses, ada dua jenis shared memory :
a. Uniform Memory Access (UMA) : setiap prosesor memiliki hak pengaksesan yang
seragam dengan prosesor lain. UMA biasanya digunakan oleh mesin-mesin yang
mempunyai jenis prosesor yang sama (Symmetric Multiprocessor / SMP). Istilah lain
yang sering digunakan untuk jenis shared memory ini adalah CC-UMA atau Cache
Coherent UMA, di mana cache coherent mempunyai arti bahwa jika sebuah prosesor
mengubah isi suatu alamat di suatu memori, maka prosesor lainnya akan
mendapatkan nilai yang baru jika mengakses alamat memori tersebut. Cache
coherency dilakukan di tingkat hardware.
b. Non Uniform Memory Access (NUMA) : tidak semua prosesor memiliki hak yang
sama dalam mengakses memori. Biasanya jenis ini digunakan oleh mesin yang
memiliki lebih dari satu jenis prosesor. J enis NUMA yang mempunyai fasilitas cache
coherency disebut CC-NUMA.


Gambar II-1. (a)UMA, (b) CC-UMA, dan (c) NUMA
2. Distributed memory : arsitektur ini mempunyai karakteristik di mana setiap prosesor memiliki
memorinya masing-masing, sehingga eksekusi instruksi dapat berjalan secara independen
antara satu prosesor dengan yang lain. Prosesor akan menggunakan jaringan ketika
membutuhkan akses ke memori non lokal. Akses ini sepenuhnya menjadi tanggung jawab
penulis program. Kelebihan dari arsitektur ini adalah terjaganya skalabilitas ketika terjadi
penambahan prosesor. Sedangkan kekurangannya adalah penulis program harus berurusan
dengan detail komunikasi data antara prosesor dan memori non lokal.


II-5

Gambar II-2. Arsitektur distributed memory
3. Hybrid Distributed-Shared Memory : gabungan antara arsitektur shared memory dan
distributed memory. Arsitektur ini biasanya digunakan untuk sistem yang terdiri dari
beberapa mesin yang memiliki kumpulan SMP (Symmetric Multiprocessor), di mana antara
mesin satu dengan yang lain berkomunikasi menggunakan jaringan.
II.1.3 Komunikasi Antar Task
Penggunaan komputasi paralel dapat dilakukan baik di tingkat sistem operasi, maupun di tingkat
bahasa pemrograman. Secara umum, paradigma komputasi paralel dapat dibagi menjadi dua
jenis, yaitu paralelisme implisit dan paralelisme eksplisit. Paralelisme implisit merupakan suatu
pendekatan di mana penulis program tidak perlu memperhatikan masalah pembagian task ke
beberapa prosesor dan memori beserta sinkronisasinya. Pembagian task dan sinkronisasi
ditangani oleh sistem di bawah program (sistem operasi atau virtual machine) atau oleh compiler.

Berbeda dengan komputasi paralel yang menggunakan paradigma paralelisme implisit, penulis
program yang menggunakan paradigma paralelisme eksplisit harus memperhatikan dan
menangani masalah pembagian task dan komunikasinya. Komunikasi antar dua atau lebih task
pada umumnya dilakukan dengan menggunakan shared memory atau message passing. Trade-off
yang muncul pada kedua pilihan ini adalah trade-off antara skalabilitas dengan kemudahan
pemrograman.
1. Shared memory
Pada model komunikasi ini, task-task menggunakan address space yang sama, di mana masing-
masing task dapat menulis atau membaca secara asinkron. Berbagai mekanisme sinkronisasi
seperti lock atau semaphore dibutuhkan untuk mengatur akses ke memori. Kelebihan dari model
komunikasi ini adalah penulis program tidak perlu memikirkan komunikasi antar task secara
eksplisit. Model ini hanya dapat digunakan pada arsitektur komputer yang menggunakan shared
memory sebagai cara pengaksesan memori.



II-6
2. Message Passing
Pada model komunikasi ini, setiap task mempunyai address space lokal, dan paradigma yang
digunakan adalah paradigma paralelisme eksplisit. Contoh sumber daya komputasi yang cocok
menggunakan pemodelan ini adalah beberapa workstation yang dijadikan cluster. Sekumpulan
workstation ini tidak mempunyai mekanisme khusus untuk saling berbagi address space,
sehingga proses yang berjalan di salah satu workstation hanya bisa melakukan akses terhadap
address space di mana proses tersebut berada. Akibat dari adanya address space yang terbagi-
bagi ini adalah diperlukannya pembagian dan penempatan data secara eksplisit, serta
dibutuhkannya sinkronisasi antar proses (dua task yang berada pada dua proses), di mana salah
satu proses membutuhkan data dari proses yang lain. Karakteristik ini juga dapat menyebabkan
perilaku proses menjadi tidak alamiah, di mana suatu proses harus melayani permintaan data
sedangkan proses tersebut secara logis sebenarnya tidak mempunyai hubungan apa-apa dengan
proses yang melakukan permintaan data tersebut. Kekurangan dari pemodelan komunikasi ini
adalah dibutuhkannya analisa terhadap program serial untuk menentukan bagian-bagian yang
dapat didekomposisi menjadi task-task untuk kemudian dieksekusi secara paralel, dengan
memperhatikan aspek efisiensi dan efektifitas, agar keseluruhan komputasi dapat memberikan
hasil yang optimal.

II.1.4 Model Pemrograman
Untuk mempermudah pengembangan program di lingkungan komputasi paralel, dikembangkan
model pemrograman yang menjadi cara untuk menggambarkan struktur algoritma paralel, sesuai
dengan pilihan metode dekomposisi dan pemetaan proses. Model-model tersebut akan menjadi
pendekatan dalam melakukan desain komputasi paralel. Model-model pemrograman tersebut
adalah :
1. Data-Parallel Model : pada model ini, task dipetakan secara statik pada proses dan masing-
masing proses melakukan operasi yang sama terhadap data yang berbeda secara konkuren.
Karena setiap task melakukan operasi yang sama, maka metode dekomposisi yang digunakan
adalah data decomposition.
2. Task Graph Model : model pemrograman ini menggunakan dasar bahwa setiap komputasi
paralel dapat digambarkan sebagai task-dependency graph. Model pemrograman ini
digunakan jika beban pemindahan data yang diperlukan suatu task relatif lebih besar daripada
beban komputasi task tersebut. Pada umumnya task dipetakan secara statis agar beban
pemindahan data antar task bisa dikurangi.

II-7
3. Work Pool Model : model pemrograman ini mempunyai karakteristik yaitu pemetaan task
dilakukan secara dinamis, sehingga setiap proses mempunyai kemungkinan yang sama dalam
mengeksekusi suatu jenis task. Pointer ke suatu task yang sedang dieksekusi oleh suatu
proses diletakkan pada satu tempat (dapat sebagai list, queue, atau hash table). Model ini
dipilih ketika beban pemindahan data yang diperlukan oleh suatu task relatif lebih kecil
daripada beban komputasi task tersebut, sehingga pemindahan data pada saat runtime tidak
merupakan beban yang berarti, yang mempengaruhi efisiensi keseluruhan komputasi.
4. Master Slave Model : pada model premrograman ini, satu atau lebih proses master
membangkitkan task dan memetakannya ke proses slave secara dinamis. Proses master dapat
memetakan task ke proses slave secara seimbang jika proses master bisa memperkirakan
beban komputasi task yang dibangkitkannya. J ika beban komputasi task tidak dapat
diperkirakan, proses master akan menjadi sumber bottleneck keseluruhan komputasi, yaitu
pada kondisi waktu yang dibutuhkan untuk pembangkitan task tidak seimbang dengan waktu
yang dibutukan oleh suatu proses slave saat mengeksekusi task yang sedang dibebankan
padanya.
5. Pipeline / Producer-Consumer Model : pada model pemrograman ini, data mengalir dari
suatu proses ke proses suksesornya (output dari proses yang satu menjadi input dari proses
yang lain). Pendekatan ini biasa disebut dengan stream parallelism, di mana operasi-operasi
yang bebeda dilakukan terhadap aliran data. Overhead dapat terjadi jika salah satu proses
yang terlibat dalam rantai producer-consumer mempunyai beban komputasi yang besar,
sehingga proses suksesornya harus menunggu lama sampai komputasi tersebut
selesai[GRA03].

II.2 Komputasi Paralel Message Passing
Sesuai dengan namanya, karakteristik dasar dari komputasi paralel ini adalah message passing
atau pertukaran pesan. Pertukaran pesan dilakukan oleh prosesor-prosesor yang terlibat dalam
komputasi paralel untuk melakukan komunikasi yang berupa pertukaran data dan sinkronisasi
antar prosesor[GRA03]. Organisasi lojik dari sebuah sistem message-passing adalah sekumpulan
simpul pemrosesan. Setiap simpul pemrosesan tersebut dapat terdiri dari satu prosesor. Dalam
sistem seperti ini, setiap simpul pemrosesan berinteraksi dengan medium pesan (message).
Pertukaran pesan digunakan untuk pengiriman data, pengiriman kerja, atau pun sinkronisasi aksi
antar proses. Sistem message-passing juga memungkinkan setiap proses mengeksekusi program
yang berbeda.

II-8

J aringan komputer message passing dibuat dengan menghubungkan sekumpulan komputer
melalui sebuah jaringan interkomunikasi. Setiap komputer memiliki sebuah prosesor dan memori
lokal, seperti ditunjukkan pada Gambar II-3, dan komunikasi antar komputer dilakukan melalui
jaringan interkoneksi. J aringan interkoneksi digunakan untuk pengiriman pesan antar komputer.
Pesan tersebut berisikan data yang diperlukan dalam komputasi.

Gambar II-3 Model Komputer Message Passing

II.2.1 MPI
MPI (Message Passing Interface) adalah standar yang dikembangkan untuk mengatasi masalah
portabilitas program antar arsitektur komputer paralel, yaitu agar program yang dikembangkan
dengan menggunakan pemodelan message passing pada suatu mesin dapat berjalan di mesin lain.
Standar ini dikembangkan karena pada awalnya setiap mesin mempunyai mekanisme / library
masing-masing untuk melakukan message passing. Pada saat ini, implementasi MPI sudah
tersedia di hampir semua komputer paralel.
Library MPI mengandung 125 rutin yang harus diimplementasikan oleh vendor mesin. Di antara
125 rutin tersebut, 6 buah rutin utama yang minimal harus dipakai untuk mengembangkan sebuah
aplikasi adalah (implementasi MPI dalam C) [MPI95].
Tabel II-1 Fungsi Dasar MPI
MPI _I ni t Rutin untuk inisialisasi MPI
MPI _Fi nal i ze Rutin untuk terminasi MPI

II-9
MPI _Comm_si ze Rutin untuk mendapatkan jumlah proses
MPI _Comm_r ank Rutin untuk mendapatkan label dari pemanggil rutin ini
MPI _Send Rutin untuk mengirim sebuah pesan
MPI _Recv Rutin untuk menerima sebuah pesan

Selain fungsi-fungsi dasar diatas, [WIL99] menyebutkan ada beberapa fungsi dasar tambahan
dalam MPI. Fungsi-fungsi ini disebutkan dalam tabel di bawah:
Tabel II-2 Fungsi Dasar Tambahan MPI
MPI _Bcast Mengirim pesan yang sama ke banyak komputer (operasi
broadcast)
MPI _Scat t er
Mengirim tiap elemen array dari data ke komputer yang berbeda
(operasi scatter)
MPI _Gat her Sebuah komputer mengumpulkan data dari beberapa komputer lain
(operasi gather)

Ketiga fungsi di atas, dimodelkan dalam gambar-gambar di bawah:


Gambar II-4 MPI_Broadcast


II-10

Gambar II-5 MPI_Scatter


Gambar II-6 MPI_Gather

Selain rutin, spesifikasi MPI juga menyediakan tipe data dan konstanta yang juga menggunakan
prefiks MPI _. Sebagai contoh, berikut ini adalah pemetaan tipe data pada implementasi MPI
dalam C dengan tipe data pada C.
Tabel II-3 Tipe Data MPI
MPI _CHAR signed char
MPI _SHORT signed short int
MPI _I NT signed int
MPI _LONG signed long int
MPI _UNSI GNED_CHAR unsigned char
MPI _UNSI GNED_SHORT unsigned short int
MPI _UNSI GNED unsigned int

II-11
MPI _UNSI GNED_LONG unsigned long int
MPI _FLOAT Float
MPI _DOUBLE Double
MPI _LONG_DOUBLE long double

Setiap program MPI harus diawali dengan pemanggilan rutin MPI _I ni t . Tujuan dari
pemanggilan rutin ini adalah untuk menyiapkan lingkungan MPI. MPI _Fi nal i ze digunakan
untuk melakukan terminasi program MPI, dan akan membersihkan semua sumber daya yang
digunakan oleh lingkungan MPI.

Salah satu konsep utama dari MPI adalah communication domain, yaitu kumpulan dari proses
yang dapat berkomunikasi antara satu dengan yang lainnya. Informasi mengenai communication
domain dapat diletakkan pada variabel dengan tipe data MPI _Comm, yang biasa disebut dengan
communicator. Communicator ini digunakan sebagai argumen pemanggilan rutin oleh semua
rutin pengiriman pesan. Sebuah proses dapat mempunyai relasi ke satu atau lebih communicator
(pemetaan m ke n). Sekumpulan proses yang berada pada satu communicator membentuk
communication domain yang telah disebutkan sebelumnya. MPI mendefinisikan sebuah standar
communicator yaitu MPI _WORLD. Communicator MPI _WORLD ini terdiri dari semua proses
yang terlibat dalam komputasi paralel, sehingga dimungkinkan setiap proses dapat mengirim
pesan ke salah satu atau semua proses lainnya.

Untuk mengetahui informasi mengenai suatu communicator, MPI menyediakan rutin
MPI _Comm_si ze dan MPI _Comm_r ank. MPI _Comm_si ze adalah rutin yang digunakan
untuk mengetahui jumlah proses yang berada pada suatu communicator. Sedangkan
MPI _Comm_r ank adalah rutin yang digunakan untuk mengetahui label (identitas) dari
pemanggil rutin tersebut.

II.2.2 MPICH
MPICH (MPI CHameleon) merupakan salah satu implementasi dari standar MPI. MPICH
didesain dengan tujuan untuk mengkombinasikan portabilitas dengan performansi yang tinggi.
Komputer paralel NoW dan MPICH sebagai satu kesatuan akan disebut sebagai sistem message-
passing. Dalam tugas akhir ini, digunakan MPICH versi nt.1.2.5 yang merupakan implementasi
dari standar MPI versi 1.1.

II-12

Dalam sebuah komputer paralel NoW, MPICH merupakan kesatuan dari implementasi library
MPI dan daemon pengeksekusi program paralel. Pada setiap komputer dalam komputer paralel
NoW terdapat daemon yang bertugas untuk mempersiapkan, inisiasi eksekusi suatu program
paralel, serta mengakhiri suatu eksekusi program paralel.

Penciptaan proses dalam MPI tidak didefinisikan dalam standar MPI sehingga sangat tergantung
pada implementasi. Dalam MPI, hanya penciptaan proses secara statik yang didefinisikan. Hal ini
berarti semua proses mesti didefinisikan sebelum eksekusi dan semua proses harus dimulai secara
bersamaan.

Sintaks perintah untuk memulai suatu eksekusi program MPI adalah
mpi r un np 4 pr ogr am. exe
Perintah untuk memulai suatu eksekusi program MPI ( mpi r un) dengan 4 proses ( - np 4)
untuk pr ogr am. exe

Baris perintah mpirun cukup dimasukkan di salah satu komputer dalam komputer paralel NoW.
Komputer dimana baris perintah mpirun dieksekusi disebut sebagai komputer launcher.
Komputer launcher akan membuat sebuah proses bernama launcher yang akan menginisiasi
eksekusi suatu program paralel. Secara umum, launcher akan menugaskan setiap daemon pada
komputer lain untuk mengeksekusi program paralel, kemudian daemon akan menginisiasi
eksekusi program paralel dan memberikan informasi pada launcher ketika program paralel telah
selesai dieksekusi pada komputer tersebut. Launcher akan menyelesaikan eksekusi program
paralel saat semua daemon yang bekerja telah melaporkan akhir eksekusi program paralel oleh
setiap komputer.

II.3 Network of Workstations Untuk Komputasi Paralel
NoW adalah jaringan komputer yang terdiri dari workstation-workstation yang digunakan untuk
memenuhi kebutuhan pemakaian sehari-hari. J aringan komunikasi untuk NoW sebagian besar
bertipe ethernet dengan topologi bus atau star. J aringan komputer yang digunakan dalam tugas
akhir ini juga bertipe ethernet dengan topologi star.


II-13
Ada beberapa keuntungan yang bisa didapat dengan memanfaatkan NoW untuk keperluan
komputasi paralel[WIL99]:
1. Komputer dengan performansi yang sangat tinggi telah tersedia di pasaran dengan harga
yang murah.
2. Prosesor terbaru dapat dengan mudah dimasukkan ke dalam NoW.

Selain keuntungan diatas, ada beberapa karakteristik NoW yang mengakibatkan peningkatan
kecepatan eksekusi lebih kecil dari yang diharapkan[WIL99]:
1. Waktu komunikasi yang besar
NoW memakai teknologi ethernet untuk komunikasi data. Salah satu kelemahan
teknologi ethernet adalah pemakaian satu jalur komunikasi oleh banyak komputer
sehingga sering terjadi colission (tabrakan) antar data yang dikirim oleh tiap komputer
sehingga data yang ingin dikirim harus dikirim ulang. Colission ini mengakibatkan waktu
komunikasi di NoW menjadi relatif besar jika dibandingkan dengan jaringan komputer
yang didesain khusus untuk tujuan komputasi paralel yang biasanya memiliki jalur
komunikasi khusus ke setiap komputer. Besarnya waktu komunikasi ini mengakibatkan
waktu yang diperlukan untuk pertukaran data dan sinkronisasi antar komputer pada
komputer paralel NoW menjadi besar.
2. Setiap komputer sangat mungkin memiliki kecepatan yang berbeda
Perbedaan kecepatan ini bisa mengakibatkan komputer yang cepat tidak bisa bekerja
secara maksimal karena harus menunggu komputer yang lebih lambat saat melakukan
sinkronisasi antar komputer.

II.4 Waktu Eksekusi Program Paralel
Waktu eksekusi program paralel adalah lamanya waktu sejak dimulai sampai berakhirnya
eksekusi program paralel. Secara praktis, waktu ini dimulai sejak input untuk memulai program
dimasukkan oleh user sampai dengan konfirmasi bahwa program telah selesai muncul ke layar.
Dalam eksekusi serial, waktu total eksekusi program hanyalah waktu eksekusi komputasi
program tersebut. Dalam eksekusi paralel, waktu total eksekusi adalah waktu komputasi program
tersebut ditambah dengan waktu untuk melakukan komunikasi antar prosesor yang bisa berupa
pertukaran data maupun sinkronisasi. J ika waktu keseluruhan eksekusi program paralel
dilambangkan dengan
par
t maka rumus waktu eksekusi program paralel adalah [WIL99]:

II-14
comm comp par
t t t + = (Rumus II-1)
comp
t =waktu komputasi
comm
t =waktu komunikasi


II.5 Performansi Komputer Paralel Message Passing
Performansi didefinisikan sebagai total waktu eksekusi program. Dalam tugas akhir ini, akan
digunakan pengukuran waktu eksekusi dengan konsep response time atau turnaround time.
Waktu eksekusi yang singkat menunjukkan performansi yang semakin tinggi. Salah satu tujuan
utama eksekusi program secara paralel dengan banyak prosesor adalah pengurangan waktu
eksekusi dibandingkan dengan eksekusi serial oleh satu prosesor. Karena
comm comp par
t t t + =
maka performansi komputasi paralel suatu NoW dibagi menjadi performansi komunikasi dan
performansi komputasi.

II.5.1 Performansi Komputasi Teoritis
Waktu komputasi (
comp
t ) dapat diperkirakan dengan cara yang sama untuk algoritma sekuensial.
J ika satu proses dieksekusi bersamaan, hanya diperlukan jumlah komputasi pada proses yang
paling kompleks. Analisis terhadap waktu komputasi dilakukan dengan asumsi semua prosesor
sama dan beroperasi pada kecepatan yang sama. Hal ini benar untuk komputer paralel yang
didesain secara khusus tapi belum tentu benar untuk komputer paralel NoW.

Waktu komputasi (
comp
t ) dalam eksekusi paralel akan dinormalisasi dalam ukuran satuan
eksekusi operasi aritmatika yang tergantung pada sistem yang dipakai. Satuan tersebut
menyatakan waktu yang diperlukan untuk eksekusi satu operasi aritmatika ( + , , , ), atau
cp
t .
J ika suatu komputasi memerlukan sejumlah
1
k langkah maka
cp 1
t k t
comp
=

Dalam suatu lingkungan pemrograman paralel, komputer yang dipergunakan dapat memiliki
kemampuan komputasi yang berbeda. Kemampuan komputasi tiap komputer akan dinyatakan
dalam suatu satuan Floating Point Instruction per Second (FLOPS). Satuan FLOPS dipakai
karena sebagian besar program paralel melakukan komputasi numerik dan komputasi numerik

II-15
tersebut adalah perhitungan terhadap angka bertipe floating point. Dari FLOPS tiap-tiap komputer
ditentukan satuan waktu yang diperlukan untuk eksekusi satu satuan Floating Point Instruction
(FLOP). Waktu untuk eksekusi satu satuan FLOP adalah
cp
t bagi masing-masing komputer.
Untuk lingkungan dengan komputer yang sama,
cp
t akan sama untuk tiap komputer karena
performansi komputasi tiap komputer sama.. Sedangkan untuk lingkungan dengan komputer yang
memiliki performansi beragam,
cp
t akan diambil dari komputer dengan performansi terendah
karena komputer dengan performansi terendah akan mendominasi waktu komputasi secara
keseluruhan.

II.5.2 Performansi Komunikasi Teoritis
Dengan mengetahui bandwidth suatu jaringan komputer dapat ditentukan besarnya waktu yang
diperlukan untuk pengiriman satu satuan data (
b
t ). Sedangkan, secara teoritis,waktu pengiriman
suatu data (
transmisi
t ) dengan panjang b satuan data dapat dinyatakan dalam rumus [WIL99]:


b startup transmisi
t b t t + = (Rumus II-2)

Dimana
startup
t adalah waktu startup atau seringkali disebut dengan message latency atau sering
disingkat latency. Latency adalah waktu yang diperlukan untuk pengiriman pesan tanpa data atau
waktu yang diperlukan untuk mempersiapkan data yang dikirimkan dan mempersiapkan data
yang diterima. Menurut [PAT04], latency pada Local Area Network (LAN) untuk Ethernet (IEEE
802.3) adalah 3000 milidetik, Fast Ethernet (IEEE 802.3u) 500 milidetik , Gigabit Ethernet
(IEEE 802.3ab) 340 milidetik, dan 10 Gigabit Ethernet (802.3ae) 190 milidetik . Seperti
ditunjukkan grafik pada Gambar II-7, waktu startup atau latency diasumsikan konstan sedangkan
waktu transmisi data menaik secara linear sesuai dengan penambahan jumlah data yang
ditransmisikan.

II-16

Gambar II-7 Performansi Transmisi Komunikasi Teoritis
Secara teoritis, hasil pengukuran performansi primitif-primitif komunikasi terhadap panjang
pesan akan menghasilkan grafik seperti Gambar II-7 di atas. Tetapi kenyataannya waktu
komunikasi bukanlah fungsi linier terhadap jumlah data atau panjang pesan seperti yang telah
disebutkan pada [GRO98] dan [AVI06].

II.6 Formulasi Faktor Performansi NoW untuk Eksekusi
Komputasi Paralel
Untuk mengukur performansi komputasi paralel suatu NoW, perlu diketahui dulu faktor-faktor
yang mempengaruhi performansi. [AVI06] telah memformulasikan faktor-faktor perfomansi pada
komputer paralel NoW. Faktor-faktor tersebut adalah speedup, granularity, skalabilitas, dan
model algoritma.
II.6.1 Speedup
Speedup factor S(n) adalah perbandingan antara kecepatan eksekusi suatu program serial dan
program paralel dengan n komputer / prosesor [WIL99],


par
ser
prosesor n pada eksekusi Waktu
prosesor satu pada Eksekusi Waktu
) (
T
T
n S = = (Rumus II-3)

S(n) menunjukkan peningkatan kecepatan dengan menggunakan n prosesor.

II-17
Speedup maksimum adalah n dengan n prosesor. Speedup maksimum n dapat dicapai jika
komputasi dapat dibagi menjadi proses-proses dengan durasi yang sama dengan tiap proses
dipetakan ke satu prosesor dan tidak ada overhead.
n
n t
t
n S = =
/
) (
ser
ser

Menurut [WIL99], ada beberapa faktor yang merupakan overhead pada komputasi paralel dan
membatasi speedup,
1. Periode ketika tidak semua prosesor melakukan komputasi.
2. Komputasi tambahan pada komputasi paralel yang tidak ada pada komputasi serial, misal:
penghitungan nilai variabel yang diperlukan untuk membagi task ke komputer-komputer
yang tersedia.
3. Waktu komunikasi untuk pengiriman pesan.

Peningkatan kecepatan komputasi yang ideal untuk komputasi dengan n prosesor dibandingkan
dengan 1 prosesor adalah sebesar n. Pada praktek, hal ini jarang terjadi. Karena pada komputasi
paralel ada bagian yang harus dieksekusi secara serial pada satu komputer. Komputasi yang ideal
adalah ketika semua prosesor bekerja bersamaan.

J ika fraksi komputasi yang tidak dapat dibagi-bagi menjadi bagian-bagian konkuren adalah f dan
tidak ada overhead yang terjadi ketika pembagian komputasi menjadi bagian-bagian paralel,
waktu yang diperlukan untuk melakukan komputasi dengan n buah prosesor (
par
t ) adalah
[WIL99]:


n
t f
t f t
par
ser
ser
) 1 (
+ = (Rumus II-4)

dengan s adalah total waktu yang dibutuhkan untuk melakukan keseluruhan komputasi secara
serial. Maka, speedup factor menjadi,

f n
n
n
t f
t f
t
n S
+
=

+
=
) 1 ( 1 ) 1 (
) (
ser
ser
ser
(Rumus II-5)

persamaan di atas dikenal sebagai Hukum Amdahl [WIL99].
.

II-18
II.6.2 Granularity
Pada pemrograman paralel, ada pembagian proses komputasi menjadi beberapa proses.
Granularity adalah besar ukuran proses. Pada coarse granularity komputasi dibagi menjadi sub-
sub komputasi yang berukuran sangat besar sehingga sebuah proses dapat terdiri dari ratusan ribu
sampai jutaan instruksi serial. Pada fine granularity komputasi dibagi menjadi sub-sub komputasi
yang berukuran sangat kecil sehingga sebuah proses mungkin terdiri dari ratusan, sampai satu
instruksi saja. Medium granularity terletak di tengah-tengah coarse dan fine [WIL99].

Dalam pemecahan suatu problem, saat pembagian problem menjadi bagian-bagian
paralel, pada satu saat waktu komunikasi akan mendominasi waktu komputasi. Menurut [WIL99],

y granularit
t
t
= = =
comm
comp
komunikasi waktu
komputasi waktu
komunikasi komputasi rasio (Rumus II-6)

rasio antara komputasi dan komunikasi dapat digunakan sebagai ukuran untuk granularity (G).

Dengan adanya overhead implementasi, maka granularity pada NoW dirumuskan dengan rumus
berikut [AVI06] :

comm
comp
t t
t
G
+
=
oi
(Rumus II-7)

Dalam tugas akhir ini, yang digunakan sebagai rumusan granularity adalah
(Rumus II-7.

II.6.2.1 Granularity Minimum
Granularity minimum (
min
G ) yaitu nilai granularity sehingga waktu eksekusi paralel paling
sedikit sama dengan waktu eksekusi serial atau speedup paling kecil adalah satu. Rumusan nilai
min
G untuk suatu sistem paralel adalah :


( ) ) 1 (
) 1 (
min
f f n n
f f n
G
+
+
= (Rumus II-8)


II-19
dengan n adalah jumlah komputer dan f adalah fraksi komputasi yang tidak bisa dibagi
lag[AVI06].

II.6.2.2 Granularity Optimum
Dalam hubungannya dengan nilai granularity, speedup dapat dirumuskan sebagai berikut
[AVI06]:
1
) 1 (
+

+
=
G
n
f
f
G

dengan mengganggap
n
f
f
) 1 (
1

+
= maka,

1 +

=
G
G
(Rumus II-9)

Dari rumusan di atas, terlihat bahwa penambahan granularity secara terus-menerus tidak akan
menambah speedup secara signifikan, nilai speedup hanya mendekati .

=
+


=
1
lim
G
G
G

Untuk komputasi serial yang seluruhnya dapat dibagi-bagi menjadi bagian konkuren atau sebuah
pembagian ideal untuk komputasi paralel, nilai sama dengan jumlah proses (n). Secara teoritis,
fungsi speedup terhadap granularity untuk pembagian ideal tersebut adalah.

1 +

=
G
G n
(Rumus II-10)

Rumusan ini diperlihatkan pada Gambar II-8 di bawah.

II-20

Gambar II-8 Grafik Ideal Speedup terhadap Granularity
Dari grafik pada Gambar II-8 di atas terlihat ada nilai granularity optimum (
opt
G ) yaitu suatu
nilai granularity dimana penambahan granularity setelah
opt
G tidak menambah speedup secara
signifikan atau suatu nilai granularity dimana kurva speedup mulai mendatar [AVI06].

II.6.3 Skalabilitas
Sebuah sistem paralel disebut scalable jika sistem tersebut memiliki kemampuan untuk
mempertahankan efisiensi bersamaan dengan peningkatan jumlah elemen pemrosesan dan jumlah
data yang diproses. Skalabilitas sebuah sistem paralel adalah ukuran kapasitas sistem tersebut
untuk meningkatkan speedup yang sebanding dengan jumlah elemen pemrosesan. Skalalabilitas
dapat dibagi menjadi skalabilitas perangkat keras dan skalabilitas algoritmik. Skalabilitas
perangkat keras dalam sebuah komputer paralel adalah peningkatan performansi suatu eksekusi
program paralel jika ada peningkatan jumlah komputer atau prosesor pengeksekusi. Skalabilitas
algoritmik adalah kemampuan sebuah sistem paralel untuk mempertahankan performansi seiring
dengan peningkatan jumlah langkah komputasi sebanding dengan peningkatan jumlah data.
Skalabilitas merepresentasikan kemampuan sebuah sistem paralel untuk menggunakan
peningkatan jumlah elemen pemrosesan secara efektif. Skalabilitas ideal direpresentasikan dalam
gambar di bawah. Sistem dengan skalabilitas ideal memiliki speedup yang sebanding dengan
jumlah elemen pemrosesan.

II-21

Gambar II-9 Peningkatan Speedup Ideal terhadap Jumlah Elemen Pemrosesan

II.6.4 Model Algoritma
Pemodelan algoritma paralel ditentukan oleh perancangan dekomposisi, tasks, graf
ketergantungan, serta jumlah proses yang akan digunakan dalam suatu program.
II.6.4.1 Model Data-Parallel
Model data-parallel adalah model algoritma paralel yang paling sederhana. Pada model ini, kerja
setiap proses ditentukan di awal dan setiap proses melakukan kerja yang sama terhadap data yang
berbeda. Pada model paralel yang disebut data-parallelism ini, operasi yang sama dilakukan
secara konkuren terhadap data atau bagian data yang berbeda. Kerja setiap proses dapat dilakukan
secara bertahap dan data yang dikerjakan dalam setiap tahap mungkin berbeda. Secara umum,
tahap-tahap dalam komputasi secara data-parallel diselingi dengan sinkronisasi kerja atau untuk
mendapatkan data baru untuk dikerjakan. Karena setiap kerja melakukan komputasi yang sama,
dekomposisi persoalan menjadi kerja dilakukan berdasarkan partisi dari data yang sudah cukup
untuk menjamin keseimbangan pembagian kerja.

Komputasi paralel ideal tercapai jika komputasi total dapat dibagi menjadi bagian-bagian yang
tidak saling tergantung dan dapat dieksekusi secara bersamaan. Komputasi paralel ini disebut
Embarassing / pleasantly parallel. Komputasi pleasantly parallel sejati tidak memerlukan
komunikasi antar proses. Setiap proses mengerjakan data yang berbeda dan menghasilkan
keluaran tanpa memerlukan hasil keluaran dari proses lain.

II-22

Gambar II-10 Model Komputasi Paralel Ideal
II.6.4.2 Model Master-Slave
Pada model Master-Slave atau kadang-kadang disebut manager-worker, satu atau beberapa
proses yang disebut Master membangkitkan kerja dan mengalokasikannya pada proses-proses
yang disebut Slave. Setiap kerja dapat dialokasikan secara statik sebelum eksekusi program atau
dialokasikan secara dinamik sebagai mekanisme load balancing. Pada alokasi secara dinamik,
proses-proses dialokasikan beban kerja yang berbeda. Pengalokasian secara dinamik cocok jika
waktu yang diperlukan Master untuk membangkitkan kerja bagi seluruh proses relatif lama.
Komputasi dalam model Master-Slave dapat dilakukan secara bertahap dengan sinkronisasi antar
Master dan Slave dalam setiap pergantian tahapan.

Gambar II-11 Model Eksekusi Paralel Master-Slave
Model Master-Slave dapat digunakan sebagai varian lain untuk model data-parallel. Pada model
ini, pada saat awal komputasi dan akhir komputasi hanya ada satu proses yang beroperasi
sendirian. Proses Master pada awal eksekusi akan mengirimkan data ke seluruh Slave kemudian
Slave akan memproses data tersebut dan kemudian Master akan mengumpulkan seluruh hasil
pemrosesan dari Slave.
Kumpul Hasil
Master
Slave
Kirim Data
Proses
Hasil
Data Masukan
Proses

II-23

Gambar II-12 Model Eksekusi Paralel Master-Slave Berulang
Pada eksekusi model data-parallel atau pun Master-Slave yang dilakukan bertahap, dilakukan
sinkronisasi antar proses untuk saling berbagi data yang diperlukan atau pun mengumpulkan data
pada suatu proses dan mendapatkan data baru untuk dikerjakan.


Gambar II-13 Model Algoritma Paralel dengan Sinkronisasi
Master
Slave
Kirim
Proses
Kumpul Hasil
Slave
Kumpul Hasil
Kirim Data
Kirim
Slave
Proses Pn P2
Aktif
Wait
P0 P1
Sinkronisasi

II-24
II.6.4.3 Model Pipeline
Pada model pipeline, sebuah aliran data dilewatkan melalui sebuah rangkaian proses yang akan
melakukan kerja. Eksekusi bersamaan beberapa proses yang mungkin melakukan kerja yang
berlainan pada sebuah aliran data disebut juga stream-parallelism. Dengan pengecualian pada
proses yang memulai pipeline, setiap kedatangan data baru memicu eksekusi kerja pada sebuah
proses dalam pipeline. Proses-proses dapat membentuk pipeline berupa rangkaian linier, array
multidimensi, pohon, atau sebarang graf. Sebuah pipeline adalah rangkaian produser dan
konsumen. Setiap proses dalam pipeline merupakan konsumen data dari proses sebelum dan
produsen data bagi proses sesudahnya. Kerja dalam model pipeline biasanya ditentukan secara
statik sebelum eksekusi.

Gambar II-14 Bagan proses Pipeline
Gambar II-8 menunjukkan model pipeline paling sederhana dalam suatu dengan rangkaian linier.

Gambar II-15 Diagram Proses-Waktu untuk Pipeline
J umlah siklus pipeline yang diperlukan untuk mengeksekusi sejumlah m instans dari sebuah
problem untuk diselesaikan dengan jumlah proses sebanyak p adalah 1 + p m .

II.6.4.4 Model Task-Graph
Salah satu contoh pemodelan program paralel secara Task-Graph adalah algoritma paralel dengan
strategi divide & conquer. Pendekatan divide & conquer memiliki ciri utama yaitu pembagian
P0 P1 P2 P3 P4
Waktu
I1 I2 I3 I4
I1 I2 I3
I1 I2
I1
I5
I4
I3
I2
I1
I1
I2
I3
I2 I3
I3
I4
P
P
P
P
P
P
I4
p - 1 m
Proses

II-25
sebuah problem menjadi subproblem dengan bentuk sama seperti problem semula. Subproblem
akan dibagi-bagi lagi menjadi subproblem yang lebih kecil secara rekursif.

Gambar II-16 Pembagian Persoalan secara Divide & Conquer
Subproblem akhir akan diselesaikan sehingga menjadi subsolusi. Subsolusi tersebut akan
digabungkan menjadi subsolusi yang semakin besar sampai menjadi solusi terhadap problem
awal (solusi akhir).

Gambar II-17 Penggabungan Solusi secara Divide & Conquer

II.7 Model Algoritma Paralel untuk Komputer Paralel NOW
Karakteristik utama yang membedakan komputer paralel NOW dengan komputer paralel yang
didesain secara khusus adalah waktu komunikasi yang relatif jauh lebih besar dibandingkan
dengan waktu komputasi. Hal tersebut disebabkan karena kecepatan pemrosesan oleh prosesor
relatif sangat besar dibandingkan bandwidth dari jaringan komputer pada NOW. Oleh karena itu,
program paralel yang relatif lebih cocok untuk komputer paralel NOW adalah program yang
memiliki waktu eksekusi komputasi yang jauh lebih besar daripada komunikasi. Program paralel
yang bagian komputasi lebih besar daripada bagian komunikasi disebut dengan computation
intensive sedangkan sebaliknya disebut data intensive.

Sub solusi
Penggabung
an Solusi
Solusi Akhir
Problem awal
Pembagi
an
Problem

II-26
Pemilihan model algoritma paralel yang cocok untuk komputer paralel NOW ditentukan oleh
banyaknya komunikasi untuk pengiriman data yang diperlukan. Model algoritma yang
membutuhkan banyak pengiriman data dapat dipastikan tidak cocok untuk dieksekusi pada
komputer paralel NOW.

Analisis untuk model-model berikut, akan dilakukan dengan asumsi eksekusi program paralel
hanya dilakukan satu kali dan jumlah tranmisi dalam komunikasi seminimal mungkin. Dalam
algoritma sebuah program paralel, pekerjaan yang direpresentasikan oleh model berikut dapat
dilakukan berulang-ulang. Asumsi ini dipilih karena komputer paralel NOW memiliki
performansi komunikasi yang relatif lebih rendah dan jika program paralel sudah memiliki
performansi yang buruk untuk satu kali eksekusi maka eksekusi berulang-ulang akan memiliki
performansi yang jauh lebih buruk.

II.7.1 Model Data-Parallel
Model data-parallel dapat diabaikan dalam komputer paralel NOW karena secara praktis,
eksekusi program paralel dalam suatu lingkungan NOW membutuhkan komunikasi. Komunikasi
yang diperlukan dalam komputer paralel NOW setidak-tidaknya mencakup komunikasi untuk
mempersiapkan proses-proses yang akan terlibat dalam eksekusi program paralel. Di samping itu,
komputer paralel NOW yang memiliki bandwidth komunikasi yang cukup tinggi sehingga waktu
komunikasi tidak dapat diabaikan. J adi, model data-parallel tidak mungkin dalam komputer
paralel NOW.

II.7.2 Model Master-Slave
Untuk eksekusi paralel Master-Slave seperti pada Gambar II-11, diperlukan pengiriman data
sebanyak n - 1 (jumlah Slave) dan pengiriman data sebanyak n 1 untuk fase kumpul hasil.
Sehingga, total transmisi data yang diperlukan adalah ) 1 ( 2 n .
II.7.3 Model Pipeline
Pada proses pipeline, ada sebanyak m instans data yang akan dilewatkan kepada sebanyak n
proses untuk diproses. J umlah transmisi data yang diperlukan untuk setiap instans adalah 1 n .
J ika ada sebanyak m instans data yang harus diproses dalam pipeline, total transmisi data yang
diperlukan adalah ) 1 ( n m .

II-27
II.7.4 Model Task-Graph
Pada model ini, representasi yang diambil adalah model divide & conquer dengan model pohon
biner. Model ini dipilih karena jumlah transmisi data pada pohon biner adalah minimum yaitu
sebanyak cabang. Pada pohon biner banyaknya cabang adalah n - 1. Seperti pada Gambar II-16
Pembagian Persoalan secara Divide & Conquer, pada fase pembagian persoalan diperlukan
transmisi data sebanyak 1 n .

Pada fase penggabungan solusi yang juga berbentuk pohon biner diperlukan transmisi data
sebanyak jumlah cabang yaitu 1 n .

Dari fase pembagian problem menjadi problem terkecil yang bisa dipecahkan sampai fase
penggabungan solusi selesai, untuk divide & conquer dengan pohon biner diperlukan total
transmisi data sebanyak ) 1 ( 2 n .

II.7.5 Model Algoritma yang Tepat untuk Komputer Paralel NOW
Analisis secara umum terhadap jumlah transmisi yang diperlukan untuk masing-masing model
algoritma pada sub-sub bab sebelumnya dapat dirangkum dalam tabel di bawah ini.
Tabel II-4 Perbandingan total transmisi antar berbagai model
Model Total Transmisi Keterangan
Data-Parallel Tidak ada Tidak mungkin untuk NOW
Master-Slave ) 1 ( 2 n
Pipeline ) 1 ( n m - m adalah jumlah data atau
blok data yang diproses
Task-Graph dengan jumlah
transmisi minimum (Pohon
Biner)
) 1 ( 2 n

Model pipeline dapat memiliki jumlah total transmisi yang sama dengan model Master-Slave atau
pun task-graph tetapi jumlah data yang banyak (m > 2) untuk diproses secara pipeline
menyebabkan jumlah transmisi data lebih banyak daripada Master-Slave dan task-graph. Secara

II-28
teoritis, model Master-Slave dan task-graph adalah model yang cocok untuk komputer paralel
NOW karena memiliki jumlah total transmisi paling sedikit.

MPI menyediakan dua jenis komunikasi, komunikasi point-to-point dan komunikasi kolektif.
Dalam implementasi, komunikasi dalam model Master-Slave dapat dilakukan dengan dua primitif
komunikasi : komunikasi point-to-point dengan send-recv dan komunikasi kolektif dengan
scatter-gather. Hal tersebut dimungkinkan karena dalam model Master Slave terdapat pengiriman
data dari satu ke seluruh proses atau pun pengiriman data dari seluruh proses ke satu proses.
Sedangkan model task-graph tetap harus diimplementasikan dengan primitif komunikasi point-
to-point. Dalam model task-graph khususnya pohon biner setiap proses hanya melakukan
transmisi data ke 2 proses lain atau pun menerima data dari dua proses lain.

Eksperimen dalam tugas akhir ini dilakukan dengan MPICH nt 1.2.5 yaitu salah satu
implementasi standar MPI. Implementasi model Master-Slave dan task-graph dengan primitif
komunikasi point-to-point MPI MPI_Send dan MPI_Recv, besarnya waktu komunikasi untuk
jumlah proses yang sama secara teoritik adalah sama yaitu,
recv send comm
) 1 ( ) 1 ( t n t n t + =
dan data mengenai
send
t dan
recv
t didapatkan dari pengukuran pengiriman pesan dengan
MPI_Send dan MPI_Recv dalam suatu lingkungan tertentu. Sedangkan perhitungan waktu
komunikasi untuk model Master-Slave dengan scatter-gather harus dilihat dari implementasi
primitif MPI_Scatter dan MPI_Gather.

Dari hasil pembacaan kode sumber MPICH nt 1.2.5, MPI_Scatter dan MPI_Gather
diimplementasikan dengan menggunakan model pohon biner. J adi, dalam eksekusi
MPI_Scatter transmisi komunikasi kolektif tidak dilakukan dengan pengiriman data ke
seluruh proses tetapi proses yang mengawali pengiriman data akan mengirimkan data ke dua
proses lain dan selanjutnya dua proses tersebut akan mengirimkan data ke masing-masing dua
proses lain sampai seluruh proses mendapat data yang ditujukan. MPI_Gather memiliki
implementasi kebalikan dari MPI_Scatter . Dengan kata lain, jumlah tranmisi yang diperlukan
untuk MPI_Scatter dan MPI_Gather sama dengan model task-graph dengan pohon biner.

Waktu komunikasi model Master-Slave dengan rutin MPI_Scatter dan MPI_Gather secara
teoritis hanya membutuhkan waktu startup sebesar
startup
2 t sedangkan model task-graph divide

II-29
and conquer pohon biner membutuhkan waktu startup sebesar
startup
) 1 ( 2 t n dengan n adalah
jumlah proses yang terlibat dalam eksekusi program paralel. Model Master-Slave dengan rutin
komunikasi kolektif MPI_Scatter dan MPI_Gather ternyata membutuhkan waktu startup
yang lebih sedikit dibandingkan model task-graph atau pun Master-Slave dengan MPI_Send dan
MPI_Recv.

Perbedaan performansi kedua primitif komunikasi tersebut dapat juga dilihat dari hasil
eksperimen untuk menghitung performansi MPI_Scatter dan MPI_Gather MPI_Send
dan MPI_Recv. Lampiran D.1 dan D.2 berisi data hasil eksperimen performansi primitif
komunikasi MPICH. Gambar III-15 dan III-16 menunjukkan salah satu hasil pengukuran
performansi untuk tujuh prosesor dan panjang pesan sampai 2 MegaByte.

Scatter dan Send
-1.00000
0.00000
1.00000
2.00000
3.00000
4.00000
5.00000
6.00000
7.00000
8.00000
0 500,000 1,000,000 1,500,000 2,000,000 2,500,000
Panj ang pesan (byte)
W
a
k
t
u

(
s
e
k
o
n
)
Scatter 7 Komp
Send 7 Komp

Gambar II-18 Perbandingan performansi MPI_Scatter dan MPI_Send
Gambar II-18 menunjukkan bahwa performansi MPI_Scatter jauh lebih baik dibandingkan
performansi dengan MPI_Send. Sedangkan performansi MPI_Gather seperti yang
ditunjukkan pada Gambar II-19 cenderung sama dengan MPI_Recv tetapi performansi
MPI_Recv masih lebih rendah dari MPI_Gather.


II-30
Gather dan Recv
0.000000
0.500000
1.000000
1.500000
2.000000
2.500000
0 500,000 1,000,000 1,500,000 2,000,000 2,500,000
Panj ang pesan (byte)
W
a
k
t
u

(
s
e
k
o
n
)
Gather 7 Komp
Recv7 Komp

Gambar II-19 Perbandingan performansi MPI_Gather dan MPI_Recv
Hasil pengukuran performansi di atas ditambah dengan informasi bahwa dalam lingkungan LAN
komputer paralel NOW bahwa waktu startup dapat mencapai 3000 milisekon. Sehingga, dapat
disimpulkan bahwa secara teoritis maupun praktis, model yang paling cocok untuk dieksekusi
oleh suatu komputer paralel NOW adalah model Master-Slave dengan penggunaan rutin
komunikasi kolektif MPI_Scatter dan MPI_Gather. Oleh sebab itu, eksperimen dalam
tugas akhir ini dilakukan untuk program yang menggunakan model Master-Slave dengan primitif
komunikasi MPI_Scatter dan MPI_Gather[AVI06].

II.8 Pengukuran Performansi Operasi MPI
Pengukuran performansi operasi MPI dilakukan untuk mengukur performansi operasi primitif-
primitif MPI pada suatu lingkungan NoW tertentu. Pengukuran ini sangat penting dilakukan
karena semua komunikasi antar proses dilakukan dengan menggunakan operasi MPI.

II.8.1 Hambatan dan Kesalahan Umum Dalam Pengukuran
Menurut [GRO98] ada beberapa kesalahan yang sering terjadi dalam pengukuran performansi
operasi MPI :
1. Tidak memperhitungkan waktu untuk inisialisasi jalur komunikasi
Komunikasi yang dilakukan untuk pertama kali seringkali membutuhkan waktu yang
lebih lama karena memerlukan inisialisasi jalur komunikasi.
2. Mengabaikan pengaruh aplikasi lain yang sedang berjalan. Aplikasi lain yang sedang
berjalan bisa menggunakan jalur komunikasi yang sama dengan program paralel sehingga

II-31
memenuhi bandwidth jaringan. Pada jaringan yang bandwidth-nya penuh, kecepatan
pengiriman data berkurang sehingga mengurangi performansi komunikasi antar proses.
3. Menyamakan antara CPU time dan elapsed time. Perbedaan antara keduanya adalah CPU
time tidak termasuk waktu untuk menunggu kedatangan data.
4. Melakukan pengukuran hanya dengan menggunakan dua prosesor
5. Pengukuran operasi yang membutuhkan waktu sangat kecil dibandingan dengan clock
CPU.
J ika waktu operasi sangat kecil dibandingkan dengan clock CPU, kemungkinan besar
akan terjadi kesalahan dalam pengukuran waktu yang dibutuhkan operasi tersebut.
6. Mengabaikan pengaruh cache
Pengukur harus mengetahui benar apakah data yang dikirim telah berada di cache. Baik
di sisi pengirim maupun di sisi penerima.

II.8.2 Syarat Pengukuran Performansi Primitif MPI yang Baik
[GR098] menyebutkan beberapa hal yang perlu diperhatikan dalam melakukan pengukuran
performansi operasi MPI sehingga bisa menghindari kesalahan-kesalahan di atas, yaitu :
1. Pengukuran dilakukan berulang kali dan dihitung waktu rata-rata.
Waktu yang diperlukan untuk eksekusi program paralel bisa berubah-ubah, tergantung
kondisi faktor-faktor yang mempengaruhinya. Dengan melakukan percobaan berulang
kali diharapkan waktu yang dihasilkan adalah waktu yang sesungguhnya. Hal ini juga
dilakukan untuk menghindari kesalahan umum karena mengabaikan waktu yang
diperlukan untuk melakukan inisialisasi jalur komunikasi.
Pengulangan juga dilakukan untuk memperbesar waktu operasi yang relatif kecil
dibandingkan dengan clock CPU
2. Variasi Panjang Pesan
Performansi operasi MPI bukanlah fungsi sederhana dari panjang pesan. Oleh karena itu
pengukuran tidak boleh dilakukan hanya untuk panjang pesan tertentu
3. Penjadwalan Pengukuran
Performansi primitif MPI dipengaruhi oleh sibuk tidaknya jalur komunikasi yang
digunakan. Oleh karena itu pengukuran harus dilakukan berulang-ulang dalam waktu
yang berbeda sehingga didapatkan hasil yang sesuai dengan karakteristik jaringan
tersebut.
4. Fitur yang disediakan

II-32
Aplikasi pengukuran sebaiknya menyediakan fitur-fitur sebagai berikut:
Pengaturan jumlah prosesor/komputer yang digunakan
Pengguna bisa memilih jumlah prosesor/komputer yang digunakan untuk
pengukuran.
Cache effects
Aplikasi bisa memeriksa pengaruh penggunaan cache terhadap performansi
operasi primitif MPI.
Communication patterns / Model Komunikasi
Aplikasi bisa melakukan pengukuran dengan menggunakan bermacam-macam
model komunikasi
Communication and computation overlaps
Aplikasi bisa memeriksa pengaruh overlapping antara komunikasi dan komputasi
terhadap performansi operasi primitif MPI.
Nonblocking communication
Pada mode operasi nonblocking, prosesor yang mengeksekusi suatu primitif
komunikasi tidak akan menunggu selesainya komunikasi untuk melanjutkan
komputasi. Sedangkan pada mode operasi blocking, prosesor yang mengeksekusi
primitif komunikasi akan menunggu selesainya komunikasi untuk sebelum
melanjutkan komputasi. Di beberapa aplikasi komputasi paralel digunakan
operasi nonblocking yang performansinya bisa lebih cepat daripada operasi
blocking.

II.9 QT
QT adalah C++ toolkit untuk pembangunan aplikasi GUI yang cross platform. Dengan
menggunakan QT, GUI yang kita buat dapat berjalan di sistem operasi Windows, Mac OS X,
Linux, Embedded Linux, dan varian-varian Unix yang lain. QT telah digunakan sebagai basis
pembuatan KDE. Sedangkan KDE adalah salah satu desktop environment di Linux paling
populer, penggunaan di KDE ini membuktikan bahwa QT telah teruji dan terbukti di
lapangan[QT05]. Dalam tugas akhir ini penulis akan memakai QT untuk implementasi GUI
perangkat lunak.

Anda mungkin juga menyukai