Piszę kernel OpenCL, który zawiera kilka barier w pętli. Przetestowałem jądro na procesorze (8-rdzeniowy FX8150), a wynik pokazuje, że te bariery zmniejszyły prędkość działania o 50-100 razy (dodatkowo zweryfikowaliśmy to przez ponowne wdrożenie jądra w Javie przy użyciu wielowątkowości + CyclicBarrier) . Podejrzewam, że powodem tego jest fakt, że bariera w zasadzie uniemożliwia procesorowi wykorzystanie niecałkowitej realizacji, więc jestem trochę zaniepokojony, że zaobserwowałbym taką samą redukcję prędkości na GPU. Sprawdziłem kilka oficjalnych dokumentów i trochę goograłem, ale jest niewiele dostępnych informacji na ten temat.Czy współczesny procesor graficzny (np. Fermi/Evergreen) obsługuje realizację poza kolejnością?
5
A
Odpowiedz
7
Aktualny stan-karty graficzne sztuki są rzędu potokowym procesorem. Procesory GPU efektywnie wypełniają potoki, przeplatając instrukcje z różnych osnów (wavefronts). W porównaniach procesory wykorzystują spekulacyjne wykonanie poza kolejnością, aby wypełnić potok. Istnieją różne jednostki funkcjonalne, takie jak jednostki ALU i SFU, które mają oddzielone potoki. Ale zauważ, że zależność od instrukcji zatrzyma odkształcenie. Więcej informacji na temat rozwiązywania zależności instrukcji na układach GPU można znaleźć na stronie this NVIDIA patent.
2
NVIDIA Next Generation
CUDA Compute i architektura graficzna, o nazwie kodowej „Fermi”:
Nvidia GigaThread Engine ma możliwości (na stronie 5)
- 10x szybsze kontekście aplikacji przełączania
- Równoczesne wykonywanie jądra
- Zlecenie bloku wątków poza kolejnością :)
- podwójnego przesyłania zachodzą na siebie silniki pamięci
Powiązane problemy
- 1. Jak wykryć, czy procesor obsługuje technologię Intel Anti-Theft?
- 2. Zakres poza kolejnością w klasy postaci w javascript
- 3. C++ 's max() z listy inicjatora zwraca ciągi poza kolejnością
- 4. Logcat ma logi z sygnaturami czasowymi poza kolejnością
- 5. Linie logu Apache pojawiają się poza kolejnością - dlaczego?
- 6. Czy współczesny procesor (taki jak i7) będzie śledził wskaźniki i pobierze ich dane podczas iteracji na ich liście?
- 7. Błąd: wybrany procesor nie obsługuje trybu ARM `wfi '
- 8. Jak utrzymać odłożoną realizację LINQ?
- 9. Dlaczego mój procesor graficzny jest wolniejszy od procesora podczas szkolenia modeli LSTM/RNN?
- 10. Czy istnieje graficzny przegląd wyliczenia HatchStyle?
- 11. Procesor XSLT2.0 dla Perla?
- 12. Czy Ember.js obsługuje IE6?
- 13. Czy istnieje sposób sprawdzenia, ile procesora zużywa procesor na rdzeń?
- 14. Graficzny wykres wizualny
- 15. Potrzebujesz pomocy na realizację servicestack
- 16. Czy procesor wieloprocesowy.Manager(). Dict(). Setdefault() jest uszkodzony?
- 17. Czy można odzyskać procesor, który utworzył WDFREQUEST?
- 18. rdzeń graficzny obrócić prostokąt
- 19. Prosty projekt graficzny 3D?
- 20. Interfejs graficzny śledzenia Xdebug?
- 21. UITableView reloadRowsAtIndexPaths glitch graficzny
- 22. Czy BlockingCollection <T> gwarantuje realizację zlecenia usunięcia?
- 23. Czy PetaPoco obsługuje wyliczenia?
- 24. Czy Mono obsługuje XAML?
- 25. Czy Winapi obsługuje globalnie?
- 26. Czy libspotify obsługuje oauth
- 27. Czy SystemVerilog obsługuje downcasting?
- 28. Czy Heroku obsługuje PHP?
- 29. Czy SQLite obsługuje SCOPE_IDENTITY?
- 30. Czy CMake obsługuje Python3?
Oczywiście, że ma. Powinieneś niejednorodnie rozdzielać czasowe obliczenia FpU za pomocą kodu, aby mógł wykonywać całkowitą kalkulację. podczas robienia unoszenia się w tym samym czasie –
@ tuğrulbüyükışık Thanks. Czy możesz wskazać mi oficjalny dokument, który to potwierdza (w celach referencyjnych)? – aaronqli