Ich habe eine Implementierung von Conways Spiel des Lebens. Ich möchte es beschleunigen, wenn möglich durch Parallelität.
%Vor%Bei der Profilerstellung machen Nachbarn 6,3% der aufgewendeten Zeit aus, und während ich klein war, erwartete ich eine merkliche Beschleunigung, indem ich sie parallel abbildete.
Ich habe mit einer einfachen Funktion
getestet %Vor%und kompilierte die parallele Version als
%Vor%und lief es als
%Vor%es stellt sich heraus, dass die parallele Version langsamer ist. Verwende ich ParMap hier falsch? Ist das überhaupt ein Fall, wo Parallelität verwendet werden kann?
Ich glaube nicht, dass Sie richtig messen. Ihr parLife
ist tatsächlich ein bisschen schneller als life
. In der Tat, auf meinem Rechner (Phenom X4, 4-Core,) dauert der erstere etwa 92,5% der Zeit, die letzteres tut, was in Anbetracht, dass Sie sagen, dass Sie nur eine Verbesserung von 6% erwarten, ist ziemlich gut.
Was ist Ihr Benchmarking-Setup? Haben Sie versucht, criterion
zu verwenden? Folgendes habe ich getan:
Kompiliert mit ghc --make -O2 -o bench
und lief mit ./bench -o bencht.hmtl +RTS -N3
.
Tags und Links haskell parallel-processing conways-game-of-life