[PARPRO] 3. laboratorijska vježba - 2021/2022
Ljama
Dobiva li još netko grešku (-46) pri pokretanju kostur++.cpp nakon postavljanja projekta iz mini SDK-a prema gornjim uputama? Pri pokretanju kostur.cpp ne javlja se nikakva greška, ali se ništa ni ne ispiše.
SuperSaiyano
Ljama Slomio sam se sinoć oko toga ali sam riješio. Greška označava pogrešno ime kernela, međutim svako je ime pogrešno kada putanja SOURCE_FILE ne valja :/. Kernel datoteku (primjeri.cl ili .cl općenito) sam stavio unutar projekta kao na slici (pored onih filters i user datoteka) i za SOURCE_FILE stavio sam ime kernel datoteke tj. primjeri.cl
Ljama
SuperSaiyano Hvala puno!
branimir1999
Sinusan Ukoliko nekome se OpenCL ne želi include-ati nakon ovog tutorijala, pazite da su vam sve postavke za ispravnu konfiguraciju (x86/x64; Debug/Release) te da trenutno radite u ispravnoj konfiguraciji u samom VS. Najjednostanvije da radite u All Configurations i na x64.
SuperSaiyano zar nije dovoljno samo da maknes tocku tako da ../primjeri.cl
-> ./primjeri.cl
i da ostavis .cl datoteke u istom direktoriju kao kostur++.cpp?
Me1
Kasperinac pogledaj ovaj post, mislim da mi je to pomoglo kod toga
BillIK
Može li mi netko pojasniti ovaj labos? Što se sve zahtjeva da imamo kako bi ga napisali i što sve moramo napisati?
Moram li stvarno imati gpu za ovo ili? Ne kužim se u te stvari baš
indythedog
Ja mogu pisati samo za PyOpenCl jer s njim radim, ali pošto se radi o specifikaciji OpenCL koja bi trebala biti neovisna o platformi, pretpostavljam da vrijedi i za C/C++. Ukratko, OpenCL će raditi na bilo čemu, ako nemate GPU procesor s više jezgri je dovoljan, samo je potrebno instalirati odgovarajuće drivere koji će podržavati rad s OpenCL-om - npr. za NVIDIA GPU “driver” koji podržava OpenCL je cuda, za ostale gpu-ove/procesore postoje odgovarajući driveri itd.
https://documen.tician.de/pyopencl/misc.html - Ovdje su upute za podešavanje pyopencl-a, pa možda može pomoći. Konkretno za pyopencl dovoljno je imati odgovarajući driver i instalirati pyopencl paket korištenjem npr. conde i tjt, onda program možete pokrenuti doslovno klikanjem “run” u PyCharmu.
strole55
Jel radi opencl na integriranij grafickoj?
SuperSaiyano
branimir1999 To sam i ja isto pretpostavio, stavio tako, apsolutnu putanju i nije nijedno radilo…
madoxx
Prevođenje bez ikakvog IDE-a na Ubuntu 20.04:
g++ kostur++.cpp -I/home/<moj_username>/fer/OpenCL/include -L/home/<moj_username>/fer/OpenCL/lib -lOpenCL
.
Prevođenje baca jedan warning, ali nadam se da nije ništa bitno.
Ako vam pokretanje vrati status 46, promijenite vrijednost varijable SOURCE_FILE u datoteci kostur++.cpp u “./primjeri.cl” jer se ipak ta datoteka nalazi u istom folderu iz kojeg vi pokrećete projekt.
indythedog
Za neki kratki crash course o gradivu labosa jako preporučam slajdove i primjere sa ovog repoa: https://github.com/HandsOnOpenCL/
Ima primjere programa u C, C++ i Pythonu i ide od osnova, neusporedivo je bolje od službenih materijala koji su praktički nepostojeći
indythedog
U 1. zadatku, može netko pojasniti na što točno misle pod “ Funkciju dretve obvezatno ostvarite tako da jedna dretva može obraditi više elemenata niza (N/G). ” Kao, ako ja jedan zadatak definiram da obrađuje i-ti element niza jel, kako tu mogu išta posebno naglasiti da jedna dretva može obraditi više elemenata niza? Ne kužim baš na što ciljaju
Multimedija
indythedog
Ako je broj elemenata niza (N) veći od broja dretvi (G) onda jedna dretva ima više od jednog zadatka tj. treba obraditi N/G elemenata. To testiraš u kernelu - ja imam 2 for loopa i svaka dretva provjerava N/G elemenata.
neksi
Multimedija Kako odrediš veličinu za G? Jel to treba postaviti na maksimalni broj koji G može biti ili samo neki bezveze broj npr 1000?
Multimedija
Ima li tko problem u 2. zadatku gdje mu za određeni broj iteracija (npr. N=500) krivo izračuna pi, a za određeni (npr. 50 ili 500000) dobro?
hellvetica
Koristim pyopencl i nije mi skroz jasno kako bi trebao definirat globalnu i lokalnu grupu dretvi (za prvi zadatak)
Pokrecem kernel ovako
knl = prg.prime
knl(queue, a_np.shape, None, a_g, res_g)
I sa np.shape definiram globalnu velicinu. Kernel funkcija mi uzima globalni index sa
int gid = get_global_id(0);
i tako cita/pise podatke.
Kako bi ovo trebao modificirat da mi radi sa lokalnim/globalnim dretvama i kako bi trebao nac optimalnu kombinaciju?
hellvetica
hellvetica
Aha izgleda da trebam samo dodat broj za lokalni wg
knl(queue, a_np.shape, (32,), a_g, res_g)
Jel trebam onda kernel promijenit da koristi neke lokalne id-eve ili?
Kako da nadem optimalnu kombinaciju?
Kasperinac
Kaj je ovaj 3. zadatak??
Kasperinac
Itko se susreo s ovakvim errorom pri pokusaju setupanja visual studija za opencl? Pokusavam pokrenuti onaj njihov kostur++ kod.
Kasperinac
Me Hvala puno, visual studio je debil koji kad importas fileove ti pokaze da su u projektu, ali i dalje ne zna di su. Rucno kopiranje svih tih fileova u project folder je fixalo.
Me1
jel potrebno rijesit 3. da se zadovolji ona predaja svih labosa?