PGI Accelerator - Gambit Centrum Oprogramowania i Szkoleń Sp. z oo

Transkrypt

PGI Accelerator - Gambit Centrum Oprogramowania i Szkoleń Sp. z oo
Gambit Centrum Oprogramowania i Szkoleń Sp.z o.o.
Al.Pokoju 29B/22-24
®
31-564 Kraków
tel/fax: +12 414 3767, 414 3227, 414 3791, 414 3387
http://www.gambit.net.pl [email protected]
Oprogramowanie specjalistyczne Importowana literatura naukowa Kompilatory PGI Accelerators
Najnowsze wersje oprogramowania PGI zawierają kompilatory PGI Accelerator™
Fortran i C99 wspierające platformy x64+NVIDIA uruchamiane na systemach
Linux, Mac OS X 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 OpenMP do istniejących programów napisanych w
językach Fortran oraz C, a następnie rekompilację z odpowiednimi opcjami kompilatora.
Przykład pętli mnożenia macierzy w języku Fortran, zaznaczonej do skompilowania dla akceleratora.
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 należy 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.
NIP:675-12-52-366 Regon: 356262922 KRS 0000129035
Bank:Pekao S.A. 17 1240 4432 1111 0000 4734 7823
Gambit Centrum Oprogramowania i Szkoleń Sp.z o.o.
Al.Pokoju 29B/22-24
®
31-564 Kraków
tel/fax: +12 414 3767, 414 3227, 414 3791, 414 3387
http://www.gambit.net.pl [email protected]
Oprogramowanie specjalistyczne Importowana literatura naukowa PGI CUDA Fortran Compiler
Graficzne procesory GPU ewoluowały w programowalnych, wysoko równoległych
jednostkach
obliczeniowych
posiadających
pamięci
bardzo
wysokiej
przepustowości. Projekty GPU są optymalizowane pod kątem obliczeń
wykorzystywanych do prezentacji grafiki, ale są generalnie użyteczne w wielu
równoległych, wymagających dużych mocy obliczeniowych programach w tym High Performance
Computing (HPC).
CUDA to architektura procesorów graficznych NVIDIA. Dotychczas środowisko programowania CUDA
składało się z kompilatora C i szeregu narzędzi znanych jako CUDA C. CUDA C pozwala na
bezpośrednie programowanie GPU z języka wysokiego poziomu.
PGI i NVIDIA postanowiły rozpocząć współpracę nad rozwojem CUDA Fortran. CUDA Fortran zawiera
kompilator Fortran 2003 i szereg narzędzi do programowania procesorów graficznych NVIDIA z
użyciem języka Fortran. W najnowszych wersjach kompilatorów PGI zawarte jest wsparcie CUDA
Fortran dla systemów Linux, Mac OS X i Windows.
CUDA wspiera cztery kluczowe abstrakcje:
•
•
•
•
współpracę wątków zorganizowanych w grupach wątku
pamięć współdzieloną
synchronizację bariery w grupach wątku
koordynację niezależnych grup wątku zorganizowanych w gridzie
Programista CUDA jest zobowiązany do podziału programu na gruboziarniste bloki (coarse graing
blocks), które mogą być wykonywane równolegle. Każdy blok jest podzielony na drobnoziarniste
wątki, które mogą współpracować przy użyciu pamięci współdzielonej i synchronizacji za pomocą
bariery. Dobrze zaprojektowany program CUDA będzie działał na jakimkolwiek procesorze
graficznym GPU z aktywną architekturą CUDA niezależnie od liczby dostępnych rdzeni procesora.
PGI CUDA – x86
Kompilator PGI CUDA C/C++ dla platform x86 pozwala programistom
wykorzystującym technologie CUDA kompilować i optymalizować ich
aplikacje CUDA w celu uruchomienia ich na opartych o architekturę x86 stacjach komputerowych,
serwerach i klastrach z akceleratorem graficznym NVIDIA lub bez akceleratora.
PGI CUDA C/C++ dla procesów kompilatora CUDA C x86 jako natywny równoległy język
programowania wielordzeniowego x86 zawiera:
•
•
•
wbudowane funkcje jądra urządzeń
tłumaczenie składni chevron do równoległych/wektorowych pętli
korzystanie z wielu rdzeni i instrukcji SSE/AVX
NIP:675-12-52-366 Regon: 356262922 KRS 0000129035
Bank:Pekao S.A. 17 1240 4432 1111 0000 4734 7823