10. června 2010 Paralelní výpočet SVD s aplikacemi pro vyhledávání informací Petr Kotas, Vít Vondrák, Pavel Praks Fakulta elektrotechniky a Informatiky VŠB - TUO 10.

Download Report

Transcript 10. června 2010 Paralelní výpočet SVD s aplikacemi pro vyhledávání informací Petr Kotas, Vít Vondrák, Pavel Praks Fakulta elektrotechniky a Informatiky VŠB - TUO 10.

Paralelní výpočet SVD s aplikacemi pro vyhledávání informací

Petr Kotas, Vít Vondrák, Pavel Praks Fakulta elektrotechniky a Informatiky VŠB - TUO

10. června 2010

Motivace •

Proč se problémem SVD a vlastních čísel zabývat

– Řešení homogeních lineárních rovnic – Využití při analýze DNA – Registrace obrazu – Komprimace dat – Statistika – Vyhledávače 10. června 2010

Obsah • • •

Úvod do SVD

– Výpočet a problémy při něm vznikající – Návrh řešení → paralelizace

Výpočet SVD

– Bidiagonalizace – – – Výpočet singulárních čísel Výpočet singulárních vektorů Sestavení rozkladu

Aplikace na multimediální data

10. června 2010

Úvod do SVD • • •

Výpočet je velmi náročný na HW

– Pro plné matice je SVD vysoce paměťově náročné – Značná náročnost na floating point operace (kvůli přesnosti)

Iterační charakter → větší náročnost než jiné rozklady Praktická implementace → rozdělení problému

– – – Bidiagonalizace Výpočet singulárních čísel z bidiagonální matice Výpočet singulárních vektorů 10. června 2010

Výpočet SVD - Bidiagonalizace Ortogonální tranformace, redukující dimenzi problému. • –

Praktická implementace

• • Využití Householderových zrcadlení Urychlení výpočtu Numerická stabilita – Householderova matice 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD - Bidiagonalizace 10. června 2010

Výpočet SVD – Bidiagonalizace : Distribuce 10. června 2010

Výpočet SVD – Paralelní bidiagonalizace •

Distribuovaný výpočet

– V každém kroku se spočítá Householderův vektor – Houselderoův vektor se rozdistribuuje na každý uzel – Každý uzel dále elimuje prvky jemu přiřazené 10. června 2010

10. června 2010 Výpočet SVD – Bidiagonalizace : Škálovatelnost 1600 1400 1200 1000 800 600 400 200 0

Paralelní škálovatelnost

1 2 4 5 16

Počet procesorů

32 64 128 1000 100 10

Závislost na velikosti problému

1 0,1 0,01 0,001 100 200 400 800 1600

Dimenze problému

3600 6400 •

Největší problém

— Dimenze 12800 x 12800 (1.2GB) — Doba běhu 1(h)

10. června 2010 Výpočet SVD – Výpočet singulárních čísel •

Diagonalizace matice

– Pomocí Givensonových rotací – Iterační proces – Řád konvergence je O(N 2 )

10. června 2010 Výpočet SVD – Výpočet singulárních čísel •

Vynulování prvního prvku bidiagonály

10. června 2010 Výpočet SVD – Výpočet singulárních čísel • •

Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku

10. června 2010 Výpočet SVD – Výpočet singulárních čísel • • •

Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku

10. června 2010 Výpočet SVD – Výpočet singulárních čísel • • • •

Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc

10. června 2010 Výpočet SVD – Výpočet singulárních čísel • • • • •

Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc Opravení druhého řádku

10. června 2010 Výpočet SVD – Výpočet singulárních čísel • • • • • •

Vynulování prvního prvku bidiagonály Vynulování nově vzniklého prvku Opravení prvního řádku Na třetím řádku se objeví prvek navíc Opravení druhého řádku Vynulování posledního prvku navíc

10. června 2010 Výpočet SVD – Výpočet singulárních čísel •

Diagonalizace

– Ukončovací podmínka •

Největší problém

– Dimence 12800 x 12800 – Doba běhu 791.79 (s) – Počet iterací 325161 Důkaz lze najít v G.W.Stewart – Matrix algorithms vol 2

Výpočet SVD – Singulární vektory •

Sestavení matic U a V (ortogonálních tranformací)

– Matice a jsou sestaveny postupnou akumulací z Householderových vektorů • Potřebuje – ~

U V

~ – Výsledné matice U a V vzniknou pronásobením přechozích 10. června 2010

Porovnání s Matlabem – sekvenční kód 1000,00 100,00 10,00 c++ matlab 1,00 0,10 0,01 100 200 400 800 1600

Dimenze problému (n)

3200 6400 12800 10. června 2010

Závěr • • •

Existující implementace

– ScaLapack, Lapack, MatLab, ProPack ...

Proč se zabývat novou implementací

– Výpočet úplného singulárního rozkladu pro plné velké matice – Licence paralelního MatLabu je drahá – – Většina stávajících implentací je pro řídké matice Stávající řešení se povětšinou zaměřují na největší vlastní čísla

Budoucnost

– Akcelerace výpočtu pomocí „kompaktní reprezentace“ Householderovy tranformace – Další zvětšení dimenze řešitelných problémů – Možnost volby části spektra pro výpočet 10. června 2010

10. června 2010 Aplikace na multimediální data •

Hledání podobnosti dvou digitálních obrazů

– Problém velikost • Aproximace matic pomocí SVD (LSI) • Umožní redukci dimenze původní datové matice řádově na desetinu – Matematický popis (pro úplnost , zde se jím nezabýváme) • MPEG-7 • • Rozdělění histogramu Frekvenční odezva na waveletové filtry

Aplikace na multimediální data : Ukázka 10. června 2010

Aplikace na multimediální data : Ukázka 10. června 2010

Děkuji za pozornost.

Dotazy?

10. června 2010