parallele parMap und Strategien

9

Es besteht ein Zweifel über parallele Strategien und parMap (Control.Parallel.Strategies)

Es geht um parMap rseq Äquivalenz mit parMap rpar .

Da parMap parList verwendet, wird parallel ausgewertet, so dass entweder rseq oder rpar parallel zu WHNF ausgewertet wird. Ist es nicht?

Aktualisierung:

Seit

%Vor%

parMap rseq verwendet die Strategie

%Vor%

was ergibt:

%Vor%

was ergibt:

%Vor%

Es ist schwer, über das Ergebnis nachzudenken.

Aktualisierung:

Ich sehe, die faule Bewertung nimmt zuerst die erste Funktion der Komposition und

%Vor%

gewährt, dass jedes Element im durchsuchbaren Container nach Möglichkeit für eine parallele Berechnung ausgelöst wird.

Also könnten wir hinzufügen, dass (rpar dot rseq) äquivalent zu (rseq dot rpar) ist, oder?

Und das parMap rpar ist insofern redundant, als es für jedes verfahrbare Element zwei Funken erzeugt. !!

    
Gabriel Riba 04.03.2013, 01:44
quelle

1 Antwort

4

Ein schneller Rauchtest zeigt, dass ja parMap rseq und parMap rpar beide parallel ausgewertet werden.

%Vor%

und dann mit jeder Art von result_____ habe ich die kompilierten Binaries

getaktet %Vor%

und sah, dass resultPlain war viel länger als resultPar oder resultSeq (etwa 2x länger) und resultPar und resultSeq wurden vergleichsweise identisch zeitlich festgelegt.

Weitere Details zu GHCs tatsächlicher Interpretation der Eval Monade fehlen, aber angesichts der parMap strat f = withStrategy (parList strat) . map f zusammen mit den Ergebnissen dieses Experiments bin ich zuversichtlich, dass jedes Element in der Liste zur Auswertung an WHNF ausgelöst wird.

>     
J. Abrahamson 04.03.2013 06:11
quelle

Tags und Links