Browse Source

Doc - ExScan2

master
Daniel Gyulai 3 years ago
parent
commit
ced408f163
  1. 13
      Primitives/primitives.md

13
Primitives/primitives.md

@ -1,6 +1,6 @@
# Párhuzamos primitívek # Párhuzamos primitívek
## Hisztogram számítás ## 1. Hisztogram számítás
A feladathoz tartozó host kód a `primitives/Histogram.cpp` fájlban található. A feladathoz tartozó host kód a `primitives/Histogram.cpp` fájlban található.
@ -87,13 +87,13 @@ hisztogram számtást!**
A futási időkből látszik, hogy a lokális memóriát használó kernel minden értékkészletre gyorsabb, viszont a lokális és globális kernelek is gyorsabban futnak, ha ez az értékkészlet nagyobb. A futási időkből látszik, hogy a lokális memóriát használó kernel minden értékkészletre gyorsabb, viszont a lokális és globális kernelek is gyorsabban futnak, ha ez az értékkészlet nagyobb.
## Összegzés redukcióval ## 2. Összegzés redukcióval
A feladathoz tartozó host kód a `primitives/ReduceAdd.cpp` fájlban található. Az implementáció során a programs.cl forrásfájl pszeudokódja alapján dolgoztam, és feltételeztem, hogy a tömb mérete legfeljebb a workgroup megengedett maximális mérete. A feladathoz tartozó host kód a `primitives/ReduceAdd.cpp` fájlban található. Az implementáció során a programs.cl forrásfájl pszeudokódja alapján dolgoztam, és feltételeztem, hogy a tömb mérete legfeljebb a workgroup megengedett maximális mérete.
## Exkluzív prefix összeg scan operátorral ## 3. Exkluzív prefix összeg scan operátorral
A feladathoz tartozó host kód a `primitives/ExclusiveScan.cpp` fájlban található. A feladathoz tartozó host kód a `primitives/ExclusiveScan.cpp` fájlban található. Az implementáció során a programs.cl forrásfájl pszeudokódja alapján dolgoztam, kicsit módosítva azt egy plusz barrier hozzáadásával a FOR ciklusban;
``` ```
ID := get_global_id(0) ID := get_global_id(0)
@ -105,9 +105,12 @@ data[ID] = VAL
FOR s = 1; s < get_global_size(0); s *= 2 DO: FOR s = 1; s < get_global_size(0); s *= 2 DO:
tmp := data[ID] tmp := data[ID]
BARRIER
IF ( ID + s < get_global_size(0) THEN IF ( ID + s < get_global_size(0) THEN
data[ID + s] += tmp; data[ID + s] += tmp;
BARRIER BARRIER
IF(ID = 0) THEN data[ID] = 0; IF(ID = 0) THEN data[ID] = 0;
``` ```
A 2. feladathoz hasonlóan itt is feltételeztem, hogy a tömb mérete legfeljebb a workgroup megengedett maximális mérete.
Loading…
Cancel
Save