2012-07-27 23 views

cevap

5

Yine de, bir thrust :: host_vector öğesini eşlenmiş bir ana bilgisayar ayırması olarak kullanmanın mümkün olmadığından eminim. Sabitlenmiş bir bellek ayırıcısı var, ancak eşlenen belleğin kullanılabilir olduğuna inanmıyorum.

    cudaHostAlloc
  1. ile
  2. Ayrılan eşlenen, İğnelenmiş konak bellek cudaHostGetDevicePointer
  3. kullanarak sıfır kopya bellek için cihaz işaretçisi alın söz konusu cihaz işaretçisi üzerinde thrust::device_pointer_cast kullanarak thrust::device_ptr oluşturun: Ne yapmanız gereken böyle bir şeydirgeçmesi dirctly

ya thrust::device_ptr kullanarak thrust::device_vector yapabilirsiniz (daha fazla bilgi için here bakınız) ya da Bir yineleyici kabul eden herhangi bir algoritmaya.

+0

Teşekkürler! Ama itme :: device_ptr kullanarak thrust :: device_vector nasıl yapabilirim? – Alex

+1

Bir iterator aralığından bir 'thrust :: device_vector' yaratabilirsiniz, bu nedenle 'thrust :: device_vector v (p, p + n)' gibi bir şey, '' device_ptr'' p''den vektör 'v' oluşturur. 'n' elemanlarının bir tahsisi. – talonmies

+1

Ama yeni device_vector yaratacak ve device_ptr p'den belleğe vektör kopyalayacak, değil mi? – Alex