Selamat Membaca

Pahami dan resapi setiap langkah yang kau ikuti.

Selamat Menanam

Tanamkan kebaikan dikehidupanmu.

Selamat Menabur

Taburkan ilmu yang kau punya bagi setiap orang.

Selamat Tumbuh

Tumbuhlah menjadi seseorang yang berguna bagi orang terdekatmu.

Selamat Berkembang

Kembangkan ilmumu untuk kebaikan bagi setiap orang.

Kamis, 06 Februari 2014

Algoritma Pemrosesan Paralel


2.1.1 Pengertian Algoritma
Algoritma pada sistem kerja komputer dapat meliputi brainware, hardware, dan software. Tanpa salah satu dari ketiga sistem tersebut, komputer tidak akan berguna. Kita akan lebih fokus pada software komputer. Software terbangun atas susunan program dan syntax. Untuk menyusun program atau syntax, diperlukannya langkah-langkah yang sistematis dan logis untuk dapat menyelesaikan masalah atau tujuan dalam proses pembuatan suatu software. Maka algoritma berperan penting dalam penyusunan program atau syntax tersebut.

Pengertian algoritma adalah susunan yang logis dan sistematis untuk memecahkan suatu masalah atau untuk mencapai tujuan tertentu. Dalam dunia komputer, algoritma sangat berperan penting dalam pembangunan suatu software.
Dalam dunia sehari-hari, mungkin tanpa kita sadari algoritma telah masuk dalam kehidupan kita. Jadi perlu diingat bahwa algoritma tidak hanya diterapkan pada dunia komputasi, tetapi juga algoritma diterapkan dalam kehidupan sehari-hari.
Sedangkan dalam dunia komputasi, contoh penggunaan algoritma adalah dalam pembuatan program pada bahasa pemrograman seperti bahasa C, C#, dan Visual Basic. Dengan syntax pada tiap bahasa pemrograman dan algoritma, maka akan tersusun program-program dan terlahirlah software.

2.1.2 Algoritma Paralel
Algoritma paralel adalah algoritma untuk menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang sangat tinggi. Untuk dapat mengadaptasi suatu algoritma sekuensial ke dalam algoritma paralel, terlebih dahulu harus dipelajari mengenai konsep pemrosesan paralel dan bagaimana proses-proses dapat berlangsung secara paralel.
Dalam beberapa kasus, algoritma sekuensial dengan mudah dapat diadaptasi ke dalam lingkungan paralel. Namun dalam kebanyakan kasus, problem komputasi harus dianalisa ulang dan menghasilkan algoritma paralel yang baru. Terdapat beberapa penelitian mengenai perancangan algoritma paralel untuk problem-problem praktis seperti pengurutan, pemrosesan geraf, solusi untuk persamaan lanjar, solusi untuk persamaan diferensial, dan untuk simulasi. Teknik pembangunan algoritma paralel dapat dibedakan sebagai berikut :

1. Paralelisme Data
Teknik paralelisme data merupakan teknik yang paling banyak digunakan dalam program paralel. Teknik ini lahir dari penelitian bahwa aplikasi utama komputasi paralel adalah dalam bidang sain dan engineer, yang umumnya melibatkan array multi-dimensi yang sangat besar. Dalam program sekuensial biasa, array ini dimanipulasi dengan mempergunakan perulangan bersarang untuk mendapatkan hasil. Kebanyakan program paralel dibentuk dengan mengatur ulang algoritma sekuensial agar perulangan bersarang tersebut dapat dilaksanakan secara paralel. Paralelisme data menunjukkan bahwa basis data dipergunakan sebagai dasar untuk membentuk aktifitas paralel, dimana bagian yang berbeda dari basis data akan diproses secara paralel. Dengan kata lain paralelisme dalam program ini dibentuk dari penerapan operasi-operasi yang sama ke bagian array data yang berbeda. Prinsip paralelisme data ini berlaku untuk pemrograman multiprosesor dan multikomputer.

2. Partisi Data
Merupakan teknik khusus dari paralelisme data, dimana data disebar ke dalam memori-memori lokal multikomputer. Sebuah proses paralel kemudian ditugaskan untuk mengoperasikan masing-masing bagian data. Proses tersebut harus terdapat dalam lokal memori yang sama dengan bagian data, karena itu proses dapat mengakses data tersebut secara lokal. Untuk memperoleh kinerja yang baik, setiap proses harus memperhatikan variabel-variabel dan data-data lokalnya masing-masing. Jika suatu proses membutuhkan akses data yang terdapat dalam remote memori, maka hal ini dapat dilakukan melalui jaringan message passing yang menghubungkan prosesor-prosesor. Karena komunikasi antar prosesor ini menyebabkan terjadinya waktu tunda, maka messsage passing ini sebaiknya dilakukan dalam frekuensi yang relatif kecil. Dapat disimpulkan bahwa tujuan dari partisi data adalah untuk mereduksi waktu tunda yang diakibatkan komunikasi messsage passing antar prosesor. Algoritma paralel mengatur agar setiap proses dapat melakukan komputasi dengan lokal data masing-masing.

2.1.3 Algoritma Relaksasi
Pada algoritma ini, setiap proses tidak membutuhkan sinkronisasi dan komunikasi antar proses. Meskipun prosesor mengakses data yang sama, setiap prosesor dapat melakukan komputasi sendiri tanpa tergantung pada data antara yang dihasilkan oleh proses lain. Contoh algoritma relaksasi adalah algoritma perkalian matrik, pengurutan dengan mengunakan metode ranksort dan lain sebagainya.

2.1.4 Paralelisme Sinkron
Aplikasi praktis dari komputasi paralel adalah untuk masalah yang melibatkan array multi-dimensi yang sangat besar. Masalah tersebut mempunyai peluang yang baik untuk paralelisme data karena elemen yang berbeda dalam array dapat diproses secara paralel. Teknik komputasi numerik pada array ini biasanya iteratif, dan setiap iterasi akan mempengaruhi iterasi berikutnya untuk menuju solusi akhir. Misalnya saja untuk solusi persamaan numerik pada sistem yang besar. Umumnya, setiap iterasi mempergunakan data yang dihasilkan oleh iterasi sebelumnya dan program akhirnya menuju suatu solusi dengan akurasi yang dibutuhkan. Algoritma iterasi ini mempunyai peluang paralelisme pada setiap iterasinya. Beberapa proses paralel dapat dibentuk untuk bekerja pada array bagian yang berbeda. Namun setelah setiap iterasi, proses-proses harus disinkronkan, karena hasil yang diproduksi oleh satu proses dipergunakan oleh prosesproses lain pada iterasi berikutnya. Teknik pemrograman paralel seperti ini disebut paralelisme sinkron. Contohnya adalah perhitungan numerik pada Metode Eliminasi Gauss. Pada paralelisme sinkron ini, struktur umum programnya biasanya terdiri dari perulangan FORALL yang akan membentuk sejumlah besar proses paralel untuk dioperasikan pada bagian array data yang berbeda. Setiap proses diulang dan disinkronkan pada akhir iterasi. Tujuan dari sinkronisasi ini adalah untuk meyakinkan bahwa seluruh proses telah menyelesaikan iterasi yang sedang berlangsung, sebelum terdapat suatu proses yang memulai iterasi berikutnya.

2.1.5 Komputasi Pipeline
Pada komputasi pipeline, data dialirkan melalui seluruh struktur proses, dimana masing-masing proses membentuk tahap-tahap tertentu dari keseluruhan komputasi . Algoritma ini dapat berjalan dengan baik pada multikomputer, karena adanya aliran data dan tidak banyak memerlukan akses ke data bersama.
Contoh komputasi pipeline adalah teknik penyulihan mundur yang merupakan bagian dari metoda eliminasi.
Dalam merancang suatu algoritma paralel kita harus mempertimbangkan pula hal-hal yang dapat mengurangi kinerja program paralel. Hal-hal tersebut adalah :

1. Memory Contention
Eksekusi prosesor tertunda ketika prosesor menunggu hak ases ke sel memori yang sedang dipergunakan oleh prosesor lain. Masalah ini muncul pada arsitektur multiprosesor dengan memori bersama.

2. Excessive Seqential Code
Pada beberapa algoritma paralel, akan terdapat kode sekuensial murni dimana tipe tertentu dari operasi pusat dibentuk, seperti misalnya pada proses inisialisasi. Dalam beberapa algoritma, kode sekuensial ini dapat mengurangi keseluruhan speedup yang dapat dicapai. Process Creation Time Pembentukan proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar dibandingkan dengan waktu eksekusi paralel algoritma. Communication Delay Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus, komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja beberapa algoritma paralel.

3. Process Creation Time
Pembentukan proses paralel akan membutuhkan waktu eksekusi. Jika proses yang dibentuk relative berjalan dalam waktu yang relatif lebih singkat dibandingkan dengan waktu pembentukan proses itu sendiri, maka overhead pembuatan akan lebih besar dibandingkan dengan waktu eksekusi paralel algoritma.

4. Communication Delay
Overhead ini muncul hanya pada multikomputer. Hal ini disebabkan karena interaksi antar prosesor melalui jaringan komunikasi. Dalam beberapa kasus, komunikasi antar dua prosesor mungkin melibatkan beberapa prosesor antara dalam jaringan komunikasi. Jumlah waktu tunda komunikasi dapat menurunkan kinerja beberapa algoritma paralel.

5. Synchronization Delay
Ketika proses paralel disinkronkan, berarti bahwa suatu proses akan harus menunggu proses lainnya. Dalam beberapa program paralel, jumlah waktu tunda ini dapat menyebabkan bottleneck dan mengurangi speedup keseluruhan. Load Imbalance Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.


6. Load Imbalance
Dalam beberapa program paralel, tugas komputasi dibangun secara dinamis dan tidak dapat diperkirakan sebelumnya. Karena itu harus selalu ditugaskan ke prosesor-prosesor sejalan dengan pembangunan tugas tersebut. Hal ini dapat menyebabkan suatu prosesor tidak bekerja (idle), sementara prosesor lainnya tidak dapat mengerjakan task yang ditugaskannya.

2.1.6 PVM (Parallel Virtual Machine)
PVM (Parallel Virtual Machine) adalah paket software yang mendukung pengiriman pesan untuk komputasi parallel antar komputer. PVM dapat berjalan diberbagai macam variasi UNIX atau pun windows dan telah portable untuk banyak arsitektur seperti PC, workstation, multiprocessor dan superkomputer.
Sistem PVM terbagi menjadi dua. Pertama adalah daemon, pvmd, yang berjalan pada mesin virtual masing-masing komputer. Mesin virtual akan dibuat, ketika user mengeksekusi aplikasi PVM. PVM dapat dieksekusi melalui prompt UNIX disemua host. Bagian kedua adalah library interface rutin yang mempunyai banyak fungsi untuk komunikasi antar task . Library ini berisikan rutin yang dapat dipanggil untuk pengiriman pesan, membuat proses baru, koordinasi task dan konfigurasi mesin virtual.
Salah aturan main yang penting dalam PVM adalah adanya mekanisme program master dan slave/worker. Programmer harus membuat kode master yang menjadi koordinator proses dan kode slave yang menerima, menjalankan, dan mengembalikan hasil proses ke komputer master. Kode master dieksekusi paling awal dan kemudian melahirkan proses lain dari kode master. Masing-masing program ditulis menggunakan C atau Fortran dan dikompilasi dimasing-masing komputer. Jika arsitektur komputer untuk komputasi paralel semua sama, (misalnya pentium 4 semua), maka program cukup dikompilasi pada satu komputer saja. Selanjutnya hasil kompilasi didistribusikan kekomputer lain yang akan menjadi node komputasi parallel. Program master hanya berada pada satu node sedangkan program slave berada pada semua node.
Komunikasi dapat berlangsung bila masing-masing komputer mempunyai hak akses ke filesystem semua komputer. Akses ke file system dilakukan melalui protokol rsh yang berjalan di unix atau windows.
Berikut adalah langkah pengaturan pada masing-masing komputer :
• Buat file hostfile yang berisi daftar node komputer dan nama user yang akan dipakai untuk komputasi paralel. Bila nama user pada semua komputer sama misalnya nama user riset pada komputer C1, C2,C3 dan C4, maka hostfile ini boleh tidak ada. Hostfile ini dapat digunakan bila nama user di masing-masing komputer berbeda.
• Daftarkan IP masing-masing komputer pada file/etc/hosts/hosts.allow dan /etc/hosts/hosts.equiv.
• Penambahan dan penghapusan host secara dinamis dapat dilakukan melalui konsole PVM. Bila IP tidak didefinisikan pada hostfile¸ cara ini dapat digunakan.
Program PVM terdiri dari master dan slave, dimana program master dieksekusi paling awal dan kemudian melahirkan proses lain. PVM memanggil rutin pvm_spawn() untuk melahirkan satu atau dua proses lebih yang sama. Fungsi-fungsi untuk PVM versi bahasa C mempunyai rutin awalan pvm. Pengiriman dan penerimaan task diidentifikasi dengan TID (Task Identifier). TID ini bersifat unik dan digenerate oleh pvmd lokal. PVM berisi beberapa rutine yang mengembalikan nilai TID sehingga aplikasi user dapat mengidentifikasi task lain disistem.

1. Komputasi Paralel dengan Parallel Virtual Machine (PVM)
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak.
Penggunaan komputasi paralel prosessing merupakan pilihan yang cukup handal untuk saat ini untuk pengolahan data yang besar dan banyak, hal ini apabila dibandingkan dengan membeli suatu super komputer yang harganya sangat mahal maka penggunaan komputasi parallel prosessing merupakan pilihan yang sangat tepat untuk pengolahan data tersebut.
Aspek keamanan merupakan suatu aspek penting dalam sistem parallel prosessing komputasi ini, karena di dalam sistem akan banyak berkaitan dengan akses data, hak pengguna, keamanan data, keamanan jaringan terhadap peyerangan sesorang atau bahkan virus sehingga akan menghambat kinerja dari sistem komputasi ini.
Komputasi paralel adalah melakukan perhitungan komputasi dengan menggunakan 2 atau lebih CPU/Prosesor dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke prosesor yang terlibat komputasi dan dilakukan secara bersamaan. Untuk proses pembagian proses komputasi tersebut dilakukan oleh suatu software yang betugas untuk mengatur komputasi dalam hal makalah ini akan digunakan Parallel Virtual Machine (PVM).
Pada sistem komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini komputer paralel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory sistem (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.
Komunikasi data pada sistem paralel memori terdistribusi, memerlukan alat bantu komunikasi. Contoh alat bantu yang sering digunakan oleh sistem seperti PC Jaringan pada saat ini adalah standar PVM (Parallel Virtual Machine) yang bekerja diatas TCP/IP communication layer. Standar ini memerlukan fungsi remote access agar dapat menjalankan program pada masing-masing unit prosesor.
Salah satu protocol yang dipergunakan pada komputasi parallel adalah Network File System (NFS), NFS adalah protokol yang dapat membagi sumber daya melalui jaringan. NFS dibuat untuk dapat independent dari jenis mesin, jenis sistem operasi, dan jenis protokol transport yang digunakan. Hal ini dilakukan dengan menggunakan RPC. NFS memperbolehkan user yang telah diijinkan untuk mengakses file-file yang berada di remote host seperti mengakses file yang berada di lokal. Protokol yang digunakan protokol mount menentukan host remote dan jenis file sistem yang akan diakses dan menempatkan di suatu direktori, protokol NFS melakukan I/O pada remote file system. Protokol mount dan protokol NFS bekerja dengan menggunakan RPC dan mengiri dengan protokol TCP dan UDP. Kegunaan dari NFS pada komputasi paralel adalah untuk melakukan sharing data sehingga setiap node slave dapat mengakses program yang sama pada node master.

2. Langkah – Langkah Penggunaan Parallel Virtual Machine (PVM)
Secara umum, langkah implementasi komputasi parallel sebagai berikut :
a. Jalankan PVM daemon pada setiap mesin dalam cluster.
b. Jalankan program master pada master daemon.
c. Master daemon akan menjalankan proses slave.
Untuk mengimplementasikannya, dapat memakai tools :
- PVM, virtual machine dan routine untuk komputasi paralel
- rsh (remote shell), aplikasi untuk authentikasi dan komunikasi proses antar komputer.
- Xpvm versi 1.2, interface grafis untuk PVM dengan animasi eksekusi komputasi paralel yang dapat dilihat dilayar.

3. Pola Pemrograman Paralel pada PVM
Komputasi paralel dapat didekati dengan 3 tinjauan dasar yaitu
a. Crowd Computation
Crowd computation adalah model paling umum dan terdiri dari kumpulan proses yang saling berhubungan sangat erat. Melakukan komputasi pada bagian-bagian yang berbeda dari workload.
Program master bertugas penyebaran proses (spawn proses), inisialisasi, collection, display hasil dan mungkin display fungsi-fungsi waktu. Sedang program slave bertugas melaksanakan komputasi yang sebenarnya, menerima alokasi task/workload dari master baik secara statis maupun dinamis dan melakukan komputasi task-task dari alokasi dirinya sendiri.
b. Tree Computation
Tree computation adalah pola pemrograman dimana proses disebar secara dinamis seperti tree. Hubungan antar node sebagai hubungan parent-child. Cocok untuk aplikasi dimana total proses yang akan terbentuk tidak diketahui sebelumnya. Biasanya tree computation ini dipakai urituk algoritma-algoritma branch and bound, alpa beta search dan algoritma recursive divide and conquer.
c. Hybrid Computation
Hybrid computation adalah model komputasi yang merupakan kombinasi model tree dan model crowd. Model ini memiliki struktur penyebaran proses yang lebih bebas.

2.2 Proses

2.2.1 Konsep Proses
Untuk membangun suatu algoritma program paralel, pengertian mengenai konsep proses merupakan alat bantu yang sangat berguna. Proses sendiri diartikan sebagai sederatan operasi yang dapat dibentuk oleh sebuah prosesor tunggal. Proses dapat dipergunakan sebagai blok pembangunan dasar dari pemrograman paralel, setiap prosesor mengeksekusi proses tertentu pada saat tertentu. Secara informal, proses dapat berupa sub rutin atau prosedur yang dieksekusi oleh prosesor tertentu. Ketersediaan sejumlah besar prosesor secara fisik berarti bahwa sejumlah besar proses dapat dieksekusi secara paralel oleh perangkat keras komputer. Dengan asumsi bahwa setiap aktifitas dari setiap proses mempunyai kontribusi terhadap keseluruhan komputasi, maka eksekusi komputasi tersebut akan lebih cepat dibandingkan jika dilakukan dengan prosesor tunggal. Agar konsep proses berguna dalam pembuatan program, konsep proses ini menjadi feature tambahan dalam bahasa pemrograman paralel.
Untuk menggabungkan konsep proses ke dalam bahasa pemrograman paralel, harus terdapat beberapa mekanisme dalam bahasa tersebut untuk mendefinisikan dan membentuk proses baru. Harus terdapat pula beberapa feature dalam bahasa tersebut untuk membagi (sharing) data antar prosesor paralel, dengan demikian setiap proses dapat berinteraksi satu sama lainnya untuk menyelesaikan keseluruhan komputasi. Setiap proses dapat mengeksekusi dengan kecepatan yang berbeda pada prosesor yang berbeda.

2.2.2 Status Proses
Pada dasarnya terdapat lima kemungkinan status untuk proses yang sedang aktif, yaitu :
- Ready, proses dikatakan dalam status ready jika proses tersebut memungkinkan untuk dieksekusi tetapi pada saat tersebut tidak dieksekusi oleh prosesor yang telah ditentukan. Pada saat pertama kali proses dibentuk, proses tersebut mempunyai status ready.
- Running, tiap satuan waktu hanya terdapat satu proses yang dapat berjalan pada satu prosesor.
- Blocked, suatu proses yang dalam status ready harus menunggu event dari proses lainnya, misalnya menunggu data hasil proses lain, maka proses tersebut berubah status menjadi blocked. Jika semua proses dalam status blocked, maka kondisi ini disebut deadlock. Hal ini menyebabkan eksekusi program tidak dapat diteruskan.
- Delayed, status delayed pada dasarnya hampir sama dengan status blocked, kecuali bahwa event yang ditunggu sebenarnya telah muncul. Karena waktu tunda komunikasi dalam arsitektur komputer, maka event tersebut belum tiba pada proses yang sedang blocked tersebut. Status delayed hanya akan muncul pada arsitektur multikomputer.
- Spinning, status proses spinning hanya akan muncul pada arsitektur multiprosesor.Status ini muncul pada saat proses tersebut harus menunda eksekusinya karena diharuskan menunggu proses lain selesai dieksekusi. Teknik menunda proses tersebut dengan menggunakan operasi lock, menunggu sampai proses lain melakukan operasi unlock. Teknik ini disebut busy-waiting. Pada dasarnya status ini sama dengan blocked, perbedaannya terletak pada teknik penundaan proses yang dipergunakan.

2.2.3 Pembentukan Proses
Aktifitas komputasi dimulai ketika suatu proses ditugaskan ke suatu prosesor dalam komputer paralel. Proses dapat digambarkan sebagai suatu kumpulan kode program yang ditugaskan ke suatu prosesor tertentu untuk dieksekusi. Dalam program paralel, eksekusi program dimulai sama seperti halnya program sekuensial biasa. Program paralel memerlukan suatu statement untuk pembentukan proses. Statement tersebut menyebabkan program membentuk proses baru untuk ditugaskan pada prosesor lain, yang kemudian mengeksekusi proses tersebut. Gambaran umum aktifitas paralel adalah sebagai berikut : proses yang sedang berjalan pada prosesor mengeksekusi statemen pembentukan proses, proses yang dibentuk disebut child process (proses anak), sedangkan pembentuk proses disebut parent process (proses induk). Program di bawah ini merupakan program sekuensial untuk mendapatkan akar dari elemenelemen array. Pada contoh program tersebut terdapat satu perulangan FOR. Perulangan ini menunjukkan potensi paralelisme program. Modifikasi yang dilakukan adalah dengan mengubah statement FOR dengan statement FORALL untuk membentuk proses anak. Statemen FORALL ini merupakan statement yang terdapat pada sistem Multi-Pascal.
PROGRAM SQRT;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN

FOR i := 1 TO 100 DO
A[I] := SQRT([I]);
END.
Hasil modifikasi statement FOR menjadi FORALL dapat dilihat pada program di bawah ini :
PROGRAM SQRTParalel;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN

FORALL i := 1 TO 100 DO
A[I] := SQRT([I]);
END.
Pada awal program utama, proses induk mengeksekusi statemen FORALL, dalam keadaan demikian status induk proses adalah running. Statemen FORALL pada program di atas membentuk 100 salinan statemen A[i]:=SQRT([i]) dan setiap satu proses paralel mempunyai variabel indeks i. Ke- 100 proses anak tersebut dieksekusi pada prosesor yang berbeda dan berlangsung secara paralel. Sewaktu proses induk menunda eksekusinya hingga seluruh proses anak selesai dieksekusi, proses induk tersebut dalam status blocked. Sedangkan seluruh proses anak yang sedang dieksekusi mempunyai status running. Setelah seluruh Proses anak selesai dieksekusi, proses induk berstatus running hingga terminasi. Pembentukan proses ini digambarkan sebagai berikut.

Pada contoh di atas, array A disimpan ke dalam memori bersama yang mudah diakses oleh prosesor-prosesor. Setiap prosesor akan bekerja dengan bagian elemen array, seluruhnya berlangsung secara paralel. Hal yang penting pada contoh di atas adalah mengenai variabel indeks i. Pada perulangan FOR sekuensial, indeks i adalah variabel integer tunggal yang bernilai 1 pada iterasi pertama, kemudian bernilai 2 pada iterasi kedua dan seterusnya. Pada saat iterasi dimulai, indeks variabel i secara otomatis berubah menjadi nilai berikutnya dan dapat dipergunakan dalam perulangan (loop). Hal ini merupakan karakter standar perulangan FOR dalam Perangkat Lunak Pascal.
Pada perulangan FOR paralel, indeks variabel i - seperti pada statemen FOR – dideklarasikan sebagai variabel INTEGER di awal program. Setelah itu, variabel i akan menjadi variabel local tunggal yang disimpan di memori bersama. Jika iterasi akan dieksekusi secara paralel, maka satu indeks variabel tunggal i tidak akan mencukupi. Semua nilai i dari 1 sampai 100 harus diperoleh secara simultan. Hal ini ditangani oleh perlangkat lunak secara otomatis, dengan jaminan setiap prosesor mempunyai salinan lokal indeks i sendiri. Jadi prosesor 1 mempunyai variabel lokal i dengan nilai 1, prosesor 2 mempunyai nilai i = 2 dan seterusnya.

2.2.4 Granularitas Proses
Hal penting yang perlu dipertimbangkan dalam pembentukan proses adalah granularitas proses, yaitu waktu berlangsungnya atau waktu eksekusi setiap proses. Dari contoh di atas, ketika statemen FORALL diekseskusi di prosesor 0, maka aktifitas komputasi yang terjadi di prosesor 0 adalah sebagai berikut :
Buat Proses Anak dan diberikan ke prosesor 1
Buat Proses Anak dan diberikan ke prosesor 2
.
.
Buat Proses Anak dan diberikan ke prosesor 100
Jika waktu pembentukan proses anak adalah 10 unit waktu, maka statemen FORALL akan membutuhkan 100.10 = 1000 unit waktu untuk membentuk seluruh proses anak. Jika statemen penugasan A[i] := SQRT(A[i]) membutuhkan waktu eksekusi 10 unit waktu, maka keseluruhan waktu yang statement FORALL adalah 1000+10=1010 unit waktu. (Proses Induk yang berjalan pada prosesor 0 membutuhkan 1000 unit waktu untuk membuat 100 Proses Anak, dan keseluruhan proses anak ini akan berjalan secara paralel dalam waktu 10 unit waktu). Jika menggunakan FOR secara sekuensial, maka seluruh perulangan akan dilaksanakan di prosesor 0. Misalkan statemen penugasan A[i] := SQRT(A[i]) membutuhkan waktu eksekusi 10 unit waktu, maka waktu keseluruhan yang dibutuhkan oleh statemen FOR adalah 100.10 = 1000 unit waktu.
Dibandingkan dengan menggunakan statemen FORALL yang membutuhkan waktu sebesar 1010 unit waktu, maka eksekusi secara sekuensial menghasilkan waktu yang lebih baik. Pada contoh di atas, terjadi kegagalan speedup. Jika waktu untuk pembentukan proses anak adalah tetap 10 unit waktu dan setiap proses anak mempunyai granularitas yang besar, misalnya 10000 unit waktu, maka total waktu eksekusi secara paralel adalah 11000. 1000 unit waktu untuk pembentukan 100 proses anak dan 10000 unit waktu untuk eksekusi proses. Dibandingkan dengan eksekusi yang dilakukan secara sekuensial yang akan membutuhkan 100.10000 = 1000000 unit waktu, maka speedup yang diperoleh adalah 1000000/11000 = 91.
Untuk meningkatkan efisiensi, granularitas dapat ditingkatkan dengan cara mengelompokkan beberapa nilai indeks ke dalam proses yang sama. Pada contoh algoritma di atas, misalkan dibentuk 10 proses dengan masing-masing 10 nilai indeks variabel i. Contohnya seperti di bawah ini :
PROGRAM SQRTParallelGroup;
VAR A: ARRAY [1..100] OF REAL;
I : INTEGER;
BEGIN
FORALL I := 1 TO 10 GROUPING 10 DO
A[I] := SQRT([I]);
END.
Pada contoh di atas, prosesor 0 hanya membentuk 10 proses. Masing-masing proses secara sekuensial melakukan pengulangan 10 kali. Proses 1 melakukan iterasi dengan nilai indeks 1 sampai 10, proses 2 melakukan iterasi nilai indeks 11 sampai 20 dan seterusnya. Jika ukuran kelompok tidak genap dibagi dengan nilai indeks, maka proses anak terakhir akan mempunyai nilai indeks yang lebih kecil daripada nilai indeks ukuran. Seperti halnya statemen FOR, statemen FORALL dapat dipergunakan dalam perulangan bersarang. Contohnya adalah program pertambahan matrik berikut ini :
PROGRAM TambahMatrik;
VAR i, j : INTEGER;
A,B,C : ARRAY [1..20,1..30] OF REAL;
BEGIN
FORALL i := 1 to 20 DO
FORALL j:= 1 to 30 DO
C[i,j] := A[i,j] + B[i,j];
END.
Contoh program di atas menunjukkan 600 proses telah dibentuk. Pembentukan ini terdiri dari dua tahap. Tahap pertama - pada statemen FORALL pertama dengan nilai indeks i dari 1 sampai 20 -, menghasilkan 20 proses anak, masing-masing untuk nilai indeks i. Setiap proses anak ini terdiri dari statemen FORALL kedua. Ketika setiap proses anak generasi pertama ini dieksekusi pada prosesor yang telah ditugaskan, ke-20 proses tersebut masing-masing akan membentuk 30 proses anak, sesuai dengan nilai indeks j. Jadi total proses anak yang dibentuk adalah 600 proses. Masing-masing proses dibentuk untuk setiap elemen dari Matrik. Pembuatan proses secara bertingkat ini akan mereduksi keseluruhan waktu pembentukan proses. Hal ini disebabkan generasi pertama dari proses anak akan dieksekusi secara paralel pada prosesor yang berbeda. Dibandingkan dengan hanya satu prosesor membentuk seluruh proses, maka akan terdapat 20 prosesor yang membentuk proses anak baru secara paralel. Misalkan terdapat dua perulangan FORALL bersarang dengan perulangan terluar mempunyai nilai indeks n dan perulangan terdalam mempunyai nilai indeks m. Jika waktu untuk membentuk satu proses adalah C, maka total waktu untuk membentuk semua nm proses adalah C(n+m). Jika seluruh proses dibentuk oleh satu proses induk, maka waktu total pembentukan adalah Cnm. Secara umum aktifitas yang terjadi pada saat statement FORALL tersebut dieksekusi adalah sebagai berikut :
Buat sejumlah n proses anak (dengan statemen FORALL),
Tunggu sampai seluruh n proses anak tersebut selesai dieksekusi,
Lanjutkan eksekusi setelah FORALL
Dapat dilihat bahwa ketika proses anak sedang dieksekusi, maka proses induk akan menunda eksekusinya – berstatus blocked - sampai seluruh proses anak selesai dieksekusi. Untuk beberapa algoritma tertentu, akan lebih efisien jika seluruh proses anak running secara parallel dengan proses induk. Konsekuensinya, meskipun proses induk telah mencapai terminasi program sewaktu proses anak sedang berjalan, proses induk tidak diijinkan untuk berhenti sampai seluruh proses anaknya selesai dieksekusi. Dengan kata lain diperlukan featuring untuk menahan proses induk mencapai terminasi program utama agar seluruh proses anak dapat dieksekusi dengan benar. Featuring ini terdapat dalam beberapa beberapa perangkat lunak paralel.

2.2.5 Proses Komunikasi
Pada algoritma relaksasi, setiap proses paralel berjalan secara independen tanpa interaksi dengan proses-proses lain. Dalam algoritma relaksasi paralel, tidak ada proses yang menulis nilai yang kemudian digunakan oleh proses lain. Algoritma ini sederhana dan menghasilkan speedup yang baik sewaktu diterapkan pada berbagai arsitektur komputer paralel. Untuk algoritma yang tidak termasuk algoritma relaksasi, diperlukan mekanisme tertentu dalam menangani proses komunikasi yang terjadi. Misalkan terdapat 2 proses pada multiprosesor, P1 dan P2. Dalam ekseskusinya P1 menghasilkan suatu nilai dan menulis nilai tersebut ke variabel bersama C yang kemudian dipergunakan oleh P2 untuk komputasi berikutnya, seperti pada gambar .13. Selama P1 dan P2 merupakan proses paralel, tidak ada jaminan bahwa P1 akan menulis nilai ke variable C sebelum P2 membacanya. Jika P1 dibiarkan menyelesaikan eksekusinya dan kemudian P2 memulai eksekusi, berarti paralelisme proses tidak diperoleh. Tipe komunikasi proses ini sering muncul dalam berbagai program paralel, satu proses melakukan komputasi terhadap beberapa nilai yang akan dipergunakan oleh proses paralel lainnya. Untuk menangani masalah ini, diperlukan suatu kanal (channel) yang mempunyai properti ‘kosong’. Ketika suatu proses membaca kanal yang kosong, maka eksekusi proses secara otomatis akan tertunda sampai terdapat proses lain yang menulis suatu nilai ke dalam kanal tersebut. Untuk contoh di atas, dengan membuat variabel C menjadi variabel kanal yang diinisiasi ‘kosong’, proses P2 akan menunggu pembacaan variabel C sebelum proses P1 selesai menuliskan suatu nilai ke dalam variabel C. Dengan demikian komunikasi proses dijamin berlangsung dengan benar.

Variabel kanal ini akan sangat berguna untuk komputasi pipeline, dimana data hasil komputasi proses dikirimkan ke proses berikutnya melalui variabel kanal. Terdapat perbedaan yang sangat mendasar pada pemodelan perangkat lunak konseptual untuk multiprosesor dan multikomputer. Hal ini dikarenakan adanya perbedaan dalam hal variable bersama, yang dapat diakses oleh seluruh prosesor. Pada multikomputer, yang tidak mengenal variabel bersama, tiap prosesor mempunyai memori lokal sendiri untuk mengakses variabel lokalnya sendiri. Prosesor tersebut terhubung secara fisik melalui jaringan, yang dapat mengirim blok data dari suatu proses ke proses lain. Secara fisik, prosesor dapat berkomunikasi dengan prosesor lain dengan mengirimkan message melalui sambungan saluran penghubung (connection link). Jika proses merupakan abstraksi perangkat lunak dari prosesor fisik, maka abstraksi perangkat lunak untuk saluran komunikasi dapat berupa kanal komunikasi antara proses-proses. Dengan kata lain, proses dapat berkomunikasi dengan proses lain dengan mengirimkan message melalui variabel kanal. Untuk menyesuaikan variabel kanal dalam program multikomputer, fungsi dan semantiknya harus diubah. Pada multiprosesor, variabel kanal serupa dengan variabel bersama yang dapat diakses oleh semua prosesor. Variabel ini tidak seperti saluran komunikasi dari suatu multikomputer, yang secara fisik menghubungkan dua prosesor yang spesifik. Untuk membuat variabel kanal dapat mencerminkan sifat saluran komunikasi, ujung penerima (receiving end) dari tiap kanal haruslah dihubungkan ke suatu proses yang spesifik.

Karakteristik penting pada komunikasi adalah adanya jaminan bahwa pesan yang dikirim oleh suatu sumber tertentu ke tujuan yang sama, akan datang sesuai dengan urutan pengirimannya. Variabel kanal yang ditugaskan pada proses spesifik dalam multikomputer akan memiliki sifat yang sedikit berbeda dengan variabel kanal biasa pada multiprosesor. Untuk itu membedakannya, variabel kanal tersebut disebut port komunikasi. Pembentukan port komunikasi ini dapat dilaksanakan bersamaan dengan pembentukan proses anak. Port komunikasi hanya dapat dibaca oleh satu proses yang spesifik. Pada operasi penulisan ke port terdapat waktu tunda sebelum message sampai ke kanal tujuan. Besar waktu tunda tergantung dari topologi arsitektur multikomputer. Waktu tunda yang terjadi pada penulisan port memiliki implikasi penting yang mempengaruhi kinerja program.
Secara umum, aktifitas proses induk pada program multikomputer dapat digambarkan sebagai berikut :
Interaksi dengan user untuk mendapatkan data awal, baik dari disk maupun dari piranti masukan.
Membentuk proses-proses anak yang akan membangun komputasi paralel.
Mengumpulkan hasil komputasi proses anak dan melaporkannya ke user atau menuliskan ke disk.
Dari aktifitas di atas, terlihat perlu adanya komunikasi antara proses induk dengan proses anak. Komunikasi proses induk yang berjalan dua arah ini, yaitu kirim (send) dan terima (receive) pesan, dilakukan dengan menggunakan port komunikasi. Pengiriman hasil komputasi dari proses anak ke proses induk dapat juga dilakukan melalui parameter-parameter proses anak.
Parameter yang dipergunakan dapat berupa parameter value dan parameter VAR. Parameter value digunakan untuk memberikan data awal ke proses anak, sedangkan parameter VAR digunakan untuk mengumpulkan data hasil komputasi proses anak. Parameter VAR di sini merupakan remote var yang mempunyai dua karakteristik penting, yaitu bahwa parameter ini hanya dapat ditulis dan tidak dapat dibaca. Proses penulisan dilakukan di prosesor anak, sedangkan yang ditulis sebenarnya adalah alamat parameter yang ada di remote prosesor. Untuk topologi multikomputer yang mempertimbangkan waktu komunikasi antar prosesor, lokasi relative dari prosesor akan sangat mempengaruhi waktu tunda komunikasi tersebut. Prosesor yang jauh letaknya akan mempunyai waktu tunda komunikasi lebih lama dibandingkan dengan prosesor yang dekat. Untuk itu perlu dipertimbangkan pengalokasian prosesor untuk proses tertentu secara eksplisit oleh pemrogram.

2.3 Pemrosesan Paralel

2.3.1 Pengertian Pemrosesan Paralel
Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, paralel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.


1. Komputasi paralel
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Komputasi paralel membutuhkan:
• algoritma
• bahasa pemrograman
• compiler

2. Pemrograman paralel
Pemrograman parallel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Sebagai besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat melakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software.
Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.

2.3.2 Hubungan Antar Prosesor
Sistem komputer paralel dengan banyak prosesor yang bekerja secara simultan memerlukan kemampuan untuk membagi data dan berkomunikasi antar prosesor. Berdasarkan kedua kebutuhan tersebut, terdapat dua arsitektur komputer paralel, yaitu memori bersama dan message passing. Pada arsitektur memori bersama, biasanya disebut multiprosesor (multiprocessor), setiap prosesor dapat mengakses memori global dan menggunakan isi data dan struktur data yang disimpan dalam memori bersama (shared memory). Prosesor berkomunikasi dengan prosesor lain dengan menulis pesan ke memori global dimana prosesor kedua dapat membaca pesan tersebut pada lokasi memori yang sama. Skema arsitektur memori bersama dapat dilihat pada gambar.

Semua prosesor dapat melakukan komputasi secara paralel dan masing-masing dapat mengakses memori melalui bus. Bus bertanggung jawab mengatur permintaan pemakaian memori yang berlangsung secara simultan oleh beberapa prosesor. Bus juga bertanggung jawab untuk meyakinkan bahwa semua prosesor dilayani secara adil dengan waktu tunda (delay) akses yang minimum.
Salah satu kesulitan utama dari arsitektur multiprosesor dengan memori bersama adalah kemungkinan adanya tabrakan memori (memory contention). Peristiwa ini terjadi ketika beberapa prosesor mencoba untuk mengakses memori bersama dalam periode waktu yang sangat singkat, sehingga memori tidak akan dapat menampung semua permintaan secara simultan. Akibatnya beberapa prosesor akan harus menunggu sampai prosesor lainnya dilayani. Kemungkinan terjadinya tabrakan memori ini berbanding lurus dengan bertambahnya jumlah prosesor. Beberapa teknik telah dikembangkan untuk mereduksi tabrakan memori dan membuat sistem menjadi lebih efisien. Salah satu teknik adalah dengan adanya cache memory lokal pada masing-masing prosesor. Cache memory ini digunakan untuk menyimpan salinan isi memori yang paling baru dipergunakan. Hal ini menimbulkan masalah baru, yaitu cache coherent problem, dimana akan banyak salinan isi memori pada cache yang berbeda yang menimbulkan adanya kemungkinan isi cache yang outdate setelah isi memori bersama diperbaharui (update). Teknik lain untuk mereduksi tabrakan memori adalah dengan membagi memori bersama tersebut menjadi beberapa bagian modul yang dapat diakses secara paralel oleh prosesor yang berbeda. Data disebar ke beberapa modul memori untuk menghindari kemungkinan permintaan yang simultan ke modul memori yang sama oleh beberapa prosesor. Setiap n prosesor dapat mengakses m modul memori melalui jaringan penghubung prosesor - memori (processor -memory connection network).
Skema arsitektur memori bersama dengan jaringan penghubung prosesor - memori dapat dilihat pada gambar.

Jaringan penghubung ini menyebabkan beberapa prosesor dapat mengakses modul-modul memori yang berbeda secara simultan. Biaya dan kinerja tipe multiprosesor ini tergantung pada rancangan internal jaringan penghubung.
Beberapa contoh jaringan penghubung ini adalah jaringan butterfly, shuffle-exchange, cross-bar dan omega. Pendekatan lain untuk mereduksi tabrakan memori adalah dengan mengeliminasi seluruh memori bersama dan menyediakan memori lokal untuk setiap prosesor. Jenis komputer parallel dengan memori yang tersebar ini disebut multicomputer. Setiap pasangan memori - prosesor ini berlaku seperti halnya komputer sekuensial. Prosesor - prosesor dapat membaca (read) dan menulis (write) data secara bebas dengan menggunakan local memorinya masing-masing. Sebuah prosesor tidak dapat mengakses lokal memori prosesor lain dengan secara langsung, tetapi prosesor tersebut dapat mengirim atau menerima data dari prosesor lain dengan mengunakan jaringan komunikasi message passing. Sehingga data dapat disebar dan ditukar sesuai dengan kebutuhan.
Message Passing Interface (MPI) adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing – masing compute node yang kemudian masing – masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node. Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan – pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanisme suatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar proses.
MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain adalah.
1. menulis kode paralel secara portable,
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
Skema arsitektur Message-Passing Muticomputer dapat dilihat pada gambar.

Keterangan :
P : Prosesor
M : Memori

Class Diagram dan Deployment Diagram

Gambar class diagram

Pengertian Class Diagram
Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi). Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.

Class memiliki tiga area pokok :
1. Nama (dan stereotype)
2. Atribut
3. Metoda
Atribut dan metoda dapat memiliki salah satu sifat berikut :
• Private, tidak dapat dipanggil dari luar class yang bersangkutan
• Protected, hanya dapat dipanggil oleh class yang bersangkutan dan anak-anak yang mewarisinya
• Public, dapat dipanggil oleh siapa saja

Pengertian Deployment Diagram
Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini.

Gambar deployment diagram

Use Case, Activity Diagram dan Sequence Diagram

Gambar simbol use case

Pengertian Use Case Diagram
Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah sistem.Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Menggambarkan kebutuhan sistem dari sudut pandang user.
Mengfokuskan pada proses komputerisasi (automated processes). Menggambarkan hubungan antara use case dan actor
Use case menggambarkan proses system (kebutuhan system dari sudut pandang user).

Secara umum use case adalah:
- Pola perilaku system
- Urutan transaksi yang berhubungan yang dilakukan oleh satu actor
Use case diagram terdiridari
- Use case
- Actors
- Relationship
- System boundary boxes (optional)
- Packages (optional)

Contoh use case :
Gambar use case dealer motor

Pengertian Activity Diagram
Activity diagram memodelkan workflow proses bisnis dan urutan aktivitas dalam sebuah proses. Diagram ini sangat mirip dengan flowchart karena memodelkan workflow dari satu aktivitas ke aktivitas lainnya atau dari aktivitas ke status. Menguntungkan untuk membuat activity diagram pada awal pemodelan proses untuk membantu memahami keseluruhan proses. Activity diagram juga bermanfaat untuk menggambarkan parallel behaviour atau menggambarkan interaksi antara beberapa use case.
Definisi activity diagram :
- Menggambarkan proses bisnis dan urutan aktivitas dalam sebuah proses
- Dipakai pada business modeling untuk memperlihatkan urutan aktifitas proses bisnis
- Struktur diagram ini mirip flowchart atau Data Flow Diagram pada perancangan terstruktur
- Sangat bermanfaat apabila kita membuat diagram ini terlebih dahulu dalam memodelkan sebuah proses untuk membantu memahami proses secara keseluruhan
- Activity diagram dibuat berdasarkan sebuah atau beberapa use case pada use case diagram

Simbol Activity Diagram

Contoh lain activity diagram :
Gambar activity diagram administrasi dealer motor

Gambar activity diagram penjualan dealer motor

Gambar activity diagram penjualan dealer motor

Pengertian Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class. Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah message.

Contoh sequence diagram :
Gambar sequence diagram administrasi dealer motor

Gambar sequence diagram penjualan dealer motor(Bagian Counter Sparepart)

Gambar sequence diagram penjualan dealer motor(Bagian Gudang)

Gambar sequence diagram service dealer motor

Sabtu, 21 September 2013

TCP / IP Model


Application Layer

Lapisan ini mempunyai fungsi sebagai interface (antarmuka) antara pengguna dengan data. Pada lapisan ini terdapat semua aplikasi yang menggunakan protocol TCP/IP. Macam-macam protokol tersebut, yaitu : TELNET, FTP,SMTP, DNS, HTTP, dan WWW.

Transport Layer

Transport layer berfungsi untuk mengadakan komunikasi antara dua host/komputer. Protocol yang ada pada lapisan ini adalah TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol).

Internet Layer

Pada lapisan ini terdapat tiga macam protokol yaitu IP (Internet Protocol), ARP (Address Resolution Protocol), dan ICMP (Internet Control Message Protocol).Protocol IP berfungsi untuk menyampaikan paket data ke alamat yang tepat. ARP berfungsi untuk menemukan alamat hardware dari komputer yang terletak pada jaringan yang sama, sedangkan ICMP digunakan untuk mengirimkan pesan dan melaporkan kegagalan pengiriman data, sehingga data yang gagal terkirim akan dikirimkan kembali.

Network Interface Layer

Network Interface Layer berfungsi mengirimkan dan menerima data dari media fisik jaringan. Media fisik disini dapat berupa kabel jaringan, serat optik atau gelombang radio jika jaringan merupakan jaringan nirkabel. Karena tugasnya ini, protokol pada layer ini harus mampu menerjemahkan sinyal listrik menjadi data digital yang dimengerti komputer, yang berasal dari peralatan lain yang sejenis.

Osi Layer


Application Layer

Bertanggung jawab sebagai penghubung utama antara aplikasi yang berjalan pada satu komputer dan resources network yang membutuhkan akses padanya. Yang bertugas menyediakan jasa untuk aplikasi pengguna. Layer ini bertanggung jawab atas pertukaran informasi antara program komputer, seperti program e-mail, dan service lain yang jalan di jaringan, seperti server printer atau aplikasi komputer lainnya.

Presentation Layer

Bertanggung jawab bagaimana data dikonversi dan diformat untuk transfer data. Sebagai contoh, suatu koneksi antara PC dan mainframe membutuhkan konversi dari EBCDIC character - encoding format ke ASCII dan banyak faktor yang perlu dipertimbangkan. Kompresi data (dan enkripsi yang mungkin) ditangani oleh layer ini. Fungsi presentation layer antara lain untuk mentranslasikan data yang hendak ditransmisikan oleh aplikasi ke dalam format yang dapat ditransmisikan melalui jaringan. Protokol yang berada dalam level ini adalah perangkat lunak redirektor (redirector software), seperti layanan Workstation(dalam Windows NT) dan juga Network shell (semacam Virtual Network Computing(VNC) atau Remote Desktop Protocol (RDP).

Session Layer

Menentukan bagaimana dua terminal menjaga, memelihara dan mengatur koneksi, bagaimana mereka saling berhubungan satu sama lain. Layer ini menyediakan layanan ke dua layer diatasnya, Melakukan koordinasi komunikasi antara entiti layer yang diwakilinya. Beberapa protocol pada layer ini, NETBIOS suatu session interface dan protocol, dikembangkan oleh IBM, yang menyediakan layanan ke layer presentation dan layer application. NETBEUI, (NETBIOS Extended User Interface), suatu pengembangan dari NETBIOS yang digunakan pada produk Microsoft networking, seperti Windows NT dan LAN Manager.

Transport Layer

Bertanggung jawab membagi data menjadi segmen, menjaga koneksi logika “end-to-end” antar terminal, dan menyediakan penanganan error (error handling). Layer transport data, menggunakan protocol seperti UDP, TCP dan/atau SPX (Sequence Packet eXchange, yang satu ini digunakan oleh NetWare, tetapi khusus untuk koneksi berorientasi IPX). Layer transport adalah pusat dari mode-OSI.

Network Layer

Bertanggung jawab menentukan alamat jaringan, menentukan rute yang harus diambil selama perjalanan, dan menjaga antrian trafik di jaringan. IP, Internet Protocol, umumnya digunakan untuk tugas ini. Protocol lainnya seperti IPX, Internet Packet eXchange. Perusahaan Novell telah memprogram protokol menjadi beberapa, seperti SPX (Sequence Packet Exchange) & NCP (Netware Core Protocol). Protokol ini telah dimasukkan ke sistem operasi Netware.

Data Link Layer

Bertanggung jawab menyediakan link untuk data, memaketkannya menjadi frame yang berhubungan dengan “hardware” kemudian diangkut melalui media. komunikasinya dengan kartu jaringan, mengatur komunikasi layer physical antara sistem koneksi dan penanganan error. Layer data link bertanggung-jawab pada paket akhir dari data binari yang berasal dari level yang lebih tinggi ke paket diskrit sebelum ke layer physical. Akan mengirimkan frame (blok dari data) melalui suatu network. Ethernet (802.2 & 802.3), Tokenbus (802.4) dan Tokenring (802.5) adalah protocol pada layer Data-link.

Physical Layer

Bertanggung jawab atas proses data menjadi bit dan mentransfernya melalui media, seperti kabel, dan menjaga koneksi fisik antar sistem. Ini adalah layer yang paling sederhana yang berkaitan dengan electrical (dan optical) koneksi antar peralatan. Data biner dikodekan dalam bentuk yang dapat ditransmisi melalui media jaringan, sebagai contoh kabel, transceiver dan konektor yang berkaitan dengan layer Physical. Peralatan seperti repeater, hub dan network card adalah berada pada layer ini. Fungsi physical layer antara lain : Untuk mendefinisikan media transmisi jaringan, metode pensinyalan, sinkronisasi bit,arsitektur jaringan (seperti halnya Ethernet atau Token Ring), topologi jaringan dan pengabelan. Selain itu, level ini juga mendefinisikan bagaimana Network Interface Card (NIC) dapat berinteraksi dengan media kabel atau radio.

Sabtu, 30 Maret 2013

Pemrosesan Paralel



Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanyadiperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Komputasi paralel membutuhkan:
• algoritma
• bahasa pemrograman
• compiler
Sebagian besar komputer hanya mempunyai satu CPU, namun ada yang mempunyai lebih dari satu. Bahkan juga ada komputer dengan ribuan CPU. Komputer dengan satu CPU dapat melakukan parallel processing dengan menghubungkannya dengan komputer lain pada jaringan. Namun, parallel processing ini memerlukan software canggih yang disebut distributed processing software. Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.
2. Arsitektur Komputer Parallel
Sesuai taksonomi Flynn, seorang Designer Processor, Organisasi Prosesor dibagi menjadi 4 :
A. SISD (Single Instruction Single Data Stream)
Arus Instruksi Tunggal dan Data Tunggal
B. SIMD (Single Instruction Multiple Data Stream)
Arus Instruksi Tunggal dan Multiple Data
C. MISD (Multiple Instruction Single Data Stream)
Arus Multiple Instruksi dan Data Tunggal
D. MIMD (Multiple Instruction Multiple Data Stream)
Arus Multiple Instruksi dan Multiple Data



1. Organisasi Prosesor SISD
• Prosesor tunggal
• Aliran instruksi tunggal
• Data disimpan dalam memori tunggal
• Uni-processor



Keterangan:
CU : Control Unit
IS : Instruction Stream (Arus Instruksi)
PU : Processing Unit (Unit Pengolah yang biasa disebut ALU)
DS : Data Stream (Arus Data)
MU : Memory Unit (Unit Memori)
2. Single Instruction, Multiple Data Stream – SIMD
• Single machine instruction
• Mengontrol eksekusi secara simultan
• sejumlah elemen-elemen pengolahan
• Berdasarkan Lock-step
• Setiap pengolahan elemen memiliki hubungan dengan memori data
• Setiap instruksi dieksekusi pada kumpulan data yang berbeda oleh prosesor yang berbeda
• Prosesor Vector and array
3. Multiple Instruction, Single Data Stream – MISD
• Rangkaian dari data
• Dikirimkan ke kumpulan prosesor
• Setiap prosesor mengeksekusi urutan instruksi yang berbeda
• Belum pernah diimplementasikan (komesial)
4. Multiple Instruction, Multiple Data Stream- MIMD
• Kumpulan/sejumlah prosesor
• Mengeksekusi secara simultan urutan instruksi yang berbeda
• Kumpulan data yang berbeda
• SMP, Cluster and sistem NUMA

Data Mining



Pengertian Data Mining
Data Mining merupakan Serangkaian proses untuk menggali nilai tambah berupa informasi yang selama ini tidak diketahui secara manual dari suatu basis data atau bisa disebut dengan KDD ( Knowledge Discovery in Database). Informasi yang dihasilkan diperoleh dengan cara mengekstraksi dan mengenali pola yang penting atau menarik dari data yang terdapat dalam basis data.

Pengertian dan Manfaat KDD
KDD (Knowledge Discovery in Database) adalah keseluruhan proses non-trivial untuk mencari dan mengidentifikasi pola (pattern) dalam data, dimana pola yang ditemukan bersifat sah, baru, dapat bermanfaat dan dapat dimengerti. Serangkaian proses tersebut yang memiliki tahap. Pembersihan data dan integrasi data (cleaning and integration). Proses ini digunakan untuk membuang data yang tidak konsisten dan bersifat noise dari data yang terdapat di berbagai basisdata yang mungkin berbeda format maupun platform yang kemudian diintegrasikan dalam satu database datawarehouse.
Latar Belakang Terbentuknya Data Mining
1. Melimpahnya data (overload data) yang dialami oleh berbagai institusi, perusahaan atau organisasi.
2. Merlimpahnya data ini merupakan akumulasi data transaksi yang terekam bertahun-tahun..
3. Data–data tersebut merupakan data transaksi yang umumnya diproses menggunakan aplikasi komputer yang biasa disebut dengan OLTP (On Line Transaction Processing).
Fungsi - Fungsi Umum Data Mining
1. Assosiation, adalah proses untuk menemukan aturan assosiatif antara suatu kombinasi item dalam suatu waktu
2. Sequence, proses untuk menemukan aturan assosiatif antara suatu kombinasi item dalam suatu waktu dan diterapkan lebih dari satu periode
3. Clustering, adalah proses pengelompokan seumlah data/obyek ke dalam kelompok data sehingga setiap kelompok berisi data yang mirip
4. Classification, proses penemuan model atau fungsi yang menjelaskan atau membedakan konsep atau kelas data, dengan tujuan untuk dapat memperkirakan kelas dari suatu objek yang labelnya tidak diketahui.
5. Regretion, adalah proses pemetaan data dalam suatu nilai prediksi
6. Forecasting, adalah proses pengestimasian nilai prediksi berdasarkan pola-pola di dalam sekumpulan data.
7. Solution, adalah proses penemuan akar masalah dan problem solving dari persoalan bisnis yang dihadapkai atau paling tidak sebagai informasi dalam pengambilan keputusan.
Proses Data Mining
1. Pembersihan data dan integritas data (Cleaning & Integration)

Proses ini digunakan untuk membuang data yang tidak konsisten dan bersifat noise dari data yang terdapat di berbagai basisdata yang mungkin berbeda format maupun platform yang kemudian dinintegrasikan dalam satu database datawarehouse

2. Seleksi dan transformasi data (selection and transformation)

Data yang ada dalam database datawarehouse kemudian direduksi untuk mendapatkan hasil yang akurat. Beberapa cara seleksi, antara lain :

Metode seleksi pada data Mining
• Sampling, adalah seleksi subset representatif dari populasi data yang besar.
• Denoising, adalah proses menghilangkan noise dari data yang akan ditransformasikan
• Feature extraction, adalah proses membuka spesifikasi data yang signifikan dalam konteks tertentu.
Metode transformasi pada Data Mining
• Centering, mengurangi setiap data dengan rata-rata dari setiap atribut yang ada.
• Normalisation, membagi setiap data yang dicentering dengan standar deviasi dari atribut bersangkutan.
• Scaling, mengubah data sehingga berada dalam skala tertentu.
3. Penambangan data (data mining)

Data yang telah ditransformasi, kemudian ditambang dengan berbagai teknik. Proses data mining adalah proses mencari pola atau informasi menarik dalam data terpilih dengan menggunkan fungsi-fungsi tertentu. Fungsi atau algoritma dalam data mining sangat bervariasi, dimana pemilihannya bergantung pada tujuan dan proses pencarian pengetahuan secara menyeluruh.

4. Evaluasi pola dan presentasi pengetahuan

Tahap ini merupakan bagian dari proses pencarian pengetahuan yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. Langkah terakhir KDD adalah mempresentasikan pengetahuan dalam bentuk yang mudah dipahami pengguna.
Manfaat Data Mining
Dari sudut pandang komersial

Pemanfaatan data mining dapat digunakan dalam menangani meledaknya volume data. Bagaimana mana menyimpannya, mengestraknya serta memanfaaatkannya. Berbagai teknik komputasi dapat digunakan menghasilkan informasi yang dibutuhkan. Informasi yang dihasilkan menjadi asset untuk meningkatkan daya saing suatu institusi. Data mining tidak hanya digunakan untuk menangani persoalan menumpuknya data/informasi dan bagaimana menggudangkannya tanpa kehilangan informasi yang penting (warehousing). Data mining juga diperlukan untuk menyelesaikan permasalahan atau menjawab kebutuhan bisnis itu sendiri, misalnya :
1. Bagaimana mengetahui hilangnya pelanggan karena pesaing
2. Bagaimana mengetahui item produk atau konsumen yang memiliki kesamaan karakteristik
3. Bagaimana mengidentifikasi produk-produk yang terjual bersamaan dengan produk lain
4. Bagaimana memprediski tingkat penjualan
5. Bagaimana menilai tingkat resiko dalam menentukan jumlah produksi suatu item.
6. Bagaimana memprediksi prilaku bisnis di masa yang akan datang
Dari sudut pandang keilmuan
Data mining dapat digunakan untuk mengcapture, menganlisis serta menyimpan data yang bersifat real-time dan sangat besar, misal :
1. Remote sensor yang ditempatkan pada suatu satelit.
2. Teleskop yang digunakan untuk memindai langit.
3. Simulasi saintifik yang membangkitkan data dalam ukuran terabytes.