algoritmus elmosódás
Ennek része a kurzus „Elosztott programozás” a coursera találkozott egy érdekes munkát, hogy tetszett az egyszerűsége és rövidsége a döntését, amely úgy döntött, hogy megosztani.
Tehát a feladat, hogy végrehajtja blur algoritmus számításokat kell párhuzamosan futnak. A feladat nem egy mesterségesen-képzés: elmosódás funkció most már megtalálható minden, az első tervezett alkalmazások dolgozó grafikus.
RGBA szín - klasszikus változat színnel jelennek meg. A pixel képviseli négy érték (0 és 255): piros, zöld, kék - a megfelelő szín, alfa - átláthatóság. Ennek megfelelően, szükségünk van egy típus képviseletére pixel és funkciókat, amelyek lehetővé teszik, hogy kivonat minden eleme a RGBA típusú. Ne feledkezzünk meg a „csomag” az összes komponens egyetlen RGBA-értéket.
Képzeljük el a RGBA pixel típus, amely viszont egy 32 bites szám.
Következő, meg kell végrehajtását a képet. A kép áll pixel típusú RGBA. Meg kell végre navigációt a képet a koordináta-rendszerben. Tény, hogy minden, amire szükségünk van - az adatokat a szélessége és magassága a kép, valamint frissítését és visszakeresés funkcióit egyetlen pixel.
Így jutottunk el a legfontosabb -, hogy elkenődött. Elhomályosít elvégzi legkézenfekvőbb módja: kiszámítjuk az átlagos érték színcsatornával valamennyi szomszédos pixel. A mértéke elkenődés vezérli az érték a sugár. Radius - a képpontok számát, amelyhez „megragad” mindkét oldalon a cél pixel kiszámításához átlagértékek.
Azaz, amikor a berendezés méretét, fogják kiszámítani átlagértékeit tíz pixelek (9 + szomszédos cél). Eljárás alkalmazása során nem szabad elfelejteni, hogy nem engedhetjük meg a termelés a fejlécet. Kezdjük végrehajtani.
Kezdjük a módszer aláírásával. A módszer kell, hogy egy kép, a koordinátákat a lényeg, hogy kell elhomályosítani, és a sugár. Visszaadja egy új pixel típusú RGBA.
A rövidség kedvéért fej típusa tárolására a pixel koordinátákat.
Ezután ki kell számítani a koordinátákat a téglalap, amelyen belül minden képpont kiszámításához használt átlagértéket. Az egyik oldalon a bal felső pont a téglalap korlátozódik határait a kép, a másik - a célpont. A jobb alsó pontja is csak a célpont, és az első határ, majd a képeket volt. A „cutoff” érték módszer végrehajtási bilincs.
Figyelemmel a fenti korlátozások most találunk a koordinátákat a téglalap.
4 fej a tároló számláló színösszetevőinek, és egy közös számláló ahhoz, hogy tudjuk, hogy mennyi, sőt, már kiiktatott pixel.
Nagyon kevés. Iterációjával sorban a téglalap számított frissítésével az akkumulátort és a számláló.
Mindezt összerakva, így egy új RGBA pixel.
Most egy kicsit a gondolkodás lehetőségét a párhu- feladat.
Kiszámítása az egyes pixel blur - egy nagyon egyszerű feladat, így az ötlet megoldására egy külön téma lehet dobni azonnal. Meg kell verni a képre, a szektorban. De mennyit és milyen módon? Az első kérdés lehet megválaszolni a tényen alapul, hogy még a nagyon meredek szuperszámítógép végtelen processzormagok száma. Vagyis, mi kell eljárni a lehetőségek rendelkezésre álló forrásokat. Ha van egy nyolc autó - ez feltételezhetjük, hogy általában, a probléma nem kezében egy nagy overhead ötvözi a számítási eredmények a részfeladatok, ahol a számítások készülnek 8 szál, akkor úgy döntött, gyorsabban, mint a megoldás egy szál. Arra a következtetésre jutottunk, hogy fontos a felhasználó számára, hogy egy lehetőséget, hogy válasszon a szálak számának megfelelően a rendelkezésre álló források. Így meg kell osztani a képet N megközelítőleg azonos ágazatban, ahol N - szálak száma a döntés, majd párhuzamosan elhomályosítja az összes ezekben az ágazatokban.
Hogyan lehet megtörni ezt a képet? Attól függ, hogy a végrehajtás a kép maga. Van végre a legprimitívebb verzió: egydimenziós tömb pixel. Így, még ha néhány véletlenszerű pixel kerül át az al-feladatait ez a teljesítmény szinte nem befolyásolja. Akkor összpontosítani a rövidség kódot. A naiv és könnyen megvalósítható lehetőség - egy elmosódott ugyanabban részfeladat egy bizonyos tartományban oszlopok vagy sorok. Folytassuk.
elmosódás metódus két képek (forrás és cél), a sugár az elmosódás, és az oszlopok között (és onnan). Az ismétlése az első oszlopot, majd az egyes pixelek kapott frissítésével célkép elmosódott képpont.
Ez maradt futni a kijelölt feladat. Én csökkentette végrehajtási tartományok generációs részfeladatok miatt triviális. Csak nem fog megjelenni a kódot, amely végrehajtja a feladatok ütemezéséről, mivel nem vonatkozik a mai téma. Minden oszlop tartomány indít egy új feladat (feladat). Akkor csak várni számításokat.
Ebben az alkalmazásban az algoritmus befejeződött. Lehetőség van kísérletezni a adatfolyamok száma. Ebben az esetben nagyon jól önmagában azt mutatja, hyper-threading Intel (mindegyik mag támogatja a két logikus). Az én esetemben (y 4 fizikai processzormag) 8-flow a feladat kezelt 40-50% -kal gyorsabb, mint a 4. De a további növekedés gyorsulása mérhető áramlási nincs megadva.
Köszönöm, hogy elolvasta.