Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.

[PARPRO] 3. laboratorijska vježba - 2021/2022

Skenk

Svudec
Znam ali nazalost ne radi kako god, napravio sam bez lokalne grupe


neksi

jel se u c++ ovako radi povecavanje s atomic int: atomic_inc(B) , ako je B -> global int *B? Iz nekog razloga mi uvijek vraća count 0, a ne vidim grešku nigdi


DoktorKanye

Koje ste petlje odlučili paralelizirati? Meni se povraca od ovog labosa.


Lukak

DoktorKanye Kljucan rezultat ce ti dati paralelizacija ove petlje:

    for i in range(1, m+1):
        for j in range(1, n+1):
            psitmp[i*(m+2)+j]=0.25*(psi[(i-1)*(m+2)+j]+psi[(i+1)*(m+2)+j]+psi[i*(m+2)+j-1]+psi[i*(m+2)+j+1])

mozes ih teoretski paralelizirati sve, ali ova je kljucan krivac za sporo izvrsavanje tako da nju moras da bi dobio neke pametne rezultate


Skenk

Vam se izvede ovaj 3. u nekom razumnom vremenu kad koristite zadane ulazne parametre?


Polifem

Treći zadatak - paralelno napravio jacobi , ali kako bi rijesio problem da mi error postaje 0 nakon 1. iteracije moram u svakoj iteraciji radit novi buffer A koji mi pokazuje na “psi”- sad mi je paralena izvedba skoro pa ista kao serijska. Ako je netko imao sličan problem da je riješio na pametniji način …C++ implementacija (kostur++)


Polifem

Polifem
hmmm naravno sad odmah isprobao nešto i radi bez stvaranja buffera 🙂 … treba staviti CL_MEM_USE_HOST_PTR, za buffer iz kojeg se čitaju podatci


Fikalo

Polifem E kak si uspio to napravit, ja imam CL_MEM_USE_HOST_PTR u bufferu iz kojeg citam, ali ako ga ne refresham pri svakom loopu mi error postaje 0.


Tompa007

Jel u drugom zadatku treba koristiti ovu formulu za PI

ili mogu ono s dva random broja ?


Bisolvon

𝐓𝐇𝐄 𝐒𝐄𝐂𝐑𝐄𝐓 - 𝐂𝐋𝐔𝐁 Mislim da pise u tekstu zadatka da se treba to koristiti. Tako ti je i lakse , ja sam samo taj dio kod copy pasto u kernel.


Tompa007

Bisolvon tocnije mi ispada s onim nacinom , s ovim mi nije tolko precizan


Bisolvon

𝐓𝐇𝐄 𝐒𝐄𝐂𝐑𝐄𝐓 - 𝐂𝐋𝐔𝐁 Imaj onda oboje spremno za pokazat, s obzirom da je zadnja predaja a i sva tri zadatka navodno moraju radit da bi “predao” vježbu i ne pao predmet.


Tompa007

Jel vam se uspjelo u trecem cfd izvrtit u nekom razumnom vremenu na pythonu ? il ste morali smanjivat paramtre one 64 i 1000 ili ?


Bisolvon

𝐓𝐇𝐄 𝐒𝐄𝐂𝐑𝐄𝐓 - 𝐂𝐋𝐔𝐁 1000, 64 bez paralelizacije je meni bilo nekih 50min, kad sam paralaliziro jacoba je palo na nekih 20. Na predaji sam pokazivao 1000, 4. Bitno samo da je onaj error isti u slijednoj i paralelnoj inacici.


nnn

𝐓𝐇𝐄 𝐒𝐄𝐂𝐑𝐄𝐓 - 𝐂𝐋𝐔𝐁 meni je 50s paralelizirano (64, 1000), svaki dupli for loop mi je paraleliziran, intel integrirana graficka


neksi

Jel se u 3. zadatku u svakoj iteraciji mora stvarat buffer i postavljat argumente za kernel ako paraleliziramo jacobistep?


MOXY

jesu u 3. zadatku m i n zapravo G i L?


Dlaid

1 records have invalid timestamps due to insufficient device buffer space. You can configure the buffer space using the option –device-buffer-size.
Kako ovo rijesiti ako koristim cudu

  1. zad

tempest

Peter Jordanson
Nisam više siguran dal je to ta greška jer se ne sjećam koji je točno ispis greške meni bio, ali provjeri dal u cudaMalloc() i cudaMemcpy() stavljaš točnu veličinu, za Psi bi trebala biti (m + 2) * (n + 2) * sizeof(double)


DoktorKanye

Kako da predam ovaj labos ponovno ako sam vec zakljucao labos koji su mi odbili jer nisam imao 3. zadatak?


Smolaa

Moze neki savjet kako paralelizirat jakobijevu funkciju.


Smolaa

Smolaa I kako bi trebali izgledati bufferi koje saljemo u kernel jer mi nikako nece proradit


Retard00

Smolaa

Pseudokod za jacobija može biti ovakav:

kernel void jacobi_step(psi, psinew, m, n, threadcount, psi_size):
	id = get_global_id(0)
	repeats = (int)ceil((float)(m * n) / threadcount)
	for (int iter = 0; iter < repeats; iter++)
		number = id + iter * thread_count
		if (number >= psi_size)
			break
		i = (number % m) + 1
		j = ((number / m) % n) + 1
		
		psinew[i * (m + 2) + j] = 0.25 * (psi[(i - 1) * (m + 2) + j] + psi[(i + 1) * (m + 2) + j] + psi[i * (m + 2) + j - 1] + psi[i * (m + 2) + j + 1])
	
	return

Za buffere se može stavit CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR radi jednostavnosti i veličinu (m+2) * (n+2) * sizeof(double) za varijable psi i psitmp.


« Prethodna stranica Sljedeća stranica »