Kelas : 4IA05
Anggota :
UNIVERSITAS GUNADARMA
2017
BAB I
PENDAHULUAN
Dalam pembuatan makalah ini, secara garis besar dapat dirumuskan permasalahan yang akan
dikaji dalam makalah ini anatar lain :
1. Konsep Parallel
2. Pemrograman Terdistribusi
4. Thread Programming
1.3 Tujuan
Penulisan makalah ini terdiri dari 3 bab yaitu pendahuluan, pembahasan dan kesimpulan.
BAB I PENDAHULUAN
Bab I membahas latar belakang masalah sehingga perlu dilakukan penulisan makalah ini,
batasan masalah, tujuan penelitian dan sistematika penulisan.
BAB II PEMBAHASAN
Pembahasan meliputi teori-teori yang digunakan dalam penulisan makalah yang meliputi
pembahasan tentang teori parallel computation
Merupakan bab terakhir yang membahas mengenai kesimpulan dari hasil penulisan makalah.
BAB II
PEMBAHASAN
Komputasi paralel merupakan salah satu teknik melakukan komputasi, dimana proses
komputasinya dilakukan oleh beberapa resources (komputer) yang independen, secara
bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya pengolahan data
dalam jumlah besar (di industri keuangan, bioinformatika, dll) atau dalam memenuhi proses
komputasi yang sangat 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.
Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan
diolah secara paralel. Pemrograman paralel adalah teknik pemrograman komputer yang
memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam
komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin
paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh
komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering
istilah yang digunakan adalah sistem terdistribusi (distributed computing). 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.
Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong
bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan
bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yang anda butuhkan
memotong bawang akan lebih sedikit jika anda kerjakan berdua. Performa dalam
pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang
diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang
sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa
melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2
kali.
Pemrosesan paralel adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu
set data diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang sama
secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah beban besar
menjadi beberapa beban kecil untuk mempercepat proses penyelesaian masalah.
Tipe lain dari komputasi paralel yang kadang-kadang disebut "didistribusikan" adalah
gagasan dari sebuah komputer paralel cluster. Sebuah cluster akan banyak CPU terhubung
melalui kecepatan tinggi koneksi ethernet ke hub sentral (Server) yang memberi masing-
masing beberapa pekerjaan yang harus dilakukan. Metode cluster mirip dengan metode yang
dijelaskan dalam paragraf di atas, kecuali bahwa semua CPU secara langsung terhubung ke
server, dan satu-satunya tujuan mereka adalah untuk melakukan perhitungan yang diberikan
kepada mereka.
Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
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 supercomputer. PVM digunakan untuk
mendukung workstation clusters
Michael J. Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan program
paralel, yang dikenal dengan sebutan Taksonomi Flynn. Flynn mengelompokkan komputer
dan program berdasarkan banyaknya set instruksi yang dieksekusi dan banyaknya set data
yang digunakan oleh instruksi tersebut.
1) SISD (Single Instruction – Single Data)
Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi secara
serial. Komputer ini adalah tipe komputer konvensional. Menurut mereka tipe
komputer ini tidak ada dalam praktik komputer paralel karena bahkan mainframe pun
tidak lagi menggunakan satu prosesor. Klasifikasi ini sekedar untuk melengkapi
definisi komputer paralel. Beberapa contoh komputer yang menggunakan model SISD
adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
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).
Teorinya komputer ini memiliki satu prosesor dan mengeksekusi beberapa instruksi
secara paralel tetapi praktiknya tidak ada komputer yang dibangun dengan arsitektur
ini karena sistemnya tidak mudah dipahami. Sampai saat ini belum ada komputer
yang menggunakan model MISD.
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.
Singkatnya, perbedaan antara SISD, SIMD, MISD dan MIMD dapat dilihat pada gambar
dibawah ini :
Dari penjelasan dan gambar diatas dapat disimpulkan bahwa kinerja komputasi parallel
(multiple) lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak
daripada tunggal (single).
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. Adapun 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.
Threading / Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah
menjalankan 2 proses (proses yang sama atau proses yang berbeda) dalam satu waktu.
Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network. Threading dibagi
menjadi 2, yaitu :
1) Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis
komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori
yang tersedia, menggunakan program counter dan mengeksekusi program secara
independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya
dengan thread lain yang hendak menggunakan prosesor itu.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini
tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan yang
dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. Untuk
memudahkannya programmer harus menggunakan protocol komunikasi yang
kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong
pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi,
menjadwalkan, dan mengelola sumberdaya komputasi paralel.
2) Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk
kemudahan karena dengannya programmer tidak harus pusing dengan protokol
komunikasi, load balancing, dan kerumitan lain yang ada pada static threading.
Concurrency platform ini menyediakan scheduler yang melakukan load balacing
secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara
umum mendukung dua fitur : nested parallelism dan parallel loops.
2.5 Massage Passing dan OpenMP
Massage Passing merupakan suatu teknik bagaimana mengatur suatu alur komunikasi
messaging terhadap proses pada system. Message passing dalam ilmu komputer adalah suatu
bentuk komunikasi yang digunakan dalam komputasi paralel, pemrograman-berorientasi
objek, dan komunikasi interprocess. Dalam model ini, proses atau benda dapat mengirim dan
menerima pesan yang terdiri dari nol atau lebih byte, struktur data yang kompleks, atau
bahkan segmen kode ke proses lainnya dan dapat melakukan sinkronisasi. Paradigma
Message passing yaitu :
Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk menerima pesan.
Oleh karena itu tidak ada buffering. Selain itu Pengirim tidak bisa mengirim pesan untuk
dirinya sendiri.
Pengirim akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli ketika penerima
belum siap untuk menerima pesan. Oleh karena itu diperlukan buffering untuk menampung
pesan sementara sampai penerima siap menerima pesan. Selain itu pengirim dapat pesan
untuk dirinya sendiri.
OpenMP (Open Multiprocessing)
OpenMP adalah model portabel dan skalabel yang memberikan interface sederhana dan
fleksibel bagi programer shared memory dalam membangun aplikasi paralel. Program
multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk
melakukan interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan
kemudahan pemrograman serta membantu dalam menghindari kesalahan program, melalui
pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman fork-join.
OpenMP bekerja berdasarkan model shared memory, maka secara default data dibagi diantara
thread-thread dan dapat terlihat dari setiap thread. Terkadang program akan membutuhkan
variabel dengan nilai thread spesifik. Jika setiap thread memiliki variabel duplikat akan
sangat berpotensi memiliki nilai yang berbeda-beda pada setiap variabel duplikat tersebut.
Sinkronisasi (pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting untuk
menjamin data yang harus dibagi dan untuk mencegah terjadinya data race condition. Secara
default OpenMP telah menyediakan mekanisme untuk menunggu thread dalam suatu tim
thread sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat
melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.
penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi program
karena arsitekturnya yang natively parallel. Selain itu Peningkatan performa yang terjadi
tidak hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih penting
adalah cara membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum
banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk
menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan
lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia
digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.
Geforce 256
Geforce 2
Geforce 3
Geforce 4
Geforce 5
Geforce 6,
Geforce 7
Geforce 8
Geforce 9
Yang terakhir adalah seri GTX 690. tapi yang terbaru saat ini adalah GTX 780.
Nvidia bertekad terus mengembangkan produk Geforce tersebut, namun pesaing terberatnya
yaitu AMD, juga terus mengembangkan produk Radeonnya. Saat ini, kedua perusahaan
chipset tersebut sedang adu kuat dalam bidang kartu grafis, meninggikan spesifikasi untuk
digunakan dibidang multimedia, game, maupun, desain.
Kelebihan
Sangat menunjang kebutuhan dalam segi grais yang mendukung konsol game berkelas berat
seperti Pro Evolution Soccer atau PES, dan mendukung game berbasis Direct 11, dapat pula
digunakan sebagai penunjang editing video melalui program berat seperti Adobe Ilustration
ataupun Autodesk 3Ds Max.
Kekurangan
PENUTUP
Kesimpulan
Komputasi paralel sangat berguna dibidang teknologi masa kini. Sebagai contoh media Cloud
Computing yang saat ini sangat populer akan membutuhkan resource yang sangat besar agar
dapat diakses oleh jutaan pengguna dan dapat berjalan tanpa adanya interupsi.
Pemrosesan paralel dapat dilakukan pada Nvidia CUDA dan pemrosesan paralel pada Nvidia
CUDA dapat meningkatkan kinerja CPU dalam pemrosesan data. Karena proses proses
komputasinya dapat dilakukan oleh beberapa resources (komputer) yang independen, secara
bersamaan.
Daftar pustaka
http://chachados.blogspot.co.id/2013/07/parallel-computation.html
http://ylpr.blogspot.co.id/2016/05/thread-programming.html
http://techgrid1.blogspot.co.id/2013/10/amd-dan-nvidia.html
http://www.teknatum.com/2016/08/perbedaan-nvidia-geforce-dengan-amd.html