## SISTEM KOMPUTASI PARALEL MENGGUNAKAN GPU BERBASIS NVIDIA CUDA
Oleh: Ahmad Sabiq 1 , Heri Yugaswara 2 , Hendra Wicaksono 3 Fakultas Teknologi Informasi, Universitas YARSI, Jakarta E-mail: ahmad.sabiq@yarsi.ac.id, heri.yugaswara@yarsi.ac.id, hendra.wicaksono@yarsi.ac.id

## Abstrak
Dalam  sebuah  penelitian  yang  melakukan  pengolahan  data  dalam  jumlah  yang  banyak,  umumnya dibutuhkan waktu yang cukup lama untuk melakukan suatu proses komputasi agar menghasilkan output yang  diinginkan.  Penggunaan  teknologi  pemrosesan  paralel  menjadi  salah  satu  alternatif  untuk menyelesaikan  suatu  tugas  yang  membutuhkan  komputasi  besar.  Graphical  Processing  Unit  (GPU) memiliki kemampuan komputasi paralel karena strukturnya yang paralel dengan banyak core yang saling bekerja  sama  untuk  memproses  piksel  grafis  komputer  dalam  volume  yang  besar.  Pada  penelitian  ini akan  dikembangkan  sebuah  sistem  komputer  untuk  melakukan  komputasi  secara  paralel  menggunakan GPU  yang  bisa  diakses  secara  remote  agar  dapat  dimanfaatkan  kebutuhkan  pemrosesan  paralel  di lingkungan  Fakultas  Teknologi  Informasi  Universitas  YARSI.  Pada  sistem  komputasi  paralel  yang dibangun,  digunakan  GPU  berbasis  NVIDIA  dengan  chipset  GeForce  RTX  2070  yang  memiliki  2304 Cores.  CPU  yang  digunakan  adalah  intel  i5-9400F  2.9GHz  6  core  dengan  memori  DDR4  8GB.  Dari hasil  pengujian  didapatkan  GPU  GeForce  RTX  2070  memiliki  kecepatan  transfer  3  GB/s.  Dari  hasil pengujian  dengan  perkalian  matriks,  pada  matriks  berukuran  52x52  dan  lebih  kecil,  komputasi menggunakan CPU lebih cepat dibandingkan dengan GPU. Sedangkan pada matriks berukuran 64x64 ke atas,  kecepatan  komputasi  GPU  yang  didapat  lebih  cepat  dibandingkan  CPU.  Pada  perkalian  matriks berukuran 4096x4096, kecepatan GPU 4312,75 kali lebih cepat dibandingkan dengan CPU.
Kata Kunci : komputasi paralel, GPU, CUDA,

## Abstract
In a study that processes large amounts of data, it generally takes a long time to carry out a computation process  to  produce  the  desired  output.  The  use  of  parallel  processing  technology  is  an  alternative  for solving  a  task  that  requires  large  computation.  The  Graphical  Processing  Unit  (GPU)  has  parallel computing  capabilities  due  to  its  parallel  structure  with  many  cores  working  together  to  process  large volumes of computer graphics pixels. In this study, a computer system was developed to perform parallel computation using a GPU that can be accessed remotely so that parallel processing needs can be utilized in  the  Information  Technology  Faculty  of  YARSI  University.  In  the  parallel  computing  system  that  was built, an NVIDIA-based GPU was used with the GeForce RTX 2070 chipset which has 2304 Cores. The CPU used is Intel i5-9400F 2.9GHz 6 cores with 8GB DDR4 memory. From the test results, it was found that  the  GeForce  RTX  2070  GPU  has  a  transfer  speed  of  3  GB  /  s.  From  the  test  results  with  matrix multiplication,  on  a  matrix  of  52x52  size  and  smaller,  computation  uses  a  faster  CPU  than  the  GPU. Whereas on a matrix of 64x64 and above, the GPU computation speed obtained is faster than the CPU. In the matrix multiplication size of 4096x4096, the GPU speed is 4312.75 times faster than the CPU.
Keywords : Parallel Computing, GPU, CUDA
1. Pendahuluan
Dalam sebuah penelitian yang melakukan  pengolahan  data  dalam  jumlah yang  banyak,  umumnya  dibutuhkan  waktu yang  cukup  lama  untuk  melakukan  suatu proses komputasi agar menghasilkan output yang  diinginkan.  Dengan  membagi  setiap input  ke  dalam  sebuah  proses  komputasi, membuat  pengolahan  data  menjadi  lebih singkat.
Penggunaan  teknologi  pemrosesan  paralel menjadi salah satu alternatif untuk menyelesaikan suatu tugas yang membutuhkan  komputasi  besar.  Teknologi ini  sekarang  banyak  digunakan  di  bidang yang membutuhkan komputasi atau pemrosesan  yang  cepat  seperti computer science , image  processing , cryptography , signal  processing dan  komunikasi.  (M.  A. Gray, 2009)
SISTEM KOMPUTASI ………………… Ahmad Sabiq 1 , Heri Yugaswara 2 , Hendra Wicaksono 3
GPU  merupakan  salah  satu  komponen komputer  yang  berfungsi  untuk  melakukan komputasi  grafis  untuk  ditampilkan  pada layar  monitor.  GPU  memiliki  kemampuan komputasi  paralel  karena  strukturnya  yang paralel  dengan  banyak  core  yang  saling bekerja  sama  untuk  memproses  piksel grafis  komputer  dalam  volume  yang  besar. Dengan  kemampuan  komputasi  paralel yang  dimiliki  oleh  GPU,  saat  ini  para peneliti  mulai  menggunakan  GPU  untuk melakukan komputasi secara paralel (Kai & Zhen, 2011).
Pada  penelitian  ini,  penulis  menguji performa  dari  sistem  komputasi  paralel berbasis  GPU  NVDIA  GForce  RTX-2070 yang dibangun untuk melakukan komputasi data paralel di lingkunan Fakultas Teknologi Universitas YARSI.
2. Tinjauan Pustaka
2.1.  Komputasi Paralel Komputasi paralel merupakan
penggunaan beberapa sumberdaya komputasi secara simultan untuk memecahkan  masalah  komputasi.  Suatu masalah yang akan diselesaikan dipecah ke beberapa  bagian,  setiap  bagian  dipecah menjadi  serangkaian  isntruksi.  Instruksi dari  setiap  bagian  kemudian  dikerjakan secara  bersamaan  di  prosesor  yang  bebeda secara terkontrol. (B, Blaise, 2018) Komputasi  secara  paralel  dapat  dilakukan pada  sebuah  komputer  dengan  beberapa prosesor, atau dapat juga  dilakukan dengan menggunakan  beberapa  komputer  yang terhubung  melalui  jaringan  yang  biasa disebut  cluster  computing,  atau  dapat  juga menggunakan kombinasi dari keduanya. Pada  komputasi  paralel  digunakan  untuk dapat  memecahkan  masalah  komputasi yang  kompleks  agar  dapat  dipecahkan dengan  waktu  yang  lebih  singkat  jika dibandingkan  dengan  komputasi  yang menggunakan prosesor tunggal.

## 2.2.  Komputasi Paralel berbasis GPU
GPU  merupakan  salah  satu  komponen komputer  yang  berfungsi  untuk  melakukan komputasi  grafis  untuk  ditampilkan  pada layar  monitor.  GPU  umumnya  digunakan untuk keperluan multimedia seperti rendering  (X.  Wang,  X.  Li,  M.  Zou,  and  J. Zhou, 2011). Hal ini karena GPU memiliki kemampuan  komputasi  paralel  karena strukturnya  yang  paralel  dengan  banyak core  yang  saling  bekerja  sama  untuk memproses  piksel  grafis  komputer  dalam volume  yang  besar.  Dengan  kemampuan komputasi  paralel  yang  dimiliki  oleh  GPU, saat  ini  para  peneliti  mulai  menggunakan GPU  untuk  melakukan  komputasi  secara paralel (Kai & Zhen, 2011).
Penelitian  komputasi  paralel  berbasis  GPU tidak  hanya  dilakukan  pada  komputer tunggal  yang  memanfaatkan  sebuah  GPU yang  ada.  Beberapa  riset  komputasi berbasis  GPU  menggunakan  multi  GPU  di dalam  satu  komputer.  Penggunaan  GPU untuk melakukan komputasi juga dilakukan pada  mesin  virtual  melalui  beberapa Virutual Mesin Manajer (Walters, J.P., dkk. 2014).

## 2.3.  NVDIA CUDA
CUDA  ( Compute  Unified  Device Architecture )  merupakan  toolkit  NVIDIA untuk  membuat  program    yang    dapat mengakses    kartu  grafis  yang  dibuat  oleh NVIDIA.  (Koprawi,  M,  dkk,  2017).  Setiap utas CUDA akan dipetakan ke sebuah core GPU.  Arsitektur  CUDA  menyediakan  API dan  direkrtif  agar  kompatibel  dengan bahasa pemrograman C, C ++, Fortran, dan lain-lain. (Calı, M., & Di Mauro, V., 2016)

## 3. Metode Penelitian
3.1. Rancangan Sistem
Pada  gambar  2  ditunjukan  rancangan dari sistem komputasi yang dibangun  oleh penulis  pada  penelitian  ini.  Sistem  yang dibangun  dihubungkan  ke  jaringan  local Universitas  YARSI  agar  nantinya  dapat

## ORBITH VOL. 17 NO. 2 Juli 2021 : 158 - 164
diakses oleh para peneliti yang membutuhkan  komputasi  paralel  berbasis GPU,  melalui  jaringan  lokal  /  LAN Universitas YARSI.
Gambar 1.  Desain rancangan sistem komputasi paralel berbasis GPU di Fakutlas Teknologi Informasi Universitas YARSI.
Pada  sistem  komputasi  paralel  yang dibangun, digunakan GPU berbasis NVIDIA  yang  akan  digunakan  untuk melakukan  komputasi secara parallel. GPU yang  digunakan  pada  penelitian  ini  adalah GPU  dengan  chipset  GeForce  RTX  2070 yang  memiliki  2304 Cores ,  dan  kecepatan clock 1410 MHz. Spesifikasi lebih lengkap dari  GPU  Nvidia  GeForce  RTX  2070 ditunjukan pada tabel 1.

## Tabel 1. Ringkasan parameter fisik
Mesin GPU Cuda  Core 2304 inti Clock 1410 MHz (Boost 1620 MHz) Memori GPU Kapasitas Memori 8 GB DDR6 Kecepatan Memori 14 Gbps Lebar Jalur (Bus) 256-bit Bandwidth 448 GB/s Suhu dan Daya GPU Suhu Maksimal 89º C Daya Maksimal 175 Watt Daya Sistem (rek) 550 Watt

## 3.2.  Implementasi Hardware
Tahapan  pertama  yang  dilakukan mengimplementasikan  perangkat  keras  dari Sistem  Komputer  berbasis  GPU  dengan spesifikasi yang ditunjukan pada  tabel 2.
Tabel 2. Spesifikasi Hardware
Komponen Spesifikasi Motherboard Asrock  B360  Pro  4,  LGA1151 (Discrete Graphic Required) Processor intel i5-9400F 2.9GHz, 6 core, Cache 9MB Memori 8 GB DDR4-DRAM  2400MHz PC19200 Storage SSD 120 GB Sata3 GPU 1 ATI  Radeon  HD7670  4GB 128bit-DDR5 (untuk display) GPU 2 ASUS Turbo GeForce RTX2070 8GB GDDR6 (untuk komputasi GPU) Power Supply maksimal 700 watt

## Gambar 2. Kartu grafis Asus Turbo GeForce RTX 2070
GPU  yang  digunakan  untuk  komputasi secara  parallel  adalah  kartu  grafis  “Asus Turbo GeForce RTX 2070” dengan memori 8 GB DDR6, seperti yang ada pada gambar 2.
Seluruh komponen dirakit dengan dukungan  daya  dari  Power  Supply  Unit (PSU)  yang  mampu  menghasilkan  daya hingga  700  watt  seperti  yang  tampak  pada gambar 3. Daya maksimal yang dibutuhkan oleh GPU yang digunakan adalah 175 watt, ditambah  kebutuhan  untuk  CPU,  memory, dan  yang  lainnya.  PSU  yang  digunakan masih  akan  mampu  mensuplai  daya  saat CPU  dan  GPU  yang  digunakan  bekerja pada tingkat maksimal.
Gambar 3. Sistem Komputer untuk komputasi parallel berbasi Nvidia CUDA
SISTEM KOMPUTASI ………………… Ahmad Sabiq 1 , Heri Yugaswara 2 , Hendra Wicaksono 3

## 3.3. Implementasi Software
Tahap  berikutnya  yang  dilakukan  pada implementasi  sistem  ini  adalah  meninstall dan  mengkonfigurasi  perangkat  lunak  agar sistem  komputer  yang  dibangun  dapat melakukan komputasi menggunakan perangkat  GPU.  Beberapa  perangkat  lunak yang digunakan antara lain:
a. Sistem  Operasi  Linux  Ubuntu  18.04.2 LTS (Bionic Beaver)
b. GCC
c. Nvidia Graphic Driver 418.56
d. NVidia Cuda Driver 10.1
e. Phyton
Sistem  operasi  yang  digunakan  adalah Linux  Ubuntu  18.04.02  LTS.  Sistem operasi  Linux  merupakan  sistem  operasi yang  bersifat Free/Open  Source  Software yang  bebas  digunakan,  sehingga  tidak  ada tambahan biaya lagi yang dibutuhkan untuk menggunakannya. Seri Ubuntu 18.04 dengan  nama  Bionic  Beaver  merupakan versi  Ubuntu  yang  memilki  waktu  layanan jangka  panjang  atau  long  term  service (LTS)  hingga  5  tahun  untuk  tersediaan pembaruan  dari  perangkat  lunak  yang disediakan.  Namun  versi  LTS  ini  juga masih  dapat  digunakan  walaupun  sudah melewati  jangka  waktu  5  tahun.  Sehingga dalam jangka waktu yang cukup lama tidak diperlukan  melakukan  upgrade  ke  versi yang lebih baru.
Setelah  sistem  operasi  terinstall,  tahap berikutnya adalah menginstall driver Nvidia di  Ubuntu.  Diperlukan  driver  Nvidia  versi terbaru  yang  mendukung  kartu  grafis Nvidia  yang  terpasang.  Driver  yang  telah terinstall  pada  sistem  ini  adalah  driver Nvidia  versi  418.56.  Untuk  menampilkan versi  driver  dapat  digunakan  perintah nvidia-smi seperty yang ada pada gambar 4.
Gambar 4.  Informasi driver Nvidia setelah terinstall.
Setelah  driver  kartu  grafis  terinstall, langkah  berikutnya  adalah  menginstall driver  Nvidia  CUDA,  agar  GPU  dapat digunakan  untuk  melakukan  komputasi. Cuda driver yang digunakan pada penelitian ini adalah Cuda Driver versi 10.1. Sebelum menginstal  driver,  teliebih  dahulu  install beberapa  library  yang  dibutuhkan,  setehal itu  install  cuda  repository, update repository,  dan  install  cuda  driver.  Setelah terinstall, dan sistem di-restart. Driver cuda sudah  dapat  digunakan  untuk  melakukan komputasi.  Untuk  mengecek  driver  cuda yang  sudah  terinstall,  dapat  digunakan perintah nvidia-smi seperti pada gambar 5.

## Gambar 5 Informasi driver Cuda setelah terinstall
Langkah  berikutnya  adalah  menginstall Nvidia  Cuda  Compiler,  atau  nvcc.  Setelah terinstall,  sistem  sudah  dapat  melakukan kompilasi  kode  program  yang  akan menggunakan  GPU  dengan  driver  CUDA sebagai  komputasinya.  Untuk  mengecek versi nvcc, dapat digunakan perintah nvcc - -version seperti pada gambar 6.

## Gambar 6. Informasi Cuda Compiler
Agar  sistem  komputer  berbasis  cuda  dapat digunakan  melalui  jaringan  di  internal Universitas YARSI. Sistem ini dihubungkan melalui  jaringan  local,  dan  diinstall  ssh server.  Setelah  ssh  server  terinstall,  sistem GPU  dapat  digunakan  melalui  komputer lain  yang  ada  di  jaringan  kampus Universitas  YARSI.  pada  gambar  7 ditunjukan tampilan setelah login ke mesin sistem  GPU  melalui  komputer  lain  yang berbasis Windows.
Gambar 7. Login ke sistem komputasi GPU melalui PC berbasis Windows.
Pada  gambar  8  ditunjukan  tampilan  versi CUDA driver dan  CUDA compiler pada sistem  melalui  komputer  lain  yang terhubung  melalui  jaringan  menggunakan akses ssh.
Gambar 8. Informasi Cuda Driver dan Cuda Compiler melalui PC berbasis Windows.

## 4. Hasil dan  Pembahasan
Pengujian  pertama  yang  dilakukan adalah  menguji compiler dan  menjalankan program  berbasis  CUDA.  Program  yang diuji  adalah  program  bandwidth  test  dan perkalian  matrik  yang  ada  pada  sample cuda.  Pada  gambar  9,  ditunjukan  bahwa sistem  telah  dapat  melakukan  kompilasi program berbasis cuda, sehingga didapatkan  file executable bandwithTest (yang berwarna hijau).

## Gambar 9. Proses kompilasi program cuda bandwidthTest
Pada  gambar  10,  ditunjukan  bahwa program  telah  dapat  berhasil  dijalankan menggunakan  perangkat  GPU  GeForce RTX  2070  dengan  kecepatan  transfer  3 GB/s.

## Gambar 10. Hasil Komputasi bandwidthTest
Pada gambar 11 ditunjukan juga proses kompilasi  dan  hasil  dari  proses  komputasi perkalian  matriks  yang  berukuran  320x320 yang  dikalikan  dengan  matriks  berukuran 640x320.  Performa  yang  didapatkan  dari GPU  untuk  melakukan  komputasi  tersebut dalah  816.22  GFlop/s,  dan  waktu  yang
SISTEM KOMPUTASI ………………… Ahmad Sabiq 1 , Heri Yugaswara 2 , Hendra Wicaksono 3
digunakan  untuk  melakukan  komputas adalah 0.161 msec.
Gambar 11. proses kompilasi dan hasil dari komputasi perkalian matrix menggunakan GPU
Untuk mendapatkan nilai performa dari sistem yang  dibangun, dilakukan  pengujian perkalian  matriks  dengan  ukuran  8x8 dikalikan  dengan  matriks  berukuran  8x8 hingga perkalian matrik berukuran 4096x4096  dikali  4096x4096.  Pengujian dilakukan  dengan  menjalankan  program yang  menghitung  perkalian  matriks  yang dikomputasikan  menggunakan  CPU  dan juga GPU untuk mendapatkan running time atau waktu yang dibutuhkan untuk melakukan  perhitungan  perkalin  matriks pada setiap ukuran. Hasil running time yang didapat  dari  komputasi  menggunakan  CPU dan  GPU  pada  setiap  ukuran  matriks dibandingkan  untuk  mendapatkan  nilai peningkatan  kecepatan  yang  didapatkan dari komputasi yang menggunkaan CPU ke komputasi menggunakan GPU, seperti yang ada pada tabel 3 dan grafik yang ada  pada gambar 12.
Tabel 3. Hasil Pengujian Perkalian Matrix pada CPU dan GPU
Dari  hasil  pengujian  perkalian  matriks yang telah dilakukan, komputasi menggunakan  CPU  lebih  cepat  pada matriks berukuran 52x52 dan yang berukuran lebih kecil, dibandingkan dengan komputasi yang menggunakan GPU.
Sedangkan  pada  matriks  berukuran  56x56 dan  yang  lebih  besar,  kecepatan  komputasi GPU yang didapat lebih cepat dibandingkan CPU.  Pada  perkalian  matriks  berukuran 4096x4096,  kecepatan  GPU  4312,75  kali lebih cepat dibandingkan dengan CPU.

## Gambar 12. Grafik  peningkatan kecepatan komputasi GPU  disbanding CPU
Peningkatan komputasi untuk pengolahan  data  menggunakan  GPU  yang didapatkan  dari  hasil  pengujian  ini menunjukan  bahwa  sistem  komputasi paralel  berbasis  NVIDIA  CUDA  dapat digunakan untuk melakukan komputasidengan  data-data  yang  besar  dan banyak,  agar  dapat  mempersingkat  waktu eksekusi  program.  Sedangkan  untuk komputasi yang menggunakan data berukuran    kecil  dan  sedikit,  tidak disarankan  untuk  menggunakan  sistem komputer  berbasis  NVIDI  CUDA  ini, karena  waktu  yang    dibutuhkan  untuk menjalankan    program  dapat  lebih  lama dibandingkan saat dieksekusi pada komputer  pada  umumnya  yang  berbasis
CPU.

## 5. Kesimpulan
Pada  penelitian  ini  telah  dibangun sistem  komputasi  paralel  berbasis  GPU dengan GPU NVDIA menggunakan GForce

## ORBITH VOL. 17 NO. 2 Juli 2021 : 158 - 164
RTX2070.  Dari  hasil  pengujian,  sistem  ini dapat  digunkaan  secara  remote  melalui LAN  untuk  menjalankan  komputasi  paralel menggunakan GPU. Komputasi data menggunakan  GPU  membutuhkan  waktu komputasi yang lebih singkat dibandingkan dengan  CPU  untuk  data  yang  berukuran besar.  Sedangkan  pada  data  yang  berkuran kecil, komputasi menggunakan CPU membutuhkan  waktu  yang  lebih  singkat dibandingan menggunakan GPU.

## DAFTAR PUSTAKA
B,  Blaise  dan  L,  Lawrance “What  is Parallel Computing?” [online]. Diakses dari https://computing.llnl.gov/tutorials/pa rallel_comp/ pada 25 April 2018. Calı,  M.,  &  Di  Mauro,  V.  “Performance
Analysis  of  Roberts  Edge  Detection
Using CUDA and OpenGL”. Proceedings  of  the  International Symposium  for  Young  Scientists  in Technology, Engineering and Mathematics. pp. 55–62, 2016 Koprawi,  M,  T.B.  Adji,  and  D.  Adhipta. "Analisis Performa Komputasi Paralel
GPU  Menggunakan  PYCUDA  dan
PYOPENCL dengan Komputasi Serial  CPU  pada  Citra  Digital."  The 9th National Conference on Information Technology and Electrical Engineering 2017.
M.  A.  Gray,  “Getting  started  with  gpu programming,”  Comput.  Sci.  Eng., vol. 11, no. 4, pp. 61–64, 2009. WANG,  Kai;  SHEN,  Zhen.  Artificial societies  and  GPU-based  cloud computing for intelligent
transportation  management.  IEEE
Intelligent  Systems,  2011,  26.4:  22-
28.
Walters, John Paul, dkk. "GPU passthrough performance: A comparison of KVM, Xen,  VMWare  ESXi,  and  LXC  for CUDA  and  OpenCL  applications."
Cloud  Computing  (CLOUD),  2014 IEEE  7th  International  Conference on. IEEE, 2014.
X. Wang, X. Li, M. Zou, and J. Zhou, “AES finalists implementation for GPU and multi-core  CPU  based  on  OpenCL,” 2011, pp. 38–42