Parallelism Concept
Paralelisme
(parallelism) lahir dari pendekatan yang biasa dipergunakan oleh para perancang
sistem untuk menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan
kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang
dapat beroperasi secara simultan disertai dengan membentuk beberapa proses yang
bekerja secara simultan pada modul-modul perangkat keras tersebut. Secara
formal, pemrosesan paralel adalah sebuah bentuk efisien pemrosesan informasi
yang menekankan pada eksploitasi dari konkurensi kejadian-kejadian dalam proses
komputasi.
Parallelism
Concept merupakan bentuk dari komputasi yang dapat melakukan tugas secara
paralel dengan waktu yang bersamaan. 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 proses. Tingkatan tertinggi terjadi di antara banyak
pemrosesan atau pada program yang menggunakan multiprogramming, time sharing,
dan multiprocessing.
Parallel
computing dalam konsep penggunaan komputer masa kini adalah menggunakan lebih
dari satu CPU untuk menjalankan sebuah program secara simultan. Parallel
processing membuat program berjalan lebih cepat karena semakin banyak CPU
yang digunakan, maka semakin ringan pemecahan masalah masing-masing CPU.
Distributed Processing
Distributed
Processing adalah kemampuan menjalankan semua proses pengolahan data
secara bersamaan antara komputer yang berfungsi sebagai 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 lalu hasil pengolahannya digabungkan menjadi satu
penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah
maka prosesor yang lain akan mengambil alih tugasnya.
Contoh dari distributed processing adalah
komputer yang dirancang untuk tugas-tugas melaksanakan proyek, analisis
finansial, penjadwalan waktu, dan juga pengolahan data suatu server yang
tersebar di suatu wilayah.
Architectural Parallel Computer
SISD
(Single Instruction - Single Data). Komputer ini memiliki hanya satu
prosesor dan satu instruksi yang dieksekusi secara serial. Komputer ini adalah
tipe komputer konvensional. Menurut mereka tipe komputer ini tidak ada dalam
praktik komputer paralel karena bahkan mainframe pun tidak lagi menggunakan
satu prosesor. Klasifikasi ini sekedar untuk melengkapi definisi komputer
paralel. 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 Instruction - Single Data). Komputer ini memiliki satu prosesor dan
mengeksekusi beberapa instruksi secara paralel tetapi praktiknya tidak ada
komputer yang dibangun dengan arsitektur ini karena sistemnya tidak mudah
dipahami. Sampai saat ini belum ada komputer yang menggunakan model MISD.
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.
Pengantar Thread Programming
Thread adalah
sebuah alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2
proses baik proses yang sama ataupun berbeda dalam satu waktu. Sebagai contoh
sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan
sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Threading dibagi menjadi 2 yaitu :
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.
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.
Pengantar Message Passing, OpenMP
Message
Passing adalah suatu teknik bagaimana mengatur suatu alur komunikasi
messaging terhadap proses pada sistem. Message passing dalam ilmu komputer
adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel,
pemrograman-pemrograman berorientasi objek, dan komunikasi interproses. Dalam
model ini, proses dapat mengirim dan menerima pesan yang terdiri dari nol atau
lebih byte, struktur daya yang kompleks, bahkan segmen kode ke proses lainnya
dan dapat melakukan sinkronisasi.
Message
passing ini merupakan standar 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.
OpenMP adalah
sebuah antarmuka pemrogrman aplikasi (API) yang mendukung multiprocessing
shared memory pemrograman di bahasa C, C++, dan Fortran pada berbagai
arsitektur termasuk Unix dan Microsoft Windows Platform. OpenMP terdiri dari
satu set perintah kompiler, perpustakaan rutinitas, dan variabel lingkungan
yang mempengaruhi runtime.
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 daripada peningkatan
teknologi prosesor sesungguhnya dan pada akhirnya GPU menjadi General Purpose,
yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan bisa
untuk proses komputasi secara umum. Penggunaan Multi GPU dapat mempercepat
waktu proses dalam mengeksekusi program karena arsitekturnya yang natively
parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan
kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara
membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA (Compute Unified Device Architecture), merupakan sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dll.
CUDA (Compute Unified Device Architecture), merupakan sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dll.
Tidak ada komentar:
Posting Komentar