packages feed

DistanceTransform-0.1.2: src/tests/TestPar.hs

module Main (main) where
import Criterion.Main
import qualified Data.Vector.Storable as V
import qualified Data.Vector.Storable.Mutable as VM
import qualified Data.Vector.Unboxed as U
import DistanceTransform.Euclidean

testRes :: Int
testRes = 64

-- A cube of ones with a zero at the center.
testData :: V.Vector Int
testData = V.create $ do v <- VM.replicate (testRes^3) 1
                         VM.write v (4*testRes^2+4*testRes+4) 0
                         return v

main = do putStr "I am sane, true or false? "
          print (edt' dims testData == edtPar' dims testData)
          defaultMain [ bench "serial" $ whnf (edt' dims) testData
                      , bench "parallel" $ whnf (edtPar' dims) testData ]
  where dims = replicate 3 testRes
        edt' :: [Int] -> V.Vector Int -> V.Vector Float
        edt' = edt
        edtPar' :: [Int] -> V.Vector Int -> V.Vector Float
        edtPar' = edtPar