Drzemiące megaflopy

Powstała koncepcja GPGPU, czyli General Purpose Graphics Processing Unit. „Jednostka przetwarzania grafiki ogólnego zastosowania” brzmi bez sensu – w końcu służy do grafiki czy do ogólnych zastosowań? Okazuje się, że programowalne jednostki obliczeniowe nowoczesnych GPU mogą służyć i do tego, i do tego. 

W tym miejscu musimy się zastanowić, jak programy korzystają z układów graficznych. Procesor to jasna sprawa: ktoś pisze kod, a system operacyjny dba o jego prawidłowe wykonanie równocześnie z setkami innych fragmentów kodu. Ale karta graficzna nie jest bezpośrednio programowalna, nie jest po prostu dodatkową jednostką wykonawczą procesora. Jej pamięć nie jest częścią przestrzeni adresowej „głównej” pamięci operacyjnej komputera – nie wpisuje się bezpośrednio do niej kodu i instrukcji. Pośredniczy w tym sterownik, udostępniający różne interfejsy programowania, czyli sposoby odwoływania się do karty. Takimi interfejsami są na przykład DirectX i OpenGL.