[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] parallelisering




> Det vigtige er:
> 
> 1. afgør om noget sker effektivt serielt - dvs. at
> det ikke tager exp tid at eksekvere
> 2. afgør om det sker faktor n gange mere effektivt i
> parallel

Der køres en for-loop med uafhængige runs eller
iterationer (eller hvad det nu kaldes), den burde i
princippet kunne parallelliseres helt væk.

 
> Men bare at parallelisere er ikke altid måden frem
> til effektiv eksekvering.

Jo, der er ikke så meget andet tilbage, alt andet er
fintunet på kryds og tværs i to måneder.

 Jeg mener der findes nogle glimrende artikler i
> linux journal om brugen
> af profilers til at afgøre cpu og ram tunge loops i
> ens kode opvejet mod brugen af det. Der kan man se
hvad der skal optimeres i sit program. Når
> man så har lokalisereret "svinet", kan man overveje
> om parallelisering er umagen værd.

Jeg begynder faktisk også at tvivle.
 
> -- hvilken parallel motor bruger du? pvm eller mpi ?

Øhh, nu bliver du for hardcore, hvilken rolle spiller
det?
 
> Kernen "booter" så at sige kun processorerne og
> tillader et api lag som
> mpi at snakke med et lag i kernen, der så spawner
> opgaver ud til
> processerne. Derfor har de forskellige kerne
> versioner ikke den helt
> store indflydelse mht. optimering af dit program.
> 
> Parallel er lidt fancy, men det er tit at man bare
> skal tænke sig om for
> at optimere, f.eks. at 
> 4*2^4 + 4*3^2 er dårligt men at 4(2^4+3^2) er bedre.
> Tæl selv
> operationer efter.

Algoritmen og implementeringen er tæt på det optimale,
i det 90 procent af den er Fourier transformationer
copy/pasted fra numerical recipies.

> Endelig kommer vi til gode kompiler flag. Generelt
> skal >-02 ikke bruges
> på intel chips da gcc er kendt for at kunne lave
> mærkelig coredumps over
> denne optimering.

Jeg bruger kun -O3, men loop unrolling og alle de
andre ser ikke ud til at spille en rolle, ikke et
sekund vindes, de fleste kører bare langsommere.

> -mpentium er fint og kører (vist nok) meget stabilt.

den må jeg vist lige prøve, irriterende den ikke
automatisk kan optimere for MMX og andre gode
instruktionssæt. Jeg går ud fra den stadig kompilerer
til 386'ere? Det må altså kunne gøres bedre.

Hilsen Sune


__________________________________________________
Do You Yahoo!?
Talk to your friends online with Yahoo! Messenger.
http://im.yahoo.com


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:08 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *