The Stanford FLASH multiprocessor
ISCA '94 Proceedings of the 21st annual international symposium on Computer architecture
SCIRun: a scientific programming environment for computational steering
Supercomputing '95 Proceedings of the 1995 ACM/IEEE conference on Supercomputing
The B-book: assigning programs to meanings
The B-book: assigning programs to meanings
Safe kernel extensions without run-time checking
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Parallel programming with MPI
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
A formal proof of absence of deadlock for any acyclic network of PCI buses
CHDL'97 Proceedings of the IFIP TC10 WG10.5 international conference on Hardware description languages and their applications : specification, modelling, verification and synthesis of microelectronic systems: specification, modelling, verification and synthesis of microelectronic systems
Visualizing multivalued data from 2D incompressible flows using concepts from painting
VIS '99 Proceedings of the conference on Visualization '99: celebrating ten years
Model checking
Immersive virtual reality for visualizing flow through an artery
Proceedings of the conference on Visualization '00
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CCured: type-safe retrofitting of legacy code
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Specifying Systems: The TLA+ Language and Tools for Hardware and Software Engineers
Validating software pipelining optimizations
CASES '02 Proceedings of the 2002 international conference on Compilers, architecture, and synthesis for embedded systems
Deriving Efficient Cache Coherence Protocols Through Refinement
Formal Methods in System Design
Industrial Practice of Formal Hardware Verification: A Sampling
Formal Methods in System Design
Learning from the Success of MPI
HiPC '01 Proceedings of the 8th International Conference on High Performance Computing
CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs
CC '02 Proceedings of the 11th International Conference on Compiler Construction
The 'Test Model-Checking' Approach to the Verification of Formal Memory Models of Multiprocessors
CAV '98 Proceedings of the 10th International Conference on Computer Aided Verification
The Quest for Efficient Boolean Satisfiability Solvers
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
An overview of the BlueGene/L Supercomputer
Proceedings of the 2002 ACM/IEEE conference on Supercomputing
Uintah: A Massively Parallel Problem Solving Environment
HPDC '00 Proceedings of the 9th IEEE International Symposium on High Performance Distributed Computing
Parallel Scientific Computing in C++ and MPI
Parallel Scientific Computing in C++ and MPI
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Spin model checker, the: primer and reference manual
Spin model checker, the: primer and reference manual
Parallel and distributed model checking in eddy
SPIN'06 Proceedings of the 13th international conference on Model Checking Software
Hi-index | 0.00 |
The quest for high performance drives parallel scientific computing software design. Well over 60% of the high-performance computing (HPC) community writes programs using the MPI library; to gain performance, they are known to perform many manual optimizations. Even tools that accept high level descriptions often generate MPI code, due to its eminent portability. However, since the overall performance of a program does not usually port (due to variations in the target architecture, cluster size, etc.), manual changes to the code are inevitable in today's approaches to MPI programming and optimization. This, together with the vastness and evolving nature of the MPI standard, and the innate complexity of concurrent programming introduces costly bugs. Our research addresses these challenges through specific efforts in the following broad areas: (i) high level expression of the parallel algorithm and compilation thereof into optimized MPI programs, (ii) optimizations of user-written detailed MPI programs through localized transformations such as barrier removal, (iii) formal modeling of complex communication standards, such as the MPI-2 standard and a facility for answering putative queries (this need arises when standard documents are impossibly difficult to manually study in order to answer questions that are not explicitly addressed in the standard), (iv) formal modeling of new (and hence relatively less well understood) features of communication libraries, such as the one-sided communication facility of MPI-2, and (v) formal modeling of intricate control algorithms in these libraries such as the progress engine for TCP and/or shared memory in MPICH2 (a formal model can explicate commonalities, help formally verify, as well as help create better future implementations). Our research gains focus through numerous collaborations.