Browse Source

Doc - Histogram/local1

master
Daniel Gyulai 3 years ago
parent
commit
6c8cbbe48c
  1. 36
      Primitives/primitives.md

36
Primitives/primitives.md

@ -47,4 +47,38 @@ tömb méretét!**
Success
```
A GPU sorok összehasonlításával leolvasható, hogy a kisebb értékkészlet jelentősen hosszabb futási időt erdményezett. Ez visszavezethető arra, hogy a szálaknak várakozniuk kellett egymásra, amíg a hisztogram értékeit frissítették.
A GPU sorok összehasonlításával leolvasható, hogy a kisebb értékkészlet jelentősen hosszabb futási időt erdményezett. Ez visszavezethető arra, hogy a szálaknak várakozniuk kellett egymásra, amíg a hisztogram értékeit frissítették.
### Lokális memória
Az implementációban a munkacsoportok először lokális memóriába írják számításaikat, majd azzal frissítik a globális adatokat. Az algoritmust alkotó pszeudokód;
```
ID := get_global_id(0)
LID := get_local_id(0)
IF LID < histogramSize DO:
lhistogram[LID] := 0
BARRIER
lhistogram[data[id]] := lhistogram[data[id]] + 1
BARRIER
IF LID < histogramSize DO:
histogram[LID] = lhistogram[LID]
```
**1. Vizsgálja meg, hogy mi történik barrier hívások használata nélkül. Helyes-e az eredmény?**
Barrier hívások nélkül a kernel helytelen eredményt ad.
**2. Hasonlítsa össze teljesítmény szempontjából a globális és a lokális memóriában végzett
hisztogram számtást!**
Az összehasonlításhoz egységesen 4096 elemű, de változó értékkészletű vektorok hisztogramját számítottam ki. Az alábbi táblázatban az oszlopok az értékkészlet nagyságát jelölik, a sorok a globális, illetve a lokáis kerneleket, a cellák pedig az egyes futási időket egy adott típusó kernelhez egy értékkészleten.
| / | 2 | 128 | **200** | **250** |
| --- | --- | --- | --- | --- |
| **local** | 0.006592 ms | 0.004064 ms | 0.004512 ms | 0.004448 ms |
| **global** | 0.00784 ms | 0.0064 ms | 0.0064 ms | 0.005952 ms |

Loading…
Cancel
Save