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 :
· 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)
· 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:
· Asymmetric Multiprocessing (ASMP)
· Symmetric Multiprocessing (SMP)
· ClusteringPoliteknik Telkom Sistem Komputer
2. Berdasarkan aliran instruksi dan datanya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
· SISD (Single Instruction on Single Data Stream)
· SIMD (Single Instruction on Multiple Data Stream)
· MISD (Multiple Instruction on Single Data Stream)
· MIMD (Multiple Instruction on Multiple Data Stream)
3. Berdasarkan kedekatan antar prosesor, pemrosesan parallel dapat dibagi dalam beberapa jenis:
· Multikomputer (Loosely Coupled/ local memory) dengan memori yang terdistribusi
· Multiprosesor (Tightly Coupled/ global memory) dengan memori yang dapat digunakan bersama (shared memory)
Distributed Processing
Mengerjakan semua proses pengolahan data secara bersamaantara komputer pusat dengan beberapa komputer yang lebihkecil dan saling dihubungkan melalui jalur komunikasi. Setiapkomputer tersebut memiliki prosesor mandiri sehingga mampumengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total.Jika salah satu prosesor mengalami kegagalan atau masalahyang lain akan mengambil alih tugasnya.
Beberapa keunggulan metode ini adalah waktu idle prosesor pusat lebih sedikit. Lebih responsive terhadap solusi atau masalah yang bisa saja muncul saat pengolahan data. Sedangkan kekurangan metode ini adalah biaya fasilitas yang cukup mahal, terminal output input yang seringkali lambat dan tidak efisien, keamanan kurang terjaga.
Contoh dari Distributed Data Processing System :
ATM, komputer yang dirancang untuk tugas-tugas melaksanakan proyek, analisis finansial, penjadwalan waktu dan akuntansi. Contoh lainnya, pengolahan data pada server yahoo yang tersebar hampir di seluruh dunia secara distribusi, setiap wilayah mempunyai server masing-masing. Seperti di indonesia mempunyai server tersendiri sehingga pengolahan data tidak di pusat melainkan di wilayah masing-masing, dll.
Architectural Parallel Computer
Arsitektur komputer paralel ada beberapa versi pengertian. Berikut merupakan penjelasan 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.
Pengantar Thread Programming
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.
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.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.
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. Nested parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur katak) sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.
Pengantar Massage Passing, OpenMP
Message Passing Interface (MPI)
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel.
MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain adalah :
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel, dan
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak
begitu cocok dengan model data paralel.
OpenMP
OpenMP (Open Multi Processing) adalah sebuah API (Application Programming Inteface) yang mendukung pemrograman dalam bahasa pemrograman C, C++, dan FORTRAN. OpenMP diusulkan dan dirancang untuk mesin dengan arsitektur multi-processor, multi-core, dan sharedmemory. OpenMP mendefinisikan model portabel dan skalabel dengan antarmuka yang sederhana dan fleksibel untuk mengembangkan aplikasi paralel pada platform dari desktop hingga supercomputer.
OpenMP menyediakan abstraksi atas detail-detail mengenai cara eksekusi thread di level rendah. OpenMP mendukung paralelisme bertingkat dengan kemampuan setiap thread yang berjalan untuk membuat thread-thread turunannya sendiri. Jika tidak digunakan dengan benar paralelisme bertingkat dapat menyebabkan kelebihan permintaan prosesor, yang dapat menyebabkan penurunan kinerja yang signifikan (Mathews & Abraham, 2017).
Model eksekusi paralel yang diterapkan oleh OpenMP yaitu model fork-join. Dalam model ini terdapat dua thread. Pertama adalah thread utama yang menjalankan proses tunggal yang merupakan proses awal saat eksekusi dimulai. Ini berjalan secara berturut-turut sebelum bagian paralel pertama ditemukan. Selanjutnya sebelum memasuki bagian paralel thread kedua dibuat dan dinamakan grup thread paralel. Baris kode yang terdapat pada bagian paralel dijalankan secara paralel di antara grup thread. Setelah thread ini menyelesaikan tugas-tugasnya proses sinkronisasi dilakukan kemudian dihentikan dan hanya thread utama yang tersisa.
Mode Hybrid menggabungkan lebih dari satu model pemrograman, contoh umum dari model hybrid adalah kombinasi dari message parsing interface (MPI) dengan model thread (OpenMP).
Pengantar Pemrograman CUDA GPU
GPU Computing
Graphic Processing Unit (GPU) berfungsi sebagai render grafis terdedikasi dalam kesatuan sistem hardware PC atau Notebook. GPU bisa berada pada Video Card khusus (VGA Card) atau terintegrasi dalam Motherboard berupa Integrated GPU. GPU berfungsi untuk mengolah dan memanipulasi grafis pada CPU (Central Processing Unit), untuk nantinya ditampilkan dalam bentuk Visual Grafis pada Monitor (output). Pada saat ini kegunaan dari GPU tidak hanya digunakan dalam pemrosesan yang berhubungan dengan grafis , tetapi digunakan juga sebagai Processing Unit, dimana dalam hal ini GPU akan membantu CPU dalam mengolah data
CUDA
CUDA adalah arsitektur komputasi paralel yang dikembangkan oleh NVIDIA. CUDA adalah mesin komputasi dalam pemrosesan grafis NVIDIA unit atau GPU yang dapat diakses oleh pengembang perangkat lunak melalui varian dari bahasa pemrograman standar industri. CUDA merupakan kumpulan program-program yang menerjemahkan teks dalam bentuk bahasa komputer berupa source language/source code, ke dalam bentuk bahasa komputer yang lain (target language/object code). Arsitektur CUDA memungkinkan GPU (yang telah support CUDA) menjadi arsitektur terbuka seperti layaknya CPU. Hanya, tidak seperti CPU, GPU memiliki arsitektur banyak-inti yang paralel. Setiap inti memiliki kemampuan untuk menjalankan ribuan “thread” secara simultan. Jika aplikasi yang dijalankan sesuai dengan arsitektur ini, GPU dapat menyediakan keuntungan yang lebih besar dari segi performa proses aplikasi tersebut.
Adapun keunggulan dari CUDA :
CUDA menggunakan bahasa “C” standar, sehingga mudah dipelajari.
Data Transfer antara CPU dan GPU sangat cepat sehingga dapat mengurangi latency.
Mempunyai shared memory pada setiap multiprocessor dengan kecepatan akses tinggi.
Hemat biaya dan daya listrik
Contoh Kasus masalah Dari Penerapan Cloud Pada Perusahaan
untuk membuat dokumen kita harus menggunakan software word processing seperti Microsoft Office yang harganya lumayan mahal, kini kita dapat membuat dokumen dengan mudah dan gratis, yaitu dengan menggunakan Google Docs. Google Docs merupakan layanan cloud computing milik google yang berfungsi untuk membuat berbagai jenis dokumen. kita dapat menyimpan dokumen-dokumen kita pada server dan mengaksesnya dimanapun kita berada.
contoh lain dari layanan seperti ini adalah Office 365 milik Microsoft. aplikasi ini merupakan aplikasi berbayar dengan fitur-fitur yang sangat membantu bagi para pengusaha. fitur yang tersedia diantaranya adalah SharePoint Online, Exchange Online, Lync Online dan Office Professional Plus. Office 365 ini memungkinkan penggunanya untuk bekerjasama dalam mengolah dokumen, e -mail, konferensi via web, dan berbagi jadwal acara di kalender.
DAFTAR PUSTAKA
https://www.tulisandhika.my.id/2017/07/makalah-paralel-processing.html
http://repository.unhas.ac.id/id/eprint/12472/2/D032171020_tesis_15-11-2021%20bab%201-2.pdf
http://etheses.uin-malang.ac.id/11024/1/11650093.pdf
https://repository.uksw.edu/bitstream/123456789/6945/2/T1_622009010_BAB%20II.pdf
Teknologi Cloud Computing ( Studi Kasus) | MENUJU TRIDARMA YANG BERKUALITAS (wordpress.com)
https://fikrinm93.wordpress.com/2016/06/17/242/