Anda di halaman 1dari 34

Arsitektur Komputasi Parallel

pada GPU dengan CUDA


Presentasi Tugas IF5133 – Sistem Komputer

Kelompok 4 :
Claudio Franciscus – 23511009
Rizfi Syarif – 23511013
Alif Finandhita – 23511034
Andhik Budi Cahyono – 23511081
Yadhi Aditya Permana – 23511112
Apa itu GPU?
GPU adalah sebuah device yang secara khusus
ditugaskan untuk mengolah tampilan grafis.
GPU bukan VGA, GPU adalah chip grafis yang
digunakan oleh graphics card (VGA).
Sejarah GPU
Dipopulerkan pertama oleh NVIDIA dengan produknya GeForce
256.
Sebenarnya GeForce 256, bukan yang pertama kali. Sebelumnya
sudah ada GPU lain hanya tidak mempopulerkan dengan istilah
GPU. Misal : 2D/3D accelerator, video card.
Perbedaan antara GeForce 256 dan chip graphics era
sebelumnya, terletak pada ada-tidaknya feature transform dan
lighting
Pada era chip graphics sebelumnya proses transform dan
lighting ini dirender oleh CPU. Hal inilah yang menyebabkan chip
graphics sebelum GeForce 256 disebut belum independen,
mereka masih mengandalkan CPU dalam sebagian proses
pengerjaan tugasnya.
Sejarah GPU 2
Pada perkembangannya GPU mulai digunakan tidak
hanya untuk pemrosesan grafis, tapi juga mulai dilirik
sebagai accelerator untuk pemrosesan algoritma yang
lebih umum, seperti komputasi numerik, realtime
medical imaging, komputasi bioinfiormatika,
embedded system, dan lainnya. GPU yang seperti ini
dikenal dengan istilah GPGPU (General Purpose GPU).
GPU pun dijadikan ajang persaingan antara NVIDIA dan
ATI dalam memperebutkan tahta “King of Graphics
Card”.
GPU & CPU
Apa perbedaan CPU dengan GPU?
CPU dan GPU saat ini sama-sama memiliki core processor lebih
dari satu (multicore).
CPU biasanya maksimal saat ini 4-core processor, atau disebut
quad-core, sedangkan GPU bisa mencapai sampai 400-core.
Walaupun sama-sama multicore, ada perbedaan mendasar pada
paradigma multicore-nya. Kalau CPU adalah MIMD, Multiple-
Instruction Multiple-Data, sedangkan GPU adalah SIMD, Single-
Instruction Multiple-Data.
Beberapa feature GPU
Anisotropic Filtering
Anti Aliasing
DirectX &amp
OpenGL
Shader Model
Transform and Lighting
High Dynamic Range (HDR)
Komputasi Parallel di GPU
GPU computing (General Purpose GPU – GPGPU)
merupakan konsep pemrograman parallel yang
menggunakan GPU sebagai media komputasi untuk
memproses komputasi yang umumnya dikerjakan CPU.
Model untuk komputasi GPU adalah dengan
menggunakan CPU dan GPU bersama-sama dalam
suatu model komputasi heterogen co-processing.
Bagian berurutan aplikasi berjalan pada CPU dan
bagian komputasi-intensif dipercepat oleh GPU.
Dari sudut pandang pengguna, aplikasi akan berjalan
lebih cepat karena menggunakan kinerja-tinggi dari
GPU untuk meningkatkan kinerja. 
Komputasi Parallel di GPU - 2
Konsep ini menghasilkan kecepatan proses yang jauh
lebih baik dibanding kecepatan CPU untuk kasus –
kasus tertentu.
Keunggulan yang dimiliki oleh GPU ini bukan berarti
menggantikan peran CPU.
CPU lebih spesifik menangani permasalahan logika,
sedangkan permasalahan komputasi diserahkan
kepada GPU.
GPU berevolusi menjadi sebuah manycore processor
dengan kemampuan komputasi dan memory bandwith
yang tinggi.
Komputasi Parallel di GPU - 3
Operasi floating-point CPU dan GPU
Komputasi Parallel di GPU - 4
Operasi floating-point CPU – GPU dan memory
bandwith untuk CPU – GPU
Komputasi Parallel di GPU - 5
Perbedaan floating-point operation dan memory
bandwith ada karena GPU dispesialisasikan untuk
menangani komputasi secara paralel.
Pada GPU dirancang lebih banyak transistor yang
didedikasikan untuk mengolah data daripada data
caching dan flow control.
Komputasi Parallel di GPU - 6
Secara spesifik GPU cocok untuk mengatasi masalah
yang dapat dikategorikan sebagai data-parallel
computations (program yang sama dieksekusi pada
banyak data elemen secara paralel)
Komputasi dilakukan dengan intensitas aritmatika yang
tinggi, oleh karenanya proses tersebut lebih baik
dilakukan secara langsung daripada disimpan di
memori.
Dalam GPGPU data disimpan di tekstur menggunakan
format floating-points sehingga suatu pixel tidak lagi
merepresentasikan warna melainkan suatu nilai
numerik.
Komputasi Parallel di GPU - 7
Komputasi Parallel di GPU - 8
Inti dari komputasi parallel di GPU :
Memanfaatkan banyak core yang tersedia di GPU
Semakin banyak core maka akan semakin banyak thread
yang dapat dihandle oleh GPU
Cara memanfaatkan kemampuan komputasi parallel
pada GPU :
“Metode Klasik” – Shader Programming
“Metode Setengah Modern – Brook GPU
“Metode Modern” – CUDA
Komputasi Parallel di GPU - 9
“Metode Klasik” – Shared Programming :
Tidak standalone (memanfaatkan rendering pipeline), harus
bekerja dengan Graphics API, contoh : OpenGL atau
Direct3D.
Bahasa pemrograman : OpenGL Shading Language (GLSL).
“Metode Setengah Modern” – BrookGPU :
Masih memanfaatkan rendering pipeline dan bekerja
dengan Open GL/Direct3D tapi dengan konsep stream
processing yang lebih terbuka.
“Metode Modern” – CUDA :
Akses untuk mengontrol elemen-elemen paralel di GPU,
seperti manajemen thread, register, akses memory di
multiprocessor atau di DRAM dengan performa yang lebih
baik dari shader programming.
Arsitektur CUDA
Berawal dari riset NVIDIA terhadap GPGPU.
NVIDIA merevolusi GPGPU dan mengakselerasi dunia
komputasi dengan memperkenalkan arsitektur parallel
“CUDA” (terdiri dari ratusan core processor).
CUDA = Compute Unified Device Architecture.
Merupakan arsitektur pemrosesan paralel yang
diimplementasikan ke dalam GPU buatan NVIDIA
Teknologi yang dikembangkan oleh NVIDIA untuk
mempermudah utilitasi GPU untuk keperluan umum
(non-grafis).
Arsitektur CUDA – 2
Arsitektur CUDA
Arsitektur CUDA – 3
Arsitektur CUDA ini memungkinkan pengembang
perangkat lunak untuk membuat program yang
berjalan pada GPU buatan NVIDIA dengan syntax yang
mirip dengan syntax C/C++/Fortran yang sudah banyak
dikenal.
Kemampuan pemrosesan GPU dapat dimanfaatkan
lebih mudah oleh developer dalam hal mengkomputasi
program yang mereka buat.
Arsitektur CUDA menuntun para developer untuk
membagi masalah kedalam sub-masalah yang dapat
diselesaikan secara independen dalam proses paralel.
Arsitektur CUDA – 4
Proses komputasi parallel GPU dengan CUDA
Arsitektur CUDA – 5
Processing flow pada CUDA
Arsitektur CUDA – 6
Bagaimana menjalankan aplikasi pada GPU yang
kompatibel dengan CUDA :
CUDA menyediakan ekstensi pada bahasa C berupa fungsi
yang ditandai khusus “_global_”
CPU akan menjalankan fungsi tersebut di dalam GPU.
Setelah memulai eksekusi pada GPU, program akan segera
mengeksekusi perintah berikutnya, tidak harus menunggu
eksekusi GPU selesai. Hal ini memungkinkan pemrogram
untuk menjalankan komputasi secara paralel antara CPU
dan GPU.
Selain dengan keyword __global__ , kernel juga dapat
dideklarasikan dengan keyword __device__. Bedanya,
kernel __device__ini hanya dapat dipanggil oleh kernel yang
lain, alias oleh fungsi yang sudah berjalan pada GPU.
Perbandingan CUDA – Tanpa CUDA
Photoshop CS5 - Beauty Box Photo plug-in
Skin Smoothing Tool
29.000 x 14.577 px of image
CUDA with Hyper Threading
CUDA without Hyper Threading
CPU usage with Hyper Threading
CPU usage without Hyper Threading
Paralel Programming pada CUDA
Menjalankan fungsi pada GPU (kernel)
__global__
__device__
Paralel Programming pada CUDA – 2
execution configuration
<<<…>>>
Paralel Programming pada CUDA – 3
Hierarchical Thread Blocks
Paralel Programming pada CUDA – 4
Barrier Synchronization
__syncthreads()
Data transfer beetwen Host memory and device
memory
cudaMemcpy()
Free device memory
cudaFree()
Many more @ NVIDIA CUDA C Programming
Guide
Implementasi CUDA
CUDA x86 Compiler, hasil kerja sama NVIDIA dan
Portland Group untuk membuat aplikasi dengan
menggunakan CUDA.
MATLAB
ANSYS, spesialisasi di bidang desain dan simulasi yang
memanfaatkan CUDA untuk melakukan simulasi. Satu
proses simulasi, misalnya simulasi kemungkinan
masalah yang terjadi pada roda pesawat terbang,
membutuhkan kemampuan proses yang tinggi.
Implementasi CUDA - 2
Autodesk,menambahkan dukungan terhadap CUDA
pada aplikasi populer mereka, 3ds Max, melalui plugin
iray. iray memungkinkan rendering objek 3D dilakukan
dengan menggunakan GPU yang mendukung CUDA.
Autodesk juga menunjukkan sebuah proyek masa
depan dimana pengguna 3ds Max bisa melakukan
editing dari jarak jauh pada aplikasi 3ds Max yang
terpasang di server yang didukung tenaga 32 GPU
Fermi, hanya melalui sebuah browser.
Referensi
NVIDIA Corporation, “CUDA, Parallel Programming Made Easy”,
http://www.nvidia.com/objects/cuda_home_new.html, 2011
NVIDIA Corporation, “What is GPU Computing?”,
http://www.nvidia.com/objects/GPU_computing.html, 2011
David Luebke, “CUDA : Scalable Parallel Programming for High
Performance Scientific Computing”, IEEE ISBI, 2008, pp. 836 –
838.
J. Nickolls, I. Buck, M. Garland & K. Skadron, “Scalable Parallel
Programming with CUDA”, ACM Queue, 6(2), 2008, pp. 40 – 53.
NVIDIA Cooperation. NVIDIA CUDA C Programming Guide.
http://
developer.download.nvidia.com/compute/cuda/3_2/toolkit/doc
s/CUDA_C_Programming_Guide.pdf
, 2010.
Terima Kasih

Anda mungkin juga menyukai