Parallel
Computation
KELOMPOK 2:
CARLA RIZKI HANDAYANI (51412555)
GUSTAV SRI RAHARJO (53412216)
PANDY APRIYANDI (55412635)
RISAN PUTRA ANGGARA (56412451)
ULFA ALFIANITA (57412511)
Parallel
Concept
Parallel Concept
Komputasi Paralel:
Teknik melakukan komputasi
secara bersamaan dengan
memanfaatkan beberapa
komputer independen secara
bersamaan.
* Kapasitas yang diperlukan besar
* Pengolahan data jumlah besar
(Keuangan & Bioinformatika)
* Proses komputasi yag banyak
(Kalkulasi Numerik)
Parallel Concept
Komputasi Paralel:
Penggunaan teknik dari beberapa sumber
komputasi untuk memecahkan masalah
komputasi.
* Masalah dipecahkan menjadi beberapa bagian diskrit
yang dapat diselesaikan secara bersamaan.
* Setiap bagian selanjutnya dipecah menjadi
serangkaian instruksi.
* Instruksi dari setiap bagian dieksekusi
secara bersamaan pada prosesor yang berbeda.
* Mekanisme kontrol atau koordinasi digunakan.
Parallel Concept
Serial Problem
Parallel Problem
Parallel Concept
Masalah Komputasi:
* Dipisah-pisahkan menjadi beberapa
potongan-potongan diskrit pekerjaan
yang dapat diselesaikan secara
bersamaan.
* Mengeksekusi beberapa instruksi
dalam waktu bersamaan.
* Diselesaikan dalam waktu yang lebih
cepat
dari komputasi tunggal.
Arsitektural Komputer Paralel
 Berdasarkan jumlah aliran instruksi dan aliran datanya, Michael J. Flynn
pada tahun 1966 mengelompokkan komputer digital menjadi empat
golongan besar, yaitu SISD, SIMD, MISD dan MIMD.
 Aliran instruksi (instruction stream) adalah urutan instruksi yang
dieksekusi oleh sistem komputer
 Aliran data (data stream) adalah urutan data yang diolah termasuk
data masukan, bagian dari data, maupun data sementara yang
dipanggil atau digunakan oleh aliran instruksi.
SISD (Single Instruction Stream,
Single Data Stream)
 Memiliki satu aliran instruksi dan satu aliran data.
 Sebuah komputer tunggal yang mempunyai satu unit control, satu unit
prosesor dan satu unit memory
 Instruksi yang dikerjakan secara berurut namun boleh juga secara
overlap pada saat tahapan eksekusi
 Satu alur instruksi di-decode untuk satu alur data tunggal
Control Processor Memory
Insruction
Stream
Data
Stream
SIMD (Single Instruction Stream,
Multiple Data Stream)
 Satu unit control dan memory untuk banyak prosesor
 Komputer yang memiliki banyak prosesor dibawah supervise satu unit
common control.
 Setiap prosesor akan menerima instuksi yang sama dari unit control
tetapi beroperasi pada data yang berbeda
Contro
l
Processor Shared
Memory
or
Interconnectio
n
Network
Insruction
Stream
Data
Stream
Processor
Processor
Data
Stream
Data
Stream
MISD (Multiple Instruction Stream,
Single Data Stream)
 Komputer yang mempunyai tiga unit control dan tiga unit prosesor
 Setiap prosesor akan menerima instruksi yang berbeda dari control
 Beroperasi pada data yang sama
Control Processor
Memory
Insruction
Stream
Processor
Processor
Data
Stream
Control
Control
Insruction
Stream
Insruction
Stream
MIMD (Multiple Instruction Stream,
Multiple Data Stream)
 Memproses beberapa program dalam waktu yang sama
 Mliki dua grup yaitu
 Multiprocessor dengan menggunakan memori secara bersama
 Multicomputer
Control Processor
Insruction
Stream
Processor
ProcessorControl
Control
Insruction
Stream
Insruction
Stream
Shared
Memory
or
Interconnectio
n
Network
Data
Stream
Data
Stream
Data
Stream
Distribute Processing
Definisi
Distribute Processing / Distribute Computing / pemrosesan
terdistribusi merupakan cara untuk mempercepat
pengolahan data atau informasi dengan mendistribusikan
pekerjaan atau instruksi ke banyak komputer yang telah
dipilih untuk membuat pemrosesan yang lebih cepat.
Tujuan
Tujuan dari komputasi terdistribusi adalah menyatukan
kemampuan dari sumber daya yang terpisah secara fisik, ke
dalam suatu sistem gabungan yang terkoordinasi dengan
kapasitas yang jauh melebihi dari kapasitas individual
komponen-komponennya. Tujuan lain yang ingin dicapai
dalam komputasi terdistribusi adalah transparansi.
Transparansi ini memungkinkan pengguna sistem
terdistribusi untuk melihat sumber daya yang terpisah
tersebut seolah-olah sebagai satu sistem komputer tunggal,
seperti yang biasa digunakannya.
Distributed Computing vs Parallel Computing
Dalam komputasi terdistribusi, setiap prosesor
memiliki memori sendiri (memori terdistribusi).
Informasi dipertukarkan dengan melewati pesan
antara prosesor.
Dalam komputasi paralel, semua prosesor
mungkin memiliki akses ke memori bersama untuk
bertukar informasi antara prosesor.
Arsitektur
 Client-server:
arsitektur di mana klien menghubungi server untuk data kemudian
memformat dan menampilkannya kepada pengguna. Input dari klien
disimpan kembali ke server ketika itu merupakan perubahan yang
permanen.
 Three-tier:
arsitektur yang memindahkan kecerdasan klien ke tingkat menengah.
 n-tier:
arsitektur yang mengacu untuk aplikasi web yang meneruskan
permintaan ke layanan enterprise lainnya.
 Peer-to-peer:
arsitektur di mana tidak ada mesin-mesin khusus yang menyediakan
layanan atau mengelola sumber daya jaringan. Sebaliknya semua
tanggung jawab secara seragam dibagi di antara semua mesin, yang
dikenal sebagai peer. Peers dapat melayani baik sebagai klien dan
Pengantar Thread
Programming
Penjelasan
 Dalam pemrograman komputer, sebuah thread adalah sebuah alur
kontrol dari sebuah proses dan 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.
Contoh
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
 Dynamic Multithreading
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 balancing secara otomatis.
Walaupun platformnya masih dalam pengembangan namun
secara umum mendukung dua fitur : nested parallelism dan
parallel loops.
Message Passing
Message passing adalah paradigma fundamental untuk
aplikasi DS. Suatu proses mengirimkan message yang
mewakili suatu request, message di sampaikan ke penerima
yang kemudian memproses request tsb dan mengirim pesan
balasan. Kemudian, balasan tsb memicu request lainnya,
yang berlanjut pada balasan berikutnya dan seterusnya.
Operasi dasar yang dibutuhkan untuk mendukung
paradigma message passing adalah send dan receive.
Metode pengiriman pesan
 Synchronous Message Passing
Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk
menerima pesan. Oleh karena itu tidak ada buffering. Selain itu Pengirim tidak
bisa mengirim pesan untuk dirinya sendiri.
 Ansynchronous Message Passing
Pengirim akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli
ketika penerima belum siap untuk menerima pesan.
Oleh karena itu diperlukan buffering untuk menampung pesan sementara sampai
penerima siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya
sendiri.
Open MP
OpenMP adalah Application Programing Interface (API)
yang mendukung pemrograman multiprosesing
shared memory dalam bahasa C/C++ dan fortran pada
berbagai arsitektur dan sistem operasi diantaranya: Solaris,
AIX, HP-UX,GNU/Linux, Mac OS X, dan Windows.
OpenMP adalah model portabel dan skalabel yang
memberikan interface sederhana dan fleksibel bagi
programer shared memory dalam membangun aplikasi
paralel. Program multithread dapat ditulis dalam berbagai
cara. Beberapa diantaranya memungkinkan untuk melakukan
interaksi yang kompleks antar thread. OpenMP mencoba
untuk memberikan kemudahan pemrograman serta
membantu dalam menghindari kesalahan program, melalui
pendekatan terstruktur. Pendekatan ini dikenal sebagai
model pemrograman fork-join.
Secara default OpenMP telah menyediakan mekanisme
untuk menunggu thread dalam suatu tim thread sehingga
semua thread menyelesaikan tugasnya dalam region,
kemudian dapat melanjutkan ke proses selanjutnya.
Mekanisme ini dikenal sebagai barrier.
GPU
(Graphical Processing Unit )
CUDA erat kaitannya dengan GPU.
GPU mempercepat, memanipulasi
dan mengubah memori yang
berfungsi mempercepat pemuatan
grafis.
GPU awalnya adalah sebuah prosesor yang berfungsi
khusus untuk melakukan rendering pada kartu grafik saja,
tetapi saat ini juga dalam perhitungan fisika permainan
(efek fisik seperti puing-puing, asap, api, cairan).
GPU mempercepat aplikasi non-grafis dalam biologi
komputasi, kriptografi, dan bidang lainnya.
GPU vs CPU
Akselerasi peningkatan teknologi GPU ini lebih cepat
daripada peningkatan teknologi prosesor sesungguhnya
(CPU), dan pada akhirnya GPU menjadi General Purpose.
 Terdiri atas banyak core
 Arsitektur yang sederhana
 Harganya relatif murah
 Diproduksi massal untuk berbagai
keperluan misal penelitian
CUDA
(Compute Unified Device Architecture)
CUDA merupakan sebuah arsitektur komputer parallel yang
dibuat oleh NVIDIA agar GPU yang ada tidak hanya untuk
mengolah grafis melainkan juga dapat untuk tujuan umum.
GPU yang ada saat ini seperti ATI pun sudah memiliki
banyak processor di dalamnya. Pada ATI, skema yang mereka
bangun disebut ATI Stream.
Produk NVIDIA CUDA
• GeForce GTX 280
• GTX 260
• 9800 GX2
• 9800 GTX+
• 9800 GTX
• 9800 GT
• 9600 GSO
• 9600 GT
• 9500 GT
• 9400 GT
• 9400 mGPU
• 9300 mGPU
• 8800 Ultra
• 8800 GTX
• 8800 GTS
• 8800 GT
• 8800 GS
• 8600 GTS
• 8600 GT
• 8500 GT
• 8400 GS
• 8300 mGPU
• 8200 mGPU
• 8100 mGPU
• dll
Sumber : http://nvidia.com/cuda
Aplikasi yang mendukung CUDA
• FaceWorks
• DenoiseMyImage
• PowerDVD 9
• PowerDVD 10
• Media Player Classic Home Cinema
• Adobe Flash Player 10.0
• MediaShow 5
• 3D Coat
• Nebula 3
• Nero Move it
• PowerDirector 7
• dll
Sumber :
http://www.geforce.com/hardware/technology/cuda/applications
Keunggulan CUDA
• Tersebar Membaca
Kode dapat membaca dari alamat sewenang-wenang
dalam memori.
• Memori Bersama
CUDA memperlihatkan cepat memori bersama wilayah
(sampai 48KB per Multi-Processor) yang dapat dibagi
di antara benang.
• Download Cepat
Download lebih cepat dan readbacks ke dan dari GPU.
• Dukungan penuh
Dukungan penuh untuk integer dan bitwise operasi,
termasuk pencarian tekstur bulat.
Pemrograman CUDA
• CUDA C / C + + dengan NVCC
• CUDA Fortran dengan PGI CUDA Fortran Compiler
• Khronos Grup 's OpenCL
• Microsoft DirectCompute
• C++ AMP
• Pihak Ketiga (Python , Perl , Fortran , Java , Ruby , Lua ,
Haskell, Matlab , dan IDL)
Belajar Pemrograman CUDA
Sebagai tahap awal dalam belajar pemrograman paralel
dengan memanfaatkan CUDA sebaiknya menggunakan
bahasa pemrograman C atau C++. CUDA C telah menjadi
bahasa pemrograman khusus pertama yang
dikembangkan oleh suatu perusahaan GPU.
Sumber:
http://developer.nvidia.com/suggested-reading
http://developer.nvidia.com/cuda-training
Persiapan untuk membuat aplikasi dengan CUDA C
(Win, Linux, Mac):
• CUDA-enabled graphics processor
• NVIDIA device driver
• CUDA development toolkit
• Standard C compiler
• Visual Studio (Windows) → c1.exe
Sumber :
http://developer.nvidia.com/cuda-downloads
Preparation
Program Sederhana CUDA C
Hal khusus dalam kode program yang menggunakan CUDA
C adalah adanya kernel call. Sebagai contoh adalah cuplikan
kode berikut.
Penambahan variabel __global__ pada fungsi kernel()
berfungsi untuk menunjukkan pada compiler bahwa
program tersebut dikompilasi untuk berjalan pada
device dan bukan pada host.
Parallel Concept
Sumber:
http://akhmadilman46.blogspot.co.id/2013/05/komputasi-paralel.html
https://computing.llnl.gov/tutorials/parallel_comp/#Whatis
https://andri102.wordpress.com/game/soft-skill/konsep-komputasi-parallel-
processing/

Kelompok 1

  • 1.
    Parallel Computation KELOMPOK 2: CARLA RIZKIHANDAYANI (51412555) GUSTAV SRI RAHARJO (53412216) PANDY APRIYANDI (55412635) RISAN PUTRA ANGGARA (56412451) ULFA ALFIANITA (57412511)
  • 2.
  • 3.
    Parallel Concept Komputasi Paralel: Teknikmelakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. * Kapasitas yang diperlukan besar * Pengolahan data jumlah besar (Keuangan & Bioinformatika) * Proses komputasi yag banyak (Kalkulasi Numerik)
  • 4.
    Parallel Concept Komputasi Paralel: Penggunaanteknik dari beberapa sumber komputasi untuk memecahkan masalah komputasi. * Masalah dipecahkan menjadi beberapa bagian diskrit yang dapat diselesaikan secara bersamaan. * Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi. * Instruksi dari setiap bagian dieksekusi secara bersamaan pada prosesor yang berbeda. * Mekanisme kontrol atau koordinasi digunakan.
  • 5.
  • 6.
    Parallel Concept Masalah Komputasi: *Dipisah-pisahkan menjadi beberapa potongan-potongan diskrit pekerjaan yang dapat diselesaikan secara bersamaan. * Mengeksekusi beberapa instruksi dalam waktu bersamaan. * Diselesaikan dalam waktu yang lebih cepat dari komputasi tunggal.
  • 7.
    Arsitektural Komputer Paralel Berdasarkan jumlah aliran instruksi dan aliran datanya, Michael J. Flynn pada tahun 1966 mengelompokkan komputer digital menjadi empat golongan besar, yaitu SISD, SIMD, MISD dan MIMD.  Aliran instruksi (instruction stream) adalah urutan instruksi yang dieksekusi oleh sistem komputer  Aliran data (data stream) adalah urutan data yang diolah termasuk data masukan, bagian dari data, maupun data sementara yang dipanggil atau digunakan oleh aliran instruksi.
  • 8.
    SISD (Single InstructionStream, Single Data Stream)  Memiliki satu aliran instruksi dan satu aliran data.  Sebuah komputer tunggal yang mempunyai satu unit control, satu unit prosesor dan satu unit memory  Instruksi yang dikerjakan secara berurut namun boleh juga secara overlap pada saat tahapan eksekusi  Satu alur instruksi di-decode untuk satu alur data tunggal Control Processor Memory Insruction Stream Data Stream
  • 9.
    SIMD (Single InstructionStream, Multiple Data Stream)  Satu unit control dan memory untuk banyak prosesor  Komputer yang memiliki banyak prosesor dibawah supervise satu unit common control.  Setiap prosesor akan menerima instuksi yang sama dari unit control tetapi beroperasi pada data yang berbeda Contro l Processor Shared Memory or Interconnectio n Network Insruction Stream Data Stream Processor Processor Data Stream Data Stream
  • 10.
    MISD (Multiple InstructionStream, Single Data Stream)  Komputer yang mempunyai tiga unit control dan tiga unit prosesor  Setiap prosesor akan menerima instruksi yang berbeda dari control  Beroperasi pada data yang sama Control Processor Memory Insruction Stream Processor Processor Data Stream Control Control Insruction Stream Insruction Stream
  • 11.
    MIMD (Multiple InstructionStream, Multiple Data Stream)  Memproses beberapa program dalam waktu yang sama  Mliki dua grup yaitu  Multiprocessor dengan menggunakan memori secara bersama  Multicomputer Control Processor Insruction Stream Processor ProcessorControl Control Insruction Stream Insruction Stream Shared Memory or Interconnectio n Network Data Stream Data Stream Data Stream
  • 12.
  • 13.
    Definisi Distribute Processing /Distribute Computing / pemrosesan terdistribusi merupakan cara untuk mempercepat pengolahan data atau informasi dengan mendistribusikan pekerjaan atau instruksi ke banyak komputer yang telah dipilih untuk membuat pemrosesan yang lebih cepat.
  • 14.
    Tujuan Tujuan dari komputasiterdistribusi adalah menyatukan kemampuan dari sumber daya yang terpisah secara fisik, ke dalam suatu sistem gabungan yang terkoordinasi dengan kapasitas yang jauh melebihi dari kapasitas individual komponen-komponennya. Tujuan lain yang ingin dicapai dalam komputasi terdistribusi adalah transparansi. Transparansi ini memungkinkan pengguna sistem terdistribusi untuk melihat sumber daya yang terpisah tersebut seolah-olah sebagai satu sistem komputer tunggal, seperti yang biasa digunakannya.
  • 15.
    Distributed Computing vsParallel Computing Dalam komputasi terdistribusi, setiap prosesor memiliki memori sendiri (memori terdistribusi). Informasi dipertukarkan dengan melewati pesan antara prosesor. Dalam komputasi paralel, semua prosesor mungkin memiliki akses ke memori bersama untuk bertukar informasi antara prosesor.
  • 16.
    Arsitektur  Client-server: arsitektur dimana klien menghubungi server untuk data kemudian memformat dan menampilkannya kepada pengguna. Input dari klien disimpan kembali ke server ketika itu merupakan perubahan yang permanen.  Three-tier: arsitektur yang memindahkan kecerdasan klien ke tingkat menengah.  n-tier: arsitektur yang mengacu untuk aplikasi web yang meneruskan permintaan ke layanan enterprise lainnya.  Peer-to-peer: arsitektur di mana tidak ada mesin-mesin khusus yang menyediakan layanan atau mengelola sumber daya jaringan. Sebaliknya semua tanggung jawab secara seragam dibagi di antara semua mesin, yang dikenal sebagai peer. Peers dapat melayani baik sebagai klien dan
  • 17.
  • 19.
    Penjelasan  Dalam pemrogramankomputer, sebuah thread adalah sebuah alur kontrol dari sebuah proses dan 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.
  • 20.
    Contoh Threading / Threadadalah 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  Dynamic Multithreading
  • 21.
    Static Threading Teknik inibiasa 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.
  • 22.
    Dynamic Multithreading Teknik inimerupakan 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 balancing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops.
  • 23.
    Message Passing Message passingadalah paradigma fundamental untuk aplikasi DS. Suatu proses mengirimkan message yang mewakili suatu request, message di sampaikan ke penerima yang kemudian memproses request tsb dan mengirim pesan balasan. Kemudian, balasan tsb memicu request lainnya, yang berlanjut pada balasan berikutnya dan seterusnya. Operasi dasar yang dibutuhkan untuk mendukung paradigma message passing adalah send dan receive.
  • 24.
    Metode pengiriman pesan Synchronous Message Passing Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk menerima pesan. Oleh karena itu tidak ada buffering. Selain itu Pengirim tidak bisa mengirim pesan untuk dirinya sendiri.  Ansynchronous Message Passing Pengirim akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan. Oleh karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.
  • 25.
    Open MP OpenMP adalahApplication Programing Interface (API) yang mendukung pemrograman multiprosesing shared memory dalam bahasa C/C++ dan fortran pada berbagai arsitektur dan sistem operasi diantaranya: Solaris, AIX, HP-UX,GNU/Linux, Mac OS X, dan Windows.
  • 27.
    OpenMP adalah modelportabel dan skalabel yang memberikan interface sederhana dan fleksibel bagi programer shared memory dalam membangun aplikasi paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman fork-join.
  • 28.
    Secara default OpenMPtelah menyediakan mekanisme untuk menunggu thread dalam suatu tim thread sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.
  • 29.
    GPU (Graphical Processing Unit) CUDA erat kaitannya dengan GPU. GPU mempercepat, memanipulasi dan mengubah memori yang berfungsi mempercepat pemuatan grafis. GPU awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tetapi saat ini juga dalam perhitungan fisika permainan (efek fisik seperti puing-puing, asap, api, cairan). GPU mempercepat aplikasi non-grafis dalam biologi komputasi, kriptografi, dan bidang lainnya.
  • 30.
    GPU vs CPU Akselerasipeningkatan teknologi GPU ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya (CPU), dan pada akhirnya GPU menjadi General Purpose.  Terdiri atas banyak core  Arsitektur yang sederhana  Harganya relatif murah  Diproduksi massal untuk berbagai keperluan misal penelitian
  • 31.
    CUDA (Compute Unified DeviceArchitecture) CUDA merupakan sebuah arsitektur komputer parallel yang dibuat oleh NVIDIA agar GPU yang ada tidak hanya untuk mengolah grafis melainkan juga dapat untuk tujuan umum. GPU yang ada saat ini seperti ATI pun sudah memiliki banyak processor di dalamnya. Pada ATI, skema yang mereka bangun disebut ATI Stream.
  • 32.
    Produk NVIDIA CUDA •GeForce GTX 280 • GTX 260 • 9800 GX2 • 9800 GTX+ • 9800 GTX • 9800 GT • 9600 GSO • 9600 GT • 9500 GT • 9400 GT • 9400 mGPU • 9300 mGPU • 8800 Ultra • 8800 GTX • 8800 GTS • 8800 GT • 8800 GS • 8600 GTS • 8600 GT • 8500 GT • 8400 GS • 8300 mGPU • 8200 mGPU • 8100 mGPU • dll Sumber : http://nvidia.com/cuda
  • 33.
    Aplikasi yang mendukungCUDA • FaceWorks • DenoiseMyImage • PowerDVD 9 • PowerDVD 10 • Media Player Classic Home Cinema • Adobe Flash Player 10.0 • MediaShow 5 • 3D Coat • Nebula 3 • Nero Move it • PowerDirector 7 • dll Sumber : http://www.geforce.com/hardware/technology/cuda/applications
  • 34.
    Keunggulan CUDA • TersebarMembaca Kode dapat membaca dari alamat sewenang-wenang dalam memori. • Memori Bersama CUDA memperlihatkan cepat memori bersama wilayah (sampai 48KB per Multi-Processor) yang dapat dibagi di antara benang. • Download Cepat Download lebih cepat dan readbacks ke dan dari GPU. • Dukungan penuh Dukungan penuh untuk integer dan bitwise operasi, termasuk pencarian tekstur bulat.
  • 35.
    Pemrograman CUDA • CUDAC / C + + dengan NVCC • CUDA Fortran dengan PGI CUDA Fortran Compiler • Khronos Grup 's OpenCL • Microsoft DirectCompute • C++ AMP • Pihak Ketiga (Python , Perl , Fortran , Java , Ruby , Lua , Haskell, Matlab , dan IDL)
  • 36.
    Belajar Pemrograman CUDA Sebagaitahap awal dalam belajar pemrograman paralel dengan memanfaatkan CUDA sebaiknya menggunakan bahasa pemrograman C atau C++. CUDA C telah menjadi bahasa pemrograman khusus pertama yang dikembangkan oleh suatu perusahaan GPU. Sumber: http://developer.nvidia.com/suggested-reading http://developer.nvidia.com/cuda-training
  • 37.
    Persiapan untuk membuataplikasi dengan CUDA C (Win, Linux, Mac): • CUDA-enabled graphics processor • NVIDIA device driver • CUDA development toolkit • Standard C compiler • Visual Studio (Windows) → c1.exe Sumber : http://developer.nvidia.com/cuda-downloads Preparation
  • 38.
    Program Sederhana CUDAC Hal khusus dalam kode program yang menggunakan CUDA C adalah adanya kernel call. Sebagai contoh adalah cuplikan kode berikut. Penambahan variabel __global__ pada fungsi kernel() berfungsi untuk menunjukkan pada compiler bahwa program tersebut dikompilasi untuk berjalan pada device dan bukan pada host.
  • 39.