500x500 görüntü arasında (ancak boyutları da değiştirebilirim) ve çok küçük bir 2B çekirdeği arasında hızlı bir 2B evrimleşmesi gerçekleştirmek için günlerce CUDA çekirdekleriyle denemeler yapıyorum laplacian 2d çekirdeği, yani 3x3 çekirdeği .. tüm cuda iplikleri ile büyük bir avantaj elde etmek için çok küçüktür).CUDA küçük çekirdekli 2d evrişim - nasıl yapılır
Bir CPU klasik uygulaması oluşturdum (iki tane düşünmek kadar kolay döngü için) ve daha sonra CUDA çekirdekleri oluşturmaya başladım. Birkaç hayal kırıklığı denemeden sonra
Bu kod ile sona erdi daha hızlı bir konvolüsyonunu gerçekleştirmek için: http://www.evl.uic.edu/sjames/cs525/final.html (Paylaşılan Bellek bölümüne bakınız), temelde 16x16 ipler Yükü o paylaşılan hafızada ihtiyaç duyduğu tüm büklüm verilerini engelleyebilir sağlar ve daha sonra konvolüsyonu gerçekleştirir.Hiçbir şey, CPU hala çok daha hızlı. FFT yaklaşımını denemedim çünkü CUDA SDK, büyük çekirdek boyutlarıyla verimli olduğunu belirtiyor. Eğer yazdığım her şeyi okumak
olsun ya da olmasın, sorum şu:
Ben nispeten büyük görüntü ve CUDA ile çok küçük bir çekirdeğin (3x3) arasında bir hızlı 2B konvolüsyonunu gerçekleştirebilirsiniz nasıl ?
"CPU hala çok daha hızlı" ile ne demek istiyorsun? Belleğin GPU'ya kopyalanması ve/veya çekirdeğin başlaması ve tamamlanması için gereken süre dahil olmak üzere tüm programı zamanlıyor musunuz? –
Şu an için zamanlamaya ihtiyacım yok, CPU ile programın LOT daha hızlı tamamlandığını görebiliyorum :( – paulAl