packages feed

accelerate-examples-1.1.0.0: accelerate-examples.cabal

Name:                   accelerate-examples
Version:                1.1.0.0
Cabal-version:          >=1.8
Tested-with:            GHC >= 7.8
Build-type:             Simple

Synopsis:               Examples using the Accelerate library
Description:
  This package demonstrates a number of computation kernels and applications
  showcasing the /Accelerate/ language and associated backend implementations.
  It is also used for performance and regression testing.
  .
  Refer to the main /Accelerate/ package for more information:
  <http://hackage.haskell.org/package/accelerate>
  .

License:                BSD3
License-file:           LICENSE
Author:                 The Accelerate Team
Maintainer:             Trevor L. McDonell <tmcdonell@cse.unsw.edu.au>
Homepage:               https://github.com/AccelerateHS/accelerate-examples
Bug-reports:            https://github.com/AccelerateHS/accelerate/issues

Category:               Compilers/Interpreters, Concurrency, Data, Parallelism
Stability:              Experimental

Extra-source-files:
    README.md
    data/matrices/README.md
    examples/canny/README.md
    examples/fluid/README.md
    examples/hashcat/README.md
    examples/kmeans/README.md
    examples/mandelbrot/README.md
    examples/pagerank/README.md
    examples/ray/README.md

-- Flags that control features of the benchmark programs
--
Flag gui
  Description:          Enable gloss-based GUIs, where applicable. If not
                        enabled, the application always runs in benchmark mode.
  Default:              True

Flag ekg
  Description:          Enable EKG remote monitoring server at <http://localhost:8000>
  Default:              True

Flag codespeed
  Description:          Enable upload of results to benchmark server
  Default:              False

-- Flags that control which Accelerate backends that are linked against
--
Flag llvm-cpu
  Description:          Enable the LLVM backend for multicore CPUs
  Default:              True

Flag llvm-ptx
  Description:          Enable the LLVM PTX backend for NVIDIA GPUs
  Default:              True

-- Flags to specify which programs to build
--
Flag nofib
  Description:          Regression test suite
  Default:              True

Flag smvm
  Description:          Sparse-matrix vector multiplication benchmark
  Default:              True

Flag crystal
  Description:          A visualisation of a sum of waves in a plane
  Default:              True

Flag tunnel
  Description:          The slit-scan effect creating a Doctor Who time vortex
  Default:              True

Flag canny
  Description:          Canny edge detection benchmark
  Default:              True

Flag mandelbrot
  Description:          A Mandelbrot fractal benchmark
  Default:              True

Flag fluid
  Description:          An interactive particle-based fluid simulation
  Default:              True

Flag nbody
  Description:          Simulation of gravitational attraction between solid particles
  Default:              True

Flag smoothlife
  Description:          A cellular automata simulation
  Default:              True

Flag hashcat
  Description:          A "password recovery" application for MD5 cracking
  Default:              True

Flag fft
  Description:          Simple FFT-based high/low-pass image filtering
  Default:              True

Flag pagerank
  Description:          Implementation of the PageRank algorithm
  Default:              True

Flag ray
  Description:          A simple real-time ray tracer
  Default:              True

Flag kmeans
  Description:          An implementation of k-means clustering in a plane
  Default:              True


-- Test harness
-- ------------

Library
  hs-source-dirs:       lib
  Build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , ansi-wl-pprint                  >= 0.6
        , containers                      >= 0.5
        , criterion                       >= 1.0
        , directory                       >= 1.1
        , fclabels                        >= 2.0
        , HUnit                           >= 1.2
        , linear                          >= 1.1
        , mwc-random                      >= 0.8
        , QuickCheck                      >= 2.7
        , test-framework                  >= 0.5
        , test-framework-hunit            >= 0.3
        , test-framework-quickcheck2      >= 0.2

  Exposed-modules:
        Data.Array.Accelerate.Examples.Internal

  Other-modules:
        Data.Array.Accelerate.Examples.Internal.Backend
        Data.Array.Accelerate.Examples.Internal.Criterion
        Data.Array.Accelerate.Examples.Internal.Criterion.Config
        Data.Array.Accelerate.Examples.Internal.Interactive
        Data.Array.Accelerate.Examples.Internal.Monitoring
        Data.Array.Accelerate.Examples.Internal.ParseArgs
        Data.Array.Accelerate.Examples.Internal.Random.Array
        Data.Array.Accelerate.Examples.Internal.Report
        Data.Array.Accelerate.Examples.Internal.Similar
        Data.Array.Accelerate.Examples.Internal.TestFramework
        Data.Array.Accelerate.Examples.Internal.TestFramework.Config
        Data.Array.Accelerate.Examples.Internal.Util

  ghc-options:          -O2 -Wall
  ghc-prof-options:     -caf-all -auto-all

  if flag(gui)
    CPP-options:        -DACCELERATE_ENABLE_GUI

  -- if flag(cuda)
  --   CPP-options:        -DACCELERATE_CUDA_BACKEND
  --   build-depends:
  --       accelerate-cuda                   == 0.17.*

  if flag(llvm-cpu)
    CPP-options:        -DACCELERATE_LLVM_NATIVE_BACKEND
    build-depends:
        accelerate-llvm-native            == 1.1.*

  if flag(llvm-ptx)
    CPP-options:        -DACCELERATE_LLVM_PTX_BACKEND
    build-depends:
        accelerate-llvm-ptx               == 1.1.*

  if flag(ekg)
    CPP-options:        -DACCELERATE_ENABLE_EKG

  if flag(codespeed)
    CPP-options:        -DACCELERATE_ENABLE_CODESPEED
    build-depends:
          aeson                           >= 0.8
        , bytestring                      >= 0.10
        , HTTP                            >= 4000.2
        , http-types                      >= 0.8
        , network                         >= 2.5
        , process                         >= 1.0
        , statistics                      >= 0.13
        , template-haskell                >= 2.2
        , text                            >= 0.11
        , time                            >= 1.4

    other-modules:
        Data.Array.Accelerate.Examples.Internal.Codespeed
        Data.Array.Accelerate.Examples.Internal.TH


-- The main test program. This includes randomised quickcheck testing for array
-- primitives, unit tests, imaginary/spectral/real programs, and benchmarks.
--
-- TODO: add an analysis script to scrape benchmark results
--
Executable accelerate-nofib
  Main-is:              Main.hs
  hs-source-dirs:
        examples/nofib
        examples/smvm

  other-modules:
        Config
        QuickCheck.Arbitrary.Array
        QuickCheck.Arbitrary.Shape
        SMVM
        Test.Base
        Test.FFT
        Test.Foreign
        Test.Imaginary
        Test.Imaginary.DotP
        Test.Imaginary.SASUM
        Test.Imaginary.SAXPY
        Test.IO
        Test.IO.Ptr
        Test.IO.Vector
        Test.Issues
        Test.Issues.Issue93
        Test.Issues.Issue102
        Test.Issues.Issue114
        Test.Issues.Issue119
        Test.Issues.Issue123
        Test.Issues.Issue137
        Test.Issues.Issue168
        Test.Issues.Issue184
        Test.Issues.Issue185
        Test.Issues.Issue187
        Test.Issues.Issue228
        Test.Issues.Issue255
        Test.Issues.Issue264
        Test.Issues.Issue286
        Test.Issues.Issue287
        Test.Issues.Issue288
        Test.Issues.Issue362
        Test.Prelude
        Test.Prelude.Backpermute
        Test.Prelude.Filter
        Test.Prelude.Fold
        Test.Prelude.Map
        Test.Prelude.Permute
        Test.Prelude.Replicate
        Test.Prelude.Scan
        -- Test.Prelude.Sequences
        Test.Prelude.Stencil
        Test.Prelude.ZipWith
        Test.Sharing
        Test.Spectral
        Test.Spectral.BlackScholes
        Test.Spectral.RadixSort
        Test.Spectral.SMVM

  ghc-options:
        -O2
        -Wall
        -threaded
        -fpedantic-bottoms
        -fno-excess-precision
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  extra-libraries:      stdc++
  c-sources:            examples/nofib/Test/IO/fill_with_values.cpp
                        examples/nofib/Test/Spectral/BlackScholes.cpp

  -- if flag(cuda)
  --   CPP-options:        -DACCELERATE_CUDA_BACKEND
  --   build-depends:
  --       accelerate-cuda                   == 0.17.*
  --
  --   other-modules:
  --       Test.Foreign.CUDA

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(nofib)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-fft                  >= 1.0
        , accelerate-io                   >= 1.0
        , array                           >= 0.3
        , containers                      >= 0.5
        , fclabels                        >= 2.0
        , HUnit                           >= 1.2
        , pipes                           >= 4.1.6
        , QuickCheck                      >= 2.7
        , random
        , test-framework                  >= 0.5
        , test-framework-hunit            >= 0.3
        , test-framework-quickcheck2      >= 0.2
        , vector                          >= 0.7


-- Sparse matrix vector multiplication
-- -----------------------------------

Executable accelerate-smvm
  hs-source-dirs:       examples/smvm
  Main-is:              Main.hs
  other-modules:        Config Matrix SMVM

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if impl(ghc >= 7.6)
    ghc-options:        -fsimpl-tick-factor=130

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(smvm)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-io                   >= 1.0
        , fclabels                        >= 2.0
        , matrix-market-attoparsec        >= 0.1
        , mwc-random                      >= 0.8
        , scientific                      >= 0.3
        , vector                          >= 0.7
        , vector-algorithms               >= 0.4


-- A quasicrystal demo as the sum of waves in a plane
-- --------------------------------------------------

Executable accelerate-crystal
  hs-source-dirs:       examples/crystal
  Main-is:              Main.hs
  other-modules:        Config

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(crystal)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss-raster-accelerate         >= 2.0


-- The slit-scan effect creating a Doctor Who time vortex
-- ------------------------------------------------------

Executable accelerate-tunnel
  hs-source-dirs:       examples/tunnel
  Main-is:              Main.hs
  other-modules:        Config

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(tunnel)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , fclabels                        >= 2.0
        , gloss-raster-accelerate         >= 2.0
        , lens-accelerate                 >= 0.1
        , linear-accelerate               >= 0.3


-- Image edge detection
-- --------------------

Executable accelerate-canny
  hs-source-dirs:       examples/canny/src-acc
  Main-is:              Main.hs
  other-modules:        Config Canny Wildfire

  ghc-options:
        -Wall
        -threaded
        -Odph
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(canny)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-io                   >= 1.0
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , repa                            >= 3.1
        , repa-io                         >= 3.1
        , vector                          >= 0.7


-- A simple mandelbrot generator
-- -----------------------------

Executable accelerate-mandelbrot
  hs-source-dirs:       examples/mandelbrot
  Main-is:              Main.hs
  other-modules:        Config Mandel World

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(mandelbrot)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-io                   >= 1.0
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , gloss-accelerate                >= 2.0


-- A stable fluid simulation
-- -------------------------

Executable accelerate-fluid
  Main-is:              Main.hs
  hs-source-dirs:       examples/fluid/src-acc
  other-modules:        Config Event Fluid Type World

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(fluid)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-io                   >= 1.0
        , bmp                             >= 1.2
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss                           >= 1.9
        , gloss-rendering                 >= 1.9


-- Simulation of gravitational attraction between solid particles
-- --------------------------------------------------------------

Executable accelerate-nbody
  hs-source-dirs:       examples/n-body
  Main-is:              Main.hs
  other-modules:
        Common.Body
        Common.Tree
        Common.Type
        Common.World
        Config
        Gloss.Draw
        Gloss.Event
        Gloss.Simulate
        Random.Position
        Solver.BarnsHut
        Solver.Naive1
        Solver.Naive2
        Test

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(nbody)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , lens-accelerate                 >= 0.1
        , linear-accelerate               >= 0.3
        , mwc-random                      >= 0.8


-- A celular automata
-- ------------------

Executable accelerate-smoothlife
  hs-source-dirs:       examples/smoothlife
  Main-is:              Main.hs
  other-modules:
        Config
        Gloss.Draw
        Gloss.Event
        Gloss.Simulate
        Random.Splat
        SmoothLife

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  -- if flag(cuda)
  --   cpp-options:        -DACCELERATE_CUDA_BACKEND
  --   build-depends:
  --       accelerate-cuda                   == 0.17.*

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(smoothlife)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-fft                  >= 1.0
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , gloss-accelerate                >= 2.0
        , mwc-random                      >= 0.8


-- A "password recovery" tool
-- --------------------------

Executable accelerate-hashcat
  hs-source-dirs:       examples/hashcat
  Main-is:              Main.hs
  other-modules:        Config Digest MD5

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(hashcat)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , bytestring                      >= 0.9
        , bytestring-lexing               >= 0.5
        , cereal                          >= 0.3
        , criterion                       >= 1.0
        , fclabels                        >= 2.0
        , mwc-random                      >= 0.8


-- FFT examples
-- ------------

Executable accelerate-fft
  Main-is:              Main.hs
  hs-source-dirs:       examples/fft/src-acc
  other-modules:        Config HighPass FFT

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(fft)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-fft                  >= 1.0
        , accelerate-io                   >= 1.0
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , filepath                        >= 1.0

-- PageRank
-- --------

Executable accelerate-pagerank
  hs-source-dirs:       examples/pagerank
  Main-is:              Main.hs
  other-modules:
        Config
        Count
        Load
        Page
        Progress
        Rank
        Step

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(pagerank)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , accelerate-io                   >= 1.0
        , bytestring                      >= 0.9.2
        , containers                      >= 0.4.2
        , directory                       >= 1.1
        , fclabels                        >= 1.0
        , vector                          >= 0.9
        , vector-algorithms               >= 0.5.4


-- Ray tracer
-- ----------

Executable accelerate-ray
  hs-source-dirs:       examples/ray
  Main-is:              Main.hs
  other-modules:
        Common.Type
        Config
        Gloss.Draw
        Gloss.Event
        Ray.Intersect
        Ray.Trace
        Scene.Light
        Scene.Object
        Scene.State
        Scene.World

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(ray)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , colour-accelerate               >= 0.1
        , fclabels                        >= 1.0
        , gloss                           >= 1.8
        , gloss-accelerate                >= 2.0
        , gloss-raster-accelerate         >= 2.0
        , lens-accelerate                 >= 0.1
        , linear-accelerate               >= 0.3


-- K-means
-- -------

Executable accelerate-kmeans
  hs-source-dirs:       examples/kmeans
  Main-is:              Main.hs
  other-modules:        Config Kmeans

  ghc-options:
        -Wall
        -threaded
        -eventlog
        -rtsopts
        -with-rtsopts=-n2M
        -with-rtsopts=-A64M
        -with-rtsopts=-qg

  ghc-prof-options:
        -auto-all

  if flag(ekg)
    ghc-options:        -with-rtsopts=-T

  if !flag(kmeans)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 4.11
        , accelerate                      == 1.1.*
        , accelerate-examples
        , binary                          >= 0.7
        , directory                       >= 1.1
        , fclabels                        >= 1.0
        , normaldistribution
        , random


source-repository head
  type:                 git
  location:             https://github.com/AccelerateHS/accelerate-examples

source-repository this
  type:                 git
  tag:                  1.1.0.0
  location:             https://github.com/AccelerateHS/accelerate-examples

-- vim: nospell