Przejdź do zawartości

Parallel Thread Execution

Z Wikipedii, wolnej encyklopedii
To jest stara wersja tej strony, edytowana przez Alan ffm (dyskusja | edycje) o 00:02, 3 cze 2011. Może się ona znacząco różnić od aktualnej wersji.

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 2010) najnowsza stabilna wersja PTX ma numer 2.1 (PTX 2.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 wyjściowy model programowy procesora (ISA) dla optymalizatorów generowanego kodu maszynowego
  • Ułatwia ręczne kodowanie wysokowydajnych bibliotek, kerneli i 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