mardi 9 janvier 2018

Parallel random number generation

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