2012-07-27 12 views

Odpowiedz

5

Jestem prawie pewny, że nadal nie można użyć ciągu :: host_vector jako odwzorowanej alokacji hosta. Istnieje przypięty alokator pamięci, ale nie wierzę, że zmapowana pamięć jest dostępna. Co trzeba zrobić, to coś takiego:

  1. Przydzielone odwzorowany, przypięte pamięć hosta z cudaHostAlloc
  2. uzyskać wskaźnik urządzenia dla pamięci zera kopiować z użyciem cudaHostGetDevicePointer
  3. Tworzenie thrust::device_ptr użyciu thrust::device_pointer_cast tego wskaźnika urządzenia (patrz here aby uzyskać więcej informacji)

można albo dokonać thrust::device_vector pomocą thrust::device_ptr lub dirctly zdać thrust::device_ptr do dowolnych algorytmów akceptujących iteratory.

+0

Dzięki! Ale jak utworzyć ciąg :: device_vector za pomocą ciągu :: device_ptr? – Alex

+1

Możesz utworzyć 'thrust :: device_vector' z zakresu iteratora, więc coś takiego jak' thrust :: device_vectorvv (p, p + n) 'tworzy wektor' v' z 'device_ptr'' p', który wskazuje na przydział elementów "n". – talonmies

+1

Ale będzie to stworzyć nowy device_vector i skopiować pamięć z device_ptr p na wektor, prawda? – Alex

Powiązane problemy