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