packages feed

LogicGrowsOnTrees-processes 1.0.0.1 → 1.0.0.2

raw patch · 3 files changed

+54/−28 lines, 3 files

Files

+ CHANGELOG.md view
@@ -0,0 +1,18 @@+Version 1.0.0.2+===============++* Added some examples and benchmarks files that I had forgotten to put in the+  repository.+++Version 1.0.0.1+===============++* Improved performance.++* Exposed `getCurentStatistics` in the `RequestQueueMonad`, allowing one to+  obtain the statistics at any time during the run.++* Bumped dependency bounds.++* Deleted some vestigial code and imports.
LogicGrowsOnTrees-processes.cabal view
@@ -1,5 +1,5 @@ Name:                LogicGrowsOnTrees-processes-Version:             1.0.0.1+Version:             1.0.0.2 License:             BSD3 License-file:        LICENSE Author:              Gregory Crosswhite@@ -13,6 +13,8 @@     multiple processes for parallelism; see the module documentation for more     details. +Extra-source-files: CHANGELOG.md+ Bug-reports: https://github.com/gcross/LogicGrowsOnTrees-processes/issues  Source-Repository head@@ -22,8 +24,7 @@ Source-Repository this     Type:     git     Location: git://github.com/gcross/LogicGrowsOnTrees-processes.git-    Tag:      1.0.0.1-+    Tag:      1.0.0.2  Library     Build-depends:
benchmarks/benchmark.hs view
@@ -1,47 +1,54 @@+{-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE UnicodeSyntax #-} +import Prelude hiding (catch)++import Control.Exception (SomeException,catch) import Criterion.Main import Data.Monoid import System.Environment+import System.IO  import LogicGrowsOnTrees import LogicGrowsOnTrees.Checkpoint-import LogicGrowsOnTrees.Utils.PerfectTree+import LogicGrowsOnTrees.Utils.PerfectTree (trivialPerfectTree) import LogicGrowsOnTrees.Utils.WordSum import qualified LogicGrowsOnTrees.Parallel.Adapter.Processes as Processes import qualified LogicGrowsOnTrees.Parallel.Adapter.Threads as Threads import LogicGrowsOnTrees.Parallel.Adapter.Threads (setNumberOfWorkers) import LogicGrowsOnTrees.Parallel.Common.Worker (exploreTreeGeneric)-import LogicGrowsOnTrees.Parallel.ExplorationMode (ExplorationMode(AllMode))+import LogicGrowsOnTrees.Parallel.ExplorationMode (AllMode,ExplorationMode(AllMode)) import LogicGrowsOnTrees.Parallel.Main import LogicGrowsOnTrees.Parallel.Purity (Purity(Pure)) -main = defaultMain+depth = 15++main = do+    args ← getArgs+    case args of+        ["worker-bee"] →+            Processes.runWorkerUsingHandles+                AllMode+                Pure+                (trivialPerfectTree 2 depth)+                stdin+                stdout+             `catch`+             (\(e::SomeException) → error $ "Worker process failed: " ++ show e)+        _ → Processes.getProgFilepath >>= defaultMain . benchmarks++benchmarks worker_filepath =     [bench "list" $ nf (getWordSum . mconcat . trivialPerfectTree 2) depth     ,bench "tree" $ nf (getWordSum . exploreTree . trivialPerfectTree 2) depth     ,bench "tree w/ checkpointing" $ nf (getWordSum . exploreTreeStartingFromCheckpoint Unexplored . trivialPerfectTree 2) depth     ,bench "tree using worker" $ exploreTreeGeneric AllMode Pure (trivialPerfectTree 2 depth)-    ,bench "tree using single thread (direct)" $ Threads.exploreTree (setNumberOfWorkers 1) (trivialPerfectTree 2 depth)-    ,bench "tree using single thread (main)" $-        withArgs ["-n1"] $-            simpleMainForExploreTree-                Threads.driver-                (const $ return ())-                (trivialPerfectTree 2 depth)-    ,bench "tree using single process (direct)" $-        Processes.runExplorer-            (const AllMode)-            Pure-            (return ((),()))+    ,bench "tree using single thread" $ Threads.exploreTree (setNumberOfWorkers 1) (trivialPerfectTree 2 depth)+    ,bench "tree using single process" $+        Processes.runSupervisor+            (AllMode :: ExplorationMode (AllMode WordSum))+            worker_filepath+            ["worker-bee"]             (const $ return ())-            (const $ trivialPerfectTree 2 depth)-            (\_ _ → return mempty)-            (\_ _ → setNumberOfWorkers 1)-    ,bench "tree using single process (main)" $-        withArgs ["-n1"] $-            simpleMainForExploreTree-                Processes.driver-                (const $ return ())-                (trivialPerfectTree 2 depth)+            mempty+            (setNumberOfWorkers 1)     ]-  where depth = 15