Sabitlenmiş bellek oluşturma hakkında sorularım var.Cularda sabitlenmiş belleğe vektör tipi değer nasıl yapılır
Şimdi büyük boyutlu veriyle ilgilenmek için CUDA kullanıyorum.
Çalışma süresini azaltmak için, bellek kopyalama ve çekirdek başlatmanın çakışması gerektiğini anladım.
Bazı metinleri ve web sayfalarını, bellek kopyalama ve çekirdek başlatmayı örtüştükten sonra, ana bilgisayar belleğini sabitlenmiş belleğe ayıracak olan cudaMallocHost kullanarak ana bilgisayar belleğini ayırmanın gerekli olduğunu fark ettim.
Konakta tam sayı veya dizi tipi kullanılması durumunda sabitlenmiş bellek yapmak çok kolaydı. Bunun gibi
cudaStream_t* streams = (cudaStream_t*)malloc(MAX_num_stream * sizeof(cudaStream_t));
for(i=0; i<MAX_num_stream; i++)
cudaStreamCreate(&(streams[i]));
cudaMallocHost(&departure, its_size);
for(n=1; ... ; n++){
cudaMemcpyAsync(... streams[n]);
kernel <<< ... , ... , ... , streams[n] >>> (...);
}
Ama benim durumumda
, benim ev sahibi kalkış hafıza vertor türüne göre ayarlanır.Ayrıca, cudaMallocHost kullanarak vektör tipi ana bellek türünü sabitlenmiş belleğe dönüştürmenin yollarını bulamıyorum.
Bu sorunu çözmek için bana yardımcı olun veya tavsiyelerde bulunun. Fakir İngilizcemi okuduğunuz için teşekkür ederim. Teşekkürler.
"Vektör türü" ile tam olarak ne demek istiyorsunuz? C++ 'std :: vector' mu, yoksa başka bir şey mi? – talonmies
Evet. Std :: vektörünü kastediyorum. – Umbrella