Karty graficzne

Parę słów o różnicach architekturze

Architektura układów Kepler stosowanych w kartach graficznych z serii GeForce GTX oraz akceleratorach Tesla nieco się różni. Układy dla Tesli zoptymalizowano bowiem do wykonywania równoległych obliczeń numerycznych dodając do nich technologie Hyper-Q i Dynamic Parallelism, które nie są obecne w graficznej wersji układu Kepler.

Technologia Hyper-Q, pozwala na symultaniczną współpracę wielordzeniowych procesorów (lub systemów wieloprocesorowych) z jednym układem GPU w taki sposób, aby zwiększyć wydajność przetwarzania danych przez GPU eliminując przy tym cykle oczekiwania, w których poszczególne rdzenie procesora bezczynnie oczekują na potrzebne im dane. Efekt ten uzyskano poprzez zwiększenie całkowitej liczby połączeń pomiędzy systemem i układem GK110/GK104. Możliwe jest tutaj jednoczesne ustanowienie aż 32 sprzętowo zarządzanych połączeń, którymi przesyłane są dane bezpośrednio pomiędzy poszczególnymi rdzeniami CPU a układem GPU. W układach Fermi wykorzystywanych w kartach Tesla, dostępne było tylko jedno takie połączenie, które stanowiło wąskie gardło przy zrównolegleniu liczby wątków obliczeniowych wykonywanych na komputerze wieloprocesorowym z wielordzeniowymi jednostkami CPU. Innymi słowy, technologia Hyper-Q pozwala na ustanowienie oddzielnych, i co ważne, niezależnych połączeń między wieloma rdzeniami CPU, w taki sposób, że każdy wykonywany na wielordzeniowym procesorze wątek ma dostęp do zaalokowanych tylko dla niego rdzeni CUDA.

Jeśli zaś chodzi o technologię Dynamic Parallelism to jej zadaniem jest umożliwienie zaimplementowania większej liczby algorytmów przetwarzania równoległego w programach wykonywanych na GPU. Technologia ta pozwala na natychmiastowe dodawanie do kolejki wykonywanych na GPU zadań, które to zadania wynikają bezpośrednio z rezultatów otrzymanych przed chwilą przez GPU. Proces ten, co jest istotą technologii Dynamic Parallelism, odbywa się automatycznie bez udziału CPU. W ten sposób można w trakcie pracy programu dołączyć dodatkowe wątki programu oraz szybciej realizować równoległe obliczenia w zagnieżdżonych pętlach o różnych wartościach zbieżności. Istotna jest tutaj też podczas obliczeń kontrola warunków zrównoleglenia wykonywanych po kolei zadań bez udziału centralnego procesora, co w znaczący sposób przyspiesza obliczenia.