High Performance Computing
High performance computing (HPC) is an established area of research and graduate study in the Department of Computer and Information Sciences at the University of Delaware (UD). HPC at UD embraces several research aspects including parallel and distributed programming; interdisciplinary science, programming languages and compilers; optimization and scheduling of large-scale scientific applications; software validation, verification, and testing; and algorithms and tools for exact linear algebra computation on large dense and sparse matrix problems.
Parallel and distributed programming aims to enhance performance through the process of performing parts of a task concurrently. Achieving the performance gains projected for applications through parallelism offered by today’s parallel and distributed systems mandates new paradigms for system software (i.e., operating systems, languages, compilers, computer architecture, and programming tools) and the redesign of applications software through the development, implementation, optimization, verification, and testing of parallel and concurrent algorithms.
Advanced cyberinfrastructure available to faculty and their groups at UD include high-end, multi-core supercomputers on campus and from XSEDE. Targeted platforms include cloud computing, multi-threading and GPU computing, and volunteer computing. New challenges include moving scientific applications and their execution beyond peta-scale architectures into the new era of exa-scale platforms; designing new algorithms both compute- and data-intensive applications; exploring and adapting new paradigms such as MapReduce for the latter application.
Research projects have been supported by grants from the National Science Foundation, the Department of Energy (DoE), the US Air Force Organization (USAF), the US Army Research Organization (ARO), NVIDIA, Nemours/Alfred I. duPont Hospital for Children, Google, DARPA, JP Morgan, and CERDEC along with international organizations such as the the national lab in Germany, Helmholtz-Zentrum Dresden Rossendorf (HZDR).
- Sunita Chandrasekaran, Assistant Professor: Parallel Computing; Parallel Programming Models; Validation & Verification; Deep Learning; Accelerator Programming; Compiler and Runtime.
- Lena Mashayekhy, Assistant Professor: Cloud Computing; Edge Computing; Internet of Things; Cyber-Physical Systems, and Game Theory.
- Lori Pollock, Professor: Program analysis for building better software maintenance tools; Optimizing compilers for modern computer architectures; Software testing.
- B. David Saunders, Professor: Exact linear algebra; Dense, sparse, and structured integer matrix computations.
- Stephen Siegel, Associate Professor: Software validation and verification in HPC.
ECE Faculty with Joint Appointments in CIS
- Guang Gao, Professor of Electrical and Computer Engineering: Computer architecture and parallel systems; Optimizing and parallelizing compilers; Applications (e.g., bioinformatics)
- Xiaoming Li, Assistant Professor: Code generation and optimization; Compilers; Interaction between hardware and software.
- CISC 649 Topics in Computer Applications: Programming for High Performance
- CISC 662 Computer Systems: Architecture
- CISC 663 Operating Systems
- CISC 670 Programming Languages
- CISC 672 Compiler Construction
- CISC 673 Program Analysis and Transformation
- CISC 822 Algebraic Algorithms
- CISC 873 Compiling for Advanced Architectures
- CISC 879 Advanced Topics in Architecture and Software Systems: Parallelization for Scientific Applications
- CISC 879 Advanced Topics in Architecture and Software Systems: Advanced Parallel Programming
- CISC 879 Advanced Topics in Architecture and Software Systems: Machine Learning for Solving Systems Problems
- CISC 879 Advanced Topics in Architecture and Software Systems: Software Support for Multi-core Architectures
High Performance Computing Laboratories
Computational Research and Programming Lab
221 Smith Hall, Professor Sunita Chandrasekaran.
The Computational Research and Programming Lab (CRPL) focuses on exploring programming models and its language features to parallelize real-world scientific applications on large scale computing processors consisting of hundreds to thousands of CPUs and accelerators such as GPUs or Intel Graphic cards even specialized processors such as DSPs, FPGAs. Applications of interest include nuclear physics, plasma physics, biophysics, bioinformatics, and solar physics. We explore compiler and runtime techniques to optimize data movement for High Performance Computing (HPC). We also explore machine learning and deep learning techniques to build predictive models for medical outcomes based on genomic and EHR data. We also develop validation and verification suites to check for validation and corrections of programming models’ implementations in compilers.
103 Smith Hall, Professor David Saunders, Research Associate Professor David Wood.
We design algorithms and high performance implementations for exact linear algebra computation. Exact linear algebra with matrices of integers is harder than the more widely used approximate linear algebra in floating point. Our work contributes to LinBox, a software library for solving exact systems exactly. It is developed by a team of researchers in the US, France, and Canada.
Software Analysis and Compilation Laboratory
213 Smith Hall, Professor Lori Pollock.
Our research focuses on program analysis to automate and semi-automate tedious and error-prone tasks typically performed by software engineers, testers, and scientists. Current research projects include applying natural language processing techniques to perform textual analysis of software artifacts and using that information for automatically generating documentation from source code, improving code search and feature location, and improving other software maintenance tools. We are also investigating various aspects of green software engineering to enable software designers to make energy-conscious design decisions. In software testing, we are developing techniques to automatically generate tests for web applications. Other projects focus on optimizing compilers for modern parallel architectures.
Verified Software Laboratory
421 Smith Hall, Professor Stephen Siegel.
The VSL conducts research into one of the most important problems in Software Engineering: how to develop verifiably correct complex software systems. Currently, the VSL is focusing on parallel programs used for scientific computation and is developing tools that can find defects in these programs or establish their correctness. These tools are based on techniques from logic, compiler theory, symbolic computation, and model checking.