HDF 5 Software Process Mu Qun Yang Quincey

























- Slides: 25
HDF 5 Software Process Mu. Qun Yang, Quincey Koziol, Elena Pourmal The HDF Group 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 1
Purposes • Demonstrate how we maintain HDF 5 - Libraries and tools built on top of HDF 5 • HDF-EOS 5, Net. CDF 4 and Pytables etc • Hear your feedback 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 2
Three pillars for robust software • Correctness • Performance • Coding standard 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 3
HDF 5 software challenges Portability • Portability: IBM, SGI, windows, linux, Solaris, OSF 1, cygwin, Cray, Free. BSD, Mac-OS • Parallel IO: depends on MPI-IO, parallel File System and hardware - MPI-IO: IBM AIX, MPICH, SGI Altix - Parallel File System: GPFS, Lustre 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 4
Features • Programming languages - C, Fortran, C++ • External libraries: szlib encoder and decoder, zlib • Comprehensive internal library test suite - time-consuming tests: fractral heap 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 5
Others • 34 configuration features --enable-cxx, --enable-fortran etc. • THE TESTING CHALLENGE machines x operating systems x compilers x languages x Szip (encoder + no encoder) x (serial + parallel) = a very large number • Coordination among developers - 3 -4 core library developers 5 -6 developers for tools and others - subversion not enough 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 6
Solutions • HDF 5 Daily Test on main-stream UNIX platforms - Rob Matzke started around 1997 - Albert Cheng took over • • More platforms, testing with more features Different version of HDF 5 1. 6, 1. 8 Other product: HDF 4 Other platforms: Windows 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 7
Daily automatic test procedure Start the automatic job 1. Configuring 2. Compiling library and tools 3. Running tests for library and tools 4. Installing the library 5. Testing examples The developer fixes the problem 11/7/2007 Sending out the results to hdf 5 library mailing lists 1. Platform watcher diagnoses the failure 2. Inform the corresponding developer if the failure is real HDF and HDF-EOS Workshop XI, Landover, MD 8
An example for daily test Date: Tue, 6 Nov 2007 08: 00: 15 -0600 [08: 00: 15 AM CST] From: HDF Tester hdftest@hdfgroup. org To: hdf 5 lib@hdfgroup. org Subject: kagiso HDF 5_Daily_Tests_1106 Tue_FAILED!!! Date: Tue, 6 Nov 2007 09: 23: 49 -0600 [09: 23: 49 AM CST] From: Quincey Koziol <koziol@hdfgroup. org> To: hdf 5 lib@hdfgroup. org Subject: 11/7/2007 Re: kagiso HDF 5_Daily_Tests_1106 Tue_FAILED!!! HDF and HDF-EOS Workshop XI, Landover, MD 9
11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 10
Other helpers • Committest script -automatically test a few platforms before checking in source code • Save developers’ time 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 11
Performance • High IO performance is always a goal for THG • Detect bad performance in time • Performance framework 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 12
Performance framework • Easy to Use for Various Benchmarks • Multiple Platforms and Versions • Long Term Regression Tests • Help Debugging 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 13
Background • Backend: Cron job / DB Storage • Core: Performance C/C++ Library • Frontend: PHP / jpgraph 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 14
Solution Easy to Use HDF 5 1. 6 HDF 5 1. 8 cron A User’s Benchmark Database Performance Library www PHP Web Server Graph/Text 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 15
Example Usage H 5 Perf_start. Timer(&time); for(i=0; i<1000 ; i++) { H 5 Gcreate(fileid, group_name, (size_t)0)); // Add groups } H 5 Perf_end. Timer(&time); H 5 Perf_add. Instance(db_host, date, time); 00 21 * * * /home/local/hyoklee/src/chicago/test-perf-hdfdap-3. sh | 178820 | 2007 -08 -17 21: 51: 14 | 10000 groups Timestamp 11/7/2007 Instance Name | creating 10000 empty groups | 1. 8. 0 | hdfdap | 0. 670198 | Version Platform HDF and HDF-EOS Workshop XI, Landover, MD Time 16 4384 |
Demo http: //hdfdap. hdfgroup. uiuc. edu/h 5 perf/index. html 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 17
Other Performance work • Performance studies compression, chunking and parallel IO http: //www. hdfgroup. uiuc. edu/papers/ 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 18
Coding standard • Not much except seminars on HDF 4/HDF 5 coding standards – We definitely need to improve in this area 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 19
Other work we have done to improve software process 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 20
User involvements • Public mailing lists hdf-forum@hdfgroup. org hdfnews@hdfgroup. org hdf 4 dev@hdfgroup. org hdf 5 dev@hdfgroup. org • Public RFCs • Solicit comments for new HDF 5 features etc. http: //www. hdfgroup. uiuc. edu/RFC/HDF 5/ • Ask special groups to give us feedback http: //www. hdfgroup. uiuc. edu/RFC/HDF 5/H 5 CHK/ • Subversion repo 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 21
Trainings for developers • Internally Book reading: Programming Pearls • Attending Dr. Dobb’s software conference 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 22
Near-term plan • Enhance daily correctness tests Ø API compatibility tests: done Ø API Version tests: in the process Ø Java wrapper tests: done Ø Open source packages that use HDF o EOS 2 with HDF 4 o EOS 5 with HDF 5 o Net. CDF 4 with HDF 5 • Weekly “stable” code snapshots 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 23
Long-term Plan • Coding standard: code review • Standards : - In the process of applying for ISO/ANSI standard for HDF 5 • 500 random API tests to avoid ungraceful crash • Collect existing HDF 5 files such as EOS 2, EOS 5 files - Running all HDF 4/HDF 5 tools on these files periodically • Daily correlation regression tests on external machines 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 24
Acknowledgement This work was supported basing upon the Cooperative Agreement with the National Aeronautics and Space Administration (NASA) under NASA grant NNX 06 AC 83 A. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of NASA. 11/7/2007 HDF and HDF-EOS Workshop XI, Landover, MD 25