GPU hesaplamayı yönetmek için Julia'nın CUDArt paketini kullanmaya başladım. Ben gpu gelen verileri (örneğin, to_host()
kullanarak) çekmek için giderseniz ben gerekli tüm hesaplamalar üzerinde gerçekleştirilmeden önce bunu yapmak emin nasıl merak ediyorum.Julia CUDArt ile nasıl senkronize edilir?
Bazı deneyler aracılığıyla, belirli CudaArray güncelleştirilirken to_host(CudaArray)
'un görünmeyeceği anlaşılıyor. Yani, belki sadece bunu kullanmak güvenliği sağlamak için yeterli mi? Ama biraz şansa benziyor.
Şu anda, documentation paketinde gösterildiği gibi, çekirdeklerimi çalıştırmak için launch()
işlevini kullanıyorum.
CUDArt belgeleri, Julia'nın @sync
makrosunu kullanarak güzel görünmesini sağlayan bir örnek verir. Ama @sync
amaçları için "işim" ile işim bitti ve çekirdek bir kez bittiğinde, launch()
ile başlatılır başlatılmaz hareket etmeye hazırım. launch()
'un çalışmasını anladığım kadarıyla - bu özelliği değiştirmenin bir yolu yoktur (ör. "Başlattı" işlevinin çıktısını almayı beklemek için).
Böyle bir senkronizasyonu nasıl yapabilirim?
İyi nokta. Ben 'device_synchronize' bir dizi ayarda hala yararlı olabileceğini düşünüyorum. 1. Akımları argüman olarak almayan CUBLAS, CUSPARSE vb. Gibi diğer işlevlerle birlikte kullanabilirsiniz. Ayrıca, sadece tek bir GPU ile çalışıyorsanız, akışlara bile ihtiyacınız olmayabilir ve bu nedenle 'device_synchronize', daha basit uygulamalara yol açabilir. –