[parsec-users] About VIPS's synchronization

jcupitt at gmail.com jcupitt at gmail.com
Thu Mar 7 04:10:25 EST 2013


Hi Justin,

On 7 March 2013 05:20, Zhunping Zhang <jzz at mit.edu> wrote:

> Wonder if anyone can enlighten me how VIPS handles input synchronization.
> As I
> understand, an operation in VIPS read inputs from several images and
> outputs to
> one. The output images is shredded into blocks to be processed in parallel.
> Evaluating two different blocks might depend on the same pixel in the input
> images, and some synchronization method is needed to avoid races. May I
> know
> how VIPs implement this? (Pointing to line numbers would be really
> helpful.)
>

I wrote a post about this:

http://libvips.blogspot.co.uk/2012/06/how-libvips-opens-file.html

The PARSEC benchmark uses direct access (the first method described in that
post).

I don't know which version of vips is bundled in current PARSEC, but
looking at libvips git master, the methods you need are
vips_region_image(), which selects a rectangular area of a memory-mapped
file:

https://github.com/jcupitt/libvips/blob/master/libvips/iofuncs/region.c#L579

Which in turn calls vips_window_ref() to get a reference to a chunk of a
file:

https://github.com/jcupitt/libvips/blob/master/libvips/iofuncs/window.c#L349

John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cs.princeton.edu/pipermail/parsec-users/attachments/20130307/7303ad85/attachment.html>


More information about the parsec-users mailing list