Komputasi Paralel

Komputasi Paralel

    Komputasi Paralel (Parallel Computing) adalah sebuah teknik dalam melakukan komputasi secara bersamaan dengan menggunakan beberapa komputer. Komputasi paralel digunakan ketika akan melakukan pengolahan data atau memproses komputasi yang dalam jumlah banyak dan kompleks. 

Komputasi Paralel memiliki cara kerja sebagai berikut :
  • Masalah dipecah menjadi beberapa bagian yang dapat diselesaikan secara bersamaan.
  • Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi.
  • Instruksi dari setiap bagian dijalankan secara bersamaan pada prosesor yang berbeda.
  • Mekanisme kontrol / koordinasi keseluruhan digunakan.

Tujuan Komputasi Paralel

    Tujuan dalam menggunakan Komputasi Paralel adalah untuk meningkatkan performa dalam melakukan komputasi, yaitu mempersingkat waktu eksekusi program yang menggunakan komputasi serial. Dimana cara kerja pada komputasi serial dalam melakukan komputasi adalah sebagai berikut :

  • Masalah dipecah menjadi serangkaian instruksi yang terpisah
  • Instruksi dieksekusi secara berurutan satu demi satu
  • Dieksekusi pada satu prosesor
  • Hanya satu instruksi yang dapat dijalankan kapan saja
    Oleh karena itu, menggunakan komputasi paralel memberikan beberapa keuntungan, yaitu :
  • Menghemat waktu atau uang, memecahkan masalah yang lebih besar atau lebih kompleks.
  • Memberikan concurrency (Kemampuan dalam memproses dua atau lebih suatu masalah yang terjadi bersamaan pada waktu yang sama).
  • Mengambil keuntungan dari sumber daya non-lokal (Menggunakan sumber daya komputasi di jaringan area luas, atau bahkan Internet ketika sumber daya komputasi lokal langka atau tidak mencukupi).
  • Membuat penggunaan hardware paralel lebih baik (Pada saat ini komputer modern atau laptop sudah menggunakan arsitektur paralel dengan banyak prosesor atau inti).
    Tetapi komputasi paralel sebagai solusi untuk menyingkat waktu yang dibutuhkan guna mengeksekusi program mempunyai beberapa hambatan. Diantara hambatan nya antara lain :
  • Hukum Amdahl : tidak akan pernah mencapai kesempurnaan dalam percepatan waktu ekesekusi program dengan komputasi parallel, sebab selalu ada bagian program yang harus dieksekusi secara serial.
  • Hambatan akibat beban jaringan : masalah ini muncul karena ketika suatu task membutuhkan data dari task lainnya. Dikirim melalui jaringan dimana kecepatan transfer data kurang dari kecepatan prosesor yang mengeksekusi, ini lah penyebab task harus menunggu hingga data sampai terlebih dahulu, sebelum mengeksekusi.
  • Hambatan yang mengenai dengan beban waktu untuk inisiasi task, terminasi.

Bidang-Bidang Yang Menggunakan Komputasi Paralel

Science and Engineering

    Secara historis, komputasi paralel telah dianggap sebagai "komputasi kelas atas", dan telah digunakan untuk memodelkan masalah yang sulit di banyak bidang sains dan teknik, seperti :
  1. Atmosfer, Bumi, Lingkungan.
  2. Fisika - terapan, nuklir, partikel, materi terkondensasi, tekanan tinggi, fusi, fotonik.
  3. Biosains, Bioteknologi, Genetika.
  4. Kimia, Ilmu Molekuler.
  5. Geologi, Seismologi.
  6. Teknik Mesin - dari prostetik hingga pesawat ruang angkasa.
  7. Teknik Elektro, Desain Sirkuit, Mikroelektronika.
  8. Ilmu Komputer, Matematika.
  9. Sistem Pertahanan, Senjata.

                Industrial and Commercial

                    Saat ini, aplikasi komersial memberikan dorongan yang sama atau lebih besar dalam pengembangan komputer yang lebih cepat. Aplikasi ini membutuhkan pemrosesan data dalam jumlah besar dengan cara yang canggih. Sebagai contoh:
                1. "Big Data", database, penambangan data (Data Mining).
                2. Kecerdasan Buatan (AI).
                3. Eksplorasi minyak.
                4. Mesin pencari web (Search Engine Web), layanan bisnis berbasis web.
                5. Pencitraan dan diagnosis medis.
                6. Desain farmasi.
                7. Pemodelan keuangan dan ekonomi.
                8. Manajemen perusahaan nasional dan multinasional.
                9. Grafik canggih dan virtual reality, khususnya di industri hiburan.
                10. Video berjaringan (Video Call) dan teknologi multi-media.

                Arsitektur Komputasi Paralel

                    Taksonomi Flynn membagi arsitektur komputer paralel dengan menggunakan sudut pandang instruksi dan data, sehingga terdapat empat jenis arsitektur komputer paralel :

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

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

                • 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. Beberapa kemungkinan penggunaannya adalah :
                1. Filter frekuensi yang beroperasi pada aliran sinyal tunggal.
                2. Algoritma kriptografi mencoba memecahkan pesan berkode tunggal.

                • 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. Model MIMD kebanyakan digunakan pada superkomputer saat ini, cluster komputer paralel berjaringan dan "grid", komputer SMP multi-prosesor, PC multi-core. Berikut adalah beberapa komputer yang menggunakan model MIMD, yaitu IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

                Arsitektur Memori Pada Komputasi Paralel

                    Pada umumnya, ada dua buah arsitektur memori pada komputer paralel, yaitu shared memory dan distributed memory.

                • 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 :
                1. Uniform Memory Access (UMA) : setiap prosesor memiliki hak pengaksesan yang seragam dengan prosesor lain.
                2. 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.
                    Komunikasi data pada sistem paralel memori terdistribusi, memerlukan alat bantu komunikasi. Alat bantu yang sering digunakan oleh sistem seperti PC Jaringan pada saat ini adalah standar MPI (Message Passing Interface) atau standar PVM (Parallel Virtual Machine)yang keduanya bekerja diatas TCP/IP communication layer. Kedua standar ini memerlukan fungsi remote access agar dapat menjalankan program pada masing-masing unit prosesor.

                • Parallel Virtual Machine (PVM)
                    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 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.
                • Message Passing Interface (MPI)

                    MPI (Message Passing Interface) adalah spesifikasi API (Application Programming Interface) yang memungkinkan terjadinya komunikasi antar komputer pada network dalam usaha untuk menyelesaikan suatu tugas. Paradigma Message – Passing dengan implementasi MPI memberikan suatu pendekatan yang unik dalam membangun suatu software dalam domain fungsi tertentu, yang dalam hal ini pada lingkungan sistem terdistribusi, sehingga memberikan kemampuan pada produk software yang dibangun diatas middleware tersebut untuk dapat mengeksploitasi kemampuan jaringan komputer dan komputasi secara paralel.

                    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.

                Secara umum MPI memliki tujuan sebagai berikut :
                1. MPI akan menjadi sebuah library untuk membangun program aplikasi dan bukan distributed operating system.
                2. MPI akan mendukung thread-safe yang penting dalam symmetric multiprocessor pada lingkungan jaringan komputer yang heterogen.
                3. MPI akan mampu untuk men-deliver high-performance computing.
                4. MPI akan bersifat modular, untuk mengakselerasi development pustaka paralel yang portable.
                5. MPI akan bersifat extensible, sehingga dapat terus dikembangkan dan memenuhi kebutuhan komputasi masa akan datang.
                6. MPI akan mendukung heterogeneos komputasi.
                7. MPI akan memiliki semantic behavior yang telah terspesifikasi dengan jelas, sehingga dapat menghindari beberapa permasalahan kritis seperti race-conditions, dead-lock dsb.


                Sumber Literasi :

                • Introduction to Parallel Computing Tutorial, https://hpc.llnl.gov/training/tutorials/introduction-parallel-computing-tutorial#Whatis
                • Parallel Computation, https://wikishare27.wordpress.com/pararel-computation/
                • Komputasi Paralel, https://tugasskuliah.wordpress.com/2019/04/14/komputasi-paralel/
                • Pengertian Komputasi dan Parallel Processing Beserta Hubungan antar Keduanya, https://ebookrudy.wordpress.com/2014/06/09/pengertian-komputasi-dan-parallel-processing-beserta-hubungan-antar-keduanya/








                Komentar