Saya mencari contoh-contoh algoritma tujuan umum (yang artinya tidak terkait grafis) yang telah terbukti menjalankan urutan besarnya lebih cepat pada GPU daripada pada CPU. Saya akan menggunakan contoh-contoh ini untuk berpikir kreatif tentang algoritma lain yang dapat saya terapkan pada GPU.
algorithms
performance
gpu
David
sumber
sumber
Jawaban:
Beberapa hal segera terlintas dalam pikiran:
Klien Bitcoin khusus ditulis untuk menggunakan GPU untuk melakukan hash kriptografi. Klien GPU umumnya melakukan lebih dari 10x lebih baik daripada klien CPU SMP pada sistem 4-core yang khas. Bitcoin tergantung pada perhitungan sejumlah besar hash kriptografi yang tidak terkait, yang dapat dihitung secara paralel.
Proyek Folding @ Home menawarkan klien GPU untuk simulasi dinamika molekul mereka. Komputasi ini dilakukan pada ikatan individu antara atom dalam berbagai lingkungan dan kondisi. Matematika relatif sederhana, tetapi harus dihitung milyaran kali untuk setiap ikatan untuk mensimulasikan aktivitas nanodetik belaka.
Contoh "mainan" populer yang digunakan oleh pendukung komputasi GPU adalah masalah n-body .
Yang sama-sama memiliki kesamaan adalah bahwa semuanya memalukan . Artinya, masalahnya dapat didekomposisi menjadi sejumlah kecil perhitungan terpisah yang dilakukan berkali-kali selama satu set data besar. Itu adalah jenis perhitungan yang bagus untuk GPU.
Komputasi kompleks yang bergantung pada hasil perhitungan sebelumnya tidak cocok untuk GPU.
sumber
Transcoding video dan audio adalah contoh yang bagus. Ini konversi dari satu format file ke yang lain. Contohnya adalah MPEG-2 hingga H.264.
Catatan transcoding video tidak terkait dengan grafik 3D. Anda tidak dapat menyandikan video menggunakan vertex dan pixel shader.
sumber
Pertambangan Bitcoins menggunakan GPU telah menjadi sangat populer.
Aplikasi lain adalah di pasar keuangan untuk perdagangan waktu nyata menggunakan model seperti Black-Scholes .
sumber
Permainan Kehidupan Conway adalah contoh akademis yang bagus.
sumber
Masalah yang membutuhkan banyak matematika itu bisa dilakukan secara bersamaan. Di tempat saya dulu bekerja, kami ingin bermain dengan GPU untuk menambah / mengurangi / mengalikan 2 matriks untuk mencari koreksi genetik. Pertama kali saya mendengar tentang GPU adalah bahwa mereka sedang digunakan oleh rumah perangkat lunak keuangan untuk melakukan beberapa pemodelan mereka (monte carlo dan sebagainya). Ini akan berguna dalam pemecahan kode.
GPU mungkin tidak akan banyak membantu dengan masalah pemrograman Anda yang lebih teratur di mana beberapa core CPU sudah cukup karena sebagian besar program reguler hanya perlu menjalankan beberapa proses bersamaan. (mungkin berbeda dengan memori / disk yang jauh lebih cepat daripada yang kita miliki saat ini)
sumber
Mungkin saya menjadi sangat matematika / sains / teknik komputasi spesifik tetapi satu yang terlintas dalam pikiran adalah algoritma FFT.
Saya telah melihat patokan FFT ini dilemparkan sebelumnya, dan meskipun beberapa tahun saya pikir itu dilakukan dengan baik seperti apa adanya: http://www.sharcnet.ca/~merz/CUDA_benchFFT
sumber