od Necroman » 3. 4. 2008 09:51
Vcera jsem si s tim trochu hral a po prepsani verze z pthredu do TBB, dost primocare, to pocita skoro stejne rychle, jako pthready, tj 7+ zrychleni..
U mkl je asi ten problem, ze to je optimalni verze, ktera byla predpokladam tvorena s ohledy na prakticky vsechny vlastnosti procesoru, pameti, sbernice, pristupu na disk. Bez pokrocilych znalosti assembleru a ruznych SSE instrukci podle me neni mozne se mkl ani priblizit. Uz jen pohled na to, ze moje prumerna binarka ma cca 10 KB a mkl asi 1.5 MB, to bude neco znamenat...
Ale jak rikas, hlavni moznosti optimalizace jsou prave u seriove verze. U TBB se toho uz moc vymyslet neda, maximalne zkusit vnorit parallel_reduce do parallel_for, pohrat si s grainsize ci pouzit partitioner, nebo pouziti memory alokatoru, co poskytuje TBB.
update, zoptimalizoval jsem nacitani dat ze souboru tak, ze nejdriv nactu matici b a az v pameti ji transponuju, a momentalne moje TBB verze zpracuje s nacachovanymi daty large matice za 10.5 vteriny, huge za cca 120 vterin.
Vcera jsem si s tim trochu hral a po prepsani verze z pthredu do TBB, dost primocare, to pocita skoro stejne rychle, jako pthready, tj 7+ zrychleni..
U mkl je asi ten problem, ze to je optimalni verze, ktera byla predpokladam tvorena s ohledy na prakticky vsechny vlastnosti procesoru, pameti, sbernice, pristupu na disk. Bez pokrocilych znalosti assembleru a ruznych SSE instrukci podle me neni mozne se mkl ani priblizit. Uz jen pohled na to, ze moje prumerna binarka ma cca 10 KB a mkl asi 1.5 MB, to bude neco znamenat...
Ale jak rikas, hlavni moznosti optimalizace jsou prave u seriove verze. U TBB se toho uz moc vymyslet neda, maximalne zkusit vnorit parallel_reduce do parallel_for, pohrat si s grainsize ci pouzit partitioner, nebo pouziti memory alokatoru, co poskytuje TBB.
update, zoptimalizoval jsem nacitani dat ze souboru tak, ze nejdriv nactu matici b a az v pameti ji transponuju, a momentalne moje TBB verze zpracuje s nacachovanymi daty large matice za 10.5 vteriny, huge za cca 120 vterin.