cabal-version: 2.2 name: parconc-examples version: 0.4.8 synopsis: Examples to accompany the book "Parallel and Concurrent Programming in Haskell" description: Examples to accompany the book "Parallel and Concurrent Programming in Haskell" license: BSD-3-Clause license-file: LICENSE author: Simon Marlow maintainer: Simon Marlow copyright: (c) Simon Marlow 2011-2013 category: Sample Code build-type: Simple bug-reports: https://github.com/simonmar/parconc-examples/issues homepage: http://github.com/simonmar/parconc-examples extra-source-files: sudoku17.1000.txt sudoku17.16000.txt sudoku17.49151.txt chanbench.hs findpar5.hs parlist.hs other/correcter.hs other/arithgame.hs other/game.hs other/README distrib-db/WorkerSample.hs distrib-db/DatabaseSample.hs sudoku-par1.hs sudoku-par2.hs sudoku-par3.hs sudoku-par4.hs kmeans/Makefile timeout2.hs parinfer/benchmark.in tmvar.hs windowman.hs ChangeLog.md README.md source-repository head type: git location: https://github.com/simonmar/parconc-examples.git -- ----------------------------------------------------------------------------- -- Flags -- -f llvm: enable -fllvm to GHC; requires LLVM to be installed, but -- makes the Repa programs faster flag llvm default: False -- -f devil: Enable the image-maniputation programs, which are -- disabled by default because they require the devil library which -- needs to be installed separately. flag devil default: False -- -f cuda: Build the examples that require accelerate-cuda. These -- need the NVidia CUDA tools installed. flag cuda default: False -- -f-accelerate: Do not build the examples that require accelerate. flag accelerate default : True -- -f-distributed: Do not build the examples that require distributed-process. flag distributed default : True -- -f network26: Use network-2.6. Internal flag; you shouldn't need -- to change this. flag network26 default : True common deps default-language: Haskell2010 build-depends: array >= 0.4 && <0.6, async >= 2.0 && < 2.3, base >= 4.5 && < 4.14, binary >=0.6.3 && < 0.11, bytestring >= 0.9 && < 0.12, containers >= 0.4 && < 0.6, deepseq >= 1.3 && < 1.5, directory >= 1.1 && < 1.4, filepath >= 1.3 && < 1.5, monad-par >= 0.3.4 && < 0.4, -- monad-par 0.3 has a bug: -- https://github.com/simonmar/monad-par/issues/23 parallel ==3.2.*, random >= 1.0 && < 1.3, stm >=2.4 && < 2.6, time >= 1.4 && < 1.12, template-haskell >= 2.7 && < 2.16, transformers >=0.3 && <0.6, utf8-string >= 0.3 && < 1.1, vector >= 0.10 && < 0.13, xml ==1.3.*, common network if flag(network26) build-depends: network >= 2.6 && < 2.9 , network-uri >= 2.6 && < 2.7 else build-depends: network >= 2.3 && < 2.6 common http build-depends: http-conduit >= 2.1 && < 2.4 common monad-par build-depends: abstract-par ==0.3.*, monad-par >= 0.3.4 && < 0.4 common distributed if flag(distributed) build-depends: distributed-process >= 0.5 && < 0.8 , distributed-process-simplelocalnet ==0.2.* , distributed-static >= 0.2 && < 0.4 else buildable: False if impl(ghc <= 7.6) -- prior to ghc-7.4 generics lived in ghc-prim build-depends: ghc-prim -- ----------------------------------------------------------------------------- -- par-eval executable rpar import: deps main-is: rpar.hs ghc-options: -threaded executable sudoku1 import: deps main-is: sudoku1.hs other-modules: Sudoku executable sudoku2 import: deps main-is: sudoku2.hs other-modules: Sudoku ghc-options: -threaded executable sudoku3 import: deps main-is: sudoku3.hs other-modules: Sudoku ghc-options: -threaded executable sudoku4 import: deps main-is: sudoku4.hs other-modules: Sudoku ghc-options: -threaded executable sudoku5 import: deps main-is: sudoku5.hs other-modules: Sudoku ghc-options: -threaded -- ----------------------------------------------------------------------------- -- par-strat executable strat import: deps main-is: strat.hs ghc-options: -threaded executable strat2 import: deps main-is: strat2.hs ghc-options: -threaded executable strat3 import: deps main-is: strat3.hs ghc-options: -threaded executable rsa import: deps main-is: rsa.hs other-modules: ByteStringCompat executable rsa1 import: deps main-is: rsa1.hs other-modules: ByteStringCompat ghc-options: -threaded executable rsa2 import: deps main-is: rsa2.hs other-modules: ByteStringCompat ghc-options: -threaded executable kmeans import: deps hs-source-dirs: kmeans main-is: kmeans.hs other-modules: KMeansCore ghc-options: -threaded executable GenSamples import: deps hs-source-dirs: kmeans main-is: GenSamples.hs other-modules: KMeansCore build-depends: normaldistribution >= 1.1 && < 1.2 -- ----------------------------------------------------------------------------- -- par-monad executable parmonad import: deps main-is: parmonad.hs ghc-options: -threaded executable rsa-pipeline import: deps main-is: rsa-pipeline.hs other-modules: ByteStringCompat Stream ghc-options: -threaded executable fwsparse import: deps main-is: fwsparse.hs other-modules: SparseGraph MapCompat hs-source-dirs: fwsparse executable fwsparse1 import: deps main-is: fwsparse1.hs other-modules: SparseGraph MapCompat hs-source-dirs: fwsparse ghc-options: -threaded executable timetable import: deps main-is: timetable.hs executable timetable1 import: deps main-is: timetable1.hs executable timetable2 import: deps main-is: timetable2.hs executable timetable3 import: deps main-is: timetable3.hs executable parinfer import: deps main-is: parinfer.hs hs-source-dirs: parinfer other-modules: InferMonad Term FiniteMap Shows Environment Lex MaybeM Parse MyList Type Infer Substitution StateX build-tool-depends: alex:alex, happy:happy -- ----------------------------------------------------------------------------- -- par-repa executable fwdense import: deps main-is: fwdense.hs build-depends: repa >= 3.2 && < 3.5 ghc-options: -O2 if flag(llvm) ghc-options: -fllvm executable fwdense1 import: deps main-is: fwdense1.hs build-depends: repa >= 3.2 && < 3.5 ghc-options: -O2 -threaded if flag(llvm) ghc-options: -fllvm executable rotateimage import: deps main-is: rotateimage.hs build-depends: repa >= 3.2 && < 3.5 ghc-options: -O2 -threaded if flag(devil) build-depends: repa-devil == 0.3.* else buildable: False if flag(llvm) ghc-options: -fllvm -- ----------------------------------------------------------------------------- -- par-accel executable fwaccel import: deps main-is: fwaccel.hs other-modules: AccelerateCompat ghc-options: -O2 if flag(accelerate) build-depends: accelerate >= 0.12 && < 1.3 else buildable: False executable fwaccel-gpu import: deps main-is: fwaccel-gpu.hs if flag(accelerate) build-depends: accelerate >= 0.12 && < 1.3 else buildable: False if flag(cuda) build-depends: accelerate-cuda >= 0.12 && < 0.15 else buildable: False ghc-options: -O2 executable mandel import: deps main-is: mandel.hs other-modules: Config hs-source-dirs: mandel build-depends: fclabels if flag(accelerate) build-depends: accelerate >= 0.12 && < 1.3 , accelerate-io else buildable: False if flag(cuda) build-depends: accelerate-cuda >= 0.12 && < 0.15 else buildable: False ghc-options: -O2 -- ----------------------------------------------------------------------------- -- conc-fork executable fork import: deps main-is: fork.hs executable reminders import: deps main-is: reminders.hs executable reminders2 import: deps main-is: reminders2.hs -- ----------------------------------------------------------------------------- -- conc-mvar executable mvar1 import: deps main-is: mvar1.hs executable mvar2 import: deps main-is: mvar2.hs executable mvar3 import: deps main-is: mvar3.hs executable logger import: deps main-is: logger.hs executable phonebook import: deps main-is: phonebook.hs executable chan import: deps main-is: chan.hs executable chan2 import: deps main-is: chan2.hs -- ----------------------------------------------------------------------------- -- conc-overlap executable geturls1 import: deps, network, http main-is: geturls1.hs other-modules: GetURL executable geturls2 import: deps, network, http main-is: geturls2.hs other-modules: GetURL executable geturls3 import: deps, network, http main-is: geturls3.hs other-modules: TimeIt GetURL executable geturls4 import: deps, network, http main-is: geturls4.hs other-modules: GetURL executable geturls5 import: deps, network, http main-is: geturls5.hs other-modules: GetURL executable geturls6 import: deps, network, http main-is: geturls6.hs other-modules: TimeIt GetURL -- ----------------------------------------------------------------------------- -- conc-asyncex executable geturlscancel import: deps, network, http main-is: geturlscancel.hs other-modules: TimeIt GetURL executable geturlscancel2 import: deps, network, http main-is: geturlscancel2.hs other-modules: TimeIt GetURL executable modifytwo import: deps main-is: modifytwo.hs executable chan3 import: deps main-is: chan3.hs executable timeout import: deps main-is: timeout.hs executable catch-mask import: deps main-is: catch-mask.hs executable catch-mask2 import: deps main-is: catch-mask2.hs -- ----------------------------------------------------------------------------- -- conc-stm -- NB. The book refers to "tmvar.hs" and "windowmanager.hs", so we -- can't change rename these files. However, we need to use proper -- upper-case module names, so we use symbolic links from a -- subdirectory (mismodules) so that the repo remains safe to use on -- case-insensitive filesystems (#15). executable miscmodules import: deps main-is: miscmodules.hs hs-source-dirs: miscmodules . other-modules: TMVar, TList, TQueue, TBQueue, WindowManager executable geturlsfirst import: deps, network, http main-is: geturlsfirst.hs other-modules: ConcurrentUtils, GetURL executable TChan import: deps main-is: TChan.hs -- ----------------------------------------------------------------------------- -- conc-higher executable geturls7 import: deps, network, http main-is: geturls7.hs other-modules: ConcurrentUtils, GetURL executable geturls8 import: deps, network, http main-is: geturls8.hs other-modules: Async, GetURL executable geturls9 import: deps, network, http main-is: geturls9.hs other-modules: Async, GetURL executable timeout2 import: deps main-is: timeout.hs -- ----------------------------------------------------------------------------- -- conc-par executable findseq import: deps main-is: findseq.hs executable findpar import: deps main-is: findpar.hs ghc-options: -threaded executable findpar2 import: deps main-is: findpar2.hs ghc-options: -threaded executable findpar3 import: deps main-is: findpar3.hs other-modules: CasIORef ghc-options: -threaded executable findpar4 import: deps, monad-par main-is: findpar4.hs ghc-options: -threaded executable findpar5 import: deps, monad-par main-is: findpar5.hs ghc-options: -threaded -- ----------------------------------------------------------------------------- -- conc-server executable server import: deps, network main-is: server.hs other-modules: ConcurrentUtils executable server2 import: deps, network main-is: server2.hs other-modules: ConcurrentUtils executable chat import: deps, network main-is: chat.hs other-modules: ConcurrentUtils -- ----------------------------------------------------------------------------- -- conc-distrib executable ping import: deps, network, distributed main-is: distrib-ping/ping.hs other-modules: DistribUtils executable ping-multi import: deps, network, distributed main-is: distrib-ping/ping-multi.hs other-modules: DistribUtils executable ping-tc import: deps, network, distributed main-is: distrib-ping/ping-tc.hs other-modules: DistribUtils executable ping-tc-merge import: deps, network, distributed main-is: distrib-ping/ping-tc-merge.hs other-modules: DistribUtils -- extra, not in the text? executable ping-tc-notify import: deps, network, distributed main-is: distrib-ping/ping-tc-notify.hs other-modules: DistribUtils executable ping-fail import: deps, network, distributed main-is: distrib-ping/ping-fail.hs other-modules: DistribUtils executable distrib-chat import: deps, network, distributed main-is: distrib-chat/chat.hs other-modules: ConcurrentUtils DistribUtils executable distrib-chat-noslave import: deps, network, distributed main-is: distrib-chat/chat-noslave.hs other-modules: ConcurrentUtils executable distrib-db import: deps, network, distributed main-is: db.hs hs-source-dirs: . distrib-db other-modules: DistribUtils Database -- ----------------------------------------------------------------------------- -- conc-debugging-tuning executable mvar4 import: deps main-is: mvar4.hs executable deadlock1 import: deps main-is: deadlock1.hs executable deadlock2 import: deps main-is: deadlock2.hs executable threadperf1 import: deps main-is: threadperf1.hs executable threadperf2 import: deps main-is: threadperf2.hs ghc-options: -rtsopts -- ----------------------------------------------------------------------------- -- Extras (exercises etc.) executable bingtranslator import: deps, network, http main-is: bingtranslator.hs other-modules: BingTranslate GetURL hs-source-dirs: other . executable bingtranslatorconc import: deps, network, http main-is: bingtranslatorconc.hs other-modules: BingTranslate GetURL hs-source-dirs: other . executable geturlsstm import: deps, network, http main-is: geturlsstm.hs other-modules: TimeIt GetURL -- ToDo: -- euler35 -- index -- sudoku-par{1,2,3,4,5}