Jumat, 30 April 2021

Komputasi Modern - Parallel Computing

Parallel Computing



Parallel computing atau komputasi parallel adalah salah satu teknik komputasi yang dilakukan bersamaan dengan memanfaatkan beberapa komputer. teknik ini pada umumnya digunakan pada saat kapasistas yang diperlukan besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntunan proses komputasi yang banyak, berbeda dengan serial computing yang proses nya dilakukan satu persatu, parallel computing akan memecah problem - problem yang ada kemudian akan diantrikan kedalam processor yang berbeda.

Why parallel computing ?

    Alasan utama dalam penggunaan parallel computing ini yaitu dapat menghemat waktu dan memangkas biaya, parallel computing dapat dianalogikan seperti sebuah antrian dengan kasir yang banyak dan antrian tersebut dapat selesai dengan waktu yang cepat, berbeda jika hanya memiliki kasir satu buah saja maka akan memakan waktu yang cukup lama, belum lagi data transaksi nya yang cukup besar, tentu saja itu akan menjadi sebuah nightmare karena perlu menunggu waktu yang cukup lama.

            Parallel computing adalah komputasi yang future proof dimana dalam 20 tahun terakhir dapat diamati bahwa kebutuhan internet cepat, distributed system, dan multi processor computer sangat dibutuhkan. bahkan pada smartphone kita saja sudah menggunakan multi core yang memang diperuntungkan untuk kecepatan performa komputasi yang dilakukan.

 

The history

            Parallel computation merupakan salah satu teknologi paling menarik sejak ditemukannya komputer pada tahun 1940-an. Terobosan dalam pemrosesan parallel selalu berkembang dan mendapatkan tempat disamping teknologi - teknologi lainnya sejak era kebangkitan (1950-an), era mainframe (1960-an), era minis(1970-an), era pc(1980-an) dan era komputer parallel(1990-an). Dengan berbagai pengaruh atas perkembangan teknologi lainnya, dan bagaimana teknologi ini mengubah persepsi terhadap komputer dapat dimengerti betapa pentingnya parallel computing. Inti dari parallel computingl yaitu hardware, software dan aplikasinya. Parallel processing merupakan suatu pemrosesan informasi yang lebih mendekatkan pada manipuasi rata - rata dari elemen data terhadap satu atau lebih penyelesaian proses dari sebuah problem. Untuk melakukan perhitungan komputasi dengan menggunakan 2 atau lebih CPU/Processor dalam suatu komputer yang sama atau komputer yang berbeda dimana dalam hal ini setiap instruksi dibagi kedalam beberapa instruksi kemudian dikirim ke processor yang terlibat dalam proses dan dilakukan secara bersamaan disebut dengan parallel computation. Software yang bertugas untuk pembagian proses komputasi digunakan Message Parsing Interfae(MPI).

Arsitektur komputer parallel

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

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.

 



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

Komputer MISD (Multiple Instuction 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.





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.

 

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.



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.

 

Arsitektur memori parallel computation

Shared memory

Arsitektur ini menyediakan global addressing sehingga berbagai prosesor mempunyai cara pengaksesan memori yang seragam. Setiap perubahan pada suatu lokasi memori oleh suatu prosesor akan selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur ini antara lain adalah pengaksesan memori yang user friendly dan performansi yang baik dalam penggunaan data bersama antar task. Sedangkan kekurangannya antara lain adalah kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana akan terjadi peningkatan traffic antara prosesor ke shared memory dan antara cache coherent system dengan memori sebenarnya.

Berdasarkan frekuensi akses, ada dua jenis shared memory :

·         Uniform Memory Access (UMA). Setiap prosesor memiliki hak pengaksesan yang seragam dengan prosesor lain

·         Non Uniform Memory Access (NUMA). Tidak semua prosesor memiliki hak yang sama dalam mengakses memori

 

Distributed memory

Arsitektur ini mempunyai karakteristik di mana setiap prosesor memiliki memorinya masing-masing, sehingga eksekusi instruksi dapat berjalan secara independen antara satu prosesor dengan yang lain. Prosesor akan menggunakan jaringan ketika membutuhkan akses ke memori non lokal. Akses ini sepenuhnya menjadi tanggung jawab  penulis program. Kelebihan dari arsitektur ini adalah terjaganya skalabilitas ketika terjadi  penambahan prosesor. Sedangkan kekurangannya adalah penulis program harus berurusan dengan detail komunikasi data antara prosesor dan memori non lokal.

Distributed Processing atau Distributed Computing System adalah sekumpulan peralatan pemrosesan yang saling terhubung melalui jaringan komputer dan saling bekerjasama untuk mengerjakan tugas-tugas tertentu. Yang dimaksud dengan peralatan pemrosesan dataadalah peralatan komputasi yang dapat mengeksekusi sendiri sebuah program.

Sekumpulan peralatan yang saling terhubung akan mendistribusikan berbagai macam hal, dianataranya adalah:

·         Processing Logic / Pemrosesan secara logis

·         Fungsi. Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau software

·         Data

·         Kontrol

Kriteria Distributed Processing

Pemrosesan terdistribusi (Distributed Processing) dapat dikelompokkan berdasarkan beberapa kriteria, yaitu:

·         Degree of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling digunakan dibandingkan dengan jumlah pemrosesan lokal.

·         Struktur antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?

·         Kesalingtergantungan komponen-komponen : Kuat atau lemah dalam mengekseskusi proses.

·         Keselarasan antar komponen : selaras atau tidak selaras ?

·          

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.

Contoh:

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 multi processors 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.

2.       Dynamic Multithreading. 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).

 

MPI (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

 

·         Menulis kode paralel secara portable,

·         Mendapatkan performa yang tinggi dalam pemrograman paralel, dan

·         Menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.

Tidak ada komentar:

Posting Komentar