Przejdź do zawartości

Parallel Thread Execution

Z Wikipedii, wolnej encyklopedii
To jest stara wersja tej strony, edytowana przez PracownikFizyczny (dyskusja | edycje) o 22:34, 25 gru 2009. Może się ona znacząco różnić od aktualnej wersji.
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

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.

Obecna wersja, PTX 1.4, została wydana w czerwcu 2009.

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.

Literatura

NVidia Compute PTX: Parallel Thread Execution. ISA Version 1.4, 12 czerwca 2009.