Mam pytania dotyczące tworzenia przypiętej pamięci.Jak zrobić wektorową wartość typu przypięta pamięć w cuda
Teraz używam CUDA do obsługi dużych rozmiarów danych.
Aby skrócić czas działania, muszę się upewnić, że konieczne jest nałożenie na siebie kopii pamięci i uruchomienie jądra.
Po przeszukiwaniu niektórych tekstów i stron internetowych, nakładaniu się kopii pamięci i uruchamianiu jądra, zauważam, że konieczne jest przydzielenie pamięci hosta za pomocą programu cudaMallocHost, który przydzieli pamięć hosta do przypiętej pamięci.
W przypadku używania typu integer lub tablica na hoście, łatwo było przypiąć pamięć.
podobnie jak ten ...
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, mój gospodarz pamięć odejście jest ustawiony według typu vertor.
I nie mogę znaleźć nigdzie sposobu, aby zamienić pamięć wektorową hosta w przypiętą pamięć za pomocą cudaMallocHost.
Pomóż mi lub poradź się, jak rozwiązać ten problem. Dziękuję za przeczytanie mojego słabego angielskiego. Dzięki.
Co dokładnie masz na myśli przez "typ wektorowy"? Masz na myśli C++ 'std :: vector', czy coś innego? – talonmies
Tak. Mam na myśli std :: vector. – Umbrella