GPU

Pengenalan Pengaturcaraan GPU

Pengenalan Pengaturcaraan GPU

Pengkomputeran tujuan umum pada GPU (Unit Pemprosesan Grafik), yang lebih dikenal sebagai pemrograman GPU, adalah penggunaan GPU bersama dengan CPU (Central Processing Unit) untuk mempercepat pengiraan dalam aplikasi yang hanya ditangani oleh CPU.Walaupun pengaturcaraan GPU praktis hanya dapat dilaksanakan selama dua dekad yang lalu, aplikasinya kini merangkumi hampir semua industri. Sebagai contoh, pengaturcaraan GPU telah digunakan untuk mempercepat pemprosesan video, gambar digital, dan isyarat audio, fizik statistik, pengkomputeran saintifik, pengimejan perubatan, penglihatan komputer, rangkaian saraf dan pembelajaran mendalam, kriptografi, dan bahkan pengesanan pencerobohan, di antara banyak bidang lain.

Artikel ini berfungsi sebagai pengantar teori yang ditujukan kepada mereka yang ingin belajar bagaimana menulis program yang dipercepat GPU dan juga mereka yang mempunyai minat umum dalam topik menarik ini.

Perbezaan Antara GPU dan CPU

Dahulu sebelum grafik 3D beresolusi tinggi dan kesetiaan menjadi kebiasaan, kebanyakan komputer tidak mempunyai GPU. Sebaliknya, CPU menjalankan semua arahan program komputer dengan melakukan operasi aritmetik, logik, kawalan, dan input / output (I / O) asas yang ditentukan oleh arahan. Atas sebab ini, CPU sering digambarkan sebagai otak komputer.

Tetapi dalam beberapa tahun terakhir, GPU, yang dirancang untuk mempercepat penciptaan gambar untuk output ke perangkat paparan, sering membantu CPU menyelesaikan masalah di daerah yang sebelumnya hanya ditangani oleh CPU.

Pengilang kad grafik Nvidia menyediakan cara mudah untuk memahami perbezaan mendasar antara GPU dan CPU: “CPU terdiri daripada beberapa teras yang dioptimumkan untuk pemprosesan siri berurutan sementara GPU mempunyai seni bina selari secara besar-besaran yang terdiri dari ribuan yang lebih kecil dan lebih efisien teras yang dirancang untuk menangani pelbagai tugas secara serentak."

Keupayaan untuk menangani beberapa tugas pada masa yang sama menjadikan GPU sangat sesuai untuk beberapa tugas, seperti mencari kata dalam dokumen, sementara tugas lain, seperti mengira urutan Fibonacci, sama sekali tidak mendapat manfaat daripada pemprosesan selari.

Walau bagaimanapun, antara tugas yang mendapat manfaat besar dari pemprosesan selari adalah pembelajaran mendalam, salah satu kemahiran yang paling dicari dalam teknologi hari ini. Algoritma pembelajaran mendalam meniru aktiviti dalam lapisan neuron di neokorteks, yang membolehkan mesin belajar bagaimana memahami bahasa, mengenali corak, atau menyusun muzik.

Sebagai hasil daripada kepentingan kecerdasan buatan yang semakin meningkat, permintaan untuk pembangun yang memahami pengkomputeran tujuan umum pada GPU telah meningkat.

CUDA Versus OpenCL Versus OpenACC

Oleh kerana GPU memahami masalah komputasi dari segi primitif grafik, usaha awal untuk menggunakan GPU sebagai pemproses tujuan umum memerlukan penyusunan semula masalah komputasi dalam bahasa kad grafik.

Nasib baik, kini lebih mudah untuk membuat pengkomputeran dipercepat GPU berkat platform pengkomputeran selari seperti Nvidia's CUDA, OpenCL, atau OpenACC. Platform ini membolehkan pembangun mengabaikan halangan bahasa yang wujud antara CPU dan GPU dan, sebaliknya, memberi tumpuan kepada konsep pengkomputeran peringkat tinggi.

CUDA

Mula-mula dikeluarkan oleh Nvidia pada tahun 2007, CUDA (Compute Unified Device Architecture) adalah rangka kerja hak milik yang dominan hari ini. "Dengan CUDA, pemaju dapat mempercepat aplikasi pengkomputeran secara dramatis dengan memanfaatkan kekuatan GPU," jelas kerangka kerja Nvidia.

Pembangun boleh memanggil CUDA dari bahasa pengaturcaraan seperti C, C ++, Fortran, atau Python tanpa kemahiran dalam pengaturcaraan grafik. Lebih-lebih lagi, CUDA Toolkit dari Nvidia mengandungi semua yang diperlukan oleh pembangun untuk mula membuat aplikasi dipercepat GPU yang jauh lebih baik daripada rakan-rakan mereka yang terikat pada CPU.

CUDA SDK tersedia untuk Microsoft Windows, Linux, dan macOS. platform CUDA juga menyokong antara muka komputasi lain, termasuk OpenCL, Microsoft's DirectCompute, OpenGL Compute Shaders, dan C ++ AMP.

BukaCL

Mula-mula dikeluarkan oleh Khronos Group pada tahun 2009, OpenCL adalah standard terbuka bebas royalti yang paling popular untuk pengaturcaraan lintas platform, selari. Menurut Khronos Group, “OpenCL sangat meningkatkan kecepatan dan responsif dari spektrum aplikasi yang luas dalam banyak kategori pasar termasuk judi permainan dan hiburan, perisian ilmiah dan perubatan, alat kreatif profesional, pemrosesan penglihatan, dan latihan jaringan saraf dan inferens."

OpenCL setakat ini telah dilaksanakan oleh Altera, AMD, Apple, ARM, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx, dan ZiiLABS, dan ia menyokong semua sistem operasi yang popular di semua platform utama, menjadikannya sangat serba boleh. OpenCL mendefinisikan bahasa seperti C untuk menulis program, tetapi API pihak ketiga ada untuk bahasa dan platform pengaturcaraan lain seperti Python atau Java.

OpenACC

OpenACC adalah standard pengaturcaraan termuda untuk pengkomputeran selari yang dijelaskan dalam artikel ini. Ia mula dikeluarkan pada tahun 2015 oleh sekumpulan syarikat yang terdiri daripada Cray, CAPS, Nvidia, dan PGI (Kumpulan Portland) untuk mempermudah pengaturcaraan selari sistem CPU / GPU yang heterogen.

"OpenACC adalah model pengaturcaraan selari prestasi mudah alih berasaskan arahan berdasarkan pengguna yang direka untuk saintis dan jurutera yang berminat untuk memasukkan kod mereka ke pelbagai platform dan arkitek perkakasan HPC yang heterogen dengan usaha pengaturcaraan yang jauh lebih sedikit daripada yang diperlukan dengan tahap rendah model.,”Kata OpenACC di laman web rasminya.

Pembangun yang berminat dengan OpenACC dapat memberi keterangan kod sumber C, C ++, dan Fortran untuk memberitahu GPU kawasan mana yang harus dipercepat. Tujuannya adalah untuk menyediakan model untuk pemrograman pemecut yang mudah alih di seluruh sistem operasi dan pelbagai jenis CPU dan pemecut host.

Mana Yang Perlu Saya Gunakan?

Pilihan antara ketiga platform pengkomputeran selari ini bergantung pada matlamat anda dan persekitaran tempat anda bekerja. Sebagai contoh, CUDA digunakan secara meluas di akademik, dan juga dianggap paling mudah untuk dipelajari. OpenCL sejauh ini merupakan platform pengkomputeran selari paling mudah alih, walaupun program yang ditulis dalam OpenCL masih perlu dioptimumkan secara individu untuk setiap platform sasaran.

Pelajari Pengekodan GPU di LinuxHint.com

Pengaturcaraan GPU dengan Python

Pengaturcaraan GPU dengan C++

Bacaan lanjut

Untuk membiasakan diri dengan CUDA, kami mengesyorkan anda mengikuti arahan dalam Panduan Memulakan CUDA, yang menerangkan cara menjalankan CUDA di Linux, Windows dan macOS. Panduan Pengaturcaraan OpenCL AMD memberikan gambaran mendalam yang mendalam mengenai OpenCL, tetapi menganggap bahawa pembaca sudah biasa dengan tiga bab pertama Spesifikasi OpenCL. OpenACC menawarkan tutorial pengenalan tiga langkah yang dirancang untuk menunjukkan bagaimana memanfaatkan program GPU, dan lebih banyak maklumat dapat ditemukan dalam spesifikasi OpenACC.

Cara Mengubah Tetapan Tetikus dan Pad Sentuh Menggunakan Xinput di Linux
Sebilangan besar pengedaran Linux dihantar dengan perpustakaan "libinput" secara lalai untuk menangani peristiwa input pada sistem. Ia dapat memproses...
Buat semula butang tetikus anda secara berbeza untuk perisian yang berbeza dengan X-Mouse Button Control
Mungkin anda memerlukan alat yang dapat mengubah kawalan tetikus anda dengan setiap aplikasi yang anda gunakan. Sekiranya ini berlaku, anda boleh menc...
Kajian Tetikus Tanpa Wayar Microsoft Sculpt Touch
Saya baru-baru ini membaca mengenai Sentuhan Microsoft Sculpt tetikus tanpa wayar dan memutuskan untuk membelinya. Setelah menggunakannya sebentar, sa...