SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Hadoop - Stock Analysis
Hadoop - Stock AnalysisHadoop - Stock Analysis
Hadoop - Stock Analysis
Vaibhav Jain
 
Visualization Lifecycle
Visualization LifecycleVisualization Lifecycle
Visualization Lifecycle
Raffael Marty
 
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
Cloudera, Inc.
 

Tendances (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
 

En vedette

En vedette (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
 

Similaire à Implementing HDF5 in MATLAB

Similaire à 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
 

Plus de The HDF-EOS Tools and Information Center

Plus de 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
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

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