Komputasi Parallel atau yang biasa disebut dengan Parallel Computing merupakan suatu metode komputasi yang prosesnya membutuhkan beberapa komputer secara bersamaan untuk mendapatkan suatu informasi, biasanya hal tersebut terjadi dalam bidang misalnya keuangan, teknik informasi, atau hal-hal yang membutuhkan kapasitas besar baik dalam proses maupun komputasi yang banyak. Dalam implementasinya, Komputasi Paralel membutuhkan Algoritma, Bahasa Pemrograman, dan juga Compiler.
Contoh Komputasi Parallel :
Pada gambar diatas terdapat sebuah masalah, dimana masalah tersebut dibagi menjadi beberapa bagian lalu bagian dari masalah tersebut dibagikan ke-tiga CPU untuk diselesaikan secara bersamaan.
- Distributed Processing
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.
Pemrosesan terdistribusi adalah penggunaan lebih dari satu prosesor untuk melakukan pengolahan untuk tugas individual.
Karateristik database terditstribusi yaitu :
- Kumpulan data yang digunakan bersama secara logic tersebar pada sejumlah computer yang berbeda.
- Komputer yang dihubungkan menggunakan jaringan komunikasi.
- Data pada masing-masing situs dapat menangani aplikasi-aplikasi local secara otonom.
- Data pada masing-masing situs dibawah kendali satu DCMS.
- Masing-masing DBMS berpartisipasi dalam sedikitnya satu aplikasi global.
Contoh implementasi Distributed Processing
Dalam aplikasinya suatu sistem basis data terdistribusi banyak digunakan dalam berbagai kepentingan, yang sering dikenal dengan istilah transaksi atau perputaran dan juga pentransmisian data. Transaksi pada sistem basis data terdistribusi ini terbagi ke dalam dua jenis transaksi. Berikut ini adalah keuda jenis transaksi pada sistem basis data terdistribusi :
- Transaksi Lokal, Transaksi lokal merupakan suatu transaksi dari sebuah sistem basis data yang dilakukan pada simpul yang sama dengan lokasi dimana basis data tersebut berada. Contoh pada Transaksi lokal ini adalah update data nasabah Bank yang melakukan penarikan sali di kantor pusat. Database bank tersebut biasanya terdapat di lokasi yang berdekatan dengan kantor pusat, sehingga bentuk update yang dilakukan di kantor pusat memiliki simpul yang sama dengan database.
- Transaksi Global, Kebalikan dari transaksi lokal, transaksi global menggunakan transaksi dan transmisi data dari simpul yang berbeda dengan server atau database yang digunakan. Contoh adalah seorang nasabah melakukan penarikan saldi di Bank Cabang yang berada diluar pulau. Bank tersebut menggunakan server dan juga database yang sama, namun menggunakan simpul transmisi data yang berbeda dengan servernya.
- Architectural Parallel Computer
Arsitektur Komputer Paralel adalah sekumpulan elemen pemroses (Processing Elements) yang bekerjasama dalam menyelesaikan sebuah masalah besar. Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal dengan komputasi paralel, maka kita harus mengetahui terlebih dahulu pengertian mengenai model dari komputasi. Ada 4 model komputasi yang digambarkan pada gambar berikut :
Dalam taksonomi arsitektur paralel ada dua keluarga arsitektur paralel yang banyak digunakan adalah:
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 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.
- Single Istruction Multiple Data (SIMD)
Single Instruction Miltiple Data, komputer ini memiliki lebih dari satu processor, 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).
- Multiple Instruction Multiple Data (MIMD)
Multiple Instucrtion 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.
- 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 processor itu
- Dynamic Mutithreading, 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 platfrom ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platfromnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops.
- Pengantar Massage Passing dan OpenMP
Message Passing Interface (MPI), adalah sebuah standard pemrograman yang memungkinkan pemrograman untuk membuat seuah 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 variable 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 :
- Menulis kode paralel secara portable
- Mendapatkan performa yang tinggi dalam pemrograman paralel
- Menghadapi permasalaha yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
OpenMP
OpenMP merupakan API yang mendukung multi-platform berbagi memori multiprocessing pemrograman C, C++, dan Fortran, pada kebanyakan arsitektur prosesor dan system operasi, termasuk Solaris, AIX, HP-UX, GNU/Linux, Mac OS X, dan Wondows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD, IBM, Intel, Cray, HP, Fujitsu, Nvidia, NEC, Microsoft, Texas Instruments, Oracle Corporation, dan banyak lagi.
- Pengantar Pemrograman CUDA GPU
GPU (Graphical Processing Unit) awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja tetapi seiring dengan semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat pula kemampuan prosesor grafik tersebut. Akselerasi peningkatan teknologi GPU ini lebih cepat dari pada peningkatan teknologi prosesor sesungguhnya (CPU), dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk melakukan renderin saja melainkan bisa untuk proses komputasi secara umum.
CUDA (Compute Unified Device Architectur) adalah arsitektur komputasi paralel yang dikembangkan oleh NVIDIA. CUDA adalah mesin komputasi dalam pemrosesan grafis NVIDIA unit (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 (computer language) 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 (Central Processing Unit atau Procesor). 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.
Komponen Pendukung CUDA
Secara umum, komponen-komponen pendukung CUDA adalah:
Komponen Pendukung CUDA
Secara umum, komponen-komponen pendukung CUDA adalah:
- Aplikasi, adalah perangkat lunak yang dibuat oleh pengguna, memakai bahasa perograman khusus (kembangan C).
- Pustaka perangkat lunak, yang menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
- Perangkat keras khusus, yaitu GPU yang menyediakan mesin paralel.
- Perangkat keras CPU, sebagai mesin sekuensial.
Kelebihan CUDA:
- CUDA menggunakan bahasa "C" standar, dengan beberapa ekstensi yang simpel.
- Shared memory - CUDA menyingkapkan wilayah memory yang cepat (berukuran 16 KB) yang dapat di bagi diantara thread-thread yang ada. Hal ini dapat digunakan sebagai user-managed-cache, sehingga mengaktifkan bandwidth yang lebih besar (dari besaran bandwidth yang dimungkinkan), menggunakan texture loops.
- Proses download dan readbacks yang lebih cepat, dari dan ke GPU.
- Support penuh terhadap operasi integer dan bitwise.
Kelemahan CUDA:
- CUDA tidak support texture rendering.
- Bus Bandwidth dan latensi antara CPU dengan GPU bisa jadi bottleneck (tidak imbang).
- CUDA hanya terdapat pada GPU Nvidi.
Referensi :
Komentar
Posting Komentar