CUDA - od zera

Zaczęty przez Rysiu, 25 Kwiecień 2010, 21:03

Rysiu

Ostatnimi czasy planuję coś liznąć programowania w CUDA.

Co prawda w domu nie posiadam grafiki wspierającej tą technologię ale mam dostęp do komputerów z odpowiednimi grafikami.

Nie wiem tylko nawet od czego tutaj zacząć :E Noramalnie piszę w Code::Blocks. Chcę się dopytać co tam powinienem zainstalować aby już za bardzo nie kombinować i za pierwszym razem było wszystko ok.

Wystarczy Developer Drivers + CUDA Toolkit? Czasem można jeszcze doczytać o Visual Studio (nawet Express) ale chyba można jego zastąpić dowolnym edytorem?

Troll81

męcz sesefa :D on projektował soft na grafy :D i TJM :D

Rysiu

#2
Zainstalowałem CUDA Toolkit, dedykowane drivery i przykładowe app od nVidii.

Nie mam jednak kompletnie pojęcia jak w tym utworzyć projekt i nawet wklepać jakiś przykładowy kod.

Przykładowe app chyba działają z Visual C++ (rozszerzenie vcproj) i za bardzo nie mogę ich zaimprotować do tego edytora nVidii.

Przy zakładaniu nowego projektu mam coś takiego jak niżej:
[smg id=290 caption="Cuda - zakładanie nowego projektu"]

Co powinienem podać w ścieżce "Launch"? Strasznie jakoś mało to intuicyjne i masa różnic przeskakując ze zwykłego C.

Mogłem napisać PM'kę do TJM'a lub sesef'a ale mam nadzieję, że ktoś tutaj odpowie, a i może ktoś skorzysta z rozwiązywanych problemów.

sesef

Tutaj akurat TJM ma master z CUDA i wjazd na deva do nich. Ogólnie ciężko powiedzieć czy odpalisz to w code::blocks ponieważ chyba nie ma libów skopilowanych pod windowsowego gcc głównych środowiskiem pod Windows jest Visual Studio i pod niego jest wszystko robione. Masz dostep do MSDNa ściągnij sobie VS2005/2008/2010 PRO (nie wiem pod co tam teraz CUDA robią) i rób w nim.

[B@P] MSW

kompletnie się na tym nieznam ale jak już masz zaczynać od CUDA to może lepiej zacznij od openCL. wtedy będzie to chodziło na wszystkich kartach a i znacznie szybciej, widziałem taką prezentację jak szybko robi się obliczenia na CPU (około 6h) na CUDA (około 15min) i openCL( pare sekund) chyba nawet od nVidii to było. Myślę że wartoby było się tym zainteresować.

Rysiu

Właśnie jestem kompletny noob z tego, a trzeba jakoś zacząć. Tutaj jednak nawet na początek jakiegoś dobrego tutoriala ciężko mi znaleźć (już nawet nie wspominam o języku polskim). Myslałem o tym Visual Studio ale nie mam pojęcia jak jego połączyć z bibliotekami CUDA aby to wszystko zatrybiło, a czytałem, że sporo użytkowników ma z tym problemy.

[B@P] MSW

więc lobbuje za openCL
po krótkich poszukiwaniach znalazłem trochę przykładów kodu http://developer.download.nvidia.com/compute/cuda/3_0/sdk/website/OpenCL/website/samples.html
postanowiłem też zgłębić ten problem.

TJM

Teoretycznie jeśli masz zainstalowane Visual Studio, to nic już nie musisz robić - po zainstalowaniu toolkita projekty CUDA powinny zacząć działać.
Podobnie jest na Linuksie, a nawet teoretycznie łatwiej.
Niestety w praktyce stopień dopracowania instalatorów jest znikomy i może się okazać, że będziesz musiał wbić na forum nvidii i poczytać jak rozwiązywali problemy inni  :ph34r:

Nowy projekt łatwo utworzyć - najlepiej po prostu skopiować dołączony w toolkicie pusty plik przykładowy (zwie się to chyba project sample czy jakoś tak).

Co do OpenCL to nie wiem czy w praktyce jest tak różowo jak głoszą reklamy. Jakiś czas temu praktycznie w ogóle ciężko było uruchomić jakąś aplikację, nie mówiąc już o kompilacji samemu.

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

[B@P] MSW

openCl ma tą przewagę że powinien iść i na AMD i nVidi a CUDA to nVidia a AMD ma Strima chyba, więc się już rozdrobnili. Po drugie może i rozwój openCL jest powolny a struktura skomplikowana ale to jest otwarty projekt więc społeczność po jakimś czasie "wypoleruje" to.  Kolejna rzecz że ta reklama z szybkością naprawdę do mnie przemówiła jakkolwiec chociaż trochę prawdy w niej musi być  ;) Do tego postawić to na GIT kompilować w GCC uruchamiać w Linuksie i wszystko gra  XD

Rysiu

Kompletnie nie mogę niczego ugryźć.

Próbowałem kompilacji kodu z konsoli (nvcc) ale wywala, że brakuje jemu kompilatora "cl.exe". Szukałem co to jest i znalazłem, że to Kompilator Visual Studio i wygląda na to, że nawet jego trzeba będzie zainstalować aby cokolwiek zrobić.



Z poziomu samego CUDA Toolkit'a nie mam pojęcia jak pisać... Tam jest jakieś IDE? Niczego nie widzę. Początkowo myślałem, że rolę jakiegoś edytora spełnia CUDA Visual Profiler ale z tego co widzę on jest do czegoś innego (Benchmarking a CUDA).

[B@P] MSW

NVIDIA Parallel Nsight może to pomorze, podobno to visual studio zastępuje czy coś.

Rysiu

Słyszałem o tym NVIDIA Parallel Nsight ale to chyba tylko jakieś rozszerzenie do Visual Studio.

sesef

#12
Visual Studio w programowaniu jest tym czym Windows w prywatnych komputerach (tylko VS to jednak produkt za który MS można pochwalić) i nie ma co kombinować na około. 99% ludzi używa VS i wszystko co na winde jest pod niego robione.

TJM

Cytat: Rysiu w 21 Maj 2010, 10:46
Kompletnie nie mogę niczego ugryźć.

Próbowałem kompilacji kodu z konsoli (nvcc) ale wywala, że brakuje jemu kompilatora "cl.exe". Szukałem co to jest i znalazłem, że to Kompilator Visual Studio i wygląda na to, że nawet jego trzeba będzie zainstalować aby cokolwiek zrobić.



Z poziomu samego CUDA Toolkit'a nie mam pojęcia jak pisać... Tam jest jakieś IDE? Niczego nie widzę. Początkowo myślałem, że rolę jakiegoś edytora spełnia CUDA Visual Profiler ale z tego co widzę on jest do czegoś innego (Benchmarking a CUDA).

No co ty, nic takiego nie ma - albo podpinasz pod jakiś produkt MS (da się pod starsze wersje VC++ chyba też), albo przesiadasz się na linuksa   %)
Visual profiler jest do analizy kodu pod względem wydajności, jest do niego osobna instrukcja - jeśli nie jest dostępna dla publiki to mogę pomóc w jej znalezieniu  %)

W razie jakiejś pilniejszej sprawy - jestem często dostępny na kanale IRC B@P, na forum czasami zapominam zajrzeć lub nie mam czasu.

Rysiu

Z Visual Studio nie było problemów - po instalacji wszystko zatrybio.

Chcę jednak móc coś kompilować na Linuxie (Ubuntu) i komputerze nie posiadającym karty graficznej wspierającej CUDA. Muszę coś dodatkowo instalować aby skorzystać  emulacji?