trantalaiho/Cuda-Histogram — Issue #5: Create test-framework and define commit-procedure
Author: trantalaiho
Created: 2012-02-19 01:02:46+00:00
State: open

First create a parameterizable test-case with self-checking (similar to [test_perf.cu](https://github.com/trantalaiho/Cuda-Histogram/blob/master/test_perf.cu)) and then write a set of tests that constitute an acceptance test for the software.

The features tested should include basically all features:

- Normal histograms (atomic_inc)
- Scalar histograms (atomic_add)
- Generalized histograms (generic - find min/max, etc - odd output types)
- All bin ranges (0 to 16000 - prefer at least one test for each range)
- Multiple input-index ranges (0 to ... )
- Multiple results per input
- Streams
- Accumulating on top previous results
- Result-histograms in both CPU and GPU memory
- User-given temporary arrays
- At least one test with floating point outputs - careful with automatic checking
- ND-input-indices (if/when implemented -- see [Support for Nd input indices](https://github.com/trantalaiho/Cuda-Histogram/issues/2))
- Ignore keys (if/when implemented -- see [Support for ignoring/discarding input keys](https://github.com/trantalaiho/Cuda-Histogram/issues/4))
- Large input-indices and unsigned indices (See [Support for large input-index ranges](https://github.com/trantalaiho/Cuda-Histogram/issues/3))

The commit procedure could be something like:

* Run automated acceptance tests -- all must pass (or existing issue preventing)
* Run performance tests -- No performance regressions allowed (unless to fix a major bug)
* Run [test_minimal.cu](https://github.com/trantalaiho/Cuda-Histogram/blob/master/test_minimal.cu)
* Compile all tests in project
* Repeat for all architectures