Jako, że już spędziłem ponad rok na programowaniu GPU napiszę poprawne (moim zdaniem) kroki do poznania technologii procesorów graficznych GPU. Dla niewtajemniczonych podsumuję jedynie, że jest to bardzo wydajny, energooszczędny i lepiej przystosowany do oprogramowania względem innych alternatywnych typów (FPGA), procesor (również koprocesor/procesor masowo równoległy). Efektywnie rozwiązuje większość problemów (problemy równoległe 2-3rzędy wielkości szybciej), również problemy sekwencyjne dla odpowiednio dużego zbioru danych(pojedynczy ze setek tysięcy wątek GPU vs pojedynczy wątek przypadający na pojedynczy rdzeń CPU dla tego samego problemu). Minimalne wymagania to znajomość języka C++ (polecam kursy online C: "https://www.tutorialspoint.com/cprogramming/index.htm"; C++: "https://www.tutorialspoint.com/cplusplus/") W kolejności:
1)komputer, laptop, telefon, tablet, z kartą graficzną NVidia młodszą niż AGP GT6800 (zalecane min. PCIe1.0x16 GT9800 w cenie kilku piw; polecam nowe GT710 2GB - starczy na bardzo długo, cena ok. 150zł; sam piszę na GT1030 za 300zł); lub nowa płyta z procesorem (polecam Celeron G3900 - aż za szybki, a posiada bezpośrednie linie PCIe3.0x16, cena CPU z płytą 400zł); ram - wystarczy jedna kość używanej 4GB DDR3 1333MHz (90zł), polecam SSD 120GB Goodram (240zł) - przyśpiesza pracę niewymiernie - większość i tak niewielkich możliwości komputerów jest marnowana przez dyski talerzowe,
2)system LINUX(polecam) Ubuntu desktop 64bit notatnik+terminal np. #sudo apt-get install kate konsole#(instrukcja instalacji CUDA na kilka sposobów: "https://github.com/PiotrLenarczykAnonim/CUDA_examples/blob/master/00_introduction/step-by-step_Introduction.pdf"); lub Windows (nie polecam - problem użycia czegokolwiek więcej niż pojedynczego programu napisanego w Microsoft VisualStudio Community- nota bene dobrze zintegrowanego z technologią CUDA). Środowisko CUDA Toolkit jest udostępniane bezpłatnie przez NVidię (wraz z profesjonalnymi bibliotekami, kompilatorem, profilerem, debugerem, itd.) "https://developer.nvidia.com/cuda-downloads",
3) książka po polsku "CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU" Autorzy: Jason Sanders, Edward Kandrot - wszystko krok po kroku (poza instalacją środowiska CUDA) i wytłumaczone bardzo prosto, "https://helion.pl/ksiazki/cuda-w-przykladach-wprowadzenie-do-ogolnego-programowania-procesorow-gpu-jason-sanders-edward-kandrot,cudawp.htm#format/d",
4) napisanie kilkunastu własnych programów - najlepiej rozwiązujących rozwiązane poprawnie problemy na CPU,
5) dopiero jak się rozumie i doskonale posługuje tematami zawartymi w książce p. Sandersa, to kolejno krok po kroku kurs na Youtube: "Udacity Intro to parallel programming" "https://www.youtube.com/watch?v=F620ommtjqk&list=PLAwxTw4SYaPnFKojVQrmyOGFCqHTxfdv2",
6) po wykonaniu kilkunastu własnych programów, z użyciem technologii pokazanej na kursie YT, przeczytanie książki dla zaawansowanych: "Professional CUDA C Programming" Autor m.in.: John Cheng "https://krainaksiazek.pl/Professional-Cuda-C-Programming,9781118739327.html",
7) książki polecam kupić (linki do sklepów przypadkowe), podeprzeć się wikipedią (dużo materiałów np. angielskojęzyczna "CUDA wiki", "NVidia gtx700 wiki"), unikać forów - sporo "speców" o wątpliwej wiedzy,
8) tłumaczenie za rączkę uważam za zbędne - wszytko co szukasz w tym temacie znajdziesz w książce p. Sandersa,
9) podpowiedź odnośnie przykładów NVidii pod Windowsem - wystarczy dodać while(1){}; przed linią return 0; aby obejrzeć efekt pracy danego programu,
10) CUDA - to nazwa technologii (wewnętrzna struktura i budowa procesora graficznego - wstecz kompatybilna), języka programowania (okrojony C++11), środowiska programistycznego (min. klon Eclipse, NVCC, itd.), znaczenie słowa jest zależne od kontekstu.
Efektem minimum kwartalnej pracy na pełnym etacie będzie możliwość podstawowego użycia technologii CUDA C na kartach korporacji NVidia i rozpoczęcia korzystania z urządzeń o rzeczywistych możliwościach obliczeniowych rzędu 500GFLOPS-6600GFLOPS za kilkaset zł. Parę lat temu coś takiego wymagało zespołu inżynierów, osobnego - specjalistycznego pomieszczenia i sporego rabatu w elektrowni, teraz każdy może oprogramować te procesory. Jak usłyszę, że brakuje możliwości obliczeniowych, albo nie stać - to zapraszam, proszę pisać w temacie, lub na email: "piotr.lenarczyk@wat.edu.pl"
Post Scriptum: sporo na temat C++; LINUX; CUDA-C++11 można znaleźć na moim wolnym repo (licencja w pełni otwarta, bez gwarancji i praw autorskich - używać do woli):
" https://github.com/PiotrLenarczyk"
1)komputer, laptop, telefon, tablet, z kartą graficzną NVidia młodszą niż AGP GT6800 (zalecane min. PCIe1.0x16 GT9800 w cenie kilku piw; polecam nowe GT710 2GB - starczy na bardzo długo, cena ok. 150zł; sam piszę na GT1030 za 300zł); lub nowa płyta z procesorem (polecam Celeron G3900 - aż za szybki, a posiada bezpośrednie linie PCIe3.0x16, cena CPU z płytą 400zł); ram - wystarczy jedna kość używanej 4GB DDR3 1333MHz (90zł), polecam SSD 120GB Goodram (240zł) - przyśpiesza pracę niewymiernie - większość i tak niewielkich możliwości komputerów jest marnowana przez dyski talerzowe,
2)system LINUX(polecam) Ubuntu desktop 64bit notatnik+terminal np. #sudo apt-get install kate konsole#(instrukcja instalacji CUDA na kilka sposobów: "https://github.com/PiotrLenarczykAnonim/CUDA_examples/blob/master/00_introduction/step-by-step_Introduction.pdf"); lub Windows (nie polecam - problem użycia czegokolwiek więcej niż pojedynczego programu napisanego w Microsoft VisualStudio Community- nota bene dobrze zintegrowanego z technologią CUDA). Środowisko CUDA Toolkit jest udostępniane bezpłatnie przez NVidię (wraz z profesjonalnymi bibliotekami, kompilatorem, profilerem, debugerem, itd.) "https://developer.nvidia.com/cuda-downloads",
3) książka po polsku "CUDA w przykładach. Wprowadzenie do ogólnego programowania procesorów GPU" Autorzy: Jason Sanders, Edward Kandrot - wszystko krok po kroku (poza instalacją środowiska CUDA) i wytłumaczone bardzo prosto, "https://helion.pl/ksiazki/cuda-w-przykladach-wprowadzenie-do-ogolnego-programowania-procesorow-gpu-jason-sanders-edward-kandrot,cudawp.htm#format/d",
4) napisanie kilkunastu własnych programów - najlepiej rozwiązujących rozwiązane poprawnie problemy na CPU,
5) dopiero jak się rozumie i doskonale posługuje tematami zawartymi w książce p. Sandersa, to kolejno krok po kroku kurs na Youtube: "Udacity Intro to parallel programming" "https://www.youtube.com/watch?v=F620ommtjqk&list=PLAwxTw4SYaPnFKojVQrmyOGFCqHTxfdv2",
6) po wykonaniu kilkunastu własnych programów, z użyciem technologii pokazanej na kursie YT, przeczytanie książki dla zaawansowanych: "Professional CUDA C Programming" Autor m.in.: John Cheng "https://krainaksiazek.pl/Professional-Cuda-C-Programming,9781118739327.html",
7) książki polecam kupić (linki do sklepów przypadkowe), podeprzeć się wikipedią (dużo materiałów np. angielskojęzyczna "CUDA wiki", "NVidia gtx700 wiki"), unikać forów - sporo "speców" o wątpliwej wiedzy,
8) tłumaczenie za rączkę uważam za zbędne - wszytko co szukasz w tym temacie znajdziesz w książce p. Sandersa,
9) podpowiedź odnośnie przykładów NVidii pod Windowsem - wystarczy dodać while(1){}; przed linią return 0; aby obejrzeć efekt pracy danego programu,
10) CUDA - to nazwa technologii (wewnętrzna struktura i budowa procesora graficznego - wstecz kompatybilna), języka programowania (okrojony C++11), środowiska programistycznego (min. klon Eclipse, NVCC, itd.), znaczenie słowa jest zależne od kontekstu.
Efektem minimum kwartalnej pracy na pełnym etacie będzie możliwość podstawowego użycia technologii CUDA C na kartach korporacji NVidia i rozpoczęcia korzystania z urządzeń o rzeczywistych możliwościach obliczeniowych rzędu 500GFLOPS-6600GFLOPS za kilkaset zł. Parę lat temu coś takiego wymagało zespołu inżynierów, osobnego - specjalistycznego pomieszczenia i sporego rabatu w elektrowni, teraz każdy może oprogramować te procesory. Jak usłyszę, że brakuje możliwości obliczeniowych, albo nie stać - to zapraszam, proszę pisać w temacie, lub na email: "piotr.lenarczyk@wat.edu.pl"

Post Scriptum: sporo na temat C++; LINUX; CUDA-C++11 można znaleźć na moim wolnym repo (licencja w pełni otwarta, bez gwarancji i praw autorskich - używać do woli):
" https://github.com/PiotrLenarczyk"