mezi zidli a klavesnici

Pavel Troller patrol na sinus.cz
Úterý Únor 28 09:55:20 CET 2012


Zdravím,

> Slušný překladač ovšem samostatně rozvine konstantní cyklus do makra.
> Případně obecný cyklus rozdělí do bloků ve smyslu
> 
> for i=0 to max div 4 - 1
>      Soucet += Pole[i*4]
>      Soucet += Pole[i*4+1]
>      Soucet += Pole[i*4+2]
>      Soucet += Pole[i*4+3]
> 
> for i=max div 4 to max
>      Soucet += Pole[i]
> 
> a následně si v druhém průchodu optimalizace uvědomí, že není žádná
> příčinná vazba mezi jednotlivými řádky těla prvního cyklu a rozhodí to
> do čtyř tasků, takže to v důsledku poběží na čtyřjádru rychleji než
> při té ruční úpravě. A upřímně, já bych se s tím tedy ručně do čtyř
> tasků nedělil :-)

Tak o tomto velice pochybuji.
  Pokud by to nějaký překladač skutečně udělal (o čemž pochybuji primárně),
musel by zajistit vzájemnou synchronizaci a blokování těch tasků
(prostřednictvím spinlocku, mutexu, semaforu či podobného mechanismu)
tak, aby se nepokoušely pracovat současně, což by samozřejmě vedlo k
výrazné nestabilitě výsledku :-). A díky tomu by to bylo nesrovnatelně
větší a hlavně i pomalejší než jednoduché single-threaded řešení.
  Minimálně v *IXovém světě, pokud chcete, aby běželo něco multithreadově
nebo dokonce multiprocesně, musíte si to zajistit sám (clone(), fork()),
žádný kompilátor si toto nedovolí udělat o své vlastní vůli. Programování
v jiných OSech neznám, ale divil bych se, kdyby to tam bylo výrazně
odlišné.
  Zdraví Pavel


> 
> Ales Prochaska
> 
> > Prekladace neumi pracovat poradne s pointery ve smycce. Takze v C staci se
> > vybodnout na cykly a hned to bezi rychleji. Treba toto:
> > for i=0 to 5
> >     Soucet += Pole[i]
> 
> > Je lepsi zapsat
> >     Soucet += Pole[0]
> >     Soucet += Pole[1]
> >     Soucet += Pole[2]
> >     Soucet += Pole[3]
> >     Soucet += Pole[4]
> >     Soucet += Pole[5]
> 
> > Vypada do dlouze, ale po prelozeni je to obvykle kratsi a nekolikanasobne
> > rychlejsi
> 
> 
> > Michal Gregor
> 
> 
> 
> 
> 
> > ----- Original Message ----- 
> > From: "Josef Štengl" <ok1ced na nagano.cz>
> > To: "HW-news" <hw-list na list.hw.cz>
> > Sent: Tuesday, February 28, 2012 1:42 AM
> > Subject: Re: mezi zidli a klavesnici
> 
> 
> >> čas je drahý, hodně drahý, proto se to dělá. Proto se kontrolují flagy a 
> >> tráví se ne tři týdny, ale tři měsíce nad tím aby se ušetřilo 100??s. 
> >> Protože 100??s znamená jestli SW bude fungovat bezpečně, jestli projde 
> >> testy a jestli vám za něj zaplatí. 100??s je zatraceně spousta času, za 
> >> které to stojí!
> 
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> 
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list