Rozumiem, że w CUDA 32 sąsiednie wątki w tym samym bloku zostaną zaplanowane jako osnowa. Ale często znajduję kilka tutorialowych kodów CUDA, które mają wiele bloków z 1 wątkiem na blok. W tym modelu 32 wątki z 32 bloków będą zaplanowane jako osnowa? Jeśli nie, czy mogę powiedzieć, że ten model nie jest tak wydajny, jak zorganizowanie 32-nitek na blok? Dzięki!Czy 32 wątki z 32 bloków zostaną zaplanowane jako osnowa?
Odpowiedz
Nie, wątków z różnych bloków nie można zaplanować w tej samej osnowie. Jeśli tworzysz siatki z blokami wątków tylko z jednym wątkiem, zdecydowanie nie uzyskujesz pełnej wydajności z maszyny. Jest mniej wydajny niż 32 wątki (lub liczba całkowita 32) na blok. Fermi SM, na przykład, ma 32 pasy warp, które mogą być w użyciu. Jeśli planujesz bloki pojedynczego wątku, tylko 1 z tych 32 pasów może być w użyciu w danym momencie.
Wątki mają identyfikator wątku (zmienna wbudowana threadIdx), która jest zdefiniowana w (i unikatowy tylko do) pojedynczego bloku.
Sekcja Hardware wielowątkowość w przewodniku programowania C zawiera a formula which defines the total number of warps in a single block.
Jeszcze jeden punkt do dodania. Obliczanie w CUDA ZAWSZE dzieje się przez osnowy, więc nawet jeśli przydzielisz mniej niż 32 wątki na blok (1,2..8,16), obliczenia zostaną wykonane dla wątku (32 wątki), zasoby są zablokowane dla 32 wątków dla tego blok.
Jeśli dzielisz 32 bloki z jednym wątkiem, zatrzymujesz zasoby dla wątków 32X32. Unikaj tego, jeśli możesz.
- 1. CUDA. Jak rozwinąć pierwsze 32 wątki, aby były wykonywane równolegle?
- 2. Czy wątki java zostaną usunięte po zakończeniu
- 3. Niezapomniana wartość 32-bitowa jako stała
- 4. Czy Java int jest zawsze 32-bitowa?
- 5. Jak określić, czy aplikacja .NET ma 32 czy 64 bity?
- 6. Model pamięci IA-32 Linuksa
- 7. Uruchom AnyCPU jako 32-bitowy w systemach 64-bitowych
- 8. Pole CRC-32 w zip
- 9. readdir() Problemy z kompatybilnością 32/64
- 10. skompilować 32-bitowy kod z cygwin64
- 11. Java: przetasuj talię 32 kart?
- 12. Chcę uzyskać niski 32 bit int64 jako int32
- 13. 64/32-bitowy podział na procesor z 32/16-bitowym podziałem
- 14. CAS AD Błąd LDAP 32
- 15. Czy mogę uruchomić zespół C# (dll) jako 32-bitowy z aplikacji 64-bitowej?
- 16. Aplikacja konsolowa .net 32 kontra 64-bitowa
- 17. Java: 32-bitowa implementacja fp Math.sqrt()
- 18. .net InstallUtil - 32 bit vs 64 bit
- 19. Jak sprawdzić, czy moja aplikacja działa jako aplikacja 32-bitowa czy 64-bitowa?
- 20. Od 64 do 32 bitów Interop - jak?
- 21. 32-bitowe i 64-bitowe obliczenia zmiennoprzecinkowe
- 22. Windows 7 64 bity niepoprawna ścieżka podczas ładowania biblioteki 32 bitów dla 32 bitów exe
- 23. Jak przekonwertować podpisany 32-bitowy int na unsigned 32-bitowy int?
- 24. Wymuszenie 32-bitowego uniwersalnego binarnego systemu Mac OS X w wersji 32/64-bitowej w celu uruchomienia 32-bitowego w starej wersji systemu operacyjnego?
- 25. Rysuj() 20 000 32 na 32 Tekstury lub 1 duża tekstura 20 000 razy
- 26. Jak zbudować 32-bitowe moduły XS dla 32-bitowego niestandardowego Perla w 64-bitowym systemie CentOS?
- 27. Czy 32-bitowe dodatki Excel działają w 64-bitowym Excelu?
- 28. Jak sondować komputer, czy obsługuje on SSE2 w Delphi 32?
- 29. Czy mogę zbudować aplikację x64 na komputerze 32-bitowym?
- 30. Ustal, czy urządzenie iOS ma 32- lub 64-bitowe