Control.Parallel seemingly randomly behaviour

Hello everyone, I'm having a consistency issue with the following piece of code: heavyAm = 500 lightAm = 1000 heavyCalc :: Int -> Int heavyCalc s = sum [1..1000000*s] parallel = (heavyCalc lightAm, heavyCalc heavyAm) `using` (parTuple2 rseq rseq) For some reason, during runtime the RTS sometimes parallelizes the evaluation and sometimes it doesn't. I'm running with all the RTS/compile time options correctly afaik. Here is the output from a couple of runs of the program: jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.557007s real 0m1.732s user 0m2.528s sys 0m0.464s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.544837s real 0m1.720s user 0m2.544s sys 0m0.712s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 2.316537s real 0m2.484s user 0m2.592s sys 0m0.680s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 2.318514s real 0m2.489s user 0m2.612s sys 0m0.688s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.544975s real 0m1.718s user 0m2.512s sys 0m0.456s As you can see, sometimes wall time roughly equals userspace time, sometimes it doesn't (meaning it parallelized at least some amount). I'm running on a dual core machine under Ubuntu using stack with lts-7.14 (GHC 8.0.1) and parallel-3.2.1.0. Regards, Juan

Just to remove one variable: what happens if you run the same executable
multiple times, rather than rebuilding it each time?
On Jan 15, 2017 6:34 PM, "Juan Luis Martty"

Oh, and you should probably be passing your program an explicit +RTS option
to tell it how many OS threads to use.
On Jan 16, 2017 7:01 PM, "David Feuer"
Just to remove one variable: what happens if you run the same executable multiple times, rather than rebuilding it each time?
On Jan 15, 2017 6:34 PM, "Juan Luis Martty"
wrote: Hello everyone,
I'm having a consistency issue with the following piece of code:
heavyAm = 500 lightAm = 1000
heavyCalc :: Int -> Int heavyCalc s = sum [1..1000000*s]
parallel = (heavyCalc lightAm, heavyCalc heavyAm) `using` (parTuple2 rseq rseq)
For some reason, during runtime the RTS sometimes parallelizes the evaluation and sometimes it doesn't. I'm running with all the RTS/compile time options correctly afaik. Here is the output from a couple of runs of the program:
jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.557007s
real 0m1.732s user 0m2.528s sys 0m0.464s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.544837s
real 0m1.720s user 0m2.544s sys 0m0.712s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 2.316537s
real 0m2.484s user 0m2.592s sys 0m0.680s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 2.318514s
real 0m2.489s user 0m2.612s sys 0m0.688s jmartty@walrus:~/hs/parallel$ stack build && time stack exec par-exe Warning: File listed in par.cabal file does not exist: README.md (500000000500000000,125000000250000000) Computation time: 1.544975s
real 0m1.718s user 0m2.512s sys 0m0.456s
As you can see, sometimes wall time roughly equals userspace time, sometimes it doesn't (meaning it parallelized at least some amount). I'm running on a dual core machine under Ubuntu using stack with lts-7.14 (GHC 8.0.1) and parallel-3.2.1.0.
Regards, Juan
_______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.

The build isn't really doing anything after the first build cause it doesn't detect any changes. And stack exec is already passing the right RTS options
________________________________
From: David Feuer
participants (2)
-
David Feuer
-
Juan Luis Martty