Szorgalmi feladatok

1. feladat: 5x5 konvolúció x86 CPU-n

A kiinduló project az első gyakorlat anyaga (lásd jegyzetek oldal).
E-mail-ben elküldendő (szanto@mit.bme.hu):

  • Forráskód
  • Visual Studio 2013 project, vagy Windows alatt futtatható állomány
  • Az összehasonlíthatóság érdekében minden beküldött megoldás ugyanazon a processzoron (Core i5-2520M, 2 mag/4 szál, 3 GHz) futtatok, Így legfeljebb AVX utasításkészlet használható.

A cél a minél nagyobb teljesítmény elérése. Nem kihasználható, hogy a projektben az együtthatókészlet fix, és mind a négy színkomponensre el kell végezni a műveletet, annak ellenére, hogy a be- és kimeneti file az átlátszóság komponenst nem tartalmazza.

Pontozás:

  • A leggyorsabb megoldás beküldője 5%-t kap, a következő 4%-t, a harmadik pedig 2%-t. Aki a referencia időnél gyorsabb, vagy megegyező verziót készít (függetlenül attól, hogy hány ilyen van), 8%-t kap. A saját gépen történő méréséhez SSE2-t használó 32 bites exe, illetve AVX-t használó 64 bites exe áll rendelkezésre (LETÖLTÉS). Mindkét program 100x futtatja le a konvolúciót, a kiírt idő egy futás ideje ms-ban, illetve az ebből számolt feldolgozási sebesség MPixel/s-ban.

Eredmények:

  • Referencia futási idő: ~120 MPixel/s (SSE2), illetve ~200 MPixel/s (AVX)
  • Cseh Péter: 73 MPixels/s (SSE)
  • Horváth Ottó: 130 MPixels/s (SSE)
  • Tusori Tibor: 155 MPixels/s (AVX)
  • Szabó Lóránt: 158 Mpixels/s (SSE)

 

2. feladat: 5x5 konvolúció CUDA-val

A kiinduló project a második és harmadik gyakorlat anyaga. A pontozás ugyanaz, mint az 1. feladatnál.

Módosítható:

  • Kinenet kiterjesztett kép, vagy sem (utóbbi esetben módosítandó a main.cpp is)
  • Thread block mérete, grid mérete
  • Minden kernel-ben használt változó típus, memória méret

Nem módosítható:

  • A teljes kép minden pixelének minden RGB csatornáját ki kell számolni
  • A bemenet a gyakorlaton használt kép.
  • Nem kihasználható, hogy az együtthatókészlet konstans.

Elküldendő a kernelt és a hoszt CUDA kódot tartalmazó .cu file, cuda_main_VEZETÉKNÉV.cu néven.

Az összehasonlíthatóság kedvéért minden kódot egy GPU104 GPU-t (GeForce GTX 1070) tartalamzó számítógépen futtatok, a kernel Visual Profiler-ben mért futási ideje minimalizálandó.

A GP104 GPU-n mért idők a gyakorlat során megvalósított kernelekkel: 8.85 ms / 2,79 ms / 2,55 ms / 2,39 ms. (Megj.: a float/float kernel futási ideje egy olyan verzióra vonatkozik, amiben nincs bank ütközés, az eredetiben van. Lásd gyakorlat megoldások.)

Optimalizált kernel futási idő (referencia): 1,12 ms. Referencia exe (x64) letöltése. A kernel futási idejét a konzol ablakban írja ki (1000 futás átlaga), de (elkerülendő a saját megoldások befolyásolását :)) az alkalmazásban a Profiler használata le van tiltva. 

 

© 2010-2019 BME MIT | Hibajelentés | Használati útmutató