Research Projects for the US Department of Defense, DARPA and ORNL
The following work has been funded by the US Department of Defense, DARPA’s High Productivity Computing Initiative and by the Extreme Scale System Center at Oak Ridge National Laboratory. Debugging applications can be very time consuming. However, having good software tools can greatly decrease this time. While some program errors can be found at compile-time, there are other program errors than cannot be detected until run-time. We call these errors run-time errors. Observe that we assume the language syntax of the program is correct and an executable was created. For the first year of this contract, we wrote comprehensive run-time tests for Fortran, C and C++ that can be run on any compiler/run-time system. a tool has been written to automatically evaluate the error messages generated. Each error message issued by the run-time system is assigned a score from 0 to 5 based on the quality of the message to help fix the error quickly. Average scores over error categories are automatically calculated and reported. These tests can be downloaded from here. During the second year of this project, run-time error tests for MPI were developed. For the third year run-time error tests for OpenMP were developed and for the fourth year run-time error tests for UPC were developed. In 2009, UPC compile tests were developed.
Research Projects for Cray Inc.
Professor Luecke has developed a long term relationship with Cray Inc. and has continuously had contracts with them since 1992. During this time, Professor Luecke and his HPC Group has performed a wide variety of different research projects for Cray. The following is a list some of these projects:
Performance evaluation of Cray’s Fortran compiler along with testing it for functional correctness.
Helping with the design, evaluation, and testing of a variety of performance tools.
Helping with the design, evaluation, and testing of a variety of debugging tools and debuggers.
Writing and reviewing of a wide variety of HPC documentation.
Performance evaluation of Cray’s MPI 1, MPI 2, and shmem routines along with testing it for functional correctness.
Performance and evaluation OpenMP for Fortran and C along with testing it for functional correctness.
Aiding Cray in the porting and optimization of selected routines in their scientific libaries.
Aiding Cray in performance function testing of new releases of all system software.
Aiding Cray in function testing for several of their operating systems.
MPI is commonly used to write parallel programs for distributed memory parallel computers. MPI-CHECK version 1.0 is a tool developed to aid in the debugging of MPI programs that are written in free or fixed format Fortran 90 and Fortran 77. MPI-CHECK provides automatic compile-time and run-time checking of MPI programs. MPI-CHECK automatically detects the following problems in the use of MPI routines: (i) mismatch in argument type, kind, rank or number; (ii) messages which exceed the bounds of the source/destination array; (iii) negative message lengths; (iv) illegal MPI calls before MPI_INITIALIZE or after MPI_FINALIZE; (v) inconsistencies between the declared type of a message and its associated DATATYPE argument; and (vi) actual arguments which violate the INTENT attribute. MPI-CHECK version 2.0 incorporates all the features of version 1.0 but adds the detection of actual and potential deadlocks when using blocking and non-blocking point-to-point routines as well as when using collective routines.
Other Research Projects
The following lists some of the other research projects:
Optimizing the Linpack benchmark for Hitachi Data Systems
Porting an optimization of the NAG Libraries to Hitachi Data Systems vector computers.
Developing optimized scientific library routines for Hitachi Data System computers.
Writing detailed specifications for Pacific Sierra Research to port a high performance VAST for Hitachi Data Systems computers and then tested to make sure the specifications were met.
Fortran 90 performance and function testing for IBM.
World wide evaluation of parallel debuggers along with recommendations to IBM.
Writing a paper for NASA giving recommendations on how to meet their high performance computing challenges within the next 10 years.
Several years of working with IMSL (now Visual Numerics) developing optimized scientific library routines for them.