Parallel Computation


#AlfanCandraSetiawan
#4IA19
#ParallelComputation
#PengantarKomputasiModern

A. Parallelism 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. Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh dua cara :
  • Peningkatan kecepatan perangkat keras
Komponen utama perangkat keras komputer adalah processor. Meskipun kecepatan processor dapat ditingkatkan terus, namun karena keterbatasan materi pembuatnya, tentu ada suatu batas kecepatan yang tak mungkin lagi dapat dilewati. Karena itu timbul ide pembuatan komputer multiprocessor. Dengan adanya banyak processor dalam satu komputer, pekerjaan bisa dibagi-bagi kepada masing-masing processor. Dengan demikian lebih banyak proses dapat dikerjakan dalam satu saat. Peningkatan kecepatan setiap proses bisa dicapai melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya.
  • Peningkatan kecepatan perangkat lunak
Program komputer untuk komputer sekuensial harus menyediakan sederetan operasi untuk dikerjakan oleh prosesor tunggal. Program komputer untuk komputer paralel harus menyediakan sederetan operasi untuk beberapa prosesor untuk dikerjakan secara paralel, termasuk operasi untuk mengatur dan mengitegrasikan prosesor-prosesor yang terpisah tersebut mengerjakan suatu komputasi yang koheren. Kebutuhan akan pembuatan dan pengaturan berbagai aktivitas komputasi paralel menambah dimensi baru proses dari pemrograman komputer. Algoritma untuk problem yang spesifik harus diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel yang kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma paralel.
  • Tingkat Paralelisme
Berdasarkan tingkat paralelismenya prosesor paralel dapat dibagi menjadi beberapa tingkat sebagai berikut :

1. Komputer Array :
a. Prosesor array : beberapa prosesor yang bekerja sama untuk mengolah set instruksi yang sama dan data yang berbeda – beda atau biasa disebut SIMD (Single Instruction-stream Multiple Data)
b. Prosesor vektor : beberapa prosesor yang disusun seperti pipeline.

2. Multiprosesor, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang saling berbagi memori.

3. Multikomputer, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang masing-masing prosesor memiliki memori sendiri.
  • Jenis-Jenis Pemrosesan Paralel
Pemrosesan paralel dapat dibagi ke dalam beberapa klasifikasi, sebagai berikut :

1. Berdasarkan simetri penjadwalannya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) Asymmetric Multiprocessing (ASMP)
b) Symmetric Multiprocessing (SMP)
c) ClusteringPoliteknik Telkom Sistem Komputer

2. Berdasarkan aliran instruksi dan datanya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) SISD (Single Instruction on Single Data Stream)
b) SIMD (Single Instruction on Multiple Data Stream)
c) MISD (Multiple Instruction on Single Data Stream)
d) MIMD (Multiple Instruction on Multiple Data Stream)

3. Berdasarkan kedekatan antar prosesor, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) Multikomputer (Loosely Coupled/ local memory) dengan memori yang terdistribusi
b) Multiprosesor (Tightly Coupled/ global memory) dengan memori yang dapat digunakan bersama (shared memory)

B. Distributed Processing

Mengerjakan semua proses pengolahan data secara bersama antara komputer 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 yang lain akan mengambil alih tugasnya.

C. Architectural Parallel Computer
  •  SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa 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
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah 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
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian 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
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD 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:

Gambar 1. Penyelesaian Sebuah Masalah pada Komputasi Tunggal

Gambar 2. Penyelesaian Sebuah Masalah pada Komputasi Paralel

Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.

Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

D. Pengantar Thread Programming


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 :
  • 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.

  • 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.

Sumber Materi:
  1. http://chachados.blogspot.co.id/2013/07/parallel-computation.html
  2. http://robbyfahlevi.blogspot.com/2016/05/parallel-computation-1.html
  3. https://dpamudji.wordpress.com/2011/04/01/komputasi-paralel/
  4. https://en.wikipedia.org/wiki/Parallel_computing

Komentar

Postingan Populer