packages feed

accelerate-examples-1.3.0.0: accelerate-examples.cabal

name:                   accelerate-examples
version:                1.3.0.0
cabal-version:          >=1.10
tested-with:            GHC >= 8.6
build-type:             Simple

synopsis:               Examples using the Accelerate library
description:
  Example programs using the Accelerate library. The aim is for this package to
  evolve and be useful for both 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 <trevor.mcdonell@gmail.com>
homepage:               https://github.com/AccelerateHS/accelerate-examples
bug-reports:            https://github.com/AccelerateHS/accelerate/issues

category:               Accelerate
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 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 julia
  description:          An interactive julia-set simulator
  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 quicksort
  description:          Implementation of the QuickSort 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
  default-language:     Haskell2010
  hs-source-dirs:       lib
  build-depends:
          base                            >= 4.7 && < 5
        , accelerate                      == 1.3.*
        , ansi-wl-pprint                  >= 0.6
        , containers                      >= 0.5
        , criterion                       >= 1.0
        , directory                       >= 1.1
        , fclabels                        >= 2.0
        , HUnit                           >= 1.2
        , 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.Report
        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(llvm-cpu)
    CPP-options:        -DACCELERATE_LLVM_NATIVE_BACKEND
    build-depends:
        accelerate-llvm-native            >= 1.3

  if flag(llvm-ptx)
    CPP-options:        -DACCELERATE_LLVM_PTX_BACKEND
    build-depends:
        accelerate-llvm-ptx               >= 1.3

  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


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

executable accelerate-smvm
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-io-vector            >= 0.1
        , 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
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , 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
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , fclabels                        >= 2.0
        , gloss-raster-accelerate         >= 2.0
        , lens-accelerate                 >= 0.1
        , linear-accelerate               >= 0.3


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

executable accelerate-canny
  default-language:     Haskell2010
  hs-source-dirs:       examples/canny/src-acc
  main-is:              Main.hs
  other-modules:        Config Canny Wildfire

  ghc-options:
        -Wall
        -threaded
        -O2
        -fmax-simplifier-iterations=20
        -fsimplifier-phases=3
        -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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-io-bmp               >= 0.1
        , accelerate-io-repa              >= 0.1
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , repa                            >= 3.1
        , repa-io                         >= 3.1
        , vector                          >= 0.7


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

executable accelerate-mandelbrot
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-io-bmp               >= 0.1
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , gloss-accelerate                >= 2.0


-- A julia set generator
-- ---------------------

executable accelerate-julia
  default-language:     Haskell2010
  hs-source-dirs:       examples/julia
  main-is:              Main.hs
  other-modules:        Config Julia Palette 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(julia)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , gloss-accelerate                >= 2.0


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

executable accelerate-fluid
  default-language:     Haskell2010
  hs-source-dirs:       examples/fluid/src-acc
  main-is:              Main.hs
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-io                   >= 1.3
        , accelerate-io-bmp               >= 0.1
        , 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
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , fclabels                        >= 2.0
        , gloss                           >= 1.7
        , lens-accelerate                 >= 0.1
        , linear-accelerate               >= 0.3
        , mwc-random                      >= 0.8
        , mwc-random-accelerate           >= 0.1


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

executable accelerate-smoothlife
  default-language:     Haskell2010
  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(ekg)
    ghc-options:        -with-rtsopts=-T

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


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

executable accelerate-hashcat
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , bytestring                      >= 0.9
        , bytestring-lexing               >= 0.5
        , cereal                          >= 0.3
        , criterion                       >= 1.0
        , criterion-measurement           >= 0.1
        , fclabels                        >= 2.0
        , mwc-random                      >= 0.8


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

executable accelerate-fft
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-fft                  >= 1.3
        , accelerate-io-bmp               >= 0.1
        , colour-accelerate               >= 0.1
        , fclabels                        >= 2.0
        , filepath                        >= 1.0

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

executable accelerate-pagerank
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , accelerate-io-vector            >= 0.1
        , bytestring                      >= 0.9.2
        , containers                      >= 0.4.2
        , directory                       >= 1.1
        , fclabels                        >= 1.0
        , vector                          >= 0.9
        , vector-algorithms               >= 0.5.4

-- QuickSort
-- ---------

executable accelerate-quicksort
  default-language:     Haskell2010
  hs-source-dirs:       examples/quicksort
  main-is:              Main.hs
  other-modules:
        Config
        QuickSort

  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(quicksort)
    buildable:          False
  else
    build-depends:
          base                            >= 4.7 && < 5
        , accelerate                      == 1.3.*
        , accelerate-examples
        , array                           >= 0.5.2
        , fclabels                        >= 1.0
        , random

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

executable accelerate-ray
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , 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
  default-language:     Haskell2010
  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 && < 5
        , accelerate                      == 1.3.*
        , 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:                  v1.3.0.0
  location:             https://github.com/AccelerateHS/accelerate-examples

-- vim: nospell