Jak ustawić wartość typu wektor na pamięć przypiętą w cuda
Mam pytania dotyczące tworzenia pamięci przypiętej.
Teraz używam CUDA do radzenia sobie z dużymi rozmiarami danych.
Aby skrócić czas pracy, stwierdzam, że konieczne jest nałożenie kopii pamięci i uruchomienie jądra.
Po przeszukiwaniu niektórych tekstów i stron internetowych, nakładaniu się kopii pamięci i uruchomieniu jądra, zauważam, że konieczne jest przydzielenie pamięci hosta za pomocą cudaMallocHost, który przydzieli pamięć hosta do pamięci przypiętej.
W przypadku używania liczby całkowitej lub typu tablicowego na hoście, łatwo było utworzyć pamięć przypiętą.
Takie jak to...
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] >>> (...);
}
Ale w moim przypadku pamięć wyjściowa hosta jest ustawiona przez typ vertor.
I nie mogę nigdzie znaleźć sposobu, aby zmienić wektor-pamięć-hosta na pamięć przypiętą za pomocą cudaMallocHost.
Pomóż mi lub daj radę, aby rozwiązać ten problem. Dziękuję za przeczytanie mojego słabego angielskiego. Dzięki.