OpenCL programımda, her çekirdeğin erişebilmesi için ihtiyaç duyduğu 60+ global bellek arabelleği dolduracağım. Her bir çekirdeğin bu arabelleklerin her birinin yerini bilmesini sağlamak için önerilen yol nedir?Birçok bellek nesnesinin OpenCL çekirdeklerini bilgilendirmenin doğru yolu?
Tamponlar uygulamanın ömrü boyunca stabildirler - yani, uygulama başlangıcında arabellekleri tahsis edeceğiz, birden fazla çekirdek arayalım, daha sonra uygulama sonunda arabellekleri serbest bırakacağız. Bununla birlikte, içerikleri, çekirdekler onlardan okuduğunda/yazdıkça değişebilir.
CUDA'da, bunu yaptığım gibi CUDA kodumda 60'tan fazla program kapsamı global değişkenleri oluşturmaktı. Daha sonra, ana bilgisayarda, bu küresel değişkenlere tahsis ettiğim aygıt arabelleklerinin adresini yazarım. Öyleyse, çekirdekler çalışmak için ihtiyaç duydukları arabelleği bulmak için bu küresel değişkenleri kullanırlardı.
OpenCL'de bunu yapmanın en iyi yolu ne olurdu? Görünüşe göre, CL'nin global değişkenleri CUDA'lardan biraz farklıdır, fakat CUDA metodumun çalışıp çalışmayacağı konusunda net bir cevap bulamıyorum, eğer öyleyse, tampon göstergelerinin global değişkenlere aktarılmasıyla ilgili nasıl gidileceği. Bu işe yaramazsa, aksi halde en iyi yolu nedir?
60 argümanı, bu kodun parçası olduğum bir araştırma projesi için özel bir kod sentezleyicisi tarafından üretilmesinden kaynaklanıyor. Maalesef bu kısmı kontrol edemiyorum. Belirttiğiniz tampon paketleme metodolojisini kullanarak bitirdim. Umarım 60 argümandan daha iyi bir yöntemdir. Yardım ettiğin için teşekkür ederim! – int3h