POKOK PEMBAHASAN TUGAS
1.
Pengertian
Komputasi
Komputasi sebetulnya bisa diartikan sebagai
cara untuk menemukan pemecahan masalah dari data input dengan
menggunakan suatu algoritma.
Hal ini ialah apa yang disebut dengan teori
komputasi, suatu sub-bidang dari ilmu komputer
dan matematika.
Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan
menggunakan pena
dan kertas,
atau kapur
dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan
suatu tabel. Namun sekarang, kebanyakan komputasi telah
dilakukan dengan menggunakan komputer.
Secara umum iIlmu komputasi adalah
bidang ilmu yang mempunyai perhatian pada penyusunan model matematika
dan teknik
penyelesaian numerik
serta penggunaan komputer
untuk menganalisis dan memecahkan masalah-masalah ilmu
(sains). Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer
atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah
dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga
untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu.
Bidang ini berbeda dengan ilmu
komputer (computer science),
yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga
berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan
kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan
berbagai pemahaman baru, melalui penerapan model-model matematika dalam program
komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan
masalah-masalah nyata dalam ilmu tersebut.
Kelahiran
Ilmu atau sains berdasarkan obyek
kajiannya dibedakan antara Fisika, Kimia, Biologi dan Geologi. Ilmu dapat pula
digolongkan berdasarkan metodologi dominan yang digunakannya, yaitu ilmu
pengamatan/percobaan (observational/experimental
science), ilmu teori (theoretical
science) dan ilmu komputasi (computational
science). Yang terakhir ini bisa dianggap bentuk yang paling baru
yang muncul bersamaan dengan perkembangan kekuatan pemrosesan dalam komputer dan
perkembangan teknik-teknik metode numerik dan metode komputasi lainnya.
Dalam ilmu (sains) tradisional seperti
Fisika, Kimia dan Biologi, penggolongan ilmu berdasarkan metodologi dominannya juga
mewujud, yang ditunjukkan dengan munculnya bidang-bidang khusus berdasarkan
penggolongan tsb. lengkap dengan jurnal-jurnal yang relevan untuk melaporkan
hasil-hasil penelitiannya. Sebagai contoh dalam kimia, melengkapi kimia
percobaan (experimental
chemistry) dan kimia teori (theoretical
chemistry), berkembang pula kimia komputasi (computational chemistry),
seperti juga di bidang Biologi dikenal Biologi Teori (theoretical biology) serta
Biologi Komputasi (computational
biology), lengkap dengan jurnalnya seperti Journal of Computational
Chemistry dan Journal of Computational Biology. Cara penggolongan yang
digunakan berbeda dengan cara penggolongan lain berdasarkan obyek kajian,
seperti penggolongan kimia atas Kimia Organik, Kimia Anorganik, dan Biokimia.
Komputasi sains
Komputasi sains merupakan salah satu cabang ilmu
komputasi. Secara umum komputasi sains mengkaji aspek-aspek komputasi untuk
aplikasi / memecahkan masalah di bidang sains lain,
seperti fisika,
kimia,
biologi
dan lain-lain.
Di Indonesia
sudah banyak pertemuan atau kegiatan ilmiah terkait dengan komputasi, tetapi
umumnya lebih terkait dengan aspek teknologi informasi.
Sedangkan kajian di komputasi sains
masih sangat kurang. Hal ini tidak mengherankan karena komputasi sains lebih
condong sebagai kajian teori murni, sehingga komunitasnya masih sangat terbatas
seperti halnya fisika teori.
Hanya ada satu kegiatan ilmiah yang terkait langsung dan fokus pada kajian
komputasi sains, yaitu Workshop on
Computational Science yang diadakan rutin setiap
tahun oleh konsorsium yang tergabung dalam Masyarakat
Komputasi Indonesia.
2.
Pengertian
Parallel Processing
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
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.
Contoh
struktur pengiriman permintaan dan jawaban dari parallel processing
Aristektur
Komputer Parallel
Taksonomi Flynn dan model pemrosesan parallel, keempat kelompok
komputer tersebut adalah :
1.
Komputer SISD (Single Instruction stream-Single Data stream)
Pada komputer jenis ini semua instruksi
dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping
dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya
komputer SISD berupa komputer yang terdiri atas satu buah pemroses (single
processor). Namun komputer SISD juga mungkin memiliki lebih dari satu unit
fungsional (modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional
tersebut berada dalam kendali sebuah unit pengendali.
2.
Komputer SIMD (Single Instruction stream-Multiple Data stream)
Pada
komputer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh
sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan
menjalankan instruksi yang sama yang dikirimkan unit pengendali, namun
melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran
data yang berbeda pula
3.
Komputer MISD (Multiple Instruction stream-Single Data stream)
Komputer jenis ini memiliki n unit
pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda
terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit
pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi
pemroses berikutnya. Belum ada perwujudan nyata dari komputer jenis ini kecuali
dalam bentuk prototipe untuk penelitian.
4.
Komputer MIMD (Multiple Instruction stream-Multiple Data stream)
Pada sistem komputer MIMD murni terdapat interaksi di antara
n pemroses. Hal ini disebabkan seluruh aliran dari dan ke memori berasal
dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly
coupled jika tingkat interaksi antara pemroses tinggi dan disebut loosely
coupled jika tingkat interaksi antara pemroses rendah.
Paralel prosessing komputasi adalah
proses atau pekerjaan komputasi di komputer dengan memakai suatu bahasa
pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum
komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi bila
dibandingkan dengan pemakaian komputasi pada komputer tunggal.
Message
Passing Interface (MPI).
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.
PVM
(Parallel Virtual Machine)
PVM
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 kefile system dilakukan melalui protokol rsh yang
berjalan di unix atau windows. Berikut adalah langkah pengaturan pada
masing-masing komputer :
1.
Buat file hostfile yang berisi daftar node komputer dan nama user yang akan
dipakai untuk komputasi parallel. 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.
2.
Daftarkan IP masing-masing komputer pada file /etc/hosts/hosts.allow dan
/etc/hosts/hosts.equiv.
3. 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.
Secara
umum, langkah implementasi komputasi parallel sebagai berikut :
1. Jalankan PVM
daemon pada setiap mesin dalam cluster
2. Jalankan program
master pada master daemon
3.
Master daemon akan menjalankan proses slave.
3.
Hubungan
Antara Komputasi Dengan Parallel Processing
Komputasi Paralel merupakan teknik untuk
melakukan komputasi secara
bersamaan dengan memanfaatkan beberapa komputer yang independen
secara bersamaan. Biasanya digunakan untuk kapasitas yang pengolahan data yang
sangat besar (lingkungan industri, bioinformatika dll) atau karena tuntutan
komputasi yang banyak. Pada kasus yang kedua biasanya ditemukannya kalkulasi
numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia
(kimai komputasi) dll. Untuk melakukan berbagai jenis komputasi paralel
diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang nantinya
dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk
menyelesaikan suatu masalah. Untuk itu maka digunakannya perangkat lunak
pendukung yang biasa disebut middleware yang berperan untuk mengatur distribusi
antar titik dalam satu mesin paralel. Selanjutnya pemakai harus membuat
pemrograman paralel untuk merealisasikan komputasi. Salah satu middleware yang
asli dikembangkan di Indonesia adalah OpenPC
yang dipelopori oleh GFTK LIPI dan diimplementasikan di LIPI Public Center.
Komputasi
paralel berbeda dengan multitasking. Multitasking itu sendiri adalah komputer
dengan processor tunggal yang dapat mengeksekusi beberapa tugas secara
bersamaan. Sedangkan komputasi paralel menggunakan beberapa processor atau
komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von
Neumann. Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi
tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan
beberapa processor), maka kita harus mengetahui 4 model komputasi yang
digunakan, yaitu:
·
SI SD
·
SIMD
·
MISD
·
MIMD
SISD
Merupakan
singkatan dari Single Instruction, Single Data yaitu satu-satunya yang
menggunakan arsitektur Von Neumann, karena pada model ini hanya menggunakan 1
processor saja. Oleh karena itu model ini dikatakan sebagai model untuk
komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel
yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan
model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
Merupakan
singkatan dari Single Instruction, Multiple Data. Model ini menggunakan banyak
processor dengan instruksi yang sama, namun dengan data yang berbeda. Sebagai
contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100
angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan
algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya
processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20,
processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk
processor-processor yang lain. Beberapa contoh komputer yang menggunakan model
SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan
Cell Processor (GPU).
MISD
Merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan
banyak processor dengan instruksi yang berbeda namun mengolah data yang sama.
Hal ini merupakan kebalikan dari model SIMD. Sebagai contoh, dengan menggunakan
kasus yang sama pada contoh model SIMD namun cara untuk menyelesaikannya yang
berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan
kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang
digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini
belum ada komputer yang menggunakan model MISD.
MIMD
Pada Multiple Instruction, Multiple Data biasanya menggunakan banyak processor
dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang
berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan
komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah
IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM
BG/L.
Singkatnya
untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa
digambarkan pada gambar di bawah ini:
Penyelesaian Sebuah
Masalah pada Komputasi Tunggal
Penyelesaian Sebuah Masalah pada
Komputasi Paralel
Dari perbedaan kedua gambar di atas, dapat kita simpulkan
bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk
pemrosesan data yang banyak daripada komputasi tunggal.
4. Kesimpulan
Banyak perkembangan-perkembangan baru dalam arsitektur
komputer yang didasarkan pada konsep pemrosesan paralel. Pemrosesan paralel
dalam sebuah komputer dapat didefinisikan sebagai pelaksanaan
instruksi-instruksi secara bersamaan waktunya. Hal ini dapat menyebabkan
pelaksanaan kejadian-kejadian dalam interval waktu yang sama, dalam waktu yang
bersamaan atau dalam rentang waktu yang saling tumpang tindih
Sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat,
komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan
pemrosesannya. Hal ini menyebabkan lahirnya konsep keparalelan (parallelism)
untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan yang
sangat tinggi, seperti misalnya prakiraan cuaca, simulasi pada reaksi kimia,
perhitungan aerodinamika dan lain-lain.
Konsep keparalelan itu sendiri dapat ditinjau dari aspek design mesin paralel,
perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan
analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak
difokuskan kepada algoritma untuk menyelesaikan masalah numerik, karena masalah
numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang
sangat tinggi.
Daftar Pustaka