packages feed

accelerate-examples-0.15.1.0: accelerate-examples.cabal

Name:                   accelerate-examples
Version:                0.15.1.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:     data/hashcat/README.md
                        data/matrices/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 cuda
  Description:          Enable the CUDA parallel backend for NVIDIA GPUs
  Default:              True

Flag llvm-cpu
  Description:          Enable the LLVM backend for multicore CPUs
  Default:              False

Flag llvm-gpu
  Description:          Enable the LLVM backend for NVIDIA CPUs
  Default:              False

Flag cilk
  Description:          Enable the Cilk backend for multicore CPUs
  Default:              False

-- 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 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:        accelerate                      == 0.15.*,
                        ansi-wl-pprint                  >= 0.6,
                        base                            >= 4.7 && < 4.9,
                        containers                      >= 0.5,
                        criterion                       >= 1.0,
                        directory                       >= 1.1,
                        fclabels                        >= 2.0,
                        HUnit                           >= 1.2,
                        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.15.*

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

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

  if flag(cilk)
    CPP-options:        -DACCELERATE_CILK_BACKEND
    build-depends:      accelerate-icc-opencl           == 0.15.*

  if flag(ekg)
    CPP-options:        -DACCELERATE_ENABLE_EKG
    build-depends:      ekg                             >= 0.3

  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
                        Test.Base
                        Test.FFT
                        Test.Foreign
                        Test.IO
                        Test.IO.Ptr
                        Test.IO.Vector
                        Test.Imaginary
                        Test.Imaginary.DotP
                        Test.Imaginary.SASUM
                        Test.Imaginary.SAXPY
                        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.Prelude
                        Test.Prelude.Filter
                        Test.Prelude.IndexSpace
                        Test.Prelude.Mapping
                        Test.Prelude.PrefixSum
                        Test.Prelude.Reduction
                        Test.Prelude.Replicate
                        Test.Prelude.Stencil
                        Test.Sharing
                        Test.Spectral
                        Test.Spectral.BlackScholes
                        Test.Spectral.RadixSort
                        Test.Spectral.SMVM

  ghc-options:          -Wall -O2
                        -threaded
                        -fpedantic-bottoms
                        -fno-full-laziness
                        -fno-excess-precision
                        -eventlog
                        -rtsopts

  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.15.*
    other-modules:      Test.Foreign.CUDA

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

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


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

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

  ghc-options:          -O2 -Wall -threaded -rtsopts -eventlog
  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:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        attoparsec                      >= 0.10,
                        bytestring                      >= 0.9,
                        bytestring-lexing               >= 0.5,
                        fclabels                        >= 2.0,
                        primitive                       >= 0.5,
                        mwc-random                      >= 0.8,
                        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:          -O2 -Wall -threaded -rtsopts -eventlog
  ghc-prof-options:     -auto-all

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

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


-- 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
                        -fllvm
                        -optlo-O3
                        -eventlog
                        -rtsopts

  ghc-prof-options:     -auto-all

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

  if !flag(canny)
    buildable:          False
  else
    build-depends:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        accelerate-io                   == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        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:          -O2 -Wall -threaded -eventlog -rtsopts
  ghc-prof-options:     -auto-all

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

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


-- 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:          -O2 -Wall -threaded -eventlog -rtsopts
  ghc-prof-options:     -auto-all

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

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


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

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

  ghc-options:          -O2 -Wall -threaded -eventlog -rtsopts
  ghc-prof-options:     -auto-all

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

  if !flag(nbody)
    buildable:          False
  else
    build-depends:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        fclabels                        >= 2.0,
                        gloss                           >= 1.7,
                        mwc-random                      >= 0.8


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

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

  ghc-options:          -O2 -Wall -threaded -threaded -rtsopts
  ghc-prof-options:     -auto-all

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

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

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


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

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

  ghc-options:          -O2 -Wall -threaded -threaded -rtsopts
  ghc-prof-options:     -auto-all

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

  if !flag(hashcat)
    buildable:          False
  else
    build-depends:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        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:          -O2 -Wall -threaded -threaded -rtsopts
  ghc-prof-options:     -auto-all

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

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

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

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

  ghc-options:          -rtsopts -threaded -O2

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

  if !flag(pagerank)
    buildable:          False
  else
    build-depends:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        accelerate-io                   == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        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
  Main-is:              Main.hs
  hs-source-dirs:       examples/ray
  other-modules:        Config
                        Vec3
                        Gloss.Draw
                        Gloss.Event
                        Ray.Intersect
                        Ray.Trace
                        Scene.Light
                        Scene.Object
                        Scene.State
                        Scene.World

  if !flag(ray)
    buildable:          False
  else
    build-depends:      accelerate                      == 0.15.*,
                        accelerate-examples             == 0.15.*,
                        base                            >= 4.7 && < 4.9,
                        fclabels                        >= 1.0,
                        gloss                           >= 1.8,
                        gloss-accelerate                >= 1.8,
                        gloss-raster-accelerate         >= 1.8

  ghc-options:          -Wall -O2 -threaded -threaded -rtsopts
  ghc-prof-options:     -auto-all

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


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

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

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

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

  ghc-options:          -Wall -O2 -threaded -threaded -rtsopts
  ghc-prof-options:     -auto-all


source-repository this
  type:                 git
  location:             https://github.com/AccelerateHS/accelerate-examples
  branch:               release/0.15
  tag:                  0.15.1.0