Jeste jsem koukal na jednu vec - mozna je to trivka, ale me to spis prekvapilo.
Moje reseni nebylo ani v nejmensim tak genialni jako "Necromana" (- smekam pred tebou za ten research co jsi kolem toho udelal, fakt parada). Vlastne jsem jen vyslednou matici prevedl na vektor ("slepil jsem radky") a pak jsem kazdemu vlaknu pridelil prvky ktere ma spocitat "modulo". Viz ("cyclic distribution"):
http://www.math.uu.nl/people/bisselin/PSC/psc1_3.pdf (Utrecht University, Parallel algorithms)
http://www.math.uu.nl/people/bisselin/ (pripadne dalsi podklady z Utrechtu)
Vzhledem k tomu, ze jsem nevyuzil zadnou vychytavku a nehrabal jsem se v architekture procesoru jsem se uz pomalu smiroval s tim, ze dosahnu jen 2.5 nasobneho zrychleni (47s na "large").
Pak jsem si ale ("pak"="ve 23:54 hod. soudneho dne") rekl, ze zaexperimentuju s poctem vlaken. Nejdriv jsem puvodni a spise nudny pocet 8 zmenil na 16. Kdyz jsem nevidel vubec zadnou zmenu, zavtipkoval jsem s poctem vlaken 64 - a ejhle! Zrychleni na asi 35s. Tak jsem postupne "binarnim vyhledavanim" dosel k tomu, ze idealni pocet vlaken pro matici "large" je 256. Kdyz jsem takhle "vypalil" 256 vlaken, stlacil jsem cas na v prumeru 25s (oproti puvodnim 47), obcas jsem byl na hrane dvacitky.
Btw: Kolik jste na to spousteli vlaken vy? Meli jste nejaky algoritmus na to kolik vlaken se spousti pro matici danych rozmeru, nebo jste to meli zadratovano napevno (tak to mam v reseni odevzdanem po deadline), jako parametr na prikazove radce (tak to mam ja v resenich odevzdanych pred deadline), ... ???