I want to execute the very long calculation with random number generations parallely.
import Control.DeepSeq
import Control.Parallel.Strategies
import Control.Monad
import System.Random.MWC
import System.Random.MWC.Distributions
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)
main = do
gen <- createSystemRandom
let params = [30, 31 .. 34]
rs <- forM params $ \n -> do
xs <- replicateM n $ normal 0 1 gen
return $ fib n `deepseq` xs
print $ withStrategy (parList rdeepseq) $ map last rs
How to execute \n -> do ... parallely? monad-parallel package is not worked well.
Aucun commentaire:
Enregistrer un commentaire