Każdy ma na swoim pulpicie ten ogromny, masowo zrównoleglony superkomputer w postaci karty graficznej GPU.
- Jaki jest odpowiednik społeczności GPU „hello world”?
- Co mam zrobić, gdzie mam się udać, aby rozpocząć programowanie GPU dla głównych dostawców GPU?
-Adam
Odpowiedzi:
Sprawdź CUDA firmy NVidia, IMO to najłatwiejsza platforma do programowania GPU. Jest mnóstwo fajnych materiałów do przeczytania. http://www.nvidia.com/object/cuda_home.html
Witaj, świecie byłoby wykonanie jakichkolwiek obliczeń za pomocą GPU.
Mam nadzieję, że to pomoże.
źródło
źródło
Myślę, że inni odpowiedzieli na twoje drugie pytanie. Jeśli chodzi o pierwszy, „Hello World” programu CUDA, nie sądzę, że istnieje ustalony standard, ale osobiście poleciłbym dodawanie równoległe (tj. Program sumujący N liczb całkowitych).
Jeśli spojrzysz na przykład „redukcji” w NVIDIA SDK, to powierzchownie proste zadanie można rozszerzyć, aby zademonstrować liczne kwestie CUDA, takie jak połączone odczyty, konflikty z bankami pamięci i rozwijanie pętli.
Zobacz tę prezentację, aby uzyskać więcej informacji:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
źródło
Zapoznaj się z pakietem ATI Stream Computing SDK . Opiera się na BrookGPU opracowanym w Stanford.
W przyszłości cała praca na GPU zostanie ustandaryzowana przy użyciu OpenCL . Jest to inicjatywa sponsorowana przez Apple, która będzie neutralna dla dostawców kart graficznych.
źródło
OpenCL to próba stworzenia wieloplatformowej biblioteki zdolnej do programowania kodu odpowiedniego między innymi dla GPU. Pozwala napisać kod bez wiedzy, na którym GPU będzie on działał, ułatwiając w ten sposób wykorzystanie części mocy GPU bez kierowania się konkretnie do kilku typów GPU. Podejrzewam, że nie jest tak wydajny, jak natywny kod GPU (lub tak natywny, jak pozwolą na to producenci GPU), ale w przypadku niektórych aplikacji ten kompromis może być tego wart.
Wciąż jest na stosunkowo wczesnym etapie (1,1 w tej odpowiedzi), ale zyskał pewną popularność w branży - na przykład jest natywnie obsługiwany w systemie OS X 10.5 i nowszych.
źródło
CUDA to doskonały framework na początek. Pozwala pisać jądra GPGPU w C. Kompilator wytworzy mikrokod GPU z twojego kodu i wyśle wszystko, co działa na CPU do twojego zwykłego kompilatora. Jest to jednak tylko NVIDIA i działa tylko na kartach z serii 8 lub lepszych. Możesz sprawdzić strefę CUDA, aby zobaczyć, co można z nią zrobić. W CUDA SDK znajduje się kilka świetnych wersji demonstracyjnych . Dokumentacja dołączona do zestawu SDK jest całkiem dobrym punktem wyjścia do faktycznego pisania kodu. Przeprowadzi Cię przez proces pisania jądra mnożenia macierzy, co jest świetnym miejscem do rozpoczęcia.
źródło
Innym łatwym sposobem na rozpoczęcie programowania GPU bez wchodzenia do CUDA lub OpenCL jest zrobienie tego przez OpenACC .
OpenACC działa jak OpenMP, z dyrektywami kompilatora (takimi jak
#pragma acc kernels
), które wysyłają pracę do GPU. Na przykład, jeśli masz dużą pętlę (tylko większe naprawdę przynoszą korzyści):Edycja: niestety tylko kompilator PGI naprawdę obsługuje teraz OpenACC dla kart graficznych NVIDIA.
źródło
Wypróbuj GPU ++ i libSh
Link LibSh zawiera dobry opis tego, jak powiązali język programowania z prymitywami graficznymi (i oczywiście z samymi prymitywami), a GPU ++ opisuje, o co w tym wszystkim chodzi, oba z przykładami kodu.
źródło
Jeśli używasz MATLAB-a, korzystanie z GPU do obliczeń technicznych (obliczenia macierzowe i ciężkie obliczenia matematyczne / liczbowe) staje się całkiem proste. Uważam, że jest to przydatne do zastosowań kart GPU poza grami. Sprawdź link poniżej:
http://www.mathworks.com/discovery/matlab-gpu.html
źródło