[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]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
> 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
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |