-
Notifications
You must be signed in to change notification settings - Fork 119
/
accelerate.cabal
780 lines (704 loc) · 25.3 KB
/
accelerate.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
cabal-version: 2.2
name: accelerate
version: 1.3.0.0
tested-with: GHC >= 8.6
build-type: Custom
synopsis: An embedded language for accelerated array processing
description:
@Data.Array.Accelerate@ defines an embedded array language for computations
for high-performance computing in Haskell. Computations on multi-dimensional,
regular arrays are expressed in the form of parameterised collective
operations, such as maps, reductions, and permutations. These computations may
then be online compiled and executed on a range of architectures.
.
[/A simple example/]
.
As a simple example, consider the computation of a dot product of two vectors
of floating point numbers:
.
> dotp :: Acc (Vector Float) -> Acc (Vector Float) -> Acc (Scalar Float)
> dotp xs ys = fold (+) 0 (zipWith (*) xs ys)
.
Except for the type, this code is almost the same as the corresponding Haskell
code on lists of floats. The types indicate that the computation may be
online-compiled for performance - for example, using
@Data.Array.Accelerate.LLVM.PTX@ it may be on-the-fly off-loaded to the GPU.
.
See the "Data.Array.Accelerate" module for further information.
.
[/Additional components/]
.
The following supported add-ons are available as separate packages. Install
them from Hackage with @cabal install \<package\>@
.
* @accelerate-llvm-native@: Backend supporting parallel execution on
multicore CPUs.
.
* @accelerate-llvm-ptx@: Backend supporting parallel execution on
CUDA-capable NVIDIA GPUs. Requires a GPU with compute capability 2.0 or
greater. See the following table for supported GPUs:
<http://en.wikipedia.org/wiki/CUDA#Supported_GPUs>
.
* @accelerate-examples@: Computational kernels and applications
demonstrating the use of Accelerate.
.
* @accelerate-io*@: Fast conversions between Accelerate arrays and other
array and data formats.
.
* @accelerate-fft@: Discrete Fourier transforms, with FFI bindings to
optimised implementations.
.
* @accelerate-blas@: Numeric linear algebra, with FFI bindings to optimised
implementations.
.
* @accelerate-bignum@: Fixed-width large integer arithmetic.
.
* @containers-accelerate@: Container types for use with Accelerate.
.
* @hashable-accelerate@: Class for types which can be converted to a hash
value.
.
* @colour-accelerate@: Colour representations in Accelerate (RGB, sRGB, HSV, and HSL).
.
* @containers-accelerate@: Hashing-based container types
.
* @gloss-accelerate@: Generate gloss pictures from Accelerate.
.
* @gloss-raster-accelerate@: Parallel rendering of raster images and
animations.
.
* @hashable-accelerate@: A class for types which can be converted into a hash value
.
* @lens-accelerate@: Lens operators for Accelerate types.
.
* @linear-accelerate@: Linear vector spaces in Accelerate.
.
* @mwc-random-accelerate@: Generate Accelerate arrays filled with high
quality pseudorandom numbers.
.
[/Examples and documentation/]
.
Haddock documentation is included in the package
.
The @accelerate-examples@ package demonstrates a range of computational
kernels and several complete applications, including:
.
* An implementation of the Canny edge detection algorithm
.
* Interactive Mandelbrot and Julia set generators
.
* A particle-based simulation of stable fluid flows
.
* An /n/-body simulation of gravitational attraction between solid particles
.
* An implementation of the PageRank algorithm
.
* A simple interactive ray tracer
.
* A cellular automata simulation
.
* A \"password recovery\" tool, for dictionary lookup of MD5 hashes
.
@lulesh-accelerate@ is an implementation of the Livermore Unstructured
Lagrangian Explicit Shock Hydrodynamics (LULESH) mini-app. LULESH represents a
typical hydrodynamics code such as ALE3D, but is highly simplified and
hard-coded to solve the Sedov blast problem on an unstructured hexahedron
mesh.
.
[/Mailing list and contacts/]
.
* Gitter chat: <https://gitter.im/AccelerateHS/Lobby>
.
* Mailing list: <accelerate-haskell@googlegroups.com> (discussion of both
use and development welcome).
.
* Sign up for the mailing list here:
<http://groups.google.com/group/accelerate-haskell>
.
* Bug reports and issue tracking:
<https://github.com/AccelerateHS/accelerate/issues>
.
license: BSD-3-Clause
license-file: LICENSE
author: The Accelerate Team
maintainer: Trevor L. McDonell <trevor.mcdonell@gmail.com>
homepage: https://github.com/AccelerateHS/accelerate/
bug-reports: https://github.com/AccelerateHS/accelerate/issues
category: Accelerate, Compilers/Interpreters, Concurrency, Data, Parallelism
stability: Experimental
extra-source-files:
README.md
CHANGELOG.md
cbits/*.c
cbits/*.h
-- XKCP
cbits/xkcp/*.c
cbits/xkcp/*.h
cbits/xkcp/*.macros
cbits/xkcp/*.inc
-- TRACY
-- These are referenced directly using the FFI
cbits/tracy/public/*.cpp
cbits/tracy/public/tracy/*.h
cbits/tracy/public/tracy/*.hpp
cbits/tracy/public/common/*.h
cbits/tracy/public/common/*.hpp
cbits/tracy/public/common/*.cpp
cbits/tracy/public/client/*.h
cbits/tracy/public/client/*.hpp
cbits/tracy/public/client/*.cpp
-- These are used to build Tracy's client tools in Setup.hs
cbits/tracy/cmake/*.cmake
cbits/tracy/capture/CMakeLists.txt
cbits/tracy/profiler/CMakeLists.txt
-- Used by the Tracy's client tools
cbits/tracy/capture/src/*.cpp
cbits/tracy/dtl/*.hpp
cbits/tracy/getopt/*.c
cbits/tracy/getopt/*.h
cbits/tracy/imgui/*.cpp
cbits/tracy/imgui/*.h
cbits/tracy/imgui/misc/freetype/*.cpp
cbits/tracy/imgui/misc/freetype/*.h
cbits/tracy/nfd/*.cpp
cbits/tracy/nfd/*.h
cbits/tracy/nfd/*.m
cbits/tracy/profiler/src/*.cpp
cbits/tracy/profiler/src/*.c
cbits/tracy/profiler/src/*.h
cbits/tracy/profiler/src/*.hpp
cbits/tracy/profiler/src/font/*.hpp
cbits/tracy/profiler/src/imgui/*.cpp
cbits/tracy/profiler/src/imgui/*.h
cbits/tracy/profiler/src/profiler/*.cpp
cbits/tracy/profiler/src/profiler/*.h
cbits/tracy/profiler/src/profiler/*.hpp
cbits/tracy/public/libbacktrace/*.cpp
cbits/tracy/public/libbacktrace/*.h
cbits/tracy/public/libbacktrace/*.hpp
cbits/tracy/server/*.cpp
cbits/tracy/server/*.h
cbits/tracy/server/*.hpp
cbits/tracy/zstd/*.h
cbits/tracy/zstd/common/*.c
cbits/tracy/zstd/common/*.h
cbits/tracy/zstd/compress/*.c
cbits/tracy/zstd/compress/*.h
cbits/tracy/zstd/decompress/*.c
cbits/tracy/zstd/decompress/*.h
cbits/tracy/zstd/dictBuilder/*.c
cbits/tracy/zstd/dictBuilder/*.h
extra-doc-files:
images/*.png
custom-setup
setup-depends:
base >= 4.10
, Cabal
, cabal-doctest >= 1.0
, directory >= 1.0
, filepath >= 1.0
flag debug
manual: True
default: False
description:
Enable kernel profiling and debug tracing messages.
.
The executables 'tracy' (GUI) and 'tracy-capture' (command line) will be
built to collect and view profiling data from supported backends. This
requires several external dependencies:
.
* cmake
.
* pkg-config
.
* freetype2
.
* glfw3
.
* gtk3 (linux only)
.
* TBB (should be part of your compiler toolchain)
.
For example on Debian/Ubuntu you can install all of these via:
.
> sudo apt install cmake pkg-config libfreetype-dev libglfw3-dev libgtk-3-dev libtbb-dev
.
Or on macOS via:
.
> brew install cmake pkg-config freetype glfw
.
With debugging enabled, applications will read the following options from
the environment variable @ACCELERATE_FLAGS@, and via the command-line as:
.
> ./program +ACC ... -ACC
.
Note that a backend may not implement (or be applicable to) all options.
.
The following flags control phases of the compiler. The are enabled with
@-f\<flag\>@ and can be reveresed with @-fno-\<flag\>@:
.
* @acc-sharing@: Enable sharing recovery of array expressions (True).
.
* @exp-sharing@: Enable sharing recovery of scalar expressions (True).
.
* @fusion@: Enable array fusion (True).
.
* @simplify@: Enable program simplification phase (True).
.
* @inplace@: Enable in-place array updates (True).
.
* @flush-cache@: Clear any persistent caches on program startup (False).
.
* @force-recomp@: Force recompilation of array programs (False).
.
* @fast-math@: Allow algebraically equivalent transformations which may
change floating point results (e.g., reassociate) (True).
.
* @fast-permute-const@: Allow non-atomic `permute const` for product types
(True).
.
The following options control debug message output, and are enabled with
@-d\<flag\>@.
.
* @debug@: Include debug symbols in the generated and compiled kernels.
.
* @verbose@: Be extra chatty.
.
* @dump-phases@: Print timing information about each phase of the compiler.
Enable GC stats (@+RTS -t@ or otherwise) for memory usage information.
.
* @dump-sharing@: Print information related to sharing recovery.
.
* @dump-simpl-stats@: Print statistics related to fusion & simplification.
.
* @dump-simpl-iterations@: Print a summary after each simplifier iteration.
.
* @dump-vectorisation@: Print information related to the vectoriser.
.
* @dump-dot@: Generate a representation of the program graph in Graphviz
DOT format.
.
* @dump-simpl-dot@: Generate a more compact representation of the program
graph in Graphviz DOT format. In particular, scalar expressions are
elided.
.
* @dump-gc@: Print information related to the Accelerate garbage
collector.
.
* @dump-gc-stats@: Print aggregate garbage collection information at the
end of program execution.
.
* @dump-cc@: Print information related to kernel code
generation/compilation. Print the generated code if @verbose@.
.
* @dump-ld@: Print information related to runtime linking.
.
* @dump-asm@: Print information related to kernel assembly. Print the
assembled code if @verbose@.
.
* @dump-exec@: Print information related to program execution.
.
* @dump-sched@: Print information related to execution scheduling.
.
flag bounds-checks
manual: True
default: True
description: Enable bounds checking
flag unsafe-checks
manual: True
default: False
description: Enable bounds checking in unsafe operations
flag internal-checks
manual: True
default: False
description: Enable internal consistency checks
-- Enabling this drastically increases build times
-- See: https://gitlab.haskell.org/ghc/ghc/issues/15751
flag nofib
manual: True
default: False
description: Build the nofib test suite (required for backend testing)
library
build-depends:
base >= 4.12 && < 4.21
, ansi-terminal >= 0.6.2
, base-orphans >= 0.3
, bytestring >= 0.10.2
, containers >= 0.3
, deepseq >= 1.3
, directory >= 1.0
, double-conversion >= 2.0
, exceptions >= 0.6
, filepath >= 1.0
, formatting >= 7.0
, ghc-prim
, half >= 0.3
, hashable >= 1.1
, hashtables >= 1.2.3
, hedgehog >= 0.5
, microlens >= 0.4
, mtl >= 2.0
, prettyprinter >= 1.7
, prettyprinter-ansi-terminal >= 1.1.2
, primitive >= 0.6.4
, tasty >= 0.11
, template-haskell < 2.23
, terminal-size >= 0.3
, text >= 1.2.4
, transformers >= 0.3
, unique
, unordered-containers >= 0.2
, vector >= 0.10
exposed-modules:
-- The core language and reference implementation
Data.Array.Accelerate
Data.Array.Accelerate.Interpreter
-- Prelude-like
Data.Array.Accelerate.Control.Monad
Data.Array.Accelerate.Data.Bits
Data.Array.Accelerate.Data.Complex
Data.Array.Accelerate.Data.Either
Data.Array.Accelerate.Data.Fold
Data.Array.Accelerate.Data.Functor
Data.Array.Accelerate.Data.Maybe
Data.Array.Accelerate.Data.Monoid
Data.Array.Accelerate.Data.Ratio
Data.Array.Accelerate.Debug.Trace
Data.Array.Accelerate.Unsafe
-- For backend development (hidden)
Data.Array.Accelerate.AST
Data.Array.Accelerate.AST.Environment
Data.Array.Accelerate.AST.Idx
Data.Array.Accelerate.AST.LeftHandSide
Data.Array.Accelerate.AST.Var
Data.Array.Accelerate.Analysis.Hash
Data.Array.Accelerate.Analysis.Match
Data.Array.Accelerate.Array.Data
Data.Array.Accelerate.Array.Remote
Data.Array.Accelerate.Array.Remote.Class
Data.Array.Accelerate.Array.Remote.LRU
Data.Array.Accelerate.Array.Remote.Table
Data.Array.Accelerate.Array.Unique
Data.Array.Accelerate.Async
Data.Array.Accelerate.Error
Data.Array.Accelerate.Debug.Internal
Data.Array.Accelerate.Lifetime
Data.Array.Accelerate.Pretty
Data.Array.Accelerate.Representation.Array
Data.Array.Accelerate.Representation.Elt
Data.Array.Accelerate.Representation.Shape
Data.Array.Accelerate.Representation.Slice
Data.Array.Accelerate.Representation.Stencil
Data.Array.Accelerate.Representation.Tag
Data.Array.Accelerate.Representation.Type
Data.Array.Accelerate.Representation.Vec
Data.Array.Accelerate.Smart
Data.Array.Accelerate.Sugar.Array
Data.Array.Accelerate.Sugar.Elt
Data.Array.Accelerate.Sugar.Foreign
Data.Array.Accelerate.Sugar.Shape
Data.Array.Accelerate.Sugar.Tag
Data.Array.Accelerate.Sugar.Vec
Data.Array.Accelerate.Trafo
Data.Array.Accelerate.Trafo.Config
Data.Array.Accelerate.Trafo.Delayed
Data.Array.Accelerate.Trafo.Fusion
Data.Array.Accelerate.Trafo.LetSplit
Data.Array.Accelerate.Trafo.Sharing
Data.Array.Accelerate.Trafo.Simplify
Data.Array.Accelerate.Trafo.Substitution
Data.Array.Accelerate.Trafo.Var
Data.Array.Accelerate.Type
-- For testing
Data.Array.Accelerate.Test.NoFib
Data.Array.Accelerate.Test.Similar
-- Other
Data.BitSet
Data.Primitive.Vec
Crypto.Hash.XKCP
other-modules:
Data.Array.Accelerate.Analysis.Hash.TH
Data.Array.Accelerate.Array.Remote.Nursery
Data.Array.Accelerate.Classes.Bounded
Data.Array.Accelerate.Classes.Enum
Data.Array.Accelerate.Classes.Eq
Data.Array.Accelerate.Classes.Floating
Data.Array.Accelerate.Classes.Fractional
Data.Array.Accelerate.Classes.FromIntegral
Data.Array.Accelerate.Classes.Integral
Data.Array.Accelerate.Classes.Num
Data.Array.Accelerate.Classes.Ord
Data.Array.Accelerate.Classes.Rational
Data.Array.Accelerate.Classes.Real
Data.Array.Accelerate.Classes.RealFloat
Data.Array.Accelerate.Classes.RealFrac
Data.Array.Accelerate.Classes.ToFloating
Data.Array.Accelerate.Debug.Internal.Clock
Data.Array.Accelerate.Debug.Internal.Flags
Data.Array.Accelerate.Debug.Internal.Graph
Data.Array.Accelerate.Debug.Internal.Profile
Data.Array.Accelerate.Debug.Internal.Stats
Data.Array.Accelerate.Debug.Internal.Timed
Data.Array.Accelerate.Debug.Internal.Trace
Data.Array.Accelerate.Debug.Internal.Tracy
Data.Array.Accelerate.Language
Data.Array.Accelerate.Lift
Data.Array.Accelerate.Orphans
Data.Array.Accelerate.Pattern
Data.Array.Accelerate.Pattern.Bool
Data.Array.Accelerate.Pattern.Either
Data.Array.Accelerate.Pattern.Maybe
Data.Array.Accelerate.Pattern.Ordering
Data.Array.Accelerate.Pattern.TH
Data.Array.Accelerate.Prelude
Data.Array.Accelerate.Pretty.Graphviz
Data.Array.Accelerate.Pretty.Graphviz.Monad
Data.Array.Accelerate.Pretty.Graphviz.Type
Data.Array.Accelerate.Pretty.Print
Data.Array.Accelerate.Trafo.Algebra
Data.Array.Accelerate.Trafo.Environment
Data.Array.Accelerate.Trafo.Shrink
Data.Atomic
-- Data.Array.Accelerate.Array.Lifted
-- Data.Array.Accelerate.Trafo.Vectorise
-- nofib test suite
Data.Array.Accelerate.Test.NoFib.Base
Data.Array.Accelerate.Test.NoFib.Config
Language.Haskell.TH.Extra
if flag(nofib)
build-depends:
tasty-expected-failure >= 0.11
, tasty-hedgehog >= 0.1
, tasty-hunit >= 0.9
, tasty-rerun >= 1.1
-- , pipes >= 4.1.6 -- #286
other-modules:
Data.Array.Accelerate.Test.NoFib.Sharing
Data.Array.Accelerate.Test.NoFib.Prelude
Data.Array.Accelerate.Test.NoFib.Prelude.Map
Data.Array.Accelerate.Test.NoFib.Prelude.ZipWith
Data.Array.Accelerate.Test.NoFib.Prelude.SIMD
Data.Array.Accelerate.Test.NoFib.Prelude.Fold
Data.Array.Accelerate.Test.NoFib.Prelude.Scan
Data.Array.Accelerate.Test.NoFib.Prelude.Backpermute
Data.Array.Accelerate.Test.NoFib.Prelude.Permute
Data.Array.Accelerate.Test.NoFib.Prelude.Filter
Data.Array.Accelerate.Test.NoFib.Prelude.Stencil
Data.Array.Accelerate.Test.NoFib.Imaginary
Data.Array.Accelerate.Test.NoFib.Imaginary.DotP
Data.Array.Accelerate.Test.NoFib.Imaginary.SASUM
Data.Array.Accelerate.Test.NoFib.Imaginary.SAXPY
Data.Array.Accelerate.Test.NoFib.Spectral
Data.Array.Accelerate.Test.NoFib.Spectral.SMVM
Data.Array.Accelerate.Test.NoFib.Spectral.RadixSort
Data.Array.Accelerate.Test.NoFib.Spectral.BlackScholes
Data.Array.Accelerate.Test.NoFib.Issues
Data.Array.Accelerate.Test.NoFib.Issues.Issue93
Data.Array.Accelerate.Test.NoFib.Issues.Issue102
Data.Array.Accelerate.Test.NoFib.Issues.Issue114
Data.Array.Accelerate.Test.NoFib.Issues.Issue119
Data.Array.Accelerate.Test.NoFib.Issues.Issue123
Data.Array.Accelerate.Test.NoFib.Issues.Issue137
Data.Array.Accelerate.Test.NoFib.Issues.Issue168
Data.Array.Accelerate.Test.NoFib.Issues.Issue184
Data.Array.Accelerate.Test.NoFib.Issues.Issue185
Data.Array.Accelerate.Test.NoFib.Issues.Issue187
Data.Array.Accelerate.Test.NoFib.Issues.Issue228
Data.Array.Accelerate.Test.NoFib.Issues.Issue255
Data.Array.Accelerate.Test.NoFib.Issues.Issue264
-- Data.Array.Accelerate.Test.NoFib.Issues.Issue286
Data.Array.Accelerate.Test.NoFib.Issues.Issue287
Data.Array.Accelerate.Test.NoFib.Issues.Issue288
Data.Array.Accelerate.Test.NoFib.Issues.Issue362
Data.Array.Accelerate.Test.NoFib.Issues.Issue364
Data.Array.Accelerate.Test.NoFib.Issues.Issue407
Data.Array.Accelerate.Test.NoFib.Issues.Issue409
Data.Array.Accelerate.Test.NoFib.Issues.Issue427
Data.Array.Accelerate.Test.NoFib.Issues.Issue436
Data.Array.Accelerate.Test.NoFib.Issues.Issue437
Data.Array.Accelerate.Test.NoFib.Issues.Issue439
Data.Array.Accelerate.Test.NoFib.Issues.Issue517
else
cpp-options:
-DACCELERATE_DISABLE_NOFIB
if impl(ghc >= 8.0)
exposed-modules:
Data.Array.Accelerate.Data.Semigroup
default-language:
Haskell2010
hs-source-dirs:
src
cc-options:
-O3
-Wall
cxx-options:
-O3
-Wall
-std=c++11
ghc-options:
-O2
-Wall
-Wcompat
-Wmissed-specialisations
-- -Wredundant-constraints
-freduction-depth=100
-fspec-constr-count=50
-funbox-strict-fields
-optc=-O3
-optc=-Wall
if impl(ghc >= 8.10)
ghc-options:
-optcxx=-O3
-optcxx=-Wall
-optcxx=-std=c++11
ghc-prof-options:
-caf-all
-auto-all
if flag(debug)
cc-options:
-DACCELERATE_DEBUG
cpp-options:
-DACCELERATE_DEBUG
-DTRACY_ENABLE
-DTRACY_NO_SAMPLING
cxx-options:
-DTRACY_ENABLE
-DTRACY_NO_SAMPLING
if impl(ghc >= 8.10)
ghc-options:
-optcxx=-DTRACY_ENABLE
-optcxx=-DTRACY_NO_SAMPLING
-- Accelerate's backends may use dynamic linking to load compiled kernels
-- that directly call Tracy's functions. In that case these symbols need to
-- be available in the global namespace. @-rdynamic@ implies
-- @-Wl,--export-dynamic@, which adds every symbol to the dynamic symbol
-- table. There's also a @--export-dynamic-symbol=glob@ and a
-- @--export-dynamic-symbol-list=file@ but these seem to be less portable
-- between compilers.
if !os(windows)
ld-options:
-rdynamic
if flag(bounds-checks)
cpp-options:
-DACCELERATE_BOUNDS_CHECKS
if flag(unsafe-checks)
cpp-options:
-DACCELERATE_UNSAFE_CHECKS
if flag(internal-checks)
cpp-options:
-DACCELERATE_INTERNAL_CHECKS
if os(windows)
cc-options:
-- https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65782
-fno-asynchronous-unwind-tables
ghc-options:
-optc=-fno-asynchronous-unwind-tables
-fexternal-interpreter
build-depends:
Win32
else
build-depends:
unix
-- We assume only SSE2 to make Accelerate widely compatible; Windows 8
-- assumes SSE2. However, we tune for native, see the next block.
if !arch(aarch64)
cc-options: -msse2
cxx-options: -msse2
ghc-options: -optc=-msse2
if impl(ghc >= 8.10)
ghc-options: -optcxx=-msse2
-- https://stackoverflow.com/questions/65966969/why-does-march-native-not-work-on-apple-m1
if !(os(darwin) && arch(aarch64))
cc-options: -mtune=native
cxx-options: -mtune=native
ghc-options: -optc=-mtune=native
if impl(ghc >= 8.10)
ghc-options: -optcxx=-mtune=native
-- Don't add the extensions list here. Instead, place individual LANGUAGE
-- pragmas in the files that require a specific extension. This means the
-- project loads in GHCi, and avoids extension clashes.
--
-- Extensions:
test-suite doctest
type: exitcode-stdio-1.0
default-language: Haskell2010
hs-source-dirs: test/doctest
main-is: Main.hs
other-modules: Build_doctests
autogen-modules: Build_doctests
build-depends:
base >= 4.10
, accelerate
, doctest >= 0.11
ghc-options:
-Wall
-threaded
-rtsopts
x-doctest-options:
-freduction-depth=100
-fspec-constr-count=50
if os(windows)
ghc-options:
-fexternal-interpreter
test-suite nofib-interpreter
type: exitcode-stdio-1.0
default-language: Haskell2010
hs-source-dirs: test/nofib
main-is: Main.hs
if !flag(nofib)
buildable: False
build-depends:
base >= 4.10
, accelerate
ghc-options:
-O2
-Wall
-threaded
-rtsopts
-with-rtsopts=-A128M
-with-rtsopts=-n4M
if os(windows)
ghc-options:
-fexternal-interpreter
executable tracy
default-language: Haskell2010
hs-source-dirs: app
main-is: Main.hs
if !flag(debug)
buildable: False
build-depends:
base >= 4.10
, accelerate
, formatting
pkgconfig-depends:
freetype2
, glfw3
if !os(windows) && !os(darwin)
pkgconfig-depends:
gtk+-3.0
cpp-options:
-DEXECUTABLE="tracy"
ghc-options:
-O0
executable tracy-capture
default-language: Haskell2010
hs-source-dirs: app
main-is: Main.hs
if !flag(debug)
buildable: False
build-depends:
base >= 4.10
, accelerate
, formatting
cpp-options:
-DEXECUTABLE="tracy-capure"
ghc-options:
-O0
source-repository head
Type: git
Location: git://github.com/AccelerateHS/accelerate.git
source-repository this
Type: git
Tag: v1.3.0.0
Location: git://github.com/AccelerateHS/accelerate.git
-- vim: nospell