The Past, Present, and Future of High-Performance Computing

Emphasis on next-generation computing is driven at the national level because it affects scientific discovery, engineering, healthcare, security, and economic competitiveness. Moreover, high-performance computing is playing a greater role in our daily activities, requiring more performance from each system. However, pushing the performance envelope is becoming increasingly challenging – designing a machine that is 5ox faster isn’t as simple as making today’s machines sox larger. The future of high-performance computing will incorporate novel architectural concepts and heterogeneity at both the node and the system level to achieve power and performance goals. These future systems present new challenges and opportunities in how we approach computing.

Continue reading

Gradual Verification: Assuring Programs Incrementally

While software is becoming more ubiquitous in our everyday lives, so are unintended bugs. In response, static verification techniques were introduced to prove or disprove the absence of bugs in code. Unfortunately, current techniques burden users by requiring them to write inductively complete specifications involving many extraneous details. To overcome this limitation, I introduce the idea of gradual verification, which handles complete, partial, or missing specifications by soundly combining static and dynamic checking. As a result, gradual verification allows users to specify and verify only the properties and components of their system that they care about and increase the scope of verification gradually—which is poorly supported by existing tools.

Continue reading