[vspline] branch packaging created (now fd20652)

Kay F. Jahnke kfj-guest at moszumanska.debian.org
Sun Jul 2 09:02:47 UTC 2017


This is an automated email from the git hooks/post-receive script.

kfj-guest pushed a change to branch packaging
in repository vspline.

        at  fd20652   created packaging branch, added folder 'debian' to it The package building scripts in debian/ are in order to build homebrew packages, but will need small modifications to be usable by debian

This branch includes the following new commits:

       new  c648364   Initial commit of README.rst
       new  ac366e4   Initial commit of vspline's source code and examples
       new  137845d   some changes to the documentation, rewrite of vectorized prefilter My initial implementation of the vectorized prefiltering routine was functional, but it was based on iterators which I wrote when I initially worked the solver with the arrays' data directly, which took some finessing and a proxy type. When my speed tests showed that buffering was the way to go and I made it the standard modus operandi, the code became overly complex for the task. So I decided to rewr [...]
       new  8692fea   broadened simdized type in prefilter, saved 1 thread two small changes with performance gains which surprised me. The first one is changing simdized_type in the vectorized prefiltering code from plain Vc::Vector<ele_type> to a SimdArray twice that size. The performance gain isn't much, but seems to be a few percent and every little helps. It's just one place in the code where the change is done and it trickles down, so it's easy to change back or try something else.  [...]
       new  bec223f   Factored out most of the prefiltering code to filter.h I noticed that the prefiltering code which was initially in prefilter.h was very close to a general routine performing the type of filter needed for b-spline prefiltering. So I factored it out into filter.h, which does not have any code specific to b-splines and implemented the b-spline-specific routines in prefilter.h as thin wrappers of the top-level function in filter.h. at the same time, I restructured the co [...]
       new  131eeac   Finished coding for the 1D specialization of the filter I feel I've now found a reasonable path treating 1D arrays, where large arrays will benefit very much and resource still aren't stretched too far. I also did some minor changes in the filter code, now passing the gain to the filter instead of the previous lambda_exponent, the new method is more flexible.
       new  12f8485   moved allocation of workspace to evaluator, moved vector type fixing to traits class with the vector type now fixed in a traits class, I managed to globally change the simdized type to a SimdArray with twice the Vc::Vector size, which resulted in ca. 15% overall eval performance gain. And I moved the allocation of the 'workspace' into class evaluator, which makes it more like the functor I have in mind when I rework the remap code.
       new  f616c7b   finally found a satisfactory way to make class evaluator thread safe and still fast.
       new  2594723   more work on evaluation, class warper introduced I did some more work on class evaluator, adding code to work with separate sources of integral and real components of split coordinates. This made it possible to use a new class 'warper' in remap.h, which contains two MultiArray(View)s, one to nD integral coordinates, one to nD real remainders. I wrote the corresponding remap function (for now requiring the arrays in the warper to be unstrided) and tested, seems like a [...]
       new  7528e65   using aggregate_traits throughout, work on pv.cc I'm trying to push some more fixed types out, so now I've worked on vigra::TinyVecors, replacing them with aggregate_traits<T,N>::type. I'd like to move to code where the aggregated types 'collapse' to simple type T if N==1, but I still have trouble getting my code to work with this definition. Anyway, factoring more of the type-fixing out is a good idea. I've also had good fun with pv. I tuned it some more and by now  [...]
       new  fecd7fc   new code for multithreading, currently in impulse_response.cc ... where it could be easily developed and tested. I was unhappy with 'divide_and_conquer' and wanted generalized code for multithreading over sections of manifolds. Staring out with several attempts (still in this commit) using tuples, I finally figured out that it would be best to introduce proper notions of 'range' and 'partitioning' and use them explicitly. I now have a multithreading routine which is  [...]
       new  a29afea   factored out multithreading code into multithread.h, using it in filter.h Now that I rewrote the multithreading code, I need to make some changes to the code using multithreading as well, since I introduced the passing of ranges together with the 'whole' arguments to the single-thread code and the signatures are slightly different. In this intermediate commit, the old code in common.h (splite_array_to_cunks, divide_and_conquer) is still present and used for evaluatio [...]
       new  8e7ee9d   multithread() from multithread.h now used for all multithreading I did the rewrite of the code for multithreading in remap.h and pv.cc. This made the 'divide_and_conquer' code in common.h obsolete. While using multithread() I found no way to pass references 'through' multithread(), so now I use pointers throughout to do the passage. Changing the single-threaded code turned out straightforward by simply adding the extra range parameter, changing all access to manifold [...]
       new  441efc5   small changes, documentation
       new  a98fa86   polishing, new bc code TAG, remap now takes evaluator, not bspline Initially I had plans to have a pure virtual base class interpolator, specifying an interface for interpolating code, and inherit this interface in class evaluator. For now I've abandoned this path. what I have changed, though, is the remap routines: they now take an evaluator object instead of a bspline. This is a step in the same direction; a bspline object is pretty much what I had in mind for an ' [...]
       new  3cde5ed   changed shifting code, smaller changes to pv I now save the initial boundary conditions used for prefiltering and revert to them during 'shifting' of the spline, because the shifting produced erroneous results with REFLECT bcs when the spline was later run with RTAG maping mode. pv now runs fine with all combinations of pan-mode and HQ splines and with full and partial sphericals - it takes a few extra command line arguments to fix the degrees for same, and has the a [...]
       new  90457ed   added interpolator.h interpolator.h has an interface definition for a class 'interpolator' with those methods defined pure virtual which are essential for remapping from unsplit coordinates. class evaluator fulfills this interface, but since the interface only requires a few methods to be present, it's quite easy to write alternative interpolators, as 'nearest_neighbour' in the same file, which provides a possibly minimally faster implementation of nearest-neighbour  [...]
       new  79e7258   polished mapping code now all the mappings resort to the raw mappings, reducing code redundancy. also some minor changes there, added more documentation.
       new  a74968a   stutter-free panning in pv I found ways to avoid dropped frames in pv. I took several measures: - the frames are now rendered in a separate thread with some rendering ahead-of-time   so that the overall rate is steadier - if there are still dropped frames, I decrease the apparent frame rate by   showing all frames twice thrice etc. - with showing them twice I'm still   at 30 fps, which looks smooth if it's not panning too fast So now I can run fine with linear interp [...]
       new  ec8aa61   polished pv some more I tweaked nn and bilinear interpolation and now I get most panos to run at 60fps and bilinear without stutter. Only when the panorama is very large or the fov is very large (or near zenith or nadir) I have to throttle.
       new  8221de1   mainly work on multithreading, pv I changed the multithreading code to use a thread pool. At the same time I introduced new joint processing code which makes the multithreading more fine-grained, so that the workload is more evenly distributed to the worker threads. The new code is partly in multithread.h, which has the joint task handling, and partly in thread_pool.cc, which has to be compiled separately and linked in. pv is using the new methods. The biggest change [...]
       new  68692ee   consolidated opertion with thread pool, now header-only.
       new  1e26342   added code for evaluation of mesh grids to remap.h
       new  7fd27c7   pv now uses image pyramid To further reduce stutter with large panoramas, I added code to use a pyramid of slightly smoothed, scaled down spline objects which are put to use depending on the scale of the display. I commit this status quo because it seems to be a nice milestone without any immediately obvious bugs.
       new  34c802d   nice working state of pv. license change of pv to GPL3 pv now has smooth zooming and panning at 60 fps for most cases.
       new  23550f6   removed gradient.cc
       new  fd9ed9e   nice working state of pv
       new  44dcbc9   commit before removing pv.cc
       new  92a1b56   license change of pano_extract to GPL3, proper CL argument handling
       new  4b0bc8d   polished multithreading code, (hopefully) fixing one bug
       new  f738e1a   added coordinate.h
       new  188fd41   worked on eval.h; now have specialized code for NN and linear interpolation inside class evaluator, which made my handcoded interpolators in pv obsolete. Also added a new mapping mode fo splines made with REFLECT bcs which don't actually need the reflection and can be evaluated RAW. The new mapping mode RRAW takes care of the brace which may be widened.
       new  af741ec   added specializations for splines of degree 0 and 1 to have specialized nearest-neighbour and linear interpolators in vspline, which makes it as fast as hand-coded code for the purpose. Also introduced 'evenness' for raw-mode remaps without using mmap.
       new  438354c   removed tf_remap I have done away with tf_remap in favour of only providing index_remap. index_remap can be used to the same effect, but burdens the implementation of a transformation object on the calling code. Yet wrapping an evaluator in an outer object which can do the necessary transformation isn't hard, and doing so is more efficient than using the slightly awkward vspline::transform object (though it's auto-broadcast method seemed like a good idea at the time. [...]
       new  8b78ec8   small changes
       new  a503691   minor changes
       new  e55930b   coded unary_functor.h as replacement for interpolator.h The type system and template args in interpolator.h still showed it's origin in eval.h, but what was encoded in interpolator.h is a broader concept of a unary functor, taking an n-dimensional input and producing an m-dimensional output, plus the vectorization and load/store methods. So I rewrote the code reflecting the workings of a unary functor and made the corresponding changes to other code. In some places I [...]
       new  5b1d08d   removed interpolator.h from the repository
       new  9262c14   small changes due to problems showing up with example code these are mainly type changes in filter.h and eval.h. also added a few more examples with simple tasks (slice.cc, complex.cc)
       new  f36607f   added two examples, gsm.cc and gsm2.cc, which calculate the gradient squared magnitude of an image, the first implementation using dirct evaluation of the gradients in a loop as a quick shot, the second implementation creating a dedicated gsm evaluator and producing the result by using vspline::index_remap
       new  7f335e9   some changes to the remapping code I had a bug (which did not manifest) in the handling of the recursive descent of warp_generator, which is fixed now, together with a bit of tweaking for speed. I now always recurse all the way to 1D, which resolves some type issues.
       new  9f272ab   mainly work on remap.h This was consolidation work and performance tuning, also streamlining of the code to make it more compact. Added more comments, as well.
       new  ba9cbac   mainly documentation work
       new  94e54cf   fixed bug for REFLECT BCs and small arrays went through examples to make sure all compile and work
       new  aaff60b   work on documentation, fixed use_vc bug while writing documentation (front page for doxygen docu) I noticed that calls to high-level routines with use_vc set to a specific value did not always produce correct results. This was due to the flag's value not being carried all the way through to where it should have been evaluated. this should be fixed now, and roundtrip behaves as expected.
       new  4075e7b   removed the use_vc flag in all it's guises. Now use of Vc is either switched on (by defining USE_VC) or off (default). compiles with USE_VC will alwways (try to) run the vector code. Switching off the use of the vector code in a comile with USE_VC defined is no longer an option.
       new  ea649cc   added script to compile all examples
       new  aaaedc2   documentation
       new  a02e20f   added map.h, with new implementation of teating out-of-bounds coordinates I was never really happy with the code in mapping.h with it's function pointers and the mixup between mapping and splitting of coordinates. So now I thought out a different way of doing the task. I want bspline objects to now have const bcv's and have the coordinate pretreatment via specialized types. map.h now has the basis for doing this: there is a collection of 'gate' types which are derive [...]
       new  4f6ceb3   committing changes in map.h before branching
       new  5002ac1   separated boundary conditions and mapping codes I was unhappy with both voundary conditions and mappings sharing the same enum and being conceptually linked. Now there is a separate set of mapping codes (in common.h) and the mapping code in mapping.h is based on them. When creating evaluators from bspline objects, the old automatism of picking a mapping which 'echoed' the spline's boundary conditions was removed, the default now is to use MAP_REJECT, which throws vsp [...]
       new  64234aa   wrote restore function using grid_eval, changes to roundtrip.cc
       new  50418f8   minor changes to the example programs, eval.h
       new  3e38f24   changed template argument signature of grid_eval
       new  290494e   polishing, mainly documantation
       new  bfdb9e4   small change to documentation
       new  42dc63b   added link to documantation
       new  128b6f6   polished documentation
       new  81ee242   getting the documentatation hyperlink right...
       new  244a232   clened up code in filter.h, documentation
       new  3af786c   minor change to comment
       new  b258fa4   added vspline::bspline::brace() This method simply applies the brace using either coefficients already present in the spline's core or 'pulling in' a coefficient array first. This way, externally generated coefficients can easily be used to set up a bspline object for evaluation with vspline's evaluation code.
       new  669e768   changed gather/scatter with extrusion code and it's use Given a simdized type ST, I noticed recently that, apart from using  ST::IndexType (which uses int) for gather/scatter operations, I can  use any type offering operator[] and holding the required number of  indexes. Initially I filed this under nice-to-have, but since the code  I'm working on produces indexes initially as ptrdiff_t  (which is long on my system), I experimentally coded passing  vigra::TinyVector< [...]
       new  0ce0fdd   activating code in filter.h to use IndexType for gathering if indexes fit
       new  392ee6b   change to vspline::bspline's parameter signature, polishing I moved the parameter _space to the end of bspline's constructor's argument list, since it should rarely be used. The other changes were to the comments, and also a change to class bspline's method container_size() which had a bug with SPHERICAL/REFLECT BCs. This caused problems with pano_extract in the examples, when the source image had an alpha channel, so pano_extract was changed as well.
       new  3c44400   minor change to comments only
       new  06a3663   more minor changes
       new  9a7c8cc   more minor changes
       new  57f11a5   threw out a diagnostic message, commit before branch
       new  58db62d   threw out BC code IGNORE, since it is really the same as ZEROPAD. Apparently, IGNORE mustn't be used in certain environments because it is occupied by something already. No problem, we don't need it anyway.
       new  48e31ca   removed use of a vla in prefilter.h
       new  6c6a977   modified multithread's partitioning behaviour multithread now takes a function pointer determine the partitioning function. In remap.h, partition_to_tiles is used by default. This routine has been modified to fall back to partition_to_stripes if the shape passed in isn't 2D or the partitioning to tiles doesn't yield the desired number of parts. This way, most use cases should be adequately covered, but specific needs for partitioning can also be addressed.
       new  fd20652   created packaging branch, added folder 'debian' to it The package building scripts in debian/ are in order to build homebrew packages, but will need small modifications to be usable by debian

The 73 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/vspline.git



More information about the debian-science-commits mailing list