2011-07-31 9 views
5

Występuje błąd braku zasobów podczas próby uruchomienia jądra CUDA (przez PyCUDA) i zastanawiam się, czy jest możliwe, aby system poinformował mnie, który zasób jest niedostępny. . Oczywiście system wie, jaki zasób został wyczerpany, ja też chcę go zapytać.Jak zdiagnozować awarię uruchamiania CUDA z powodu braku zasobów?

Użyłem kalkulatora obłożenia, i wszystko wydaje się w porządku, więc albo nie ma przypadku rogu, albo go nie używam. Wiem, że to nie są rejestry (co wydaje się być zwykłym winowajcą), ponieważ używam < = 63 i nadal nie działa z blokiem 1x1x1 i siatką 1x1 na urządzeniu CC 2.1.

Dzięki za pomoc. Zamieściłem wątek na deskach nVidia:

http://forums.nvidia.com/index.php?showtopic=206261&st=0

, ale nie otrzymałem odpowiedzi. Jeśli odpowiedź brzmi: "nie możesz poprosić systemu o te informacje", które byłoby miło wiedzieć również (rodzaj ...;).

Edit:

Najbardziej zarejestrować wykorzystanie widziałem został 63. Pod wyżej aby odzwierciedlać.

Odpowiedz

6

myślę PyCUDA używa sterownika API CUDA, więc dodaje może być to, co jest źle: CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES może się zdarzyć, jeśli nie podasz wystarczających argumentów, albo podasz zły rozmiar dla argumentów podczas korzystania cuLaunch() uruchomienie jądra. Ponieważ używasz PyCUDA, może być całkiem łatwo niedopasować listę argumentów wymaganą dla jądra i argumentów, które faktycznie przekazujesz, więc możesz chcieć sprawdzić jak nazywasz swoje jądra.

myślę, że to jest źle nazwany kod błędu w tej sytuacji ...

+0

To był błąd, więc dziękuję za sugestię. Wciąż chciałbym móc zapytać, co się dzieje, ale wygląda na to, że to nie jest dostępne. –

+0

Zatrzymałem się, ponieważ moje prawdziwe pytanie brzmiało: "czy mogę uzyskać system, aby powiedzieć mi to bezpośrednio", ale na podstawie niektórych rozmów w innym miejscu, jestem prawie pewien, że odpowiedź brzmi: "Nie, cuda nie ma dla tego API. " –

+0

Tak, problem polega na tym, że często istnieje wiele sposobów spowodowania tego samego błędu - możliwość udzielenia dokładnej informacji o tym, co poszło nie tak, jest bardzo trudna. – harrism

0

Zobacz tę odpowiedź

CUDA maximum registers per thread: sm_12 vs sm_20

wydaje 70 rejestrów jest zbyt wiele rejestrów.

+0

Niestety, ale to nie jest podstawowy problem, nie jest to czego szukam. Nawet jeśli wprowadzę zmiany w kodzie, aby odliczać rejestr do: "Używane 36 rejestrów, 492 + 0 bajtów smem, 152 bajty cmem [0], 8 bajtów cmem [14], 20 bajtów cmem [16]" to wciąż zawiedzie. Chodzi mi o to, że szukam API, które powie mi "niewystarczająco dużo rejestrów", zamiast wyciągać wnioski ręcznie. –

Powiązane problemy