2010-10-28 25 views
7

Hej, Używam Visual Studio 2008, z CUDA 3.2. Próbuję debugować do funkcji z tym podpisem:Jak debugować kod jądra CUDA za pomocą Visual Studio 2008?

MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width); 

mogę wejść do funkcji, jednak kiedy się do funkcji nie pozwala mi krok nad żadnym z kodem i mówi mi, że nie źródło jest dostępne. Ktoś wie, jak poprawnie to debugować?

Dziękujemy!

Odpowiedz

6

Aktualizacja: Równoległy Nsight jest teraz bezpłatny i obsługuje debugowanie za pomocą tylko jednego procesora graficznego w systemie.

Do debugowania kodu urządzenia w Visual Studio potrzebny jest Parallel Nsight. Wersja standardowa to za darmo i oferuje wymagane debugowanie oraz profilowanie kodów urządzeń.

Jeśli chcesz debugować na jednym komputerze, potrzebujesz dwóch procesorów graficznych (ponieważ procesor, na którym działa kod, zostanie zatrzymany, gdy dotrze do punktu przerwania, a zatem Twój wyświetlacz również zostanie zablokowany). Nie muszą to być wysokiej klasy procesory graficzne, ale wszystko, co zrobi G92 (w tym większość procesorów graficznych Fermi wymienionych na liście here).

+0

Czy to samo dotyczy CUDA-GDB? – Abhinav

-4

Nie można debugować kodu jądra CUDA za pomocą Visual Studio. Visual Studio może jedynie debugować programy działające na procesorze.

W rzeczywistości nie sądzę, że można jeszcze debugować kod jądra CUDA w systemie Windows. CUDA miała tryb emulacji hosta, ale została usunięta w wersji 3.0. Jedynymi dostępnymi narzędziami do debugowania są cuda-gdb i ocelot i, o ile mi wiadomo, żaden z nich nie obsługuje systemu Windows.

+1

To jest nieprawidłowe. NVIDIA Parallel Nsight może być używany do debugowania urządzeń. – mch

1

Czy używasz Nsight? Vanilla Visual Studio nie może przejść do kodu urządzenia, ale dzięki Nsight jest to możliwe. Niestety, ograniczenia modelu sterownika urządzenia Windows powodują poważne ograniczenia. Kiedyś do wykonania debugowania potrzebne były dwa urządzenia. Maszyna docelowa uruchamiałaby kod CUDA na GPU i musiała używać sterownika TCC. Komputer główny uruchamia Visual Studio i kontroluje cel. Wydaje się, że możliwe jest teraz debugowanie kodu CUDA na tej samej maszynie, o ile masz dwa procesory graficzne, jeden do obliczeń i jeden do wyświetlania. Istnieje wiele innych problemów wymienionych w user guide.

To może nie być akceptowalna odpowiedź, ale: Jeśli możesz skompilować swój kod na Linuksie, możesz użyć cuda-gdb do debugowania jądra. cuda-gdb jest częścią zestawu narzędzi CUDA dla systemu Linux.

+0

"t jest teraz możliwe do debugowania kodu CUDA na tej samej maszynie, o ile masz dwa GPU, jeden do obliczeń i jeden do wyświetlania." Dokładnie. A oba muszą być G92 lub GT200. (Na przykład Fermi 470/480 są już niedostępne.) Jaki odsetek użytkowników CUDA opisuje? – user434507

+0

Niestety techniczne ograniczenia i fakt, że CUDA tak naprawdę nie trwało tak długo, oznacza, że ​​tylko ci, którzy mają głębokie kieszenie, mogą wykonywać tego rodzaju debugowanie. Reszta musi podjąć inne podejścia. – mch

+1

Zobacz listę obsługiwanych układów GPU: http: //developer.nvidia.com/object/nsight-requirements.html. Fermi 470/480 jest obsługiwany w wersji 1.5. Prawdą jest, że potrzebujesz dwóch procesorów graficznych (w przeciwnym razie zablokujesz ekran w punkcie przerwania), ale nie muszą one być wysokiej klasy, a koszt wejścia jest dość niski! – Tom

12

Można teraz debugować na jednej maszynie z tylko jednym GPU używającym NSight.

Pomyślałem, że zaktualizuję to, ponieważ poprzednie odpowiedzi nie są już poprawne (nie potrzebujesz już 2 GPU) i przez jakiś czas wysłały mnie w niewłaściwym kierunku.

+1

Możesz debugować go na jednym GPU tylko wtedy, gdy nie używasz X lub masz SM3.5, [źródło] (http://docs.nvidia.com/cuda/cuda-gdb/index.html#single-gpu- debugging-with-desktop-manager-running) – janisz

+0

Mam dwie karty Tesla C1060. Buduję maszynę GPU do mojego laboratorium i będę ją obsługiwać w systemie Linux. Tak jak na twój komentarz, potrzebuję dodatkowej karty graficznej (prawdopodobnie na pokładzie) z uruchomionym wyświetlaczem/X-serwerem, jeśli chcę używać CUDA-gdb? Dzięki – Abhinav

Powiązane problemy