Difference between revisions of "GHC/Data Parallel Haskell/MainTimed"

From HaskellWiki
Jump to navigation Jump to search
(New page: The following variant of the main module for the dot product example determines and prints the runtime of the dot product kernel in microseconds. <haskell> import System.CPUTime (getCPUTim...)
 
(No difference)

Latest revision as of 04:34, 25 January 2011

The following variant of the main module for the dot product example determines and prints the runtime of the dot product kernel in microseconds.

import System.CPUTime (getCPUTime)
import System.Random (newStdGen)
import Control.Exception (evaluate)
import Data.Array.Parallel.PArray (PArray, randomRs, nf)
 
import DotP (dotp_wrapper)  -- import vectorised code
 
main :: IO ()
main
  = do 
      -- generate random input vectors
      gen1 <- newStdGen
      gen2 <- newStdGen
      let v = randomRs n range gen1
          w = randomRs n range gen2
      
      -- force the evaluation of the input vectors
      evaluate $ nf v
      evaluate $ nf w
      
      -- timed computations
      start <- getCPUTime
      let result = dotp_wrapper v w
      evaluate result
      end <- getCPUTime
      
      -- print the result
      putStrLn $ show result ++ " in " ++ show ((end - start) `div` 1000000) ++ "us"
  where
    n     = 10000        -- vector length
    range = (-100, 100)  -- range of vector elements