annotate test/ParRead.hs @ 28:c1ad4362093d default tip

add script files
author Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
date Fri, 07 Feb 2014 20:19:32 +0900
parents efb4e880ac7f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 {-# LANGUAGE OverloadedStrings #-}
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 import Control.Parallel
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 import Control.Parallel.Strategies
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import Text.Printf
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 import Jungle
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 import Data.Maybe
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 import Data.List
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 import Data.Time.Clock
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 import qualified Data.ByteString.Lazy.Char8 as B
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 import Control.Exception
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 import System.Environment
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 main = do
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
16 jungle <- createJungle
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
17 createTree jungle "test_tree"
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
18 node <- getRootNode jungle "test_tree"
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 let
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
20 x = testTree node 8
21
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
21 size_x = size x
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
22 putStrLn $ show $ size_x
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
23 updateRootNode jungle "test_tree" x
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
24 node2 <- getRootNode jungle "test_tree"
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 t0 <- getCurrentTime
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 printTimeSince t0
25
efb4e880ac7f add simple parallel execution test
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 21
diff changeset
27 let result = map (func node2) [1..1000] `using` parList rpar
21
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
28 print (length (filter (> size_x) result))
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 printTimeSince t0
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
21
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
32 func node num = size (addc c node [1,1])
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
33 where
451bf8dcdc9c using parList
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 20
diff changeset
34 c = num `mod` 5
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 -- ある程度の大きさの木を作れる
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
38 -- size $ testTree y 2 = 10
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
39 -- size $ testTree y 6 = 11742
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
40 -- size $ testTree y 8 = 876808
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
41 testTree node h = foldl' (add (h-1)) node (concatMap permutations . subsequences $ [1..h])
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 where
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
43 add x node h = addc x node h
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
20
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
45 -- x回addNewChildAtする
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
46 addc 0 node h = addNewChildAt node h
97d1e67aef15 add STM in Jungle map
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
47 addc x node h = addNewChildAt (addc (x-1) node h) h
8
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 printTimeSince t0 = do
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 t1 <- getCurrentTime
f03876c8236a add ParRead
Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 printf "time: %.2fs\n" (realToFrac (diffUTCTime t1 t0) :: Double)