[Chimera-users] binning large volumes
Tom Goddard
goddard at cgl.ucsf.edu
Wed Oct 28 14:51:44 PDT 2009
Hi Lori,
If you had enough memory the resample operation would be pretty fast
(I'd guess a few tens of seconds). But the trouble is that Chimera is
doing this operation in a very memory inefficient way. What it does is
determine the x,y,z coordinates of all the grid points and then
interpolates the volume at those points. The trouble is that those
coordinates are 3 floats taking 12 bytes. Also it makes a floating
point copy of the interpolated values for another 4 bytes per grid
point. If your 2 Gbyte map is single byte values then these extra arrays
take 16 times more memory, 32 Gbytes. If your maps are 4 byte floats
you still use 4 times the memory that the map does (8 Gbytes). If this
stuff doesn't fit in memory it starts getting paged to disk and it may
be 100 times slower.
The only reasonable answer here is that Chimera should not allocate
memory for all the xyz grid points. It's doing that because the code is
in Python/numpy instead of C++. Other code in Chimera instead works one
data plane at a time. This reduces the temporary memory use for those
xyz grid points and if the whole calculation can be done in memory it is
much much faster. I just made that change for resampling and it will be
in tomorrow's daily build. It won't be in the upcoming Chimera 1.4
release since are only making bug fixes to that version. The memory use
is still quite high. It makes an extra temporary copy of the
interpolated map with floating point values (4 bytes per grid point).
That is unnecessary. But it's a bit more trouble to optimize that away
so I'm not going to do it now. But I'll add it to the Chimera request
list. With the change I made it should use 4 bytes per grid point
temporary memory instead of 16 bytes and if your 64-bit Linux system has
enough physical memory (8 or 16 Gbytes) the resample will run much faster.
Tom
-------- Original Message --------
Subject: [Chimera-users] binning large volumes
From: Lori Nyland
To: chimera-users
Date: 10/28/09 1:07 PM
> Hello,
>
> I have two volumes with the same dimensions and each are nearly 2GB. I
> can use the vop resample command in a 64 bit Chimera for Linux and
> reassign one volumes coordinates relative to the other. However, it is
> slow to execute, but it does work.
> In order to speed things up is there a way to bin the volumes (to use
> less space), place it through the vop resample command, and then
> un-bin the volume without losing information?
>
> Thanks!
> Lori
More information about the Chimera-users
mailing list