Roman Leshchinskiy [Thu, 27 May 2010 11:39:06 +0000 (11:39 +0000)]
Add rule for zipWith/replicate
Roman Leshchinskiy [Thu, 27 May 2010 09:05:00 +0000 (09:05 +0000)]
Use -rtsopts when building test cases
Roman Leshchinskiy [Thu, 27 May 2010 09:04:49 +0000 (09:04 +0000)]
Add a seq/sum rule
Roman Leshchinskiy [Thu, 27 May 2010 09:04:25 +0000 (09:04 +0000)]
Fix strictness of various Lifted combinators
Roman Leshchinskiy [Thu, 27 May 2010 09:03:48 +0000 (09:03 +0000)]
Remove unneeded parameters from indices_s
Roman Leshchinskiy [Thu, 27 May 2010 09:03:08 +0000 (09:03 +0000)]
lengthsToSegd is no longer special
Roman Leshchinskiy [Thu, 27 May 2010 09:00:40 +0000 (09:00 +0000)]
Sanitise zipU and unzipU
* unzipU now return a lazy pair instead of a strict one
* There is an unzipU/zipU rule
* zip3, zipWith3 and unzip3 are defined in DPH_Interface
Roman Leshchinskiy [Thu, 27 May 2010 01:33:43 +0000 (01:33 +0000)]
Make packPA_l strict
Roman Leshchinskiy [Wed, 26 May 2010 14:25:34 +0000 (14:25 +0000)]
Fix load balancing issue with indices_s
Roman Leshchinskiy [Wed, 26 May 2010 04:57:32 +0000 (04:57 +0000)]
Fix load balancing bug in segmented sums
Roman Leshchinskiy [Wed, 26 May 2010 04:57:30 +0000 (04:57 +0000)]
Add exports
Roman Leshchinskiy [Wed, 26 May 2010 04:52:41 +0000 (04:52 +0000)]
Add debugging function
Roman Leshchinskiy [Thu, 20 May 2010 03:33:11 +0000 (03:33 +0000)]
Rewrite test data generation in quickhull
Roman Leshchinskiy [Thu, 20 May 2010 03:32:12 +0000 (03:32 +0000)]
Add a seq rule for scanlU (+) 0
This occurs quite frequently when calculating segment descriptors.
Nevertheless, it is a hack.
Roman Leshchinskiy [Thu, 20 May 2010 03:31:09 +0000 (03:31 +0000)]
Implement parallel lifted append
This requires append_s and friends to take the segment descriptor of the
result as an additional parameter. This change is also propagated to the
Lifted stuff.
Roman Leshchinskiy [Thu, 20 May 2010 03:30:07 +0000 (03:30 +0000)]
Implement fold1SUP
Roman Leshchinskiy [Thu, 20 May 2010 03:28:55 +0000 (03:28 +0000)]
Make replicateSUP produce evenly distributed arrays
Roman Leshchinskiy [Thu, 20 May 2010 03:27:36 +0000 (03:27 +0000)]
Make enumFromStepLenUP more efficient
Roman Leshchinskiy [Thu, 20 May 2010 03:25:04 +0000 (03:25 +0000)]
Make foldUP more efficient at the cost of a slight change in semantics
We now make no guarantees about how often the neutral element will be used. It
really has to be neutral.
Roman Leshchinskiy [Thu, 20 May 2010 03:23:32 +0000 (03:23 +0000)]
Fix implementation of repeat_c
Roman Leshchinskiy [Thu, 20 May 2010 03:22:31 +0000 (03:22 +0000)]
Add a function for splitting a segment descriptor such that the data array will be evenly distributed
Roman Leshchinskiy [Thu, 20 May 2010 03:22:16 +0000 (03:22 +0000)]
Add export
Roman Leshchinskiy [Thu, 20 May 2010 03:20:36 +0000 (03:20 +0000)]
Change various functions to use generateD/imapD
Roman Leshchinskiy [Thu, 20 May 2010 03:19:41 +0000 (03:19 +0000)]
Delay inlining unitD
Roman Leshchinskiy [Thu, 20 May 2010 03:18:57 +0000 (03:18 +0000)]
Only inline zipD in phase 0 to give some rules a chance to match in phase 1
Roman Leshchinskiy [Thu, 20 May 2010 03:18:20 +0000 (03:18 +0000)]
New combinators in DistST
Roman Leshchinskiy [Thu, 20 May 2010 03:16:27 +0000 (03:16 +0000)]
Add RULES for zipU/joinD and zipU/splitJoinD
Roman Leshchinskiy [Thu, 20 May 2010 03:12:29 +0000 (03:12 +0000)]
Completely change how mapD and friends are implemented
The basic combinators are now
generateD :: DT a => Gang -> (Int -> a) -> Dist a
imapD :: (DT a, DT b) => Gang -> (Int -> a -> b) -> Dist a -> Dist b
The Int argument is the index of the current thread. There is also
generateD_cheap :: DT a => Gang -> (Int -> a) -> Dist a
which is equivalent to generateD but just runs the computation sequentially.
Roman Leshchinskiy [Thu, 20 May 2010 03:11:56 +0000 (03:11 +0000)]
Don't inline scanD
Roman Leshchinskiy [Thu, 20 May 2010 03:10:29 +0000 (03:10 +0000)]
Make joinD CONLIKE
Roman Leshchinskiy [Thu, 20 May 2010 03:09:10 +0000 (03:09 +0000)]
Manually eta-expand mapUP
Roman Leshchinskiy [Thu, 20 May 2010 03:08:05 +0000 (03:08 +0000)]
Fix and use enumFromToEachUP
Roman Leshchinskiy [Thu, 20 May 2010 03:06:41 +0000 (03:06 +0000)]
Export more stuff
Roman Leshchinskiy [Thu, 20 May 2010 03:06:17 +0000 (03:06 +0000)]
Add dependency
Roman Leshchinskiy [Thu, 20 May 2010 03:05:22 +0000 (03:05 +0000)]
Tracing for gangs
Roman Leshchinskiy [Thu, 20 May 2010 03:04:20 +0000 (03:04 +0000)]
Add tracing facilities to Dist
Roman Leshchinskiy [Thu, 20 May 2010 03:01:18 +0000 (03:01 +0000)]
Use divInt, modInt etc.
Roman Leshchinskiy [Thu, 6 May 2010 10:13:16 +0000 (10:13 +0000)]
Refactoring to avoid making splitJoinD a loop breaker
Roman Leshchinskiy [Thu, 6 May 2010 10:11:12 +0000 (10:11 +0000)]
Add bangs
Roman Leshchinskiy [Mon, 29 Mar 2010 09:11:03 +0000 (09:11 +0000)]
Remove sequential gangs
Ian Lynagh [Sat, 8 May 2010 19:04:42 +0000 (19:04 +0000)]
Build system: Fix use of "rm" variables
benl@ouroborus.net [Thu, 1 Apr 2010 11:43:24 +0000 (11:43 +0000)]
Add fftS to harness
benl@ouroborus.net [Thu, 1 Apr 2010 11:18:46 +0000 (11:18 +0000)]
Fix bugs in FFT benchmark
You can also now say
seq/fft check
and it will do a 1d transform of a step function,
with both the FFT kernel and a DFT.
benl@ouroborus.net [Thu, 1 Apr 2010 05:47:01 +0000 (05:47 +0000)]
Print checksums of resulting matrices in mmult examples
benl@ouroborus.net [Thu, 1 Apr 2010 04:19:10 +0000 (04:19 +0000)]
Add to mmult C harness
You can generate random matrices with -random, then save them
to file with -ddumpinput. Load them back up with the Haskell
version and check the output is the same.
benl@ouroborus.net [Thu, 1 Apr 2010 02:35:01 +0000 (02:35 +0000)]
Hacks to C mmult
benl@ouroborus.net [Thu, 1 Apr 2010 02:06:01 +0000 (02:06 +0000)]
Faster generation of random matrices for mmult
benl@ouroborus.net [Thu, 1 Apr 2010 02:01:17 +0000 (02:01 +0000)]
Start on C ver of mmult
benl@ouroborus.net [Thu, 1 Apr 2010 01:21:35 +0000 (01:21 +0000)]
Split useful stuff out of C version of Laplace, and add to Makefile
benl@ouroborus.net [Thu, 1 Apr 2010 01:02:09 +0000 (01:02 +0000)]
Add DArray versions of mmult
benl@ouroborus.net [Thu, 1 Apr 2010 00:43:14 +0000 (00:43 +0000)]
Add version of mmMult using traverse
benl@ouroborus.net [Thu, 1 Apr 2010 00:31:02 +0000 (00:31 +0000)]
Add to mmult harness
Roman Leshchinskiy [Wed, 31 Mar 2010 11:50:20 +0000 (11:50 +0000)]
More fft
keller@cse.unsw.edu.au [Wed, 31 Mar 2010 11:43:58 +0000 (11:43 +0000)]
Added Any, test for fft
benl@ouroborus.net [Wed, 31 Mar 2010 10:50:56 +0000 (10:50 +0000)]
Add to mmult harness, it'll read matrices from file but not write them back yet
Roman Leshchinskiy [Wed, 31 Mar 2010 10:26:15 +0000 (10:26 +0000)]
CArray version of fft
Roman Leshchinskiy [Wed, 31 Mar 2010 10:25:52 +0000 (10:25 +0000)]
More CArray ops
Roman Leshchinskiy [Wed, 31 Mar 2010 10:00:11 +0000 (10:00 +0000)]
Add a couple of CArray ops
benl@ouroborus.net [Wed, 31 Mar 2010 08:58:17 +0000 (08:58 +0000)]
Start on CArray mmult harness
benl@ouroborus.net [Wed, 31 Mar 2010 08:55:30 +0000 (08:55 +0000)]
'port across more stuff from DArray into CArray
benl@ouroborus.net [Wed, 31 Mar 2010 07:36:34 +0000 (07:36 +0000)]
Add replicateSlice
benl@ouroborus.net [Wed, 31 Mar 2010 07:30:49 +0000 (07:30 +0000)]
Add transpose and backpermute
benl@ouroborus.net [Wed, 31 Mar 2010 07:26:37 +0000 (07:26 +0000)]
Cleanup and nicer version of traverseCArray
benl@ouroborus.net [Wed, 31 Mar 2010 06:38:41 +0000 (06:38 +0000)]
Fix traverseCArray
benl@ouroborus.net [Wed, 31 Mar 2010 06:22:38 +0000 (06:22 +0000)]
Hacks to SolveCArray (makes it slower, not finished)
keller@cse.unsw.edu.au [Wed, 31 Mar 2010 05:09:27 +0000 (05:09 +0000)]
Moving to Slice def of paper
keller@cse.unsw.edu.au [Wed, 31 Mar 2010 04:07:56 +0000 (04:07 +0000)]
Changing over to Slice type family from Index
Roman Leshchinskiy [Wed, 31 Mar 2010 03:49:42 +0000 (03:49 +0000)]
Add benchmarking code to C laplace solver
keller@cse.unsw.edu.au [Wed, 31 Mar 2010 03:08:50 +0000 (03:08 +0000)]
Changed DArray, ArrayExamples, DArrayExamples to work with new shape type
benl@ouroborus.net [Wed, 31 Mar 2010 03:00:21 +0000 (03:00 +0000)]
Use Int indexing instead of (Int, Int) in IOUArray version of Laplace benchmark
Makes it go about 2x faster.
Roman Leshchinskiy [Wed, 31 Mar 2010 01:42:33 +0000 (01:42 +0000)]
Output compute time in laplace
Roman Leshchinskiy [Wed, 31 Mar 2010 01:42:20 +0000 (01:42 +0000)]
Add deepSeqArray
benl@ouroborus.net [Tue, 30 Mar 2010 09:34:58 +0000 (09:34 +0000)]
formatting only
benl@ouroborus.net [Tue, 30 Mar 2010 07:04:09 +0000 (07:04 +0000)]
Add first cut version of Laplace solver using IOUArrays
It's about 3x slower than carrays atm, but I'm still working on it...
benl@ouroborus.net [Tue, 30 Mar 2010 04:03:50 +0000 (04:03 +0000)]
wibble to traverseCArray
benl@ouroborus.net [Tue, 30 Mar 2010 03:42:35 +0000 (03:42 +0000)]
Add traverseCArray and use it in Laplace benchmark
benl@ouroborus.net [Tue, 30 Mar 2010 02:34:10 +0000 (02:34 +0000)]
Add more laplace example data
benl@ouroborus.net [Mon, 29 Mar 2010 23:37:32 +0000 (23:37 +0000)]
Refactor C version of Laplace benchmark to allow non-square matrices
benl@ouroborus.net [Mon, 29 Mar 2010 07:50:17 +0000 (07:50 +0000)]
Make Haskell version of Laplace benchmark take PPM file of boundary conditions
New cmd line usage is like:
laplace carray-stencil 10000 examples/laplace/data/pls-100x100.ppm out.ppm
More example data is in regularArrays/examples/laplace/data
Roman Leshchinskiy [Mon, 29 Mar 2010 05:06:20 +0000 (05:06 +0000)]
Refactor laplace solvers slightly
Roman Leshchinskiy [Mon, 29 Mar 2010 04:50:57 +0000 (04:50 +0000)]
Fix strictness of various functions in CArray
Roman Leshchinskiy [Mon, 29 Mar 2010 04:50:38 +0000 (04:50 +0000)]
Save one remInt in fromIndex
Roman Leshchinskiy [Mon, 29 Mar 2010 04:08:37 +0000 (04:08 +0000)]
seq/deepSeq stuff when constructing DArrays
Roman Leshchinskiy [Mon, 29 Mar 2010 04:08:23 +0000 (04:08 +0000)]
Give deepSeq a fixity
Roman Leshchinskiy [Mon, 29 Mar 2010 04:02:14 +0000 (04:02 +0000)]
Fix typo
Roman Leshchinskiy [Mon, 29 Mar 2010 03:13:07 +0000 (03:13 +0000)]
Change shapes to use (.:) instead of (:*:)
Roman Leshchinskiy [Mon, 29 Mar 2010 02:56:22 +0000 (02:56 +0000)]
Remove superclass constraints on Shape
Roman Leshchinskiy [Mon, 29 Mar 2010 02:51:49 +0000 (02:51 +0000)]
Get rid of range
Roman Leshchinskiy [Mon, 29 Mar 2010 02:51:37 +0000 (02:51 +0000)]
Add deepSeq on Ranges
Roman Leshchinskiy [Mon, 29 Mar 2010 02:36:46 +0000 (02:36 +0000)]
Use quotRemInt instead of divMod
Roman Leshchinskiy [Mon, 29 Mar 2010 02:36:00 +0000 (02:36 +0000)]
Use regular folds
Roman Leshchinskiy [Tue, 2 Mar 2010 12:53:35 +0000 (12:53 +0000)]
Add replicate_rs/replicate rule
Roman Leshchinskiy [Tue, 2 Mar 2010 12:52:48 +0000 (12:52 +0000)]
Modify and export regular folds
benl@ouroborus.net [Fri, 26 Mar 2010 06:24:22 +0000 (06:24 +0000)]
Add comments to SolveDArray
Converting back and forth between DArray and Array allows
the indexing function that reads the forced data at the start of
each iteration to be fused with the stencil function.
This achieves the same thing as CArray, but by using two
different array types instead of an Either.
benl@ouroborus.net [Fri, 26 Mar 2010 05:19:08 +0000 (05:19 +0000)]
Cleanup and add more inline pragmas
benl@ouroborus.net [Fri, 26 Mar 2010 04:39:34 +0000 (04:39 +0000)]
Add Laplace benchmark to Makefile
benl@ouroborus.net [Fri, 26 Mar 2010 04:04:08 +0000 (04:04 +0000)]
Add version of CArray that uses a flat unboxed DIM type
Roman Leshchinskiy [Thu, 25 Mar 2010 11:10:57 +0000 (11:10 +0000)]
Add support for default to sequential execution if the gang is busy
To enable, uncomment the #define SEQ_IF_GANG_BUSY line in Gang.hs. Let's see
if this works out before making it more convenient.
Roman Leshchinskiy [Thu, 25 Mar 2010 11:00:31 +0000 (11:00 +0000)]
Fix comment
Roman Leshchinskiy [Thu, 25 Mar 2010 11:00:07 +0000 (11:00 +0000)]
Change Gang representation slightly