first steps on improvement
Initial commit of test suite
minor updates
Made some changes to the test code. knn.cl works for crusts but not landcover.

buildtree.cl now has printf support (but it does not yet run)
It also uses uint idx and has more test code.

buildtree.py now includes a printtree routine for testing.

helpers.py now supports multiple platforms and devices.
Values are hardcoded to support the Intel device as #1.
Also some new values are being checked but we aren't doing anything with them yet.

invdisttree.py has a new routine "distances" to help test knn.

knn.cl now has tons of debug.  Coords are now floats, so distances are now floats too.  Many ints are now uints.  A serious bug was found:  <= lentree is bad, < lentree is good.  Another major bug: output of ids was wrong, tree[ids] was right.  knn.cl works very well for crusts, but not yet for landcover.  No Idea Why Yet!

knn.py has extra debug as well.  Bugs fixed:  yidx varies on ylen, but <= lentree above hasn't been fixed.

knnplus.cl is on the float bandwagon for coords.  Not yet fixed re: <= lentree.

testbuildtree.py now supports printtree and has a main!

testknn.py has a cleaned up slicing routine.  Not yet tested!  It has also been modified to support the changes in invdisttree.py to compare results.  And it, too, has a main.

testknnplus.py has a cleaned up slicing routine, also not yet tested, and a main.

testopencl.py has been tweaked a little.
Going back to base instead of generating array on the fly.

knnbase() runs very well with the non-splitting case.  Once I get
testknn() to work with splitting, then I'll port the results upward.

knn.cl has knn() supporting xmajor row ordering.  Not deleting in case
I figure this out.  knn() also has TONS OF DEBUG NOW, but so does
knnbase() in the same file.

testbuildtree.py lost gen_params_from_base() but it wasn't using it.

testknn.py lost unused imports and got slices added to the test
arguments.  The slice routines were rewritten to work with base.
They work when it's just one slice.  A testchunker.py program
doesn't show any trouble so it might need more work.
Got testknn.py to work for splits -- still fails on NVIDIA though.

Cleaned up helpers.py a little -- less debug output, switchable platforms.

Now performing the results generation in the slice loop in testknn.py
and that seems to have fixed the problems.  Cleaned up debug output.
knnplus works and clidt returns reasonable values!

I've committed the changes to clidt.py that make the maps I'm
currently using, but they need cleaning.

knnplus.cl got all of knn.cl's changes as testknnplus.py got those
from testknn.py.  The failure ratio was higher with knnplus but still
under one percent on large files, and the maps look reasonable at
first glance.
Major updates to working code.

Converted helpers.py to use compressed pickles.  Need to write a
function that specifically builds pickles.  Not important now.  Also
modified all existing test routines to use compressed pickles.

Tweaked configure_cl() to support the new local size testing.

Moved the debug-laden knnplus.cl to knnplus-with-debug.cl and the
debug-free version to knnplus.cl.

Modified testknnplus.py to use more realistic size estimates and to no
longer print the unmatched output by default.
Replaced clidt.py and invdistree.py with idt.py

The new idt.py includes both OpenCL and cKDTree approaches for
calculating inverse-weighted values for crust and landcover.

knnplus.cl was renamed to idt.cl for the occasion.
Adding idt.py to source control.

Somehow this slipped through yesterday.

I need to rewrite the test routine to use both halves of idt.

For now, it'll depend on the .pkl.gz but eventually it'll pull stuff
from the Region directories.
Cleanup.

Moved testidt.py into idt.py.  Deleted no-longer-used files.
Added initial OpenCL support for elevation.

Got to start somewhere.  Replaced the numpy version of shoehorning of
the elevation array into Minecraft dimensions with OpenCL.  It's
currently twenty times slower, but it's just a base for the eventual
replacement of the gdalwarp code.

Modified idt.py to resize the output as appropriate.  Changed
region.py and crust.py to match.  Also fussed with crust a little to
make it more PEP 8 compliant and to remove unnecessary objects.

Both idt.py and elev.py have support for generating and using test
objects.  They raise AssertionError when errors exceed 1%.

Moved chunks to utils.py since multiple modules now use it.
Actually added elev.cl and elev.py this time.

Oops.
Started moving bathy.py to new style.

Added bathy.cl -- very slow and does not work well but it's a start.

Added newbathy.py which supports bathy.cl.

Moved bathy.py to oldbathy.py before transitioning it out.

Removed helpers.py since it's no longer used.

Moved buildtree to utils.py
Enabling bathy and cleaning up code.

Cleaned up bathy.cl a little.  Tried out some different logic to see what would speed things up.

Moved newbathy.py to bathy.py and changed region.py and friends.

Enabled pickling of variables for idt, elev and bathy for gathering test data.
Fully functional bathy in OpenCL.  Just too slow!

I implemented flood fill in OpenCL, it's just 200x too slow.

bathy.cl has flood fill.

bathy.py has some general cleanup.

pickle_vars has been disabled on idt and elev as well as bathy.
Fixed the time problem on bathy!  Also gave up on 1% accuracy.

I switched the order of the loops, and got down to sub-second timing
which is about 20x faster than the really fast way.  Unfortunately I'm
stuck at about 5% accuracy on Block Island, and I haven't yet figured
out which is the "wrong" stuff.  A quick search around the island
didn't turn up anything obvious, so I'll save this improvement for
later.
Added pickle support to PrepRegion.py

We can now collect test data from the command line.  Woo!
Merge branch 'feature/better-opencl' into develop