Nama : Muhammad Zaky Fauzi
NPM : 57414606
Kelas : 4IA21
Dosen : Indra Adi Permana
Mata Kuliah : Pengantar Komputasi Modern
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
CUDA
CUDA adalah platform komputasi paralel dan antarmuka pemrograman aplikasi (API) yang dibuat oleh Nvidia. Hal ini memungkinkan pengembang perangkat lunak dan insinyur perangkat lunak untuk menggunakan unit pemrosesan grafis (GPU) berkemampuan CUDA untuk pemrosesan tujuan umum-sebuah pendekatan yang diistilahkan GPGPU (komputasi General-Purpose pada Unit Pemrosesan Grafik). Platform CUDA adalah lapisan perangkat lunak yang memberikan akses langsung ke set instruksi virtual GPU dan elemen komputasi paralel, untuk eksekusi kernel komputasi.
Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui CUDA-accelerated libraries, compiler directives seperti OpenACC, dan ekstensi untuk bahasa pemrograman standar industri termasuk C, C ++ dan Fortran. Programmer C / C ++ menggunakan 'CUDA C / C ++', dikompilasi dengan nvcc, kompiler C / C ++ berbasis LLVM dari Nvidia. Programmer Fortran dapat menggunakan 'CUDA Fortran', yang dikompilasi dengan compiler Fortran PGI CUDA dari The Portland Group.
Selain libraries, compiler directives, CUDA C / C ++ dan CUDA Fortran, platform CUDA mendukung antarmuka komputasi lainnya, termasuk OpenCL Khronos Group, Microsoft DirectCompute, OpenGL Compute Shaders, dan C ++ AMP. wrappers pihak ketiga juga tersedia untuk Python, Perl, Fortran, Java, Ruby, Lua, Common Lisp, Haskell, R, MATLAB, IDL, dan dukungan native di Mathematica.
Dalam industri permainan komputer, GPU digunakan untuk perenderan grafis, dan untuk perhitungan fisika permainan (efek fisik seperti puing, asap, api, cairan); contoh termasuk PhysX dan Bullet. CUDA juga telah digunakan untuk mempercepat aplikasi non-grafis dalam biologi komputasi, kriptografi dan bidang lainnya dengan urutan besarnya atau lebih.
Keuntungan
CUDA memiliki beberapa keunggulan dibandingkan dengan general-purpose computation on GPUs (GPGPU) tradisional menggunakan API grafis:
- Scattered reads - kode dapat membaca dari alamat acak dalam memori
- Univied virtual memory (CUDA 4.0 dan lebih tinggi)
- Unified memory (CUDA 6.0 dan di atasnya)
- Shared memory - CUDA memaparkan bagian fast shared memory yang dapat dibagikan di antara 5. Thread. Ini dapat digunakan sebagai cache yang dikelola pengguna, memungkinkan bandwidth yang lebih tinggi menggunakan pencarian tekstur.
- Unduhan dan pembacaan yang lebih cepat ke dan dari GPU
- Dukungan penuh untuk operasi integer dan bitwise, termasuk pencarian tekstur bilangan bulat
Keterbatasan
- Baik untuk komputer host atau perangkat GPU, semua source code CUDA sekarang diproses sesuai dengan aturan sintaks C ++. Ini tidak selalu terjadi. Versi CUDA sebelumnya didasarkan pada aturan sintaks C. Seperti halnya kasus yang lebih umum dari mengkompilasi kode C dengan kompiler C ++, karena itu mungkin bahwa source code C-style yang lama akan gagal dikompilasi atau tidak akan berperilaku seperti yang dimaksudkan semula.
- Interoperabilitas dengan bahasa render seperti OpenGL adalah satu arah, dengan OpenGL memiliki akses ke memori CUDA yang terdaftar tetapi CUDA tidak memiliki akses ke memori OpenGL.
- Menyalin antara host dan memori perangkat dapat menimbulkan performance hit karena bandwidth dan latensi bus sistem (ini dapat dikurangi sebagian dengan transfer memori asinkron, ditangani oleh mesin DMA GPU).
- Thread harus berjalan dalam kelompok setidaknya 32 untuk kinerja terbaik, dengan jumlah total penomoran dalam ribuan. Cabang dalam kode program tidak mempengaruhi kinerja secara signifikan, asalkan masing-masing dari 32 utas mengambil jalur eksekusi yang sama; model eksekusi SIMD menjadi batasan yang signifikan untuk setiap tugas yang berbeda secara inheren (misalnya melintasi struktur data partisi ruang selama pelacakan sinar).
- Tidak seperti OpenCL, CUDA-enabled GPU hanya tersedia dari Nvidia.
- Tidak ada fungsi emulator atau fallback yang tersedia untuk revisi modern.
- Valid C ++ kadang-kadang dapat ditandai dan mencegah kompilasi karena cara kompiler mendekati optimalisasi untuk batasan perangkat GPU target.
- C ++ run-time type information (RTTI) dan penanganan pengecualian C ++-style hanya didukung dalam kode host, tidak dalam kode perangkat.
- Dalam presisi tunggal pada generasi pertama CUDA menghitung kemampuan perangkat 1.x, angka denormal tidak didukung dan malah memerah ke nol, dan presisi pembagian dan operasi akar kuadrat sedikit lebih rendah daripada matematika presisi tunggal yang memenuhi standar IEEE 754. Perangkat yang mendukung kemampuan komputasi 2.0 dan di atas mendukung nomor-nomor normal, dan pembagian dan operasi akar kuadrat sesuai standar IEEE 754 secara default. Namun, pengguna dapat memperoleh matematika game-grade sebelumnya yang lebih cepat dari perangkat 1,x komputasi berkomputasi jika diinginkan dengan menetapkan flag compiler untuk menonaktifkan divisi akurat dan akar kuadrat akurat, dan mengaktifkan pembilasan nomor-nomor normal ke nol.
Referensi
