SlideShare a Scribd company logo
1 of 25
Download to read offline
Jeff Mather & Alec Rogers
The MathWorks, Inc.
29 November 2006

© 2006 The MathWorks, Inc.

Implementing HDF5 in MATLAB
HDF4
1-1 mapping of C API first. (1998)

Customer requests for high-level functions.

HDFREAD, HDFWRITE, HDFINFO. (2000)

2
HDF5
High-level first. (2003)

Customer requests for lower-level functionality.

1-1 mapping of C API. (2006)

3
The World of HDF Applications

HDF4 / HDF5 APIs

API Supported by MATLAB
High-level access functions

Customer
application
Customer
application

Customer
application

Customer
application

4
HDF5READ
DATA = HDF5READ(FILENAME,DATASETNAME) returns
in the variable DATA all data from the file FILENAME for the
data set named DATASETNAME.
DATA has to be extremely general
because of the wide variety of
datatypes that HDF5 accomodates.

More control needed to
match the uniqueness of
customer datasets and files.

Simple access only:
● No subsetting.
● Limited datatype control.

5
HDF5INFO
FILEINFO = HDF5INFO(FILENAME) returns a structure
whose fields contain information about the contents of an
HDF5 file. FILENAME is a string that specifies the name of
the HDF file.

6
HDF5WRITE
HDF5WRITE(FILENAME, LOCATION, DATASET) adds
the data in DATASET to the HDF5 file named FILENAME.
LOCATION defines where to write the DATASET in the file
and resembles a Unix-style path. The data in DATASET is
mapped to HDF5 datatypes using the rules below. . . .
HDF5WRITE is completely
symmetric with HDF5READ.

Objects disambiguate datatypes.

The values in DATASET are cumbersome
for non-native MATLAB types (e.g., arrays,
compound, and references).
7
Customer HDF5 Requests









Library upgrades (1.4.5, 1.6.4, 1.6.5, 1.8)
Better support for large data
Hyperselection, chunking
New platform support (Solaris 64, MacIntel)
GZIP, SZIP compression
HDF5 file interrogation
Bitfield, date/time datatypes
Data translators: HDF5 --> MATLAB

8
Use Cases
Read parts of an HDF5 dataset (a hyperslab).

9
Use Cases
Read complicated datatypes without the overhead of
MATLAB objects for datasets.

mydata(1).Data(1).Data(1)

10
Use Cases

Allow users to extend our HDF5 functionality without
waiting for us.

11
Use Cases
Be able to drop in new versions of the HDF5 library when
they become available.

HDF5 1.8

12
Use Cases
Use a variety of esoteric HDF5 features at once:

“I'm trying to use HDF5 files [with] grouping
features like compound data types, group links,
and reference data types.”

13
Schedule

Iterative development
Internal design
reviews
March 2006

First draft
specification
Sept. 2005

Final
specification
Feb. 2006

Feature
complete
May 2006

14
MATLAB is not C
Hmm . . . I might
throw an error.
MATLAB

[out1, out2] = function(in1, in2);
C

status = function(in1, in2, &out1, &out2);

15
MATLAB is not C

mxArray
void * p_real
void * p_complex
size_t dims[]
size_t ndims
mxCLASS_ID type
...
...

16
The Interface
hid_t
identifiers

C API

MATLAB API

H5Xfcn

H5X.fcn

A

D

Identifier
objects

× 12
F

G

ML
S

Exceptions

T

...
17
Special MATLAB Functions
H5ML.compare_values
H5ML.get_constant_names
H5ML.get_constant_value
H5ML.get_function_names
H5ML.get_mem_datatype
H5ML.hoffset
H5ML.sizeof
18
Library Model
HDF5 Library

Library
Constants

Library
Procedures

Lefthand to
righthand
mapping

Procedures
Parameters

Datatype
Conversions

19
Implementing the HDF5 Library








Step 1: Determine auto vs. manual conversion
Step 2: Convert .h to .xml
Step 3: Convert XML to C++
Step 4: Code manual functions
Step 5: Integrate
Step 6: Test

20
The conversion process

21
Converting XML to C++

// Definition
#define ADD_PROCEDURE_1_5(name,pfn,ret,a1,a2,a3,a4,a5) 
addMethod(new LibraryProcedure_1_5< LibraryParameter_T<ret>,
LibraryParameter_T<a1>,
LibraryParameter_T<a2>,
LibraryParameter_T<a3>,
LibraryParameter_T<a4>,
LibraryParameter_T<a5> >
(name, atts, pfn));








22
Converting XML to C++
// Usage (x ~220 functions)
atts.init(0,1,5,5);
atts.setParamFlags(0, ParameterAttributes::OUTPUT, 1);
atts.setParamFlags(1, ParameterAttributes::INPUT |
ParameterAttributes::STRING_CONVERT, 1);
atts.setParamFlags(2, ParameterAttributes::INPUT, 1);
atts.setParamFlags(3, ParameterAttributes::INPUT |
ParameterAttributes::STRING_CONVERT, 1);
atts.setParamFlags(4, ParameterAttributes::INPUT |
ParameterAttributes::STRING_CONVERT, 1);
atts.setParamFlags(5, ParameterAttributes::INPUT |
ParameterAttributes::STRING_CONVERT, 1);
ADD_PROCEDURE_1_5("H5Acreate", H5Acreate, hid_t,
hid_t, const char *, hid_t, hid_t, hid_t);

23
The HDF Group and The MathWorks






Continue to communicate future directions.
Don't change the existing API functions.
Communicate API functionality changes.
Produce a machine parsable version of hdf5.h.

24
The Future

HDF5

MAT-File

64-bits for large arrays
● Data subsetting on load
● Type conversion on load
● Parallel I/O?
●

25

More Related Content

What's hot

MapReduce Design Patterns
MapReduce Design PatternsMapReduce Design Patterns
MapReduce Design PatternsDonald Miner
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsJulien Le Dem
 
Mapreduce Algorithms
Mapreduce AlgorithmsMapreduce Algorithms
Mapreduce AlgorithmsAmund Tveit
 
Hadoop - Stock Analysis
Hadoop - Stock AnalysisHadoop - Stock Analysis
Hadoop - Stock AnalysisVaibhav Jain
 
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...The HDF-EOS Tools and Information Center
 
Visualization Lifecycle
Visualization LifecycleVisualization Lifecycle
Visualization LifecycleRaffael Marty
 
Optimization Techniques
Optimization TechniquesOptimization Techniques
Optimization TechniquesJoud Khattab
 
What does Rename Do: (detailed version)
What does Rename Do: (detailed version)What does Rename Do: (detailed version)
What does Rename Do: (detailed version)Steve Loughran
 
The age of rename() is over
The age of rename() is overThe age of rename() is over
The age of rename() is overSteve Loughran
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And HdfsCloudera, Inc.
 

What's hot (20)

HDF-EOS to GeoTIFF Conversion Tool & HDF-EOS Plug-in for HDFView
HDF-EOS to GeoTIFF Conversion Tool & HDF-EOS Plug-in for HDFViewHDF-EOS to GeoTIFF Conversion Tool & HDF-EOS Plug-in for HDFView
HDF-EOS to GeoTIFF Conversion Tool & HDF-EOS Plug-in for HDFView
 
Introduction to HDF5 Data and Programming Models
Introduction to HDF5 Data and Programming ModelsIntroduction to HDF5 Data and Programming Models
Introduction to HDF5 Data and Programming Models
 
Advanced HDF5 Features
Advanced HDF5 FeaturesAdvanced HDF5 Features
Advanced HDF5 Features
 
NASA HDF/HDF-EOS Data Access Challenges
NASA HDF/HDF-EOS Data Access ChallengesNASA HDF/HDF-EOS Data Access Challenges
NASA HDF/HDF-EOS Data Access Challenges
 
H5Coro: The Cloud-Optimized Read-Only Library
H5Coro: The Cloud-Optimized Read-Only LibraryH5Coro: The Cloud-Optimized Read-Only Library
H5Coro: The Cloud-Optimized Read-Only Library
 
Images of HDF5
Images of HDF5Images of HDF5
Images of HDF5
 
Caching and Buffering in HDF5
Caching and Buffering in HDF5Caching and Buffering in HDF5
Caching and Buffering in HDF5
 
MapReduce Design Patterns
MapReduce Design PatternsMapReduce Design Patterns
MapReduce Design Patterns
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analytics
 
Mapreduce Algorithms
Mapreduce AlgorithmsMapreduce Algorithms
Mapreduce Algorithms
 
Hadoop - Stock Analysis
Hadoop - Stock AnalysisHadoop - Stock Analysis
Hadoop - Stock Analysis
 
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
STARE-PODS: A Versatile Data Store Leveraging the HDF Virtual Object Layer fo...
 
AfterGlow
AfterGlowAfterGlow
AfterGlow
 
Introduction to HDF5
Introduction to HDF5Introduction to HDF5
Introduction to HDF5
 
HDF5 Advanced Topics
HDF5 Advanced TopicsHDF5 Advanced Topics
HDF5 Advanced Topics
 
Visualization Lifecycle
Visualization LifecycleVisualization Lifecycle
Visualization Lifecycle
 
Optimization Techniques
Optimization TechniquesOptimization Techniques
Optimization Techniques
 
What does Rename Do: (detailed version)
What does Rename Do: (detailed version)What does Rename Do: (detailed version)
What does Rename Do: (detailed version)
 
The age of rename() is over
The age of rename() is overThe age of rename() is over
The age of rename() is over
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And Hdfs
 

Viewers also liked

MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)Analog Devices, Inc.
 
Simulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionSimulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionAniruddha Chandra
 
Simulation of Wireless Communication Systems
Simulation of Wireless Communication SystemsSimulation of Wireless Communication Systems
Simulation of Wireless Communication SystemsBernd-Peter Paris
 
Solving laplace equation using gauss seidel method in matlab
Solving laplace equation using gauss seidel method in matlabSolving laplace equation using gauss seidel method in matlab
Solving laplace equation using gauss seidel method in matlabMohamed Ahmed
 
2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer ProgramsMarie Schwartz
 
Mathworks case example
Mathworks case exampleMathworks case example
Mathworks case exampleMassTLC
 
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi..."Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...Toan Nguyen
 
Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Anh VU
 
マイコンロボット実習
マイコンロボット実習マイコンロボット実習
マイコンロボット実習Takehiko YOSHIDA
 
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Takehiko YOSHIDA
 
Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Bharti Airtel Ltd.
 
2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...Dcolearning
 
TEEN Online Best Practices 2017
TEEN Online Best Practices 2017TEEN Online Best Practices 2017
TEEN Online Best Practices 2017Glenn Wiebe
 

Viewers also liked (20)

MATLAB and Scientific Data: New Features and Capabilities
MATLAB and Scientific Data: New Features and CapabilitiesMATLAB and Scientific Data: New Features and Capabilities
MATLAB and Scientific Data: New Features and Capabilities
 
MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)MATLAB and Simulink for Communications System Design (Design Conference 2013)
MATLAB and Simulink for Communications System Design (Design Conference 2013)
 
Simulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introductionSimulating communication systems with MATLAB: An introduction
Simulating communication systems with MATLAB: An introduction
 
Simulation of Wireless Communication Systems
Simulation of Wireless Communication SystemsSimulation of Wireless Communication Systems
Simulation of Wireless Communication Systems
 
Using HDF5 in MATLAB
Using HDF5 in MATLABUsing HDF5 in MATLAB
Using HDF5 in MATLAB
 
Matlab, Big Data, and HDF Server
Matlab, Big Data, and HDF ServerMatlab, Big Data, and HDF Server
Matlab, Big Data, and HDF Server
 
HDF Update for DAAC Managers (2017-02-27)
HDF Update for DAAC Managers (2017-02-27)HDF Update for DAAC Managers (2017-02-27)
HDF Update for DAAC Managers (2017-02-27)
 
Solving laplace equation using gauss seidel method in matlab
Solving laplace equation using gauss seidel method in matlabSolving laplace equation using gauss seidel method in matlab
Solving laplace equation using gauss seidel method in matlab
 
2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs2017 TeenLife Guide to Overnight Summer Programs
2017 TeenLife Guide to Overnight Summer Programs
 
Mathworks case example
Mathworks case exampleMathworks case example
Mathworks case example
 
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi..."Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
"Tomorrow ASEAN Project" Information Booklet (Season 1) - AIESEC in Ho Chi Mi...
 
Summer Camp brochure 2017
Summer Camp brochure 2017Summer Camp brochure 2017
Summer Camp brochure 2017
 
Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?Digital Innovation in Vietnam: is it possible?
Digital Innovation in Vietnam: is it possible?
 
Industrial projects 2017 by tciap
Industrial projects 2017 by tciap Industrial projects 2017 by tciap
Industrial projects 2017 by tciap
 
マイコンロボット実習
マイコンロボット実習マイコンロボット実習
マイコンロボット実習
 
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
Open the door of embedded systems to IoT! mruby on LEGO Mindstorms (R)
 
Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis Noise detection from the signal matlab code, Signal Diagnosis
Noise detection from the signal matlab code, Signal Diagnosis
 
2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...2017 Project Management Workshop Schedule - Project Management Training - Dco...
2017 Project Management Workshop Schedule - Project Management Training - Dco...
 
TEEN Online Best Practices 2017
TEEN Online Best Practices 2017TEEN Online Best Practices 2017
TEEN Online Best Practices 2017
 
Matlab code
Matlab codeMatlab code
Matlab code
 

Similar to Implementing HDF5 in MATLAB

Hdf5 parallel
Hdf5 parallelHdf5 parallel
Hdf5 parallelmfolk
 
DB2 and PHP in Depth on IBM i
DB2 and PHP in Depth on IBM iDB2 and PHP in Depth on IBM i
DB2 and PHP in Depth on IBM iAlan Seiden
 

Similar to Implementing HDF5 in MATLAB (20)

Introduction to HDF5
Introduction to HDF5Introduction to HDF5
Introduction to HDF5
 
Introduction to HDF5
Introduction to HDF5Introduction to HDF5
Introduction to HDF5
 
Advanced HDF5 Features
Advanced HDF5 FeaturesAdvanced HDF5 Features
Advanced HDF5 Features
 
Hdf5 intro
Hdf5 introHdf5 intro
Hdf5 intro
 
HDF5 and Ecosystem: What Is New?
HDF5 and Ecosystem: What Is New?HDF5 and Ecosystem: What Is New?
HDF5 and Ecosystem: What Is New?
 
Integrating HDF5 with SRB
Integrating HDF5 with SRBIntegrating HDF5 with SRB
Integrating HDF5 with SRB
 
NetCDF and HDF5
NetCDF and HDF5NetCDF and HDF5
NetCDF and HDF5
 
Hdf5 parallel
Hdf5 parallelHdf5 parallel
Hdf5 parallel
 
Parallel HDF5 Introductory Tutorial
Parallel HDF5 Introductory TutorialParallel HDF5 Introductory Tutorial
Parallel HDF5 Introductory Tutorial
 
Introduction to HDF5
Introduction to HDF5Introduction to HDF5
Introduction to HDF5
 
HDF Update
HDF UpdateHDF Update
HDF Update
 
Introduction to HDF5 Data Model, Programming Model and Library APIs
Introduction to HDF5 Data Model, Programming Model and Library APIsIntroduction to HDF5 Data Model, Programming Model and Library APIs
Introduction to HDF5 Data Model, Programming Model and Library APIs
 
DB2 and PHP in Depth on IBM i
DB2 and PHP in Depth on IBM iDB2 and PHP in Depth on IBM i
DB2 and PHP in Depth on IBM i
 
Substituting HDF5 tools with Python/H5py scripts
Substituting HDF5 tools with Python/H5py scriptsSubstituting HDF5 tools with Python/H5py scripts
Substituting HDF5 tools with Python/H5py scripts
 
HDF5 OPeNDAP project update and demo
HDF5 OPeNDAP project update and demoHDF5 OPeNDAP project update and demo
HDF5 OPeNDAP project update and demo
 
What will be new in HDF5?
What will be new in HDF5?What will be new in HDF5?
What will be new in HDF5?
 
HDF5 Roadmap 2019-2020
HDF5 Roadmap 2019-2020HDF5 Roadmap 2019-2020
HDF5 Roadmap 2019-2020
 
Introduction to NetCDF-4
Introduction to NetCDF-4Introduction to NetCDF-4
Introduction to NetCDF-4
 
UML Representation of NPOESS Data Products in HDF5
UML Representation of NPOESS Data Products in HDF5UML Representation of NPOESS Data Products in HDF5
UML Representation of NPOESS Data Products in HDF5
 
Efficiently serving HDF5 via OPeNDAP
Efficiently serving HDF5 via OPeNDAPEfficiently serving HDF5 via OPeNDAP
Efficiently serving HDF5 via OPeNDAP
 

More from The HDF-EOS Tools and Information Center

More from The HDF-EOS Tools and Information Center (20)

Cloud-Optimized HDF5 Files
Cloud-Optimized HDF5 FilesCloud-Optimized HDF5 Files
Cloud-Optimized HDF5 Files
 
Accessing HDF5 data in the cloud with HSDS
Accessing HDF5 data in the cloud with HSDSAccessing HDF5 data in the cloud with HSDS
Accessing HDF5 data in the cloud with HSDS
 
The State of HDF
The State of HDFThe State of HDF
The State of HDF
 
Highly Scalable Data Service (HSDS) Performance Features
Highly Scalable Data Service (HSDS) Performance FeaturesHighly Scalable Data Service (HSDS) Performance Features
Highly Scalable Data Service (HSDS) Performance Features
 
Creating Cloud-Optimized HDF5 Files
Creating Cloud-Optimized HDF5 FilesCreating Cloud-Optimized HDF5 Files
Creating Cloud-Optimized HDF5 Files
 
HDF5 OPeNDAP Handler Updates, and Performance Discussion
HDF5 OPeNDAP Handler Updates, and Performance DiscussionHDF5 OPeNDAP Handler Updates, and Performance Discussion
HDF5 OPeNDAP Handler Updates, and Performance Discussion
 
Hyrax: Serving Data from S3
Hyrax: Serving Data from S3Hyrax: Serving Data from S3
Hyrax: Serving Data from S3
 
Accessing Cloud Data and Services Using EDL, Pydap, MATLAB
Accessing Cloud Data and Services Using EDL, Pydap, MATLABAccessing Cloud Data and Services Using EDL, Pydap, MATLAB
Accessing Cloud Data and Services Using EDL, Pydap, MATLAB
 
HDF - Current status and Future Directions
HDF - Current status and Future DirectionsHDF - Current status and Future Directions
HDF - Current status and Future Directions
 
HDFEOS.org User Analsys, Updates, and Future
HDFEOS.org User Analsys, Updates, and FutureHDFEOS.org User Analsys, Updates, and Future
HDFEOS.org User Analsys, Updates, and Future
 
HDF - Current status and Future Directions
HDF - Current status and Future Directions HDF - Current status and Future Directions
HDF - Current status and Future Directions
 
MATLAB Modernization on HDF5 1.10
MATLAB Modernization on HDF5 1.10MATLAB Modernization on HDF5 1.10
MATLAB Modernization on HDF5 1.10
 
HDF for the Cloud - Serverless HDF
HDF for the Cloud - Serverless HDFHDF for the Cloud - Serverless HDF
HDF for the Cloud - Serverless HDF
 
HDF5 <-> Zarr
HDF5 <-> ZarrHDF5 <-> Zarr
HDF5 <-> Zarr
 
HDF for the Cloud - New HDF Server Features
HDF for the Cloud - New HDF Server FeaturesHDF for the Cloud - New HDF Server Features
HDF for the Cloud - New HDF Server Features
 
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
Apache Drill and Unidata THREDDS Data Server for NASA HDF-EOS on S3
 
Leveraging the Cloud for HDF Software Testing
Leveraging the Cloud for HDF Software TestingLeveraging the Cloud for HDF Software Testing
Leveraging the Cloud for HDF Software Testing
 
Google Colaboratory for HDF-EOS
Google Colaboratory for HDF-EOSGoogle Colaboratory for HDF-EOS
Google Colaboratory for HDF-EOS
 
Parallel Computing with HDF Server
Parallel Computing with HDF ServerParallel Computing with HDF Server
Parallel Computing with HDF Server
 
HDF-EOS Data Product Developer's Guide
HDF-EOS Data Product Developer's GuideHDF-EOS Data Product Developer's Guide
HDF-EOS Data Product Developer's Guide
 

Recently uploaded

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Implementing HDF5 in MATLAB

  • 1. Jeff Mather & Alec Rogers The MathWorks, Inc. 29 November 2006 © 2006 The MathWorks, Inc. Implementing HDF5 in MATLAB
  • 2. HDF4 1-1 mapping of C API first. (1998) Customer requests for high-level functions. HDFREAD, HDFWRITE, HDFINFO. (2000) 2
  • 3. HDF5 High-level first. (2003) Customer requests for lower-level functionality. 1-1 mapping of C API. (2006) 3
  • 4. The World of HDF Applications HDF4 / HDF5 APIs API Supported by MATLAB High-level access functions Customer application Customer application Customer application Customer application 4
  • 5. HDF5READ DATA = HDF5READ(FILENAME,DATASETNAME) returns in the variable DATA all data from the file FILENAME for the data set named DATASETNAME. DATA has to be extremely general because of the wide variety of datatypes that HDF5 accomodates. More control needed to match the uniqueness of customer datasets and files. Simple access only: ● No subsetting. ● Limited datatype control. 5
  • 6. HDF5INFO FILEINFO = HDF5INFO(FILENAME) returns a structure whose fields contain information about the contents of an HDF5 file. FILENAME is a string that specifies the name of the HDF file. 6
  • 7. HDF5WRITE HDF5WRITE(FILENAME, LOCATION, DATASET) adds the data in DATASET to the HDF5 file named FILENAME. LOCATION defines where to write the DATASET in the file and resembles a Unix-style path. The data in DATASET is mapped to HDF5 datatypes using the rules below. . . . HDF5WRITE is completely symmetric with HDF5READ. Objects disambiguate datatypes. The values in DATASET are cumbersome for non-native MATLAB types (e.g., arrays, compound, and references). 7
  • 8. Customer HDF5 Requests         Library upgrades (1.4.5, 1.6.4, 1.6.5, 1.8) Better support for large data Hyperselection, chunking New platform support (Solaris 64, MacIntel) GZIP, SZIP compression HDF5 file interrogation Bitfield, date/time datatypes Data translators: HDF5 --> MATLAB 8
  • 9. Use Cases Read parts of an HDF5 dataset (a hyperslab). 9
  • 10. Use Cases Read complicated datatypes without the overhead of MATLAB objects for datasets. mydata(1).Data(1).Data(1) 10
  • 11. Use Cases Allow users to extend our HDF5 functionality without waiting for us. 11
  • 12. Use Cases Be able to drop in new versions of the HDF5 library when they become available. HDF5 1.8 12
  • 13. Use Cases Use a variety of esoteric HDF5 features at once: “I'm trying to use HDF5 files [with] grouping features like compound data types, group links, and reference data types.” 13
  • 14. Schedule Iterative development Internal design reviews March 2006 First draft specification Sept. 2005 Final specification Feb. 2006 Feature complete May 2006 14
  • 15. MATLAB is not C Hmm . . . I might throw an error. MATLAB [out1, out2] = function(in1, in2); C status = function(in1, in2, &out1, &out2); 15
  • 16. MATLAB is not C mxArray void * p_real void * p_complex size_t dims[] size_t ndims mxCLASS_ID type ... ... 16
  • 17. The Interface hid_t identifiers C API MATLAB API H5Xfcn H5X.fcn A D Identifier objects × 12 F G ML S Exceptions T ... 17
  • 19. Library Model HDF5 Library Library Constants Library Procedures Lefthand to righthand mapping Procedures Parameters Datatype Conversions 19
  • 20. Implementing the HDF5 Library       Step 1: Determine auto vs. manual conversion Step 2: Convert .h to .xml Step 3: Convert XML to C++ Step 4: Code manual functions Step 5: Integrate Step 6: Test 20
  • 22. Converting XML to C++ // Definition #define ADD_PROCEDURE_1_5(name,pfn,ret,a1,a2,a3,a4,a5) addMethod(new LibraryProcedure_1_5< LibraryParameter_T<ret>, LibraryParameter_T<a1>, LibraryParameter_T<a2>, LibraryParameter_T<a3>, LibraryParameter_T<a4>, LibraryParameter_T<a5> > (name, atts, pfn)); 22
  • 23. Converting XML to C++ // Usage (x ~220 functions) atts.init(0,1,5,5); atts.setParamFlags(0, ParameterAttributes::OUTPUT, 1); atts.setParamFlags(1, ParameterAttributes::INPUT | ParameterAttributes::STRING_CONVERT, 1); atts.setParamFlags(2, ParameterAttributes::INPUT, 1); atts.setParamFlags(3, ParameterAttributes::INPUT | ParameterAttributes::STRING_CONVERT, 1); atts.setParamFlags(4, ParameterAttributes::INPUT | ParameterAttributes::STRING_CONVERT, 1); atts.setParamFlags(5, ParameterAttributes::INPUT | ParameterAttributes::STRING_CONVERT, 1); ADD_PROCEDURE_1_5("H5Acreate", H5Acreate, hid_t, hid_t, const char *, hid_t, hid_t, hid_t); 23
  • 24. The HDF Group and The MathWorks     Continue to communicate future directions. Don't change the existing API functions. Communicate API functionality changes. Produce a machine parsable version of hdf5.h. 24
  • 25. The Future HDF5 MAT-File 64-bits for large arrays ● Data subsetting on load ● Type conversion on load ● Parallel I/O? ● 25