4 February 2010
There's a branch in SVN for a vips that uses Orc:
Orc is a wrapper around sse/sse2/sse3/mmx/altivec/arm/ti-dsp etc. You write a bit of code in a pseudo-assembly language and at runtime it "compiles" it down to real instructions for the host CPU, using whatever capabilities it has. The idea is that many apps have to maintain multiple code paths for various annoying media instruction sets, so this thing abstracts that away and lets you write your code just once.
Here's VIPS doing im_add on a 10,000 x 10,000 pixel 8-bit RGB image:
$ time vips im_add wtc.v wtc.v wtc2.v real 0m10.699s user 0m1.890s sys 0m1.520s
Pretty quick, huh? That's with -O2 on a 2.7GHz Opteron 254. Now with ORC!
$ time vips --vips-orc im_add wtc.v wtc.v wtc2.v real 0m9.668s user 0m0.530s sys 0m1.410s
About a 3x to 4x speedup! You get more with a core2duo, it seems to have a better vector unit.
Orc is still rather experimental, so I don't want to spend too long rewriting operators yet. The next version should add addressing modes and then we'll be able to use it for things like im_conv().
The code for im_add() is here:
The ORC inner loop is:
357 p = add_programs[IM_BANDFMT_UCHAR]; 358 orc_program_append_ds_str( p, "convubw", "t1", "s1" ); 359 orc_program_append_ds_str( p, "convubw", "t2", "s2" ); 360 orc_program_append_str( p, "addusw", "d1", "t1", "t2" );
cast s1 up from unsigned byte to word in t1 cast s2 up from unsigned byte to word in t2 unsigned word add of add t1 and t2 to make d1
29 November 2009
7.20 is out! Check What's New in 7.20 for details. We'll announce to the world in a day or two.
10 August 2009
There's a new stable version, 7.18.2:
Not much has changed:
- new Joe defs (thanks Joe)
- fixed a crash building look-up tables with non-zero offsets (thanks Jack)
- "header" sets a non-zero exit code if anything failed
- tiny stuff
Other vips news:
We have an experimental branch of nip2 which uses libgoffice to draw charts instead of the venerable gtkplot. Charts look better, need less memory and draw faster. This should help us move to gtk3 as well. We can't merge this change in until libgoffice hits 0.8, sadly.
We have a branch that uses a treeview instead of gtksheet to display matrices. Sadly it doesn't really work very well. We probably need to try again with an updated gtksheet that's now been picked up by another developer.
Another branch of vips has experimental doxygen docs, you can see a sample here:
Unfortunately, Doxygen generates program documentation, not API docs, so it tries to document a lot of internal stuff which we really want to keep hidden.
Yet another branch has gtk-doc support. It's quite a bit more work to get the source into the right shape for gtk-doc, but it seems to make more useful API docs, to me anyway. Samples here:
http://www.vips.ecs.soton.ac.uk/development/7.19/gtkdoc/VIPS-image.html http://www.vips.ecs.soton.ac.uk/development/7.19/gtkdoc/VIPS-arithmetic.html http://www.vips.ecs.soton.ac.uk/development/7.19/gtkdoc/VIPS-buf.html
Google summer of code
Nicolas and his students have been beavering away on new interpolators. They should land in vips in the autumn, hopefully.
Friday 1 May 2009
Our talk on VIPS has been accepted for LGM'09
Nicolas Robidoux has kindly offered to present the talk. Slides here:
They haven't put up the programme yet, but we are currently down for Friday afternoon.
Wednesday 22 April 2009
7.18 is announced to the world! Thanks to all contributors.
Thursday 16 April 2009
A slight change to 7.18.0 and some windows binaries. I've updated the site to refer to 7.18.x as current stable, we'll announce to the world after a little more testing.
Thursday 2 April 2009
We have a first trial version of vips-7.18. It passes all the tests and works with all my stuff here, so I hope it's OK. We now need testers, so if you have time, could you download and build? I'll make a win32 binary early next week. If things go OK we'll announce the new version to the world in another 10 days or so.
For building, the big differences over 7.16 are:
- now uses the "matio" package, if available, to read Matlab save files
- no longer needs SWIG to build, since we package the generated files in the tarball
- nip2 now insists on flex and bison (it used to tolerate yacc and lex)
So that's one dependency more and one dropped.
We have a What's New in 7.18 page with details, but the big ones are:
- new interpolation system (you can finally do bicubic, yay), this is a really important basic improvement we've been waiting years for
- new file formats: Radiance and Matlab
- nip2 should feel faster and more responsive
29 December 2008
Here's a new stable version, 7.16.4. There are changes to help ubuntu 8.10 and fedora 11, plus some doc fixes and one tiny bug fix, but that's it.
19 November 2008
We've just added a fancy new interpolation system to the development version of vips. Previously, each operation had it's own interpolator wired in. Now, there's a way of writing a generic interpolator that any operation can use, and a set of fast, high-quality interpolators to choose between.
We have some Interpolation samples with a short explanation. To try it out, build from SVN trunk. You'll see some new options in the nip2 image transform operations.
13 October 2008
There's yet another new stable version, 7.16.3. This fixes the cancel problem that David Joyner found last week. I really hope this is the final 7.16 for a while :-( I've merged the 7.16 cleanups back into trunk, and we now have 7.17.0, the next development version. My plans for this next version are:
- I have a project with Nicolas Robidoux to add his YAFR resampler to vips. This is a fast, high quality bicubic interpolator. We should all get better quality image resizing and rotation.
- I have a project with Jesper Friis to improve the vips type system. The plan is to add compound types (eg. "array of x") to vips, so that plugins can pass much more complex objects to nip2 and back. We plan to use this feature to add vector overlays to images.
- plus some minor stuff
If anyone has more ideas, do chip in.
Monday 6 October 2008
Wednesday 10 September 2008
A first release of 7.16 is out. The website is being updated, if no one reports a problem before Monday, we'll announce to the world.
Thursday 17 July 2008
Yet another supported update: 7.14.5.
- better ImageMagick detection makes FreeBSD builds work (thanks Adam)
- option to disable desktop updates (thanks Adam)
- bug fix in nip2 helps matrix operations
Thursday 5 June 2008
There's a new stable version up, 7.14.4. This fixes a couple of crash bugs, a couple of minor bugs, and adds a few small features.
The big news is an all-new Windows build system. We are now cross-compiling from Linux to Windows and everything is working much more smoothly. It's much easier to update now, so we have been able to switch to a more recent gtk library stack. nip2 ought to feel noticably snappier.
We also finally have a working libvips.dll, so Windows programmers can easily use vips from their own code. There's a
win32dev in the download area containing zips of all the files you need, plus some scripts to help build them. Check the
There's some news on the development version too. We have a branch with pluggable image loaders, so you can easily add new image formats to VIPS and have them appear in all the interfaces. Plus there are improvements to the Python API to make it much easier to move images between VIPS and other image processing libraries.
Wednesday 26 March 2008
vips-7.14 is now final and supported and development have swapped. We'll post an announcement on Freshmeat etc.
There are a couple of new pages on the website:
- What's New in 7.14
- Quickly lists the major new things in this version.
- How it works
- Is a technical introduction to the insides of vips.
Monday 3 March, 2008
vips-7.14 is launched! We have a new supported download area with the stuff in. Source only for now, builds and packages coming in the next few days.
Friday 25 January, 2008
Princeton have launched version 1.0 of the PARSEC benchmark suite. This is a set of sample programs for testing parallel computer architectures. One of the sample programs is based on vips, which is very gratifying.
Thursday 24 January, 2008
7.13.3. New stuff:
- left-hand-side pattern matching in nip
- left-hand-side pattern matching in list comprehensions
- the python interface is broken :( it should be unbroken soon
- new operators from Tom
- bug fixes, memleaks, cleanups
This will hopefully be the last 7.13 before 7.14.0 at the end of Feb.