İki parçalı soru: Ben GPGPU denemeye bir araç olarak hayatın oyunu kullanan bir okul projesi üzerinde çalışıyorumOpenGL-OpenCL birlikte çalışma transfer saatleri
. Gerçek zamanlı görselleştirmeler için OpenCL ve OpenGL kullanıyorum ve amaç bu şeyi olabildiğince büyük ve hızlı bir şekilde elde etmektir. Profilleme üzerine, çerçeve süresinin, CL arabelleklerinin alınması ve serbest bırakılması ile baskın olduğunu ve zaman maliyetinin, tamponun gerçek boyutuyla doğru orantılı olduğunu buluyorum.
1) Bu normal midir? Neden bu olmalı? Anlayışımın en iyisi için, tampon asla cihaz hafızasını terk etmez ve CL Acquire/Release, bir muteks gibi davranır. OpenCL, her baytı tek tek veya bir şey kilidini/kilidini açar mı?
Ben 24 bit RGBA renk modundan küçüldü ettik Bundan kaçınmak için (OpenGL'ın tercih renk modu bunu? Anladığım kadarıyla) 8 bit RGB renk. Bu, büyük bir hızlanma ile sonuçlandı, ancak çekirdeğimi ayarladıktan sonra aktarım süreleri yeniden baskın çıkıyor.
Aktarım sürelerinin tamamen ortadan kaldırılmasıyla ilgili herhangi bir fikir bulunmadığında (çekirdeğimin OpenCL'den GLSL'ye taşınması, projenin asıl kapsamını geçecek kadar kısa), şimdi en iyi seçeneğimin yazmak olduğunu düşünüyorum. bir bitmap'e (şu anda kullanıyorum 8-bit pixmap aksine) ve sonra bir dörtlü doku için bir renk indeksi ile bu bitmap kullanın.
2) Doğrudan bir bitmap kullanarak dörtlü yapıyabilir miyim? Ben bir yardımcı arabellek çizmek için glBitmap kullanarak düşündüm ve sonra bu arabayı dörtlümde doku oluşturmak için kullandım, ancak kullanılabilirse daha doğrudan bir yol kullanmayı tercih ederim.
Mükemmel. 1.0 (donanım sınırlamaları) kullanıyorum ve bu sorunların çözüldüğünü bilmekten memnuniyet duyuyorum. Gerçekten ihtiyacım olan şey yeni bir ekran kartı. –