News

From VipsWiki

Revision as of 10:44, 4 February 2010; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

4 February 2010

There's a branch in SVN for a vips that uses Orc:

http://vips.svn.sourceforge.net/viewvc/vips/vips7/branches/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:

 http://vips.svn.sourceforge.net/viewvc/vips/vips7/branches/orc/libvips/arithmetic/im_add.c?view=markup

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" );

ie.

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:

http://www.vips.ecs.soton.ac.uk/supported/7.18/

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:

Replacing gtkplot

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.

Replacing gtksheet

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.

Doxygen documentation

Another branch of vips has experimental doxygen docs, you can see a sample here:

http://www.vips.ecs.soton.ac.uk/development/7.19/doxygen/im__abs_8c.html#024953510bd1cdb437e02104c8e111aa

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.

gtk-doc documentation

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

http://create.freedesktop.org/wiki/Conference

Nicolas Robidoux has kindly offered to present the talk. Slides here:

http://www.vips.ecs.soton.ac.uk/development

They haven't put up the programme yet, but we are currently down for Friday afternoon.

http://www.libregraphicsmeeting.org/2009/program.php

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

That took a while, but we now have a 7.16.2 announced on Freshmeat and friends. See What's New in 7.16 for a summary of the new stuff. The supported download area has sources plus a windows binary.

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.

Changes:

  • 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 readme.

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.

Old news

We have pages for previous years: News (2007), News (2006), News (2005), News (2004), News (2003), News (ancient).

Personal tools