Parallel Thread Execution
Szablon:Kategoria PTX (ang. Parallel Thread eXecution) - niskopoziomowa maszyna wirtualna, język jej asemblera i model programowy procesora (ISA) dla kart graficznych firmy NVidia obsługujących technologię obliczeniową CUDA. PTX stanowi uniwersalny, pośredni etap w translacji programów napisanych w językach wysokiego poziomu, np. C lub C++, na kod maszynowy zoptymalizowany dla konkretnych architektur GPU firmy NVidia.
Do tłumaczenia programów z języków C i C++ na PTX wykorzystuje się specjalny kompilator (nvopencc
), który opiera się na technologii Open64. Translacja kodów PTX na kod maszynowy może stanowić jedną z faz kompillacji (kompilator uruchamia specjalny translator ptxas
) lub zostać wykonanany w dopiero w chwili uruchomienia programu przez sterownik karty graficznej (tzw. kompilacja w locie, JIT). Efektem kompilacji programów w CUDA mogą być repozytoria kodów (ang. device code repositories) zawierające np. kod pośredni PTX w wersji 1.0 oraz jeden lub kilka kodów maszynowych przeznaczonych dla konkretnych procesorów. Dostępność kodu PTX w podstawowej wersji gwarantuje możliwość uruchomienia programu na dowolnym sprzęcie obsługującym PTX 1.0, a więc na wszystkich kartach graficznych obsługujących technologię CUDA, w tym na sprzęcie nowych, nieistniejących jeszcze generacji (producent gwarantuje zgodność wszystkich istniejących i przyszłych produktów z PTX 1.0). Z kolei dołączenie kodów maszynowych dla istniejących modeli kart graficznych eliminuje potrzebę kompilacji kodu PTX przez sterownik urządzenia i skraca w ten sposób czas uruchamiania programu.
Obecnie (koniec 2009) najnowsza stabilna PTX wersja ma numer 1.4 (PTX 1.4). Na 2010 planowana jest premiera wersji PTX 2.0 dostosowanej do nowej architektury GPU, Fermi (NVidia) [1].
Cele PTX
Wg. producenta, PTX realizuje następujące cele:
- Stanowi stabilny model programowy procesora (ISA) dla wielu generacji GPU.
- Umożliwia w programach kompilowanych z języków wysokiego poziomu osiągnięcie wydajności porównywalnej z wydajnością uzyskiwaną w programach pisanych bezpośrednio dla konkretnych GPU.
- Stanowi niezależny od sprzętu model programowy procesora (ISA) dla kompilatorów C/C++ i in.
- Stanowi platformę dystrybucyjną kodu dla twórców aplikacji i bibliotek.
- Stanowi wspólny wyjsciowy model programowy procesora (ISA) dla optymalizatorów generowanego kodu maszynowego
- Ułatwia ręczne kodowanie wysokowydajnych bibliotek, [[kernel (programowanie równoległe)]kerneli] testów architektur GPU
- Stanowi skalowalny model programowania obejmujący zarówno pojedyncze GPU, jak i ich działające równolegle klastry.
Źródła
NVidia Compute PTX: Parallel Thread Execution. ISA Version 1.4, 12 czerwca 2009.