Próbuję zrozumieć użycie zasobów dla każdego z moich wątków CUDA dla ręcznie pisanego jądra.Interpretowanie danych wyjściowych --ptxas-options = -v
Skompilowałem mój plik kernel.cu
do pliku kernel.o
z nvcc -arch=sm_20 -ptxas-options=-v
i mam następujący wynik
ptxas info : Compiling entry function '_Z12searchkernel6octreePidiPdS1_S1_' for 'sm_20'
ptxas info : Function properties for _Z12searchkernel6octreePidiPdS1_S1_
72 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 46 registers, 176 bytes cmem[0], 16 bytes cmem[14]
Patrząc na wyjściu powyżej, jest to prawdą, że
- każdy wątek CUDA używa 46 rejestrów?
- nie ma rejestru przechodzenia na lokalną pamięć?
Mam również pewne problemy ze zrozumieniem wyników.
Moje jądro wywołuje wiele funkcji
__device__
. IS 72 bajty suma całkowita pamięci dla ramek stosów funkcji__global__
i__device__
?Jaka jest różnica między
0 byte spill stores
i0 bytes spill loads
Dlaczego informacji
cmem
(co zakładam jest stała pamięć) powtarzające się dwa razy z różnymi postaciami? W jądrze nie używam żadnej stałej pamięci . Czy to oznacza, że kompilator jest, pod maską, czy powie firmie GPU, aby używał jakiejś stałej pamięci?
„używane 46 rejestry” oznacza, że kompilator zastrzeżone rejestrów 46 na gwint do sporządzonej jądro i inne rejestry rozlania. Liczbę rozlanych rejestrów można znaleźć, odejmując tę liczbę (46) od całkowitej liczby rejestrów używanych w PTX kernela. – ahmad
@Ahmad: Pierwsze zdanie jest poprawne, ale drugie nie. Jądro może używać mniej niż maksymalne dopuszczalne rejestry na wątek i nie ma rozlania na pamięć lokalną. – talonmies
Aby rozwinąć odpowiedź w sprawie talii, PTX jest abstrakcją wysokiego poziomu z nieskończonymi rejestrami. Dzieje się tak dlatego, że można go skompilować na wiele generacji procesorów graficznych, a liczba rejestrów może być różna. Dopiero po kompilacji do kodu specyficznego dla maszyny można naprawdę spojrzeć na użycie rejestru. W każdym razie ptxas (kompilując PTX do kodu specyficznego dla maszyny) informuje o ilości wycieków. Kompilator – Tom