Nie do końca. GPU świetnie wykonuje operacje mnożenia czy sumowania itp. (różne sprzętowo realizowane operacje macierzowe) na dużej ilości danych równocześnie ale zupełnie nie radzi sobie z zarządzaniem wątkami, rozgałęzieniami, alternatywami i innymi zadaniami. Nie nadaje się do zarządzania swoimi własnymi obliczeniami i nie bardzo wychodzą mu obliczenia na danych nie macierzowych (wszystkie jednostki pracują jak jedna często wykonując setki i więcej razy pewne operacje by uzyskać właściwy wynik podczas gdy CPU robi to w jednym takcie). GPU da się świetnie wykorzystać jako pomoc dla CPU i co ciekawe wydajność "procesora" graficznego z CPU. Mniej więcej optimum jest takie, że program wykonuje CPU ale jak potrzebuje wykonać operacje SIMD to odwołuje się do GPU z żądaniem np. pomnożenia macierzy przez inną macierz, odwrócenia jej itp. przygotowując mu porcje danych i zajmując się całym algorytmem postępowania. W takich zastosowaniach seria GTX2xx jest naprawdę dużym postępem w stosunku do rodziny 8xxx. Przynajmniej wg notek prasowych wykonuje już obliczenia w podwójnej precyzji co nie jest istotne w gierkach (na razie) ale w obliczeniach naukowych już tak. Do tej pory np GF8800GT mimo, ze na papierze miał 500GFlops to w FP64 często wydajność spadała czterokrotnie co już nie było jakąś rewelacją do Quada 3GHz. Teraz podobno mamy 1Tflops w FP64
@sideband I nawet w tych zastosowaniach bez "wsparcia" CPU jest problem. Nowoczesne algorytmy kodowania dynamicznie zarządzają kompresją w zależności od charakterystyki danej części danych (np części obrazu klatki). Często się zdarza, że GPU wykonuje kodowanie szybciej ale po obróbce przez CPU jakość obrazu jest o wiele lepsza (czasem efekt zastosowania GPU przy dużej kompresji jest tragiczny). Znowu najlepsze efekty daje współpraca ;)