[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: [SCICOMP] Parallel Programmering Med Linux



Jihad:

> Jeg er igang med at lave et simpelt program som skal koere paa to
> processorer ( i en maskine). Jeg bruger pthreads til dette formaal, og har
> dermed to traade der skal koere paa hver sin processor.

Bruger du pthreads direkte eller bruger du GNU Ada? - Jeg har kun
erfaring med at lave parallelprogrammering i Ada, så det kan være
at du ikke kan bruge mine kommentarer til noget (det kunne nu
også ske, hvis jeg kodede pthreads direkte).

> 1- Jeg har et problem med at traad 1 haenger lige pludselig, selvom den er
> selvstaendig.

Det har jeg aldrig opdaget (bortset fra de "traditionelle"
uendelige løkker).

Som Sune skriver; hvad siger gdb?

> 2- Jeg faar nogen gange en segmentation fault naar traad 2 laeser fra
> arrayet.

Det virker usandsynligt at det kan være problemet, men blokerer
du for læsning fra indekset mens du opdaterer det?

Principielt skal man låse delte data (i Ada via "protected types")
mens de opdateres, så en anden tråd ikke læser ugyldige data fordi
opdateringen endnu ikke er færdig.

> Skal jeg laase mine data, selvom det kun er den ene af traadene der
> skriver i dem (og den anden laeser bare),

Du skulle blot behøve at låse lige netop den post, der bliver
opdateret, og hvis du venter med at opdatere indeks til posten
er skrevet, kan jeg ikke se hvad der kan gå galt.

> og selvom jeg mener at det er
> atomare laesninger og skrivninger der udfoeres? Jeg vil helst undgaa at
> laase, da dette vil gaa ud over effektiviteten.

Er det så galt? Har det nogen reel betydning sammenlignet med
den tid, der bruges på de egentlige beregninger?

> Er det et problem hvis den ene traad laeser et entry i arrayet, og den
> anden laeser et andet entry samtidig?

Det er ikke min erfaring (og jeg kan heller ikke se, hvorfor det
skulle være tilfældet).

Et ekstremt forsøg på at løse problemet kunne være (nu antager
jeg at du ikke allerede koder i Ada) at skrive
paralleliseringskoden i Ada og så lade den kalde dine
eksisterende beregningsfunktioner skrevet i C/C++/Fortran/...

Jacob
-- 
"Sleep is just a cheap substitute for coffee"


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:34 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] *