2012-09-22 13 views

Odpowiedz

7

cudaFree() nie jest asynchroniczny. Wywołanie synchronizacji jest wywoływane wewnętrznie, gdy funkcja cudaFree() jest wywoływana z hosta.

Nie rozumiem, co właściwie oznacza twoja potrzeba asynchronicznego zwalniania pamięci.

+4

Wyobraźmy sobie, że rozpoczyna się uruchamianie zależnego jądra, a niektóre wymagają tymczasowych przydziałów. Byłoby miło, gdyby wątek hosta mógł asynchronicznie wstawiać 'cudaMalloc's i' cudaFree's do takiego potoku. –

+1

W przypadku dużego problemu można użyć asynchronicznego zwalniania pamięci, aby zrobić miejsce dla innych strumieni. Innymi słowy, będziesz w stanie poradzić sobie z dużymi problemami z wieloma strumieniami w jednym GPU. –

5

cudaFree() jest synchroniczna. Jeśli naprawdę chcesz, aby był asynchroniczny, możesz utworzyć własny wątek procesora, nadać mu kolejkę roboczą i zarejestrować żądania cudaFree z głównego wątku.

Powiedziane, asynchroniczne uwolnienia wydają się dziwną prośbą. Być może mógłbyś wyjaśnić, dlaczego chciałbyś, aby to było asynchroniczne. Czy chcesz, aby darmowe wystąpiło natychmiast po uruchomieniu zdarzenia CUDA?

+0

Strumienie CUDA i zdarzenia CUDA zostały wykonane asynchronicznie od momentu ich wprowadzenia, ponieważ niektóre aplikacje mają podprogramy, które ich używają, i istnieje potrzeba, aby te podprogramy nie powodowały synchronizacji ścieżek ich rozmówców. Uwalnianie asynchroniczne jest całkowicie uzasadnioną prośbą, z tego samego powodu. CUDA może asynchronicznie oznaczyć pamięć jako wolną, a jeśli musi zsynchronizować się z GPU, aby edytować tabele stron, wykonaj te operacje leniwie (poczekaj aż nastanie następne jądro jądra). – ArchaeaSoftware

+0

@Archaea: To interesujące. Myślę, że plakat jest również zainteresowany uwolnieniem pamięci, a nie tylko obiektów cudaEvent_t. Jak powiązać cudaFree ze zdarzeniem lub strumieniem? –

+1

Panie Fooz, twoja odpowiedź jest poprawna (to jest AFAIK cudaFree() jest synchroniczna), ja tylko podkreślam, że rozsądnie jest chcieć, aby była asynchroniczna. – ArchaeaSoftware