Belleği __device__ işlevinde ayırmak için CUDA'da bir yol var mı? Bunu yaparken herhangi bir örnek bulamadım.CUDA belleği __device__ işlevine ayırma
Manüel: B.15 Dinamik Genel Bellek Ayırma void * malloc (size_t boyut); void free (void * ptr); , genel bellekteki sabit boyutlu bir yığıntan dinamik olarak bellek ayırır ve boş bırakır. CUDA in-kernel malloc() işlevi, aygıt yığınından en az boyut bayt ayırır ve ayrılan belleğe bir işaretçi veya isteği yerine getirmek için yetersiz bellek varsa NULL döndürür. Döndürülen göstericinin 16 baytlık bir sınırla hizalanması garanti edilir. CUDA in-kernel free() işlevi, bir önceki çağrıya malloc() tarafından döndürülen ptr ile gösterilen belleği ayırır. Ptr NULL ise, ücretsiz() çağrısı yoksayılır. Aynı ptr ile serbest() tekrarlanan çağrılar tanımsız bir davranışa sahiptir. Belirli bir CUDA iş parçacığı tarafından malloc() aracılığıyla ayrılan bellek, CUDA bağlamının ömrü boyunca veya serbest bir çağrıyla açık bir şekilde serbest bırakılıncaya kadar ayrılmış kalır(). Daha sonraki çekirdek açılışlarından bile herhangi bir CUDA iş parçacığı tarafından kullanılabilir. Herhangi bir CUDA iş parçacığı, başka bir iş parçacığı tarafından ayrılmış belleği boşaltabilir, ancak aynı işaretçinin bir kereden fazla serbest kalmamasını sağlamak için dikkatli olunmalıdır.
Belleği dinamik olarak ayırmaya mı çalışıyorsunuz? – jmilloy
Evet. Ben biraz egzotik bir gereksinim olduğunu anlıyorum ama ben malloc kullanıyorum ve __global__ işlevi ücretsiz iken, mevcut kod tabanı – SparcU