Kamis, 03 Juni 2021

Komputasi Paralel

 

Komputasi Modern
WIWIED WIDIYANINGSIH
TUGAS V-CLASS

 

Parallelism Concept
Parallelism Concept adalah sebuah teknik yang dapat meningkatkan kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang dapat beroperasi secara bersamaan, disertai dengan membentuk beberapa proses yang berkerja secara bersamaan pada modul-modul perangkat keras tersebut.

Pemrosesan parallel adalah sebuah bentuk efisien pemrosesan informasi yang menekankan pada eksploitasi dari kejadian-kejadian dalam proses komputasi. Pemrosesan parallel dapat terjadi pada berbagai tingkatan level proses. Biasanya terjadi pada level yang memiliki banyak pekerjaan yaitu pada program yang menggunakan :
Multiprogramming Sebuah metode yang dilakukan dua buah program atau lebih yang dijalankan secara serentak dalam sebuah komputer, dimana konsep ini menggunakan CPU sampai proses tersebut dalam status wait atau selesai. Pada saat itu, CPU akan berada dalam kondisi idle, supaya tidak ada waktu yang terbuang maka CPU dialihkan ke proses lain, jika proses kedua selesai, maka proses pertama yang dalam status wait akan dilanjutkan.

 

Distributed Processing
Distributed Processing adalah sebuah sistem yang menggunakan banyak komputer yang terdistribusi dan terpisah secara geografis yang digunakan untuk memecahkan berbagai macam persoalan komputasi dalam skala besar

Sistem ini membuat penggunaan banyak komputer dalam suatu jaringan menjadi lebih efektif, sehingga memaksimalkan penggunaan sumber daya komputasi. Hal ini berarti bahwa setiap klien dalam jaringan dapat mengakses seluruh data dalam jaringan tersebut, dan juga menjalankan program komputer dalam jaringan baik server maupun klien.


Karakteristik Distributed Processing

Kumpulan dari data logik yang digunakan bersama-sama.

·         Data di bagi menjadi beberapa fragment.

·         Fragment mungkin mempunyai copy ( replika ).

·         Fragment / replika nya di alokasikan pada yang digunakan.

·         Setiap site berhubungan dengan jaringan komunikasi.

·         Data pada masing-masing site dibawah pengawasan DBMS.

·         DBMS pada masing-masing site dapat mengatasi aplikasi lokal, secara otonomi.

·         Masing-masing DBMS berpastisipasi paling tidak satu global aplikasi

 

Architectural Parallel Computer

Architectural Parallel Computer adalah sebuah metode yang mengendalikan seluruh sumber daya untuk mengoptimalkan performa dan kemampuan program dalam batas yang diberikan teknologi dan biaya pada waktu tertentu. Metode ini menambahkan dimensi baru dalam pengembangan sistem komputer dengan menggunakan banyak prosesor.

Architectural Parallel Computer sebenarnya memiliki banyak pengertian, salah satunya yang dijelaskan dalam taksonomi Flynn, ia membaginya menjadi 4, yaitu:

·         SISD

Merupakan sebuah arsitektur komputer yang hanya mengeksekusi satu aliran instruksi dalam satu siklus dan hanya menggunakan satu aliran data sebagai input pada setiap siklus.

·         SIMD

Merupakan sebuah arsitektur komputer yang seluruh unit pemrosesannya mengeksekusi satu instruksi pada satu siklus dan setiap unit ini dapat mengoperasikan elemen data yang berbeda. Arsitektur ini cocok untuk menyelesaikan masalah khusus seperti pemrosesan grafis atau gambar.

·         MISD

Merupakan salah satu tipe arsitektur komputer parallel yang menggunakan banyak unit pemrosesan yang mengerjakan aliran data tunggal secara mandiri melalui jalur aliran instruksi yang terpisah.

·         MIMD

Merupakan salah satu tipe arsitektur komputer parallel yang menggunakan sejumlah prosesor yang berfungsi secara asinkronus dan mandiri. Dimana setiap prosesor yang berbeda dapat mengeksekusi instruksi yang berbeda juga dalam data yang berbeda.

 

Konsep Dasar Thread Programming

Konsep Dasar Thread Programming unit dasar dari penggunaan CPU, thread mengandung Thread ID, program counter, register set, dan stack. Sebuah Thread berbagi code section, data section, dan sumber daya sistem operasi dengan Thread lain yang dimiliki oleh proses yang sama. Thread juga sering disebut lightweight process. Sebuah proses tradisional atau heavyweight process mempunyai thread tunggal yang berfungsi sebagai pengendali. Perbedaan antara proses dengan thread tunggal dengan proses dengan thread yang banyak adalah proses dengan thread yang banyak dapat mengerjakan lebih dari satu tugas pada satu satuan waktu. Banyak software yang berjalan pada PC modern didesain secara multithreading. Sebuah aplikasi biasanya diimplementasi sebagai proses yang terpisah dengan beberapa thread yang berfungsi sebagai pengendali. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.

Kadang kala ada situasi dimana sebuah aplikasi diperlukan untuk menjalankan beberapa tugas yang serupa. Sebagai contohnya sebuah web server bisa mempunyai ratusan klien yang mengaksesnya secara concurrent. Kalau web server berjalan sebagai proses yang hanya mempunyai thread tunggal maka ia hanya bisa melayani satu klien pada pada satu satuan waktu. Bila ada klien lain yang ingin mengajukan permintaan maka ia harus menunggu sampai klien sebelumnya selesai dilayani. Solusinya adalah dengan membuat web server menjadi multithreading. Dengan ini maka sebuah web server akan membuat thread yang akan mendengar permintaan klien, ketika permintaan lain diajukan maka web server akan menciptakan thread lain yang akan melayani permintaan tersebut.

 

Java mempunyai pengunaan lain dari thread. Perlu dikeahui bahwa java tidak mempunyai konsep asynchronous. Sebagai contohnya kalau program java mencoba untuk melakukan koneksi ke server maka ia akan berada dalam keadaan block state sampai koneksinya jadi(bisa dibayangkan apa yang terjadi apabila servernya mati). Karena java tidak memiliki konsep asynchronous maka solusinya adalah dengan membuat thread yang mencoba untuk melakukan koneksi ke server dan thread lain yang pertamanya tidur selamabeberap waktu(misalnya 60 detik) kemudian bangun. Ketika waktu tidurnya habis maka ia akan bangun dan memeriksa apakah thread yang melakukan koneksi ke server masih mencoba untuk melakukan koneksi ke server, kalau thread tersebut masih dalam keadaan mencoba untuk melakukan koneksi ke server maka ia akan melakukan interrupt dan mencegah thread tersebut untuk mencoba melakukan koneksi ke server.

 

Konsep Dasar Massage Passing, OpenMP

Message Passing
Message passing itu adalah teknik untuk mengatur suatu alu komunikasi messaging terhadap proses pada sebuah sistem. Suatu proses mengirimkan message yang mewakili suatu request, Message di sampaikan ke penerima yang kemudian memproses request tsb dan mengirim pesan balasan. Kemudian, balasan tersebut memicu request lainnya, yang berlanjut pada balasan berikutnya dan seterusnya. Operasi dasar yang dibutuhkan untuk mendukung paradigma message passing adalah send dan receive. Jadi Message Passing ini bentuk komunikasi yang digunakan oleh komputasi parallel yang udah kita bahas sebelumnya. Objek dalam message passing di distribusikan menggunakan metode sistem remote doa seperti : ONC RPC , CORBA , Java RMI , DCOM , SOAP , . NET Remoting , CTO , QNX Neutrino RTOS , OpenBinder , D-Bus , Unison RTOS.

openMP(Open Multi Processing)
OpenMP adalah sebuah antarmuka pemrograman aplikasi (API) yang mendukung multi processingshared memory pemrograman di C, C++ dan Fortran pada berbagai arsitektur, termasuk Unix dan Microsoft Windows platform. OpenMP Terdiri dari satu set perintah kompiler,perpustakaan rutinitas, danvariabel lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model hibrida pemrograman paralel dapat dijalankan pada komputer cluster dengan menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan dengan menggunakan ekstensi OpenMP non-shared memory systems. 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.

Konsep Dasar Pemrograman CUDA GPU

Pada tahun 2003, tim peneliti yang dipimpin oleh Ian Buck meluncurkan Brook, model pemrograman pertama yang diadopsi secara luas untuk memperluas C dengan konstruksi data-paralel. Buck kemudian bergabung dengan Nvidia dan memimpin peluncuran CUDA pada tahun 2006, solusi komersial pertama untuk komputasi tujuan umum pada GPU. 

CUDA adalah platform komputasi paralel dan model pemrograman yang dikembangkan oleh Nvidia untuk komputasi umum pada GPU-nya sendiri (unit pemrosesan grafis). CUDA memungkinkan pengembang untuk mempercepat aplikasi intensif komputasi dengan memanfaatkan kekuatan GPU untuk bagian komputasi yang dapat diparalelkan. 

Meskipun telah ada API lain yang diusulkan untuk GPU, seperti OpenCL, dan ada GPU kompetitif dari perusahaan lain, seperti AMD, kombinasi CUDA dan Nvidia GPU mendominasi beberapa area aplikasi, termasuk pembelajaran dalam, dan merupakan dasar untuk beberapa komputer tercepat di dunia.

 GPU CUDA dan Nvidia telah diadopsi di banyak area yang membutuhkan kinerja komputasi floating-point yang tinggi, seperti yang dirangkum secara gambar pada gambar di atas. Daftar yang lebih komprehensif meliputi:

  1. Keuangan komputasi
  2. Pemodelan iklim, cuaca, dan lautan
  3. Ilmu data dan analitik
  4. Pembelajaran mendalam dan pembelajaran mesin
  5. Pertahanan dan kecerdasan
  6. Pabrikan / AEC (Arsitektur, Teknik, dan Konstruksi): CAD dan CAE (termasuk dinamika fluida komputasi, mekanika struktural komputasi, desain dan visualisasi, dan otomatisasi desain elektronik)
  7. Media dan hiburan (termasuk animasi, pemodelan, dan rendering; koreksi warna dan manajemen butir; penggabungan; penyelesaian dan efek; pengeditan; penyandian dan distribusi digital; on-air grafis; on-set, ulasan, dan alat stereo; dan grafik cuaca)
  8. Pencitraan medis
  9. Minyak dan gas
  10. Penelitian: Pendidikan tinggi dan superkomputer (termasuk kimia komputasi dan biologi, analitik numerik, fisika, dan visualisasi ilmiah)
  11. Keselamatan dan keamanan
  12. Alat dan manajemen