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:
- Keuangan komputasi
- Pemodelan iklim, cuaca, dan lautan
- Ilmu data dan analitik
- Pembelajaran mendalam dan pembelajaran mesin
- Pertahanan dan kecerdasan
- Pabrikan / AEC (Arsitektur, Teknik, dan Konstruksi): CAD dan CAE (termasuk dinamika fluida komputasi, mekanika struktural komputasi, desain dan visualisasi, dan otomatisasi desain elektronik)
- 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)
- Pencitraan medis
- Minyak dan gas
- Penelitian: Pendidikan tinggi dan superkomputer (termasuk kimia komputasi dan biologi, analitik numerik, fisika, dan visualisasi ilmiah)
- Keselamatan dan keamanan
- Alat dan manajemen