A.
Parallel
Computing
Parallel Computing atau Komputasi
paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan
memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan 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, dan
·
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.
B.
Paralelism
Concept
Paralelisme (parallelism) lahir
dari pendekatan yang biasa dipergunakan oleh para perancang sistem untuk
menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan kecepatan proses
dengan cara memperbanyak jumlah modul perangkat keras yang dapat beroperasi
secara simultan disertai dengan membentuk beberapa proses yang bekerja secara
simultan pada modul-modul perangkat keras tersebut. Secara formal, pemrosesan
paralel adalah sebuah bentuk efisien pemrosesan informasi yang menekankan pada
eksploitasi dari konkurensi kejadian-kejadian dalam proses komputasi.Pemrosesan
paralel dapat terjadi pada beberapa tingkatan (level) proses. Tingkatan
tertinggi pemrosesan paralel terjadi pada proses di antara banyak job
(pekerjaan) atau pada program yang menggunakan multiprogramming, time sharing,
dan multiprocessing. Multiprogramming kemampuan eksekusi terhadap beberapa
proses perangkat lunak dalam sebuah system secara serentak, jika dibandingkan
dengan sebuah proses dalam satu waktu, dan timesharing berarti menyediakan
pembagian selang waktu yang tetap atau berubah-ubah untuk banyak program.
Multiprocessing adalah dukungan sebuah sistem untuk mendukung lebih dari satu
prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut.
Multiprocessing sering diimplementasikan dalam perangkat keras (dengan
menggunakan beberapa CPU sekaligus), sementara multiprogramming sering
digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua
kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Pemrosesan
paralel dapat juga terjadi pada proses di antara prosedurprosedur atau perintah
perintah (segmen program) pada sebuah program
C.
Distributed
Processing
Distributed Processing adalah
kemampuan menjalankan semua proses pengolahan data secara bersama antara
komputer yang berfungsi sebagai pusat dengan beberapa komputer yang lebih kecil
dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki
prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah,
kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total.
Jika salah satu prosesor mengalami kegagalan atau masalah maka prosesor yang
lain akan mengambil alih tugasnya. Dalam proses distribusi sudah mutlak
diperlukan perpaduan yang mendalam antara teknologi komputer dan
telekomunikasi, karena selain proses yang harus didistribusikan, semua host
komputer wajib melayani terminal-terminalnya dalam satu perintah dari komputer
pusat.
D.
Architectural
Computer Parallel
Arsitektur komputer paralel ada
beberapa versi pengertian. Di sini saya akan menjelaskan sedikit tentang
arsitektur komputer menurut Flynn. Sesuai taksonomi Flynn, seorang Designer
Processor, Organisasi Prosesor dibagi menjadi 4 :
SISD
Single
Instruction – Single Data. Komputer ini memiliki hanya satu prosesor dan satu
instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer
konvensional. Beberapa contoh komputer yang menggunakan model SISD adalah
UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
Single
Instruction – Multiple Data. Komputer ini memiliki lebih dari satu prosesor,
tetapi hanya mengeksekusi satu instruksi secara paralel pada data yang berbeda
pada level lock-step. Komputer vektor adalah salah satu komputer paralel yang menggunakan
arsitektur ini. 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
Multiple
Instructions – Single Data. Teorinya komputer ini memiliki satu prosesor dan
mengeksekusi beberapa instruksi secara paralel. Sampai saat ini belum ada
komputer yang menggunakan model MISD karena sistemnya tidak mudah.
MIMD
Multiple
Instructions – Multiple Data. Komputer ini memiliki lebih dari satu prosesor
dan mengeksekusi lebih dari satu instruksi secara paralel. Tipe komputer ini
yang paling banyak digunakan untuk membangun komputer paralel, bahkan banyak
supercomputer yang menerapkan arsitektur ini. Beberapa komputer yang
menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32,
AMD Opteron, Cray XT3 dan IBM BG/L.
Sistem komputer paralel dibedakan
dari cara kerja memorinya menjadi shared memory dan distributed memory. Shared
memory berarti memori tunggal diakses oleh satu atau lebih prosesor untuk
menjalankan instruksi sedangkan distributed memory berarti setiap prosesor
memiliki memori sendiri untuk menjalankan instruksi. Komponen-komponen utama
dari arsitektur komputer paralel cluster PC antara lain:
·
Prosesor
(CPU). Bagian paling penting dalam sistem, untuk multicore terdapat lebih dari
satu core yang mengakses sebuah memori (shared memory).
·
Memori.
Bagian ini dapat diperinci lagi menjadi beberapa bagian penyusunnya seperti
RAM, cache memory dan memori eksternal.
·
Sistem
Operasi. Software dasar untuk menjalankan sistem komputer.
·
Cluster
Middleware. Antarmuka antara hardware dan software.
·
Programming
Environment dan Software Tools. Software yang digunakan untuk pemrograman
paralel termasuk software pendukungnya.
·
User
Interface. Software yang menjadi perantara hardware dengan user.
·
Aplikasi.
Software berisi program permasalahan yang akan diselesaikan.
·
Jaringan.
Penghubung satu PC (prosesor) dengan PC yang lain sehingga memungkinkan
pemanfaatan sumberdaya secara simultan.
E.
Pengantar
Thread Programming
Dalam pemrograman komputer, sebuah
thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang
dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view,
sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna
individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan
program atau permintaan bersamaan dari program lain yang sedang terjadi, thread
yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan
program untuk mengetahui user sedang masuk didalam program secara bergantian
dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi
thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan
alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi
register saat program interrupted dan restores ketika memberikan program
kontrol lagi.
Sebagian besar komputer hanya dapat
mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka
beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan
melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan
setiap program “giliran” pada prosesnya, maka itu memerlukan untuk menunggu
sementara program lain mendapat giliran. Masing-masing program dipandang oleh
sistem operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi
dan terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam
sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan
memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program
memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu
menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan
program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O
selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada
thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan
untuk kedua multitasking dan multithreading. Mereka juga memungkinkan
multithreading dalam proses program agar sistem tersebut disimpan dan menciptakan proses baru untuk setiap thread.
Sumber
: