Każde urządzenie GPU (AMD, NVidea lub dowolne inne) jest podzielone na kilka jednostek obliczeniowych (MultiProcessors), z których każda ma stałą liczbę rdzeni (VertexShaders/StreamProcessors). Tak więc, ma się do czynienia z równoczesnymi procesorami, które można obliczyć, ale jest tylko mała stała ilość pamięci __local
(zwykle 16KB lub 32KB) dostępnej w MultiProcessorze. Dlatego liczy się dokładna liczba tych multiprocesorów.Rozmiar pamięci lokalnej OpenCL i liczba jednostek obliczeniowych
Teraz moje pytania:
- (a) Jak mogę znać liczbę wieloczynnościowe na urządzeniu? Czy to jest to samo, co
CL_DEVICE_MAX_COMPUTE_UNITS
? Czy mogę wywnioskować z arkuszy specyfikacji, takich jak http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units? - (b) Jak mogę się dowiedzieć, ile pamięci
__local
na MP jest dostępne na GPU przed jej zakupem? Oczywiście mogę zażądaćCL_DEVICE_LOCAL_MEM_SIZE
na komputerze, który go obsługuje, ale nie widzę, w jaki sposób mogę wydedukować go z nawet pojedynczego szczegółowego arkusza specyfikacji, takiego jak http://www.amd.com/us/products/desktop/graphics/7000/7970/Pages/radeon-7970.aspx#3? - (c) Jaka jest karta z obecnie największą liczbą
CL_DEVICE_LOCAL_MEM_SIZE
? Cena naprawdę nie ma znaczenia, ale 64KB (lub więcej) dałoby wyraźną korzyść dla aplikacji, którą piszę, ponieważ mój algorytm jest w pełni zsynchronizowany, ale także wysoce intensywnie wykorzystujący pamięć z losowym wzorcem dostępu w każdym MP (iteracja na krawędziach wykresów).
Spróbuj uruchomić zapytanie urządzenia w przykładach podanych przez AMD/NVIDIA w SDK. Jeśli chcesz poznać zapytania urządzenia dotyczące określonego urządzenia, jest wielu, którzy umieścili go w Internecie. – nouveau