Hi Kent,

On May 3, 2011, at 10:16 AM, Williams, Norman K wrote:

> I am using the H5Sselect_hyperslab method for both reading and writing
> already. Additionally when I write out an image, I 'chunk' the output and
> compress it.
> 
> 
> The question I have is what I can do to minimize the memory footprint.
> Based on my reading in the documentation, the Hyperslab interface actually
> scatters/gathers to/from an in-memory dataset, leading me to believe the
> entire dataset will be allocated in system memory.
> 
> So the question is how would I use HDF5 in such a way as to minimize the
> memory footprint in this context?

        You are allowed to create a memory dataspace that is different from the 
dataset's dataspace in the file.  That will allow you to tune the memory 
footprint.

        Quincey


> On 5/3/11 7:30 AM, "Quincey Koziol" <[email protected]> wrote:
> 
>> Hi Kent,
>> 
>> On May 2, 2011, at 9:19 AM, Williams, Norman K wrote:
>> 
>>> I'm implementing an HDF image reader for the ITK library.  ITK has a set
>>> of classes for Image I/O to hide the implementation details of reading
>>> and
>>> writing images. One of the itk::ImageIO feature is streamable reading
>>> and
>>> writing.
>>> 
>>> Streaming is meant to allow for reading subsets of large images to
>>> reduce
>>> the memory footprint. With a properly implement ImageIO class, you can
>>> set
>>> up a processing pipeline that reads parts of the images, processes them,
>>> and writes the parts out, only requiring the memory for the current part
>>> of the image.
>>> 
>>> This is a big win when processing, for example large time-series.
>>> 
>>> It looks as though to read or write subsets of an image, you specify the
>>> desired hyperslab, and the same on writing. But according to the
>>> documentation, the hyperslab-based partitioning of datasets is a
>>> 'scatter/gather' process that occurs in memory.  This leads me to
>>> believe
>>> when you create a new DataSet or open a new Dataset, the memory of the
>>> entire dataset is allocated.
>>> 
>>> So my question is this: What is the 'HDF5 Way' to implement streaming of
>>> smaller chunks of a dataset?
>> 
>>   Hyperslabs are the correct way to select a smaller region of a
>> dataset in the file.  You can read that smaller region into an
>> appropriately sized memory buffer, without allocating a memory buffer
>> that is the size of the dataset in the file.  Search for
>> "H5Sselect_hyperslab" in the examples subdirectory of the HDF5
>> distribution and you will find many use cases to draw from.
>> 
>>   Quincey
>> 
>>> --
>>> Kent Williams [email protected]
>>> 
>>> 
>>> 
>>> 
>>> ________________________________
>>> Notice: This UI Health Care e-mail (including attachments) is covered
>>> by the Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is
>>> confidential and may be legally privileged.  If you are not the intended
>>> recipient, you are hereby notified that any retention, dissemination,
>>> distribution, or copying of this communication is strictly prohibited.
>>> Please reply to the sender that you have received the message in error,
>>> then delete it.  Thank you.
>>> ________________________________
>>> 
>>> _______________________________________________
>>> Hdf-forum is for HDF software users discussion.
>>> [email protected]
>>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
>> 
>> 
>> _______________________________________________
>> Hdf-forum is for HDF software users discussion.
>> [email protected]
>> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
> 
> 
> 
> ________________________________
> Notice: This UI Health Care e-mail (including attachments) is covered by the 
> Electronic Communications Privacy Act, 18 U.S.C. 2510-2521, is confidential 
> and may be legally privileged.  If you are not the intended recipient, you 
> are hereby notified that any retention, dissemination, distribution, or 
> copying of this communication is strictly prohibited.  Please reply to the 
> sender that you have received the message in error, then delete it.  Thank 
> you.
> ________________________________
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org


_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to