Compute Unified Architecture (CUDA) adalah platform untuk pemrosesan tujuan umum pada GPU Nvidia. Tugas yang tidak memerlukan eksekusi berurutan dapat dijalankan secara paralel dengan tugas lain di GPU menggunakan CUDA.
Kebutuhan akan daya komputasi yang ditingkatkan semakin meningkat dari hari ke hari. Pabrikan di seluruh dunia kini menghadapi tantangan untuk meningkatkan CPU lebih jauh karena keterbatasan, misalnya ukuran, suhu, dll. Dalam situasi seperti itu, penyedia solusi mulai mencari peningkatan kinerja di tempat lain.
Salah satu solusi yang memungkinkan peningkatan performa secara drastis adalah penggunaan GPU untuk komputasi paralel. Jumlah inti dalam GPU jauh lebih banyak daripada CPU. CPU dirancang untuk melakukan tugas secara berurutan, serangkaian tugas dapat diturunkan pada GPU yang memungkinkan paralelisasi.
Dengan dukungan bahasa C, C++, dan Fortran, sangat mudah untuk memindahkan tugas intensif komputasi ke GPU Nvidia menggunakan CUDA. CUDA digunakan dalam domain yang membutuhkan banyak daya komputasi Atau dalam skenario di mana paralelisasi dimungkinkan dan diperlukan kinerja tinggi dan memungkinkan paralelisasi.
Domain seperti pembelajaran mesin, penelitian, dan analisis ilmu kedokteran, fisika, superkomputer, penambangan crypto, pemodelan ilmiah, dan simulasi, dll. Menggunakan CUDA.
Sejarah CUDA
Penggunaan GPU untuk komputasi paralel dimulai hampir dua dekade lalu. Sekelompok peneliti di Stanford meluncurkan Brook; platform untuk model pemrograman tujuan umum.
Penelitian ini didanai oleh Nvidia dan peneliti utama Ian Buck kemudian bergabung dengan Nvidia untuk mengembangkan produk komersial untuk komputasi paralel berbasis GPU yang disebut CUDA.
Sebanyak 32 rilis sejauh ini telah dibuat oleh Nvidia dengan versi saat ini berjudul CUDA toolkit 11.1 Update 1. Awalnya, bahasa yang didukung untuk CUDA adalah C, namun CUDA sekarang mendukung C++ juga.
Cara Kerja CUDA
Di dalam kompiler CUDA yang didukung, kode apa pun dapat dijalankan di GPU dengan menggunakan kata kunci __global__. Pemrogram harus mengubah panggilan malloc/new dan free/delete mereka sesuai panduan CUDA sehingga ruang yang sesuai dapat dialokasikan pada GPU. Setelah komputasi pada GPU selesai, hasilnya disinkronkan dan dipindahkan ke CPU.
Cara Download CUDA
Versi terbaru CUDA dapat diunduh dari https://developer.nvidia.com/CUDA-downloads. Versi CUDA yang berbeda untuk sistem operasi yang berbeda yaitu Windows dan Linux tersedia. Jika Anda ingin mengunduh CUDA versi lama, lihat URL ini: https://developer.nvidia.com/cuda-toolkit-archive.
CUDA Untuk Windows
Untuk menginstal CUDA untuk Windows, Anda harus memiliki GPU yang didukung CUDA, versi Windows yang didukung, dan Visual Studio diinstal. Sebelum mengunduh CUDA, pastikan sistem Anda memiliki GPU yang didukung oleh CUDA. Setelah diverifikasi, unduh versi CUDA yang diinginkan dan instal di sistem Anda. Panduan penginstalan terperinci ada di sini: https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
CUDA Untuk Linux
Sebelum mengunduh CUDA untuk Linux, Anda harus memiliki GPU yang didukung CUDA, versi Linux yang didukung dengan kompiler dan rantai alat GCC. Installer CUDA untuk berbagai distro Linux hadir di https://developer.nvidia.com/CUDA-downloads. Anda juga dapat menginstal CUDA menggunakan pengelola paket distribusi Linux Anda. Panduan penginstalan mendetail untuk berbagai distribusi Linux tersedia di https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html.
Kelebihan CUDA
- Gratis
- Proses instalasi sangat mudah
- Tidak memerlukan pengetahuan baru dan dapat dengan mudah digunakan dengan Kode C, C++, dan Fortran yang sudah ada
- Pembungkus pihak ketiga untuk bahasa pemrograman lain seperti Java, Python, dll. Juga tersedia.
- Komunitas yang luas dan bersemangat
- Berbagai perpustakaan tersedia untuk berbagai tugas komputasi paralel
- Jauh lebih cepat dari pesaing yaitu OpenCL
CUDA dan Incredibuild
Kompilasi turbocharges Incredibuild, serta kompilasi CUDA dan lingkungan pengembangan NVIdia NSight, pengujian, dan berton-ton beban kerja intensif komputasi lainnya dengan mendistribusikan proses secara mulus dan bersamaan di seluruh CPU yang menganggur di seluruh host jarak jauh di jaringan lokal Anda atau cloud, mengubah setiap host secara mulus menjadi superkomputer dengan ratusan inti – secara radikal mempersingkat waktu kompilasi dan cakupan aplikasi besar lainnya.
Nvidia Nsight Systems dan CUDA
Nvidia Nsight Systems mengumpulkan data dari CPU, GPU, driver, dan Kernal dan menyajikannya dengan garis waktu yang konsisten. Informasi ini memungkinkan pengembang untuk memahami perilaku program dari waktu ke waktu.
Nsight System memiliki beberapa modul: Nsight Compute dan Nsight Graphics, dan banyak API. Dengan Nsight Compute, program dijalankan terlebih dahulu sehingga bagian dari program yang tidak bekerja dengan baik dapat diidentifikasi.
Pemrogram kemudian dapat mengubah proses eksekusi dari proses yang teridentifikasi ini untuk meningkatkan kinerja. Nsight Graphics adalah alat pengembang mandiri yang memungkinkan debugging, pembuatan profil, dan mengekspor bingkai, dibuat dengan SDK grafis yang didukung.
Alternatif CUDA
Alternatif terbesar untuk CUDA adalah OpenCL. OpenCL dibuat oleh Apple (OpenCL bersama dengan OpenGL tidak digunakan lagi untuk perangkat keras Apple, mendukung Metal 2) dan Khronos Group dan diluncurkan pada tahun 2009. Perbedaan terbesar antara OpenCL dan CUDA adalah perangkat keras yang didukung.
CUDA dirancang khusus untuk GPU Nvidia, tetapi OpenCL bekerja pada GPU Nvidia dan AMD. Kode OpenCL dapat dijalankan di GPU dan CPU sementara kode CUDA hanya dijalankan di GPU. CUDA jauh lebih cepat pada GPU Nvidia dan menjadi prioritas peneliti pembelajaran mesin. Baca lebih lanjut untuk perbandingan mendalam tentang CUDA vs OpenCL.