T1 622007006 Full text

PEMROSESAN PARALEL PADA NVIDIA CUDA

Oleh:
Satya Kurnia
NIM: 622007006

Skripsi
Untuk melengkapi salah satu syarat memperoleh
Gelar Sarjana Teknik
Program Studi Sistem Komputer
Fakultas Teknik Elektronika dan Komputer
Universitas Kristen Satya Wacana

Salatiga
April 2013

PEMROSESAN PARALEL PADA NVIDIA CUDA

oleh
Satya Kurnia
NIM: 622007006


Skripsi ini telah diterima dan disahkan
Untuk melengkapi salah satu syarat memperoleh
Gelar Sarjana Teknik
dalam
Konsentrasi Sistem Embedded
Program Studi Sistem Komputer
Fakultas Teknik Elektronika dan Komputer
Universitas Kristen Satya Wacana
Salatiga

Disahkan oleh:

Pembimbing I

Pembimbing II

Hartanto K.Wardana, M.T.

Darmawan Utomo,M.Eng.


Tanggal:

Tanggal:

PERNYATAAN BEBAS PLAGIAT

Saya, yang bertanda tangan di bawah ini:
NAMA

: Satya Kurnia

NIM

: 622007006

JUDUL

: PEMROSESAN PARALEL PADA NVIDIA CUDA


SKRIPSI
Menyatakan bahwa skripsi tersebut di atas bebas plagiat. Apabila ternyata
ditemukan unsur plagiat di dalam skripsi saya, maka saya bersedia mendapatkan sanksi
apa pun sesuai aturan yang berlaku.

Salatiga, 1 April 2013

Satya Kurnia

INTISARI

Nvidia CUDA adalah salah satu teknologi pemrosesan paralel yang
menggabungkan Central Processing Unit (CPU) dan Graphics Processing Unit (GPU)
untuk meningkatkan kinerja pemrosesan data secara paralel. Di Indonesia pemanfaatan
Nvidia CUDA untuk pemrosesan paralel belum dikenal secara luas. Oleh karena itu,
pada skripsi ini dibuat modul pedoman pembelajaran dan modul pedoman praktikum
untuk matakuliah pemrosesan paralel.
Modul pedoman pembelajaran terdiri dari 7 topik pedoman dan modul
praktikum terdiri dari 8 topik pedoman. Pedoman pembelajaran dan pedoman praktikum
telah melalui pengujian terhadap 43 mahasiswa yang mengambil matakuliah dasar

pemrograman, pengujian yang dilakukan melalui pengisian kuesioner. Setelah
dilakukan pengisian kuesioner, tahap selanjutnya melakukan analisis data melalui uji
hipotesis.
Uji validalitas dan uji reliabilitas belum dapat dilaksanakan. Hasil dari uji
hipotesis adalah responden tidak puas dengan pedoman pembelajaran tetapi puas
dengan pedoman praktikum. Selain itu juga dilakukan pengujian dalam bentuk
praktikum terhadap mahasiswa dengan prasyarat matakuliah pemrosesan paralel. Hasil
dari pengujian praktikum adalah 5 dari 6 topik praktikum yang diujikan telah
melampaui standar penilaian, sedangkan 1 topik praktikum masih membutuhkan
perbaikan. Selain itu tidak ada perbedaan nilai yang signifikan antara mahasiswa yang
mempunyai ipk kurang dari 3 dengan mahasiswa yang mempunyai ipk lebih dari sama
dengan 3.

i

ABSTRACT

The development of computer technology are increasingly demanding advanced
data processing technology solutions faster and cheaper. Nvidia CUDA is a parallel
processing technologies that combine the Central Processing Unit (CPU) and Graphics

Processing Unit (GPU) to improve the performance of processing data in parallel. In
Indonesia, the use of Nvidia CUDA parallel processing has not been widely known.
Therefore, in this thesis is the module learning guidance and lab guidance module for
parallel processing course.
Module learning guidance consists of 7 topics guidelines and lab module consists
of 8 topic guidelines. Guidelines learning and lab guidelines have gone through testing
against 43 students taking the basic course programming, testing conducted through
questionnaires. After filling out the questionnaire, the next stage of data analysis
through hypotheses test.
Validity and reliability tests can not be executed. The results of hypothesis testing
are the respondents are not satisfied with the learning guidelines but satisfied with lab
guidelines. There was also tested in a lab for students with prerequisite course parallel
processing. The results of the testing lab is 5 of 6 topics lab tested has exceeded the
standard appraisal practice and 1 topic still needs improvement. In addition there was no
significant difference in score between the students who have less ipk than 3 with
students who have ipk more than equal to 3.

ii

KATA PENGANTAR

Puji Syukur ke hadirat Tuhan Yang Maha Esa, atas segala berkat dan karunia-Nya
sehingga penulis dapat menyelesaikan studi dan skripsi di Fakultas Teknik Elektronika
dan Komputer Universitas Kristen Satya Wacana.
Penulis ingin mengucapkan terima kasih sebesar-besarnya kepada:
1. Papa, mama, semua kakak-kakak dan adik-adik yang telah memberikan
dukungan materiil dan moril selama penulis menjalani kuliah di FTEK UKSW.
2. Bapak Hartanto K.W selaku pembimbing I.
3. Bapak Darmawan Utomo selaku pembimbing II.
4. Semua teman-teman yang membantu dalam pengujian, Ricky, Budhi, Vincent,
Peg-peg, Lundy, Mima dan

Daniel, terimakasih atas semua dukungan dan

bantuan selama pengujian skripsi.
5. Teman-teman Lab XT , mbahe, Pakko, Heri, Black, Penda,

Theo, Codot,

Vincent, Patria, Onne, Widji dan semua teman-teman lab XT yang tidak bisa
penulis sebutkan satu per satu.

6. Teman-teman Elektro 07, Eko, Rhino, Dwi, Codot, Evan, Putu, Agus, Indra,
Tama, Dede dan semua teman -teman 07 yang tidak bisa penulis sebutkan satu
per satu.
7. Semua teman-teman peserta kelas dasprog.
8. Mbak Yeti dan Mbak Ida.
9. Semua anggota jemaat MK, para tetangga rumah, orang-orang yang selalu
menanyakan “kapan lulus?” dan semua orang yang tidak bisa penulis sebutkan
satu per satu. Terimakasih atas dukungan dan doanya selama ini.
Walaupun masih banyak kekurangan dalam pembuatan skripsi ini, penulis berharap
skripsi ini dapat berguna dan dapat disempurnakan suatu hari kelak.
Salatiga, 1 April 2013
Penulis,

Satya Kurnia
iii

DAFTAR ISI

INTISARI .............................................................................................................................. i
ABSTRACT .......................................................................................................................... ii

KATA PENGANTAR.........................................................................................................iii
DAFTAR ISI ....................................................................................................................... iv
DAFTAR GAMBAR........................................................................................................... vi
DAFTAR TABEL .............................................................................................................. vii
DAFTAR SINGKATAN...................................................................................................viii
BAB I PENDAHULUAN..................................................................................................... 1
1.1. Tujuan ........................................................................................................................ 1
1.2. Latar Belakang Masalah............................................................................................. 1
1.3. Spesifikasi .................................................................................................................. 4
1.4. Sistematika Penulisan ................................................................................................ 6
BAB II DASAR TEORI ...................................................................................................... 7
2.1. Sejarah Nvidia CUDA ............................................................................................... 7
2.2. Arsitektur Nvidia CUDA ........................................................................................... 8
2.3. GPU Sebagai Mesin Pemrosesan Paralel ................................................................. 12
2.4. Statistika ................................................................................................................... 15
2.4.1. Skala Likert ....................................................................................................... 15
2.4.2. Uji Chi-Square .................................................................................................. 16
2.4.3. Uji t ................................................................................................................... 16
BAB III PERANCANGAN ............................................................................................... 18
3.1. Pedoman Pembelajaran Nvidia CUDA .................................................................... 18

3.1.1. Pedoman pembelajaran topik 1: Konsep pemrosesan paralel, sejarah dan
pengenalan Nvidia CUDA sebagai mesin pemrosesan paralel.........................19
3.1.2. Pedoman pembelajaran topik 2 : Nvidia CUDA programming model ............ 20
3.1.3. Pedoman pembelajaran topik 3: Nvidia CUDA Threading .............................. 20
3.1.4. Pedoman pembelajaran topik 4: Nvidia CUDA Memory ................................. 21
3.1.5. Pedoman pembelajaran topik 5: Nvidia CUDA Compilation and API ............ 22
3.1.6. Pedoman pembelajaran topik 6: Nvidia CUDA Library .................................. 23
iv

3.1.7. Pedoman pembelajaran topik 7: Nvidia CUDA Optimization.......................... 24
3.2. Pedoman Praktikum Nvidia CUDA ......................................................................... 26
3.2.1. Pedoman praktikum topik 0 : Pengenalan Nvidia CUDA dan Instalasi
Nvidia CUDA Toolkit, Nvidia CUDA SDK, Nvidia Nsight dan Integrasi
Nvidia CUDA dengan Visual Studio 2008 dan Visual Studio 2010 ................ 27
3.2.2. Pedoman praktikum topik 1: Nvidia CUDA Basic ........................................... 28
3.2.3. Pedoman praktikum topik 2 : Nvidia CUDA Threading .................................. 29
3.2.4. Pedoman praktikum topik 3 : Nvidia CUDA Memory ..................................... 30
3.2.5. Pedoman praktikum topik 4 : Nvidia CUDA API ............................................ 32
3.2.6. Pedoman praktikum topik 5 : Nvidia CUDA Library ...................................... 33
3.2.7. Pedoman praktikum topik 6 : Nvidia CUDA Optimization .............................. 35

3.2.8. Pedoman praktikum 7 : Tugas Rancang ........................................................... 36
3.3. Rancangan Pengujian ............................................................................................... 37
3.3.1. Pengujian oleh dosen ........................................................................................ 37
3.3.2. Pengujian oleh mahasiswa ................................................................................ 37
3.4. Pelaksanaan Pengujian Pedoman Pembelajaran dan Pedoman Praktikum ............. 38
BAB IV PENGUJIAN PEDOMAN .................................................................................. 41
4.1. Pengujian oleh Dosen .............................................................................................. 41
4.2. Pengujian oleh mahasiswa ....................................................................................... 41
4.2.1. Uji Hipotesis ..................................................................................................... 43
4.2.2. Analisis Pengujian Pedoman Praktikum ........................................................... 47
BAB V KESIMPULAN DAN SARAN ............................................................................. 50
5.1. Kesimpulan .............................................................................................................. 50
5.2. Saran Pengembangan ............................................................................................... 50
DAFTAR PUSTAKA ......................................................................................................... 51
LAMPIRAN A.................................................................................................................... 53
LAMPIRAN B .................................................................................................................... 63
LAMPIRAN C.................................................................................................................... 74
LAMPIRAN D.................................................................................................................... 93

v


DAFTAR GAMBAR

Gambar 1.1. Core GPU.....................................................................................................2
Gambar 1.2. Floating-Point Operations per second CPU dan GPU.................................2
Gambar 1.3. Memory Bandwidth CPU dan GPU..............................................................3
Gambar 2.1. Arsitektur komputer dengan Nvidia CUDA.................................................8
Gambar 2.2. GPU pada Nvidia CUDA............................................................................11
Gambar 2.3. SM pada arsitektur Fermi...........................................................................11
Gambar 2.4. Perbandingan Kemampuan Floating-Point CPU dengan GPU.................12
Gambar 2.5. Perbandingan Memory Bandwidth CPU dengan GPU...............................13
Gambar 2.6. Diagram Alir Kerja Nvidia CUDA.............................................................15
Gambar 3.1. Diagram Alir Pedoman Pembelajaran........................................................18
Gambar 3.2. Diagram Alir Pedoman Praktikum.............................................................26

vi

DAFTAR TABEL

Tabel 1.1. Pedoman Pembelajaran.....................................................................................4
Tabel 1.2. Pedoman Praktikum..........................................................................................5
Tabel 2.1. Sejarah Perkembangan GPU............................................................................7
Tabel 2.2. Generasi Arsitektur Nvidia CUDA.................................................................10
Tabel 2.3. Perbedaan Filosofi Desain CPU dengan GPU................................................14
Tabel 3.1. Pelaksanaan Pengujian Pedoman Pembelajaran dan Pedoman Praktikum....38
Tabel 4.1. Pernyataan Kuesioner Pedoman Pembelajaran..............................................42
Tabel 4.2. Pernyataan Kuesioner Pedoman Praktikum...................................................43
Tabel 4.3. Tingkat Kesetujuan Responden Pedoman Pembelajaran...............................44
Tabel 4.4. Test Chi-Square Pedoman Pembelajaran.......................................................45
Tabel 4.5. Tingkat Kesetujuan Responden Pedoman Praktikum....................................46
Tabel 4.6. Test Chi-Square Pedoman Praktikum............................................................46
Tabel 4.7. Nilai Rata-Rata Pengujian..............................................................................47
Tabel 4.8. Nilai Rata-Rata Pengujian berdasarkan IPK..................................................47
Tabel 4.9. Hasil Uji t Pedoman Praktikum.....................................................................49

vii

DAFTAR SINGKATAN

Singkatan
ALU
API
CPU
CUDA
DRAM
FPU
GDDR
GFLOPS
GPGPU
GPU
GHz
IPK
ISA
MATLAB
Mhz
PC
PFLOPS
SDK
SFU
SM
SP
TFLOPS
VGA
2D
3D

Kepanjangan
Arithmetic And Logic Unit
Application Programming Interface
Central Processing Unit
Compute Unified Device Architecture
Dynamic Random Access Memory
Floating Point Unit
Graphics Double Data Rate
Giga Floating Point Operations Per Second
General Purpose Graphics Processing Unit
Graphics Processing Unit
Gigahertz
Indeks Prestasi Kumulatif
Instruction Set Architecture
Matrix Laboratory
Megahertz
Personal Computer
Peta Floating Point Operations Per Second
Software Development Kit
Special Function Unit
Streaming Multiprocessor
Streaming Processor
Tera Floating Point Operations Per Second
Video Graphics Array
2 Dimensional
3 Dimensional

viii

BAB I
PENDAHULUAN

Pada bab ini akan dijelaskan tujuan, latar belakang masalah, spesifikasi tugas
dan sistematika penulisan skripsi.

1.1. Tujuan
Mempelajari arsitektur dan pemrograman Nvidia CUDA yang merupakan
teknologi pemrosesan paralel yang menggabungkan Central Processing Unit (CPU)
dengan Graphics Processing Unit (GPU) untuk meningkatkan kinerja pemrosesan data
dan membuat pedoman pengajaran dalam bentuk diktat dan slide serta membuat
pedoman praktikum untuk matakuliah Pemrosesan Paralel.

1.1. Latar Belakang Masalah
Seiring dengan kemajuan teknologi, pemanfaatan komputer menjadi sangat luas
dan meliputi segala aspek. Komputer menjadi alat bantu manusia untuk menyelesaikan
berbagai bentuk permasalahan dari permasalahan yang sederhana sampai dengan
permasalahan yang kompleks. Semakin majunya kekuatan pemrosesan komputer,
menjadi alasan mengapa permasalahan yang kompleks bisa diselesaikan dalam waktu
yang singkat.
CPU merupakan

unit pemrosesan utama di

dalam

sebuah

komputer.

Perkembangan CPU dalam 30 tahun terakhir telah meningkat pesat dari clock speeds 1
MHz pada awal tahun 1980 hingga mencapai clock speeds 4 GHz pada saat ini.
Walaupun clock speeds CPU meningkat, tetapi masalah boros daya dan panas yang
dihasilkan CPU akibat tingginya clock speeds menyebabkan clock speeds sulit untuk
ditingkatkan lagi, sehingga merupakan masalah besar yang harus dihadapi tiap pabrikan
CPU untuk meningkatkan kinerja CPU [12, h.2-3].
Pada tahun 2006 Nvidia mengenalkan teknologi pemrosesan paralel yang cepat,
murah dan efisien yaitu Compute Unified Device Architecture (CUDA) yang berbasis
General Purpose Graphics Processing Unit (GPGPU). Arsitektur Nvidia CUDA dapat
meningkatkan kinerja pemrosesan data di dalam komputer dengan cara menggabungkan
kekuatan pemrosesan CPU dan GPU untuk meningkatkan kinerja pemrosesan data.

1

GPU pada Nvidia CUDA mempunyai puluhan hingga ratusan core, sehingga
dapat melakukan pemrosesan data secara bersama-sama dalam satu waktu. Gambar 1.1
merupakan gambar banyaknya core di dalam GPU pada Nvidia CUDA.

Gambar 1.1. Core GPU [1]
Dengan banyaknya core di dalam sebuah GPU maka kemampuan Floating-point
Operations per Second GPU jauh di atas CPU yang hanya mempunyai beberapa unit
core. Saat ini kemampuan Floating-point Operations per Second GPU telah mencapai
lebih dari 1,5 TFLOPS jauh di atas CPU yang baru mencapai angka 100 GFLOPS.
Gambar 1.2 adalah gambar grafik perbandingan CPU dengan GPU untuk kemampuan
Floating-point Operations per Second.

Gambar 1.2. Floating-Point Operations per second CPU dan GPU [8, h.2]
2

Fungsi utama GPU adalah untuk rendering grafik, oleh karena itu diperlukan
memory bandwith yang lebar. Jenis memory yang digunakan pada GPU adalah Graphic
Double Data Rate (GDDR) yang pada saat ini telah mencapai generasi GDDR5 yang
mempunyai kecepatan 6000 MHz [16], melebihi kecepatan main memory pada CPU
yang baru mencapai generasi DDR3 dengan kecepatan tertinggi 2000 MHz. Lebarnya
memory bandwidth GPU maka merupakan salah satu keunggulan GPU dibanding
dengan CPU dalam hal kecepatan akses memory. Gambar 1.3 adalah gambar grafik
perbandingan memory bandwidth CPU dengan GPU.

Gambar 1.3. Memory Bandwidth CPU dan GPU [8, h.2]

Keunggulan yang dimiliki CUDA yaitu:
1. Antarmuka CUDA application menggunakan standar bahasa C sehingga mudah
dipelajari.
2. Data transfer antara CPU dan GPU sangat cepat sehingga dapat mengurangi latency
pengiriman data dari CPU ke GPU ataupun sebaliknya.
3. Mempunyai shared memory pada setiap multiprosesor dengan kecepatan akses
tinggi.
4. Hemat biaya dan daya listrik.

3

Oak Ridge National Laboratory telah menggunakan 18.688 16 core AMD
Opteron CPU dan juga 18000 Nvidia CUDA GPU pada superkomputer Cray XK6
untuk menghasilkan performa 20 PFLOPS. Superkomputer Cray XK6 2 kali lebih
cepat dan 3 kali lebih hemat daya daripada K superkomputer buatan Fujitsu Jepang
yang menggunakan 88.128 8 core SPARC64 VIIIfx CPU yang hanya menghasilkan
performa 10 PFLOPS [14].
Nvidia CUDA telah diperkenalkan pada universitas-universitas di luar negeri
seperti Universitas Harvard [4] dan Institut Teknologi Tokyo [11] sejak tahun 2009. Di
Indonesia teknologi Nvidia CUDA belum dikenal secara luas dikarenakan belum ada
matakuliah yang yang memanfaatkan teknologi ini. Oleh karena itu, melalui skripsi ini
akan dibuat pedoman pengajaran dan pedoman praktikum Nvidia CUDA yang akan
diterapkan untuk matakuliah Pemrosesan Paralel.
1.3.

Spesifikasi
Berdasarkan surat keputusan nomor: 21/I.3/FTEK/VI/2012 dan surat keputusan

nomor: 02/Kep/D/FTEK/III/2013 perincian tugas yang dikerjakan adalah sebagai
berikut:
1. Materi yang diberikan terbagi menjadi 7 pedoman untuk pedoman pembelajaran
dan 7 pedoman untuk pedoman praktikum.

Tabel 1.1. Pedoman Pembelajaran
Judul

Pedoman
1

Konsep pemrosesan paralel, sejarah dan pengenalan
Nvidia CUDA sebagai mesin pemrosesan paralel

2

Nvidia CUDA Programming Model

3

Nvidia CUDA Threading

4

Nvidia CUDA Memory

5

Nvidia CUDA Compilation and API

6

Nvidia CUDA Library

7

Nvidia CUDA Optimization

4

Tabel 1.2. Pedoman Praktikum
Pedoman
1

Judul
Pengenalan dan instalasi Nvidia CUDA Toolkit,
Nvidia CUDA SDK, Nvidia Nsight dan integrasi
Nvidia CUDA dengan Visual Studio 2008 dan Visual
Studio 2010

2

Nvidia CUDA Basic

3

Nvidia CUDA Threading

4

Nvidia CUDA Memory

5

Nvidia CUDA API

6

Nvidia CUDA Library

7

Nvidia CUDA Optimization

8

Tugas Rancang

2. Format untuk pedoman pembelajaran adalah sebagai berikut:
1. Judul
2. Tujuan
3. Dasar Teori
4. Summary
5. Latihan Soal
6. Daftar Pustaka

Format untuk pedoman praktikum adalah sebagai berikut:
1. Judul
2. Tujuan
3. Dasar Teori
4. Contoh Program
5. Soal Praktikum
6. Set Dosen
7. Daftar Pustaka

5

3. Pembuatan program Nvidia CUDA menggunakan Visual Studio 2008 dan Visual
Studio 2010.
4. Pengujian untuk mahasiswa berjumlah 6 orang dengan prasyarat matakuliah
pemrosesan paralel.
5. Penilaian kemampuan mahasiswa rata-rata 70.
6. Standar penilaian kemampuan mahasiswa dengan menggunakan patokan yang telah
telah ditentukan.
7. Keluaran berupa : pedoman, slide dan rekomendasi prasyarat.
8. Metode pengujian yang digunakan adalah uji Chi-Square, uji t dan uji z sedangkan
skala pengujian yang digunakan adalah skala likert.

1.4. Sistematika Penulisan
Penulisan skripsi ini terdiri dari 5 bab yaitu:
Bab I

Pendahuluan
Berisi tujuan, latar belakang masalah, spesifikasi dan sistematika penulisan.

Bab II Dasar Teori
Berisi dasar teori Nvidia CUDA yang meliputi sejarah, arsitektur,
pengembangan GPU sebagai mesin pemrosesan paralel dan dasar teori
statistika yang akan digunakan untuk pengujian.
Bab III Perancangan Sistem
Berisi perancangan pedoman kuliah, pedoman praktikum dan perancangan
pengujian pedoman.
Bab IV Pengujian dan Analisis
Berisi hasil pengujian pedoman.
Bab V Kesimpulan dan Saran
Berisi kesimpulan dan saran-saran yang dapat digunakan untuk pengembangan
Nvidia CUDA ke tahap selanjutnya.

6

BAB II
DASAR TEORI
Bab ini berisi dasar teori yang berhubungan dengan perancangan skripsi antara
lain sejarah Nvidia CUDA, arsitektur Nvidia CUDA, GPU sebagai mesin pemrosesan
paralel dan dasar teori untuk statistika
2.1. Sejarah Nvidia CUDA
2006-Nvidia mengenalkan teknologi pemrosesan paralel berbasis General
Purpose Graphics Processing Unit (GPGPU) yaitu Compute Unified

Device

Architecture (CUDA). Nvidia bertujuan membuat Graphics Processing unit (GPU)
tidak hanya digunakan untuk mengolah aplikasi grafis tetapi juga dapat digunakan
untuk memproses aplikasi non-grafis. GPU pada mulanya hanya digunakan untuk
rendering grafis 2D maupun 3D, namun sekarang telah banyak aplikasi yang
memanfaatkan kinerja dari GPU untuk aplikasi perhitungan matematika seperti
MATLAB. Pada awal perkembangan komputer,

CPU masih memegang peranan

penting dalam pemrosesan grafis namun setelah perkembangan grafis yang makin
meluas, kinerja CPU menjadi menurun karena harus melakukan rendering grafis. Pada
awal tahun 1980an dibuatlah hardware khusus untuk mengolah grafis yang terdiri dari
Geometry unit, Rasterization unit dan Fragment unit yang kemudian dinamakan GPU.
Tabel 2.1 menunjukkan sejarah perkembangan GPU.
Tabel 2.1. Sejarah Perkembangan GPU [17]

Tahun
1980an

Sejarah


Intel mengembangkan graphics controller yang pertama berbasis
multibus.



Commodore Amiga merupakan PC pertama yang menggunakan
GPU.
(bersambung)

7

Tabel 2.1. Sejarah Perkembangan GPU [17] (lanjutan)

1990an



Aplikasi yang menggunakan grafis 3D bermunculan terutama game.



Munculnya beberapa pabrikan pembuat chip GPU seperti ATI,
Nvidia dan Matrox.



OpenGL menjadi standar grafis API.



Microsoft mengembangkan DirectX untuk game Microsoft yang
menggunakan GPU.

2000an



Nvidia menerapkan programmable shading pada produknya yaitu
geforce 3 yang memungkinkan geometric vertex dapat diproses ke
dalam program sederhana sebelum ditampilkan ke layar.

2006



Nvidia mengenalkan Compute Unified Device Architecture (CUDA)
yang berbasis General Purpose Graphics Processing Unit (GPGPU).

2.2. Arsitektur Nvidia CUDA
Nvidia CUDA mempunyai arsitektur berbasis General Purpose Computing
Graphics Processing Units (GPGPU). Nvidia CUDA dapat berjalan dengan platform
CPU berbasis x86 dan x64 dari platform manapun dan chipset motherboard yang
mendukung PCI-Express Bus. Gambar 2.1 merupakan gambar arsitektur komputer
dengan Nvidia CUDA.

Gambar 2.1. Arsitektur komputer dengan Nvidia CUDA

Pada Gambar 2.1 Nvidia CUDA dihubungkan melalui interface PCI-Express Bus
yang mendukung bandwidth sampai 16 GB/s. PCI-Express dihubungkan oleh

8

Northbridge pada motherboard yang berfungsi menjembatani CPU, DRAM,
Southbridge dan PCI-Express.

Nvidia CUDA terdiri dari beberapa komponen yaitu[7, h.2]:
1. Unit pemrosesan di dalam GPU.
2. OS kernel - level yang mendukung inisialisasi dan konfigurasi hardware.
3. User mode driver yang menunjukkan device level API.
4. PTX instruction set architecture (ISA) untuk komputasi paralel kernel dan
fungsi, kernel merupakan potongan program yang akan dieksekusi secara paralel
oleh GPU [9, h.7].

Saat ini Nvidia CUDA telah mencapai 4 generasi arsitektur. Tabel 2.2 menunjukkan
generasi arsitektur Nvidia CUDA .

9

Tabel 2.2. Generasi Arsitektur Nvidia CUDA [3]

Arsitektur

G80/G92

Jumlah

SP/ CUDA

Jumlah SP

Shared

Maksimum

maksimum

Dimensi

maksimum SM

cores

maksimum

memory/ cache

memory

thread per

block

bandwidth

block

86,4 GB/s

512

512 x 512
x 64

141,7 GB/s

512

512x 512 x
64

177,4 GB/s

1024

1024 x
1024 x 64

192,4 GB/s

1024

1024 x
1024 x 64

16

8

128

246 KB shared
memory, 512
KB register

GT 200

30

8

240

480KB shared
memory, 1920
KB register

Fermi

16

32

512

L1 cache 1024
KB, L2 cache
768 KB, 2048
KB register

Kepler

8

192

1536

L1 cache 512
KB, L2 cache
1536 KB, 2048
KB register

10

GPU pada Nvidia CUDA terdiri beberapa unit Streaming Multiprocessors (SM)
seperti pada Gambar 2.2.

Gambar 2.2. GPU pada Nvidia CUDA [1]

Setiap SM terdiri dari beberapa Streaming Processors (SP)/CUDA cores, Setiap
arsitektur mempunyai jumlah SP/CUDA cores yang berbeda-beda. Gambar 2.3 adalah
contoh gambar SM pada arsitektur Fermi.

Gambar 2.3. SM pada arsitektur Fermi [10, h.8]

11

Bagian yang terdapat pada setiap SM arsitektur Fermi adalah [10, h.5-8]:
• 32 CUDA core yang terdiri dari Arithmetic Logic Unit (ALU) dan Floating
Point Unit (FPU). ALU pada arsitektur Fermi mendukung sampai 32 bit
precision unit untuk semua instruksi sedangkan FPU mendukung sampai 64 bit.
• 16 unit Load Store Unit yang digunakan untuk pengalamatan resource dan
destination yang dapat menampung sampai 16 thread per clock.
• 4 Special Function Unit (SFU) yang berfungsi mengeksekusi instruksi
transcendental seperti sin,cos dan bilangan kuadrat.
• 2 Warp scheduler untuk penjadwalan 32 thread yang bekerja secara paralel.
• 64 KB Shared memory dan L1 cache.
• Register serbaguna dengan ukuran 32.768 x 32 bit.

2.3. GPU Sebagai Mesin Pemrosesan Paralel
Sejak tahun 2003 kemampuan Graphics Processing Unit (GPU) telah melampaui
kemampuan Central Processing Unit (CPU) dalam hal kemampuan pemrosesan
floating point, baik single precision maupun double precision. Gambar 2.4
menunjukkan perbandingan kemampuan GPU Nvidia CUDA dengan CPU.

Gambar 2.4. Perbandingan Kemampuan Floating-Point CPU dengan GPU [9, h.2]

Gambar 2.4 memperlihatkan perbedaan yang sangat mencolok antara kemampuan
GPU Nvidia CUDA dengan CPU. CPU tercepat buatan Intel pada tahun 2011 yaitu
12

Intel Sandy Bridge kemampuannya berbeda jauh dengan GPU NVIDIA GTX 680 yang
juga keluar pada tahun yang sama.
Memory Bandwidth juga mempengaruhi perbedaan kemampuan CPU dengan
GPU Nvidia CUDA. Gambar 2.5 menunjukkan perbandingan memory bandwidth antara
GPU Nvidia CUDA dengan CPU.

Gambar 2.5. Perbandingan Memory Bandwidth CPU dengan GPU [9, h.2]

Gambar 2.5 memperlihatkan GPU Nvidia CUDA sangat unggul dalam memory
bandwith, hal ini terlihat jelas dari GPU Nvidia GTX 680 yang mempunyai memory
bandwith 192.2 GB/s sedangkan CPU tercepat intel Sandy Bridge hanya memiliki
memory bandwidth sekitar 50 GB/s. GPU mempunyai akses memory yang cepat karena
pada dasarnya GPU memang diperuntukkan untuk rendering grafis yang membutuhkan
memory bandwidth yang tinggi untuk mengurangi bottleneck. Dengan perkembangan
game 3D yang semakin lama membutuhkan GPU yang semakin cepat, pabrikan chip
GPU pun saling berlomba-lomba membuat GPU yang mempunyai kemampuan tinggi
tetapi dapat dijual dengan harga yang murah. Hal ini menyebabkan hampir setiap tahun
2 pabrikan besar pembuat chip GPU yaitu ATI dan Nvidia mengeluarkan GPU baru
dengan arsitektur yang semakin baik dalam segi performa dan semakin hemat daya
listrik.
13

Setelah melihat perbedaan signifikan antara CPU dengan GPU, maka dapat ditarik
kesimpulan bahwa kemampuan CPU tidak sepadan dengan GPU. Hal ini disebabkan
CPU dengan GPU mempunyai filosofi yang berbeda dalam desainnya. Tabel 2.3
menunjukkan perbedaan filosofi desain CPU dengan GPU.

Tabel 2.3. Perbedaan Filosofi Desain CPU dengan GPU [5, h.39-41]

CPU

GPU

Mempunyai sedikit unit pemrosesan

Mempunyai banyak unit pemrosesan

Akses ke cache memory sangat cepat

Akses ke onboard memory sangat cepat

CPU sangat baik untuk task parallelism

GPU sangat baik untuk data parallelism

Kemampuan tinggi untuk single thread

Kemampuan tinggi untuk tugas paralel

execution

Pada Tabel 2.3 memperlihatkan bahwa GPU mempunyai desain yang berbeda
dengan CPU. GPU dapat melakukan apa yang CPU tidak bisa lakukan, sebaliknya CPU
juga dapat melakukan apa yang GPU tidak bisa lakukan. Inilah alasan Nvidia CUDA
menggabungkan CPU dengan GPU. Dengan banyaknya unit pemrosesan di dalam GPU
maka data dalam jumlah banyak dapat diproses secara bersamaan dalam satu waktu.
CPU akan mengeksekusi kode sequential yang berisi instruksi yang diperlukan GPU
untuk melakukan pemrosesan paralel, setelah itu GPU akan mengeksekusi data yang
diberikan oleh CPU secara paralel. Gambar 2.6 menunjukkan diagram alir kerja Nvidia
CUDA.

14

Gambar 2.6. Diagram Alir Kerja Nvidia CUDA [15]

Penjelasannya adalah sebagai berikut:
1. Alur kerja yang pertama yaitu CPU akan menyalin semua data yang dibutuhkan
GPU untuk eksekusi dari main memory ke GPU memory onboard.
2. Setelah semua data yang dibutuhkan GPU untuk proses eksekusi disalin. CPU
akan mengerjakan kode sequential dan kemudian akan memberikan instruksi
yang akan dikerjakan oleh GPU.
3. GPU akan mengeksekusi secara paralel.
4. Hasil dari pemrosesan paralel akan disalin ke main memory.

2.4. Statistika [6, h.70-89] [13, h.15-18]
2.4.1. Skala Likert
Skala likert adalah skala psikometrik yang sering digunakan untuk kuesioner di
dalam riset berupa survei. Disediakan lima pilihan skala dengan format sebagai
berikut:
1. Sangat tidak setuju
2. Tidak setuju
3. Tidak pasti
4. Setuju
5. Sangat setuju
15

Langkah skala likert
1.Menentukan dan memahami apa yang akan diukur.
2.Menyusun perancangan.

2.4.2. Uji Chi-Square
Uji Chi-Square bertujuan untuk menguji perbedaan proporsi dua atau lebih
kelompok.
Perhitungan uji Chi-Square menggunakan persamaan 2.1.

=

∑(

)

(2.1)

Dengan:
Fh = Frekuensi harapan
Fo = Frekuensi observasi

(2.2)

Fh =
Dengan:
= Total baris
= Total kolom
N = Total
2.4.3. Uji t

Uji t biasa digunakan untuk sampel kecil. Uji t yang digunakan adalah Uji t
independen berbeda varian sesuai persamaan 2.3.

=

(

).

!(

).

16

× #

.

.(

!

!

)

(2.3)

$=

∑(% − %̅ )
(

Dengan:
S12 = Standar Deviasi 1
S22 = Standar Deviasi 2
n1 = Jumlah responden kelompok 1
n2 = Jumlah responden kelompok 2
%1 = Nilai rata-rata kelompok 1

%2 = Nilai rata-rata kelompok 2

17

BAB III
PERANCANGAN
Pada bab ini akan dijelaskan deskripsi pedoman pengajaran dan pedoman
praktikum Nvidia CUDA.
3.2. Pedoman Pembelajaran Nvidia CUDA
Diagram alir pedoman pembelajaran dapat dilihat pada Gambar 3.1.

Gambar 3.1. Diagram Alir Pedoman Pembelajaran

18

Gambar 3.1 menunjukkan perancangan pedoman pembelajaran. Berikut adalah
deskripsi dari masing-masing pedoman :
3.2.1. Pedoman pembelajaran topik 1: Konsep pemrosesan paralel, sejarah dan
pengenalan Nvidia CUDA sebagai mesin pemrosesan paralel.
Melalui pedoman pembelajaran topik 1 diharapkan mahasiswa dapat :
• Mengingat kembali konsep - konsep dasar pemrosesan paralel.
• Mengerti konsep Nvidia CUDA sebagai mesin pemrosesan paralel.
Pemilihan topik pedoman ini didasarkan :
• Perlunya mahasiswa mengingat kembali konsep - konsep dasar
pemrosesan paralel.
• Perlunya pengenalan konsep Nvidia CUDA sebagai mesin pemrosesan
paralel.

Perancangan pedoman pengajaran :
1. Tujuan.
2. Materi
2.1. Konsep pemrosesan paralel
2.1.1. Konsep pemrosesan paralel secara umum.
2.1.2. Hukum Amdahl.
2.1.3. Platform memory.
2.1.4. Taksonomi Flyn.
2.1.5. Dekomposisi.
2.2. Pengenalan Nvidia CUDA
2.2.1. Sejarah perkembangan GPU.
2.2.2. GPU sebagai mesin pemrosesan paralel.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.

19

3.2.2. Pedoman pembelajaran topik 2 : Nvidia CUDA programming model.
Melalui pedoman pembelajaran topik 2 diharapkan mahasiswa dapat:
• Memahami dan mengerti arsitektur Nvidia CUDA.
• Menguasai dasar - dasar programming model Nvidia CUDA.
Pemilihan topik pedoman ini didasarkan :
• Mahasiswa perlu mengetahui konsep dasar arsitektur dan pemrograman
Nvidia CUDA sebagai dasar untuk melakukan

pemrosesan paralel

menggunakan Nvidia CUDA.

Perancangan pedoman pengajaran :
1. Tujuan.
2. Materi
2.1. Arsitektur Nvidia CUDA.
2.2. Programming Model Nvidia CUDA
2.2.1. Kernel.
2.2.2. Thread.
2.2.3. Heterogeneous Programming.
2.2.4. Management memory Nvidia CUDA.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.

3.2.3. Pedoman pembelajaran topik 3: Nvidia CUDA Threading.
Melalui pedoman pembelajaran topik 3 diharapkan mahasiswa dapat:
• Memahami dan mengerti konsep dasar dari thread.
• Menguasai dasar-dasar pemrograman thread.
• Mengerti manfaat dari penjadwalan thread.

20

Pemilihan topik pedoman ini didasarkan :
• Thread merupakan kunci utama Nvidia CUDA untuk melakukan
pemrosesan paralel, thread berfungsi mengeksekusi data secara paralel.

Perancangan pedoman pengajaran :
1. Tujuan.
2. Materi
2.1. Konsep Thread pada Nvidia CUDA.
2.2. Pemrograman Thread.
2.3. Penjadwalan Thread.
2.4. Transparent Scalability.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.

3.2.4. Pedoman pembelajaran topik 4: Nvidia CUDA Memory.
Melalui pedoman pembelajaran topik 4 diharapkan mahasiswa dapat:
• Memahami dan mengerti konsep dasar memory model pada Nvidia CUDA.
• Mengerti jenis - jenis memory yang terdapat pada Nvidia CUDA beserta
pemanfaatannya.

Pemilihan topik pedoman ini didasarkan :
• Penggunaan memory pada Nvidia CUDA sangat penting karena
penggunaan memory dapat mempengaruhi unjuk kerja program.
• Perlunya mahasiswa mengetahui cara penggunaan memory pada Nvidia
CUDA.

Perancangan pedoman pengajaran:
1. Tujuan.
2. Materi
2.1. Nvidia CUDA memory model.
21

2.2. GPU memory
2.2.1. Register.
2.2.2. Local memory.
2.2.3. Shared memory.
2.2.4. Constant memory.
2.2.5. Texture memory.
2.2.6. Global memory.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.

3.2.5. Pedoman pembelajaran topik 5: Nvidia CUDA Compilation and API.
Melalui pedoman pembelajaran topik 5 diharapkan mahasiswa dapat:
• Memahami dan mengerti Nvidia CUDA Compilation dan Nvidia CUDA
API.
• Menguasai 5 fungsi dasar Nvidia CUDA Runtime API yaitu device
management, memory management, stream management, event
management dan error handling.
• Menguasai dasar - dasar dari Nvidia Driver API.
Pemilihan topik pedoman ini didasarkan:
• Pemanggilan fungsi API merupakan dasar pemrograman Nvidia CUDA.
• Mengenalkan 5 fungsi dasar Nvidia CUDA API Runtime.

Perancangan pedoman pengajaran :
1. Tujuan.
2. Materi
2.1. Nvidia CUDA Compilation.
2.2. Nvidia CUDA Language.
2.2.1. Declaration Qualifier.
2.2.2. Built in Variables.
22

2.2.3. Built in Types.
2.2.4. Execution Configuration.
2.3. Nvidia CUDA API
2.3.1. Runtime API
2.3.1.1. Device Management.
2.3.1.2. Memory Management.
2.3.1.3. Event Management.
2.3.1.4. Stream Management.
2.3.1.5. Error Handling.
2.3.2. Driver API.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.

3.2.6. Pedoman pembelajaran topik 6: Nvidia CUDA Library.
Melalui pedoman pembelajaran topik 6 diharapkan mahasiswa dapat:
• Memahami penggunaan Nvidia Library untuk mempermudah user dalam
memproses data secara paralel.
• Menguasai penggunaan Library CUBLAS untuk operasi perhitungan
vektor dan matrik.
• Menguasai penggunaan Library Thrust untuk transformasi, reduksi, prefixsums dan sorting.

Pemilihan topik ini didasarkan:
• Nvidia CUDA Library dapat mempermudah user dalam memproses data
secara paralel menggunakan Nvidia CUDA.
Perancangan pedoman pengajaran:
1. Tujuan.
2. Materi
2.1. CUBLAS
23

2.1.1. CUBLAS level 1.
2.1.2. CUBLAS level 2.
2.1.3. CUBLAS level 3.
2.2. Thrust
2.2.1. Containers.
2.2.2. Algoritma.
2.2.3. Iterators.
3. Ringkasan.
4. Soal-Soal Latihan.
5. Daftar Pustaka.
3.2.7. Pedoman pembelajaran topik 7: Nvidia CUDA Optimization.
Melalui pedoman pembelajaran topik 7 diharapkan mahasiswa dapat:
• Mengerti dasar-dasar optimasi Nvidia CUDA secara software dan
hardware.

Pemilihan topik ini didasarkan:
• Perlunya mahasiswa mengetahui cara meningkatkan unjuk kerja Nvidia
CUDA melalui software dan hardware.

Perancangan pedoman pengajaran:
1. Tujuan.
2. Materi
2.1. Optimasi Software
2.1.1. Optimasi memory
2.1.1.1. Efisiensi transfer memory.
2.1.1.2. Coalescing memory.
2.1.1.3. Menggunakan shared memory secara efisien.
2.1.2. Optimasi thread.
2.1.3. Optimasi instruksi.
2.2. Optimasi Hardware.
3. Ringkasan.

24

4. Soal-Soal Latihan.
5. Daftar Pustaka.

25

3.2. Pedoman Praktikum Nvidia CUDA
Diagram alir pedoman praktikum dapat dilihat pada Gambar 3.2.

Gambar 3.2. Diagram Alir Pedoman Praktikum.

26

Gambar 3.2 menunjukkan perancangan pedoman praktikum. Berikut adalah
deskripsi dari masing-masing pedoman:
3.2.1. Pedoman praktikum topik 0 : Pengenalan Nvidia CUDA dan Instalasi
Nvidia CUDA Toolkit, Nvidia CUDA SDK, Nvidia Nsight dan Integrasi
Nvidia CUDA dengan Visual Studio 2008 dan Visual Studio 2010.
Melalui pedoman praktikum topik 0 diharapkan mahasiswa menguasai
konsep:
• Mahasiswa dapat melakukan instalasi Nvidia CUDA Toolkit, Nvidia
CUDA SDK dan Nvidia Nsight.
• Mahasiswa dapat melakukan integrasi Nvidia CUDA dengan Visual Studio
2008 dan 2010.
• Mahasiswa dapat mengetahui properties GPU yang digunakan melalui
program GPU-Z.
• Mahasiswa dapat menguji contoh program pada Nvidia CUDA SDK.

Pemilihan topik pedoman ini didasarkan :
• Perlunya mahasiswa mengingat kembali konsep-konsep dasar pemrosesan
paralel.
• Perlunya pengenalan konsep Nvidia CUDA sebagai mesin pemrosesan
paralel.

Perancangan pedoman praktikum:
1. Tujuan.
2. Mengecek jenis GPU dan versi driver pada PC atau laptop.
3. Instalasi Nvidia CUDA Toolkit.
4. Instalasi Nvidia CUDA SDK.
5. Integrasi Nvidia CUDA dengan Visual Studio 2008.
6. Integrasi Nvidia CUDA dengan Visual Studio 2010.
7. Instalasi Nvidia Nsight.
8. Kompilasi source CUDA dengan Visual Studio 2010 command prompt
9. GPU Computing SDK test.
27

10. Pemrograman Nvidia CUDA dengan Visual Studio 2008 atau Visual
Studio 2010.
11. Soal Praktikum
11.1. Soal praktikum set 1: Analisa program.
11.2. Soal praktikum set 2: Analisa program.
12. Set Dosen
12.1. Set Dosen 1.
12.2. Set Dosen 2.
13. Daftar Pustaka.

3.2.2. Pedoman praktikum topik 1: Nvidia CUDA Basic.
Melalui pedoman praktikum topik 1 diharapkan mahasiswa menguasai
konsep:
• Pembuatan program Nvidia CUDA sederhana.
• Penyalinan memory, eksekusi kernel dan menampilkan hasil eksekusi.
• Eksekusi thread pada kernel.
Pemilihan topik pedoman ini didasarkan :
• Mengenalkan CUDA template.
• Dasar dari penyalinan memory, pemanggilan kernel dan eksekusi thread
pada kernel.
• Mengenalkan kode host dan kode device.

Perancangan pedoman praktikum:
1. Tujuan.
2. Dasar Teori
2.1. Kernel.
2.2. Thread.
2.3. CUDA template.
2.4. Alokasi memory.
28

3. Contoh Program
3.1. Contoh program 1: menghitung kuadrat dari thread.
4. Soal Praktikum set 1
4.1. Soal 1 : Pembatasan thread dari thread 0 sampai thread 3.
4.2. Soal 2 : Penjumlahan paralel.
5. Soal Praktikum set 2
5.1. Soal 1 : Pembatasan thread dari thread 7 sampai thread 4.
5.2. Soal 2 : Perkalian paralel.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

3.2.3. Pedoman praktikum topik 2 : Nvidia CUDA Threading.
Melalui pedoman praktikum topik 2 diharapkan mahasiswa menguasai
konsep:
• Menggunakan thread dalam 3 sumbu vektor x,y dan z.
• Menggabungkan semua thread di dalam block.
• Menggunakan timer untuk mengetahui waktu eksekusi GPU.
Pemilihan topik pedoman ini didasarkan :
• Konfigurasi thread yang digunakan dalam mengeksekusi kernel
mempengaruhi unjuk kerja GPU.
• Penggunaan timer penting untuk mengetahui unjuk kerja GPU.
Perancangan pedoman praktikum :
1. Tujuan.
2. Dasar Teori
2.1. Konfigurasi thread.
2.2. Penggabungan thread antar block.
29

3. Contoh Program
3.1. Contoh program 1: Eksekusi kernel dengan menggunakan thread
vektor x,y dan z.
3.2. Contoh program 2: Eksekusi kernel dengan menggunakan gabungan
thread antar block.
3.3. Contoh program 3: Penggunaan timer untuk menghitung waktu
eksekusi.
4. Soal Praktikum set 1
4.1. Soal 1: Penjumlahan koordinat dengan menggunakan vektor x dan y.
4.2. Soal 2: Perkalian matrik secara paralel.
5. Soal Praktikum set 2
5.1. Soal 1: Perkalian koordinat dengan menggunakan vektor x dan y.
5.2. Soal 2: Perkalian matrik secara paralel.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

3.2.4. Pedoman praktikum topik 3 : Nvidia CUDA Memory.
Melalui pedoman praktikum topik 3 diharapkan mahasiswa menguasai
konsep:
• Memory model Nvidia CUDA.
• Jenis - jenis memory Nvidia CUDA.
• Menentukan jenis memory yang tepat untuk mengeksekusi program Nvidia
CUDA.
• Penggunaan shared memory, constant memory dan global memory dalam
program.

30

Pemilihan topik pedoman ini didasarkan :
• Perlunya mengetahui jenis memory Nvidia CUDA.
• Perlunya mengetahui cara penggunaan memory di dalam program Nvidia
CUDA.

Perancangan pedoman praktikum:
1. Tujuan.
2. Dasar Teori
2.1. Memory model Nvidia CUDA.
2.2. Tipe Memory Nvidia CUDA.
3. Contoh Program
3.1. Contoh program 1: Contoh penggunaan global memory, shared
memory dan constant memory kemudian membandingkan kecepatan
shared memory dan global memory dalam memproses data.
4. Soal Praktikum set 1
4.1. Soal 1: Perkalian matrik secara paralel dengan menggunakan shared
memory.
4.2. Soal 2: Bitonic sort.
5. Soal Praktikum set 2
5.1. Soal 1: Perkalian matrik secara paralel dengan menggunakan shared
memory, data yang digunakan random.
5.2. Soal 2: Bitonic sort dengan menggunakan data random.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

31

3.2.5. Pedoman praktikum topik 4 : Nvidia CUDA API.
Melalui pedoman praktikum topik 4 diharapkan mahasiswa menguasai
konsep :
• Menguasai dan menerapkan 5 fungsi dasar Nvidia CUDA Runtime API
yaitu device management, memory management, stream management,
event management dan error handling.
• Pembuatan aplikasi dengan menggunakan Nvidia CUDA API Runtime.
Pemilihan topik pedoman ini didasarkan :


Mengenalkan 5 fungsi dasar Nvidia CUDA API Runtime.

Perancangan pedoman praktikum :
1. Tujuan.
2. Dasar Teori
2.1. Nvidia CUDA Device Management.
2.2. Nvidia CUDA Memory Management.
2.3. Nvidia CUDA Event Management.
2.4. Nvidia CUDA Stream Management.
2.5. Nvidia CUDA Error Handling.
3. Contoh Program
3.1. Contoh program 1: Contoh penggunaan Nvidia CUDA Device
Management.
3.2. Contoh program 2: Contoh penggunaan Nvidia CUDA Memory
Management untuk penjumlahan vektor menggunakan mapping
memory.
3.3. Contoh program 3: Contoh penggunaan Nvidia CUDA Event, Stream
dan Error handling untuk mengecek pemanggilan API, jika ada error
maka program akan menampilkan pesan error.

32

4. Soal Praktikum set 1
4.1. Soal 1: Membuat Menu untuk Searching bilangan via Runtime API
secara paralel,
paralel,

Mencari bilangan prima via Runtime API secara

Mencari bilangan prima dengan menggunakan mapping

memory dan memproses data menggunakan CUDA stream.
5. Soal Praktikum set 2
5.1. Soal 1: Membuat Menu untuk Searching bilangan via Runtime API
secara paralel, Mencari bilangan bukan prima via Runtime API secara
paralel, Mencari kelipatan bilangan dengan menggunakan mapping
memory dan memproses data menggunakan CUDA stream.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

3.2.6. Pedoman praktikum topik 5 : Nvidia CUDA Library.
Melalui pedoman praktikum topik 5 diharapkan mahasiswa menguasai
konsep :
• Penggunakan fasilitas library Nvidia CUDA.
• Penggunaan library CUBLAS dan Thrust untuk melakukan pemrosesan
paralel.

Pemilihan topik pedoman ini didasarkan :
• Penggunaan Nvidia CUDA Library dapat mempermudah user dalam
memproses data secara paralel.

Perancangan pedoman praktikum :
1. Tujuan.
2. Dasar Teori
2.1. CUBLAS
2.1.1. CUBLAS level 1.
33

2.1.2. CUBLAS level 2.
2.1.3. CUBLAS level 3.
2.2. Thrust
2.2.1. Containers.
2.2.2. Algoritma.
2.2.3. Iterator.
3. Contoh Program
3.1. Contoh program 1: Menggunakan CUBLAS level 1 untuk menghitung
operasi vektor dengan vektor menggunakan fungsi cublasSaxpy,
cublasSasum dan cublasScoopy.
3.2. Contoh program 2: Menggunakan CUBLAS level 2 untuk menghitung
operasi matrik dengan vektor menggunakan fungsi cublasSgemv.
3.3. Contoh program 3: Menggunakan CUBLAS level 3 untuk menghitung
operasi matrik dengan matrik menggunakan fungsi cublasSgemm.
3.4. Contoh program 4: Menggunakan Thrust untuk transformasi, reduksi,
prefix-sums dan sorting.
4. Soal Praktikum set 1
4.1. Soal 1: Melakukan pembacaan text file dengan format yang telah
ditentukan kemudian membuat menu unuk melihat data list barang ,
melihat barang dari harga termurah, melihat barang dari harga
termahal dan membeli barang. Semua perhitungan menggunakan
Thrust Library.
4.2. Soal 2: Melakukan pembacaan data melalui text file kemudian
melakukan perkalian matrik dengan matrik itu sendiri yang telah
ditransformasi negasi dan dilakukan

transpose matrik. Perkalian

matrik menggunakan CUBLAS level 3.
5. Soal Praktikum set 2
5.1. Soal 1: Melakukan pembacaan text file dengan format yang telah
ditentukan kemudian membuat menu unuk melihat data list barang ,
melihat barang dari harga termurah, melihat barang dari harga
termahal dan membeli barang. Semua perhitungan menggunakan
Thrust Library.
34

5.2. Soal 2: Melakukan pembacaan data melalui text file kemudian
melakukan perkalian matrik dengan matrik itu sendiri yang telah
ditransformasi modulo dan dilakukan

transpose matrik. Perkalian

matrik menggunakan CUBLAS level 3.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

3.2.7. Pedoman praktikum topik 6 : Nvidia CUDA Optimization.
Melalui pedoman praktikum topik 6 diharapkan mahasiswa menguasai
konsep :
• Optimasi Nvidia CUDA secara software .
• Optimasi Nvidia CUDA dengan menggunakan coalescing memory.
• Memaksimalkan penggunaan thread untuk mengoptimalkan unjuk kerja
Nvidia CUDA.

Pemilihan topik pedoman ini didasarkan :
• Perlunya optimasi Nvidia CUDA secara software untuk meningkatkan
unjuk kerja Nvidia CUDA dalam memproses data secara paralel.
Perancangan pedoman praktikum:
1. Tujuan.
2. Dasar Teori
2.1. Coalescing memory.
2.2. Optimasi thread.
3. Contoh Program
3.1. Contoh program 1: Membandingkan unjuk kerja coalescing memory
dengan uncoalescing memory.
3.2. Contoh program 2: Membandingkan waktu eksekusi Nvidia CUDA
dengan konfigurasi block dan thread yang berbeda.
35

4. Soal Praktikum set 1
4.1. Soal 1: Membuat program untuk melakukan transpose matrik dengan
uncoalescing memory, coalescing memory, shared memory dan
optimasi thread kemudian membandingkan waktu eksekusinya.
4.2. Soal 2: Analisa potongan program kernel, menentukan apakah
potongan program kernel merupakan coalescing memory atau bukan.
5. Soal Praktikum set 2
5.1. Soal 1: Membuat program untuk melakukan transpose matrik dengan
uncoalescing memory, coalescing memory, shared memory dan
optimasi thread kemudian membandingkan waktu eksekusinya.
Inputan berasal dari text file.
5.2. Soal 2: Analisa potongan program kernel, menentukan apakah
potongan program kernel merupakan coalescing memory atau bukan.
6. Set Dosen
6.1. Set Dosen 1.
6.2. Set Dosen 2.
7. Daftar Pustaka.

3.2.8. Pedoman praktikum 7 : Tugas Rancang.
Melalui pedoman praktikum topik 7 diharapkan mahasiswa dapat:
• Menerapkan pedoman praktikum dari topik 1 sampai topik 6.
• Membuat aplikasi CUDA untuk menyelesaikan permasalahan yang
membutuhkan waktu eksekusi yang lama apabila dikerjakan oleh CPU.
• Membandingkan unjuk kerja Nvidia CUDA dengan CPU.
Tugas Rancang yang diberikan adalah menemukan jalur terpendek
menggunakan algoritma Floyd-Warshall, mahasiswa akan diberikan algoritma
Floyd-Warshall secara sequential kemudian mengubahnya ke algoritma
paralel. Selain itu mahasiswa juga membandingkan unjuk kerja Nvidia CUDA
dengan CPU dalam memproses data menggunakan algoritma Floyd-Warshall.

36

Spesifikasi tugas rancang :
1. Algoritma menemukan jalur terpendek menggunakan Floyd-Warshall.
2. Menggunakan shared memory dalam pemrosesan data.
3. Penghitungan waktu eks