Rok za predaju:
zadnji petak prije prvog kolokvijskog razdoblja.
Pitanja oko zadaće:
na ovom topicu.
Zadnja promjena: venovako; 20:17 čet, 3. 5. 2012; ukupno mijenjano 1 put.
#2: Autor/ica: Gost, Postano: 10:40 pet, 9. 3. 2012 Pitanje oko predaje zadace: Ako pokusamo predati prije zadneg roka, i uspostvi se da smo nesto "krivo" shvatili (odn. da nesto mozemo bolje napraviti), da li onda smijemo doci i predati zadacu jos jednom (prije zadnjeg roka)?
#3: Autor/ica: venovako, Postano: 14:26 pet, 9. 3. 2012 Da, kao i na UuPRu - smijete pitati, predati ranije pa onda doraditi i predati ponovo... ali ne smijete preko zadnjeg roka za predaju.
#4: Autor/ica: venovako, Postano: 18:08 sub, 10. 3. 2012 Evo odgovora na zanimljiva pitanja u vezi zadaće, tako da ih svi vidite:
Pod a) (cuBLAS):
Broj streamova zadajete sami (možete ga npr. učitati kao komandnolinijski argument programa). Poanta je da isprobate sa sve većim i većim brojem streamova, dok god dobivate ubrzanje. Kad se brzina stabilizira, znači da ste uspjeli postići maksimalno zauzeće procesnih jedinica.
Također, pod a) i b) pretpostavite da vam čitava matrica (dakle, svi stupci) stanu u RAM grafičke kartice (na Fermiju je to cca 3 GB). Kad testirate korektnost programa, možete uzimati relativno male matrice (dimenzija pokoju stotinu), a kad želite vidjeti efekte brzine (kao za streamove gore) morat ćete ići na veće dimenzije.
Napominjem da ćemo tehnike brzog računanja normi, točnog mjerenja vremena i redukciju raditi na vježbama, pa se ne brinite trenutno ako niste sigurni kako sve to treba napraviti.
#5: Autor/ica: venovako, Postano: 21:48 sub, 10. 3. 2012 Za korištenje cuBLASa trebate reći:
Kod:
#include <cublas_v2.h>
i linkati s (tj. proslijediti nvcc-u opciju) -lcublas
Vidim po pitanjima da neke stvari oko toga gdje se koji podaci nalaze (host ili device) nisu jasne, pa ćemo to detaljnije pogledati na vježbama.
Zasad ukratko:
CUDA objekti (streamovi i sl., tj. varijable oblika cudaNESTO_t) su na host-u, jer host (tj. driver) je taj koji s njima radi.
Takvi objekti su "normalni", u smislu da ih ne trebate alocirati cuda* alokacijskim funkcijama.
#6: Autor/ica: venovako, Postano: 21:57 sub, 17. 3. 2012 Evo odgovora na neka pitanja koja su u međuvremenu iskrsnula:
Ako imate polje tipa T alocirano na device-u, npr.
T *polje
onda ne možete s host-a dereferencirati polje, tj. pristupiti njegovim elementima, npr.
polje[2]
S druge strane, polju alociranom na host-u device može tako pristupiti ako je pri alokaciji mapirano s flag-om
cudaHostAllocMapped
u CUDA adresni prostor.
Pripazite na tu asimetriju!
Kad koristite cuBLAS, pazite gdje ćete spremati skalare.
Neki skalari se uvijek šalju s host-a po vrijednosti (npr. u dnrm2 to su int parametri).
Rezultat dnrm2 možete birati gdje želite da završi pomoću funkcije
cublasSetPointerMode
Inicijalno se očekuje da pokazivači na skalare pokazuju u host memoriju, tj.
CUBLAS_POINTER_MODE_HOST
Ako to želite promijeniti, postavite gornjom funkcijom
CUBLAS_POINTER_MODE_DEVICE
Pitanje oko (globalne) redukcije:
Redukcijski kernel možete napisati tako da su svi threadovi u jednom bloku threadova.
Tada možete reducirati kompletno polje.
Ako imate više thread blokova, svaki od njih napravi parcijalnu redukciju pridruženog potpolja.
Te parcijalne rezultate opet treba reducirati.
Kako to optimalno izvesti bit će - među ostalim - tema sljedećih vježbi, gdje ćemo vidjeti
i redukcije na razini warp-ova, te dodatne napomene oko korištenja shared memorije.
Generalna ideja:
Svi warpovi u jednom bloku naprave svoju (zasebnu) parcijalnu redukciju.
Zatim se ti parcijalni rezultati opet reduciraju u jedan, unutar svakog bloka, i spreme u globalnu memoriju.
Novim pozivom redukcijskog kernela (s odgovarajuće manje blokova ili warpova po bloku) postupak se ponavlja dok god ne dobijemo finalni rezultat.
Ima dosta slobode u odabiru veličine grida i blokova, pa ćemo to detaljnije raspraviti na vježbama.
Ako vam se ne zamara s tom kvazi-rekurzivnom idejom, i zelite napraviti maksimalno jednostavno, uzmite jedan blok threadova.
#7: Autor/ica: venovako, Postano: 21:52 ned, 18. 3. 2012 Pazite kod poziva kernela da mu proslijedite veličinu dinamičke shared memorije (ako je koristite) i odgovarajući stream (ako nije defaultni 0).
Pogledajte u CUDA_C_Programming_Guide-u sekciju B.17.
#8: Autor/ica: venovako, Postano: 16:18 sri, 11. 4. 2012 U petak 13.04. predaje zadaca bit ce od podne na PMF-MO, kabinet Rogina-Singer.
Ako mislite doci, molim predbiljezbe ovdje, s razmakom od pola sata.
Slobodno se javite i do podneva, bitno je samo da znamo koliko vas se ocekuje (tj. do kad).
P.S. Ako imate koliziju s nekim kolokvijem, javite se.
#9: Autor/ica: Cobs, Lokacija: GetoPostano: 21:46 sri, 11. 4. 2012 javljam se za 12:00h.
Josip Iveković
#10: Autor/ica: bleki88, Postano: 12:02 čet, 12. 4. 2012 javljam se za 12.30
Ana Marija Idžojtić
#11: Autor/ica: Mas, Postano: 12:22 čet, 12. 4. 2012 Javljam se za 13:00
Davor Mas
#12: Autor/ica: Gost, Postano: 13:42 čet, 12. 4. 2012 Javljam se za 13:30.
#14: Autor/ica: bubble, Postano: 16:54 čet, 12. 4. 2012 15:30 (ostavljam vrijeme za pauzu)
Vesna Đukić
#15: Autor/ica: itizaj, Postano: 17:01 čet, 12. 4. 2012 javljam se za 16:00
Dora Vidaković
#16: Autor/ica: Gost, Postano: 11:20 pet, 13. 4. 2012 Vatroslav Stambuk
16:30
Ispricavam se zaboravio sam se jucer prijaviti, a imam kolokvij u 15:00 pa je li oko u 16:30
#17: Autor/ica: ssinger, Lokacija: 45.35 st. sjeverno, 16 st. istočnoPostano: 19:42 sub, 14. 4. 2012 Studenti koji nisu ovaj tjedan predali svoje programske zadatke, mogu to napraviti i u tjednu od 16.-20. travnja 2012. Vjerojatno vrijeme predaje zadataka je četvrtak poslije podne.
Zbog kašnjenja u predaji domaće zadaće, zadaci pod (a) i (b) više ne nose 10 i 15 bodova, nego 5 i 10 bodova. Ostali bodovi u zadaći se ne mijenjaju, što znači da zadaća umjesto ukupno 40 bodova može donijeti najviše 30 bodova. Čak i tako predani zadaci oslobađaju studenta od obveze preuzimanja programskog zadatka kao završnog zadatka.
#18: Autor/ica: itizaj, Postano: 18:56 sri, 18. 4. 2012 javljam se za 14!
Dora Vidakovic
#19: Autor/ica: Gost, Postano: 19:07 sri, 18. 4. 2012 Javljam se za 14:30.
Ivan Budimir
#20: Autor/ica: lajka, Lokacija: ZagrebPostano: 21:37 sri, 18. 4. 2012 Javljam se za 15h.