Kompilatory PGI Accelerators
Począwszy od wydania PGI 16.10 wersje Community i Professional zawierają kompilatory PGI Accelerator™ Fortran i C99 wspierające platformy x64+NVIDIA uruchamiane na systemach Linux, Linux OpenPOWER oraz Windows. Kompilatory PGFORTRAN i PGCC Accelerator są wspierane na wszystkich systemach opartych na procesorach Intel i AMD x64 z CUDA NVIDIA GPUs.
Korzystając z kompilatorów PGI Accelerators programiści mogą przyspieszyć aplikacje na platformach x64+GPU poprzez dodanie dyrektyw OpenACC do istniejących programów napisanych w językach Fortran oraz C, a następnie rekompilację z odpowiednimi opcjami kompilatora.
Przykład mnożenia pętli macierzy w języku Fortran, zaznaczonej do skompilowania dla akceleratora.
Jak to działa
Do tej pory programiści C/C++ tworzący aplikacje dla akceleratorów graficznych musieli polegać na rozszerzeniach języka do swoich programów. Używanie procesorów graficznych z aplikacji języka Fortran było bardzo ograniczone. Programiści x64+GPU byli zmuszeni do tworzenia aplikacji na bardzo szczegółowym poziomie, ze zrozumieniem i wyszczególnieniem informacji o wykorzystaniu danych oraz do manualnego tworzenia sekwencji połączeń do zarządzania wszystkimi przepływami danych pomiędzy hostem x64 i procesorem graficznym GPU.
Kompilatory PGI Accelerators automatycznie analizują całą strukturę programu i danych, rozdzielają części aplikacji pomiędzy x64 CPU i procesor graficzny GPU zgodnie z określonymi dyrektywami użytkownika, a nastepnie definiują i generują optymalne odwzorowanie pętli w celu automatycznego korzystania z równoległych rdzeni, możliwości wątkowania sprzętu i wektorowych możliwości SIMD nowoczesnych procesorów graficznych. Oprócz dyrektyw i pragm określających regiony kodu lub funkcje, które nalezy przyspieszyć, kompilatory PGI Accelerators wspieraja dyrektywy użytkownika dające programiście precyzyjną kontrolę nad odwzorowaniem pętli, przydziałem pamięci i optymalizacją dla hierarchii pamięci GPU. Kompilatory PGI Accelerators generują jednolite x64+GPU pliki obiektowe i wykonywalne, które zarządzają całym mechanizmem przepływu danych "do" jak również "z" urządzeń GPU przy jednoczesnym wykorzystaniu wszystkich istniejących narzędzi po stronie hosta (linker, librarians, makefiles) i nie wymagają zmian istniejących standardów środowiska programowania HPC Linux/x64.
Więcej informacji na stronie www.pgroup.com