HPC Software Optimization Trends (Part 2): What Will the Future Be Like and How Do We Prepare for It?


To what extent do past and current HPC software optimization activities predict the future? Current optimization trends and next-gen hardware designs point to more threads, wider vectors, and an increasingly complex memory hierarchy. Is HPC application software ready for the future foretold by this trajectory? What will it be like and how can you be prepared for it? Where did we come from and where are we now? For background about how we arrived at the current state of HPC software optimization, read part one of this blog series: “HPC Software Optimization Trends (Part 1): Where Did We Come From and Where Are We Now?” The key point is to realize that the recent past of HPC software optimization has been marked by relatively long ... [ Read More ]

HPC Software Optimization Trends (Part 1): Where Did We Come From and Where Are We Now?


To describe the current trajectory of software optimization trends in HPC, we need to understand our recent past. Which recent trends dictate our current state? We also need to know where we are now. Which HPC software optimizations are currently commonplace? Finally, to what extent does the trajectory created by past and current HPC software optimization activities predict the future? Where did we come from? We’ll start our software optimization narrative by talking about two hardware trends: Moore’s law (the number of transistors in an integrated circuit doubles approximately every two years); and Dennard scaling (as transistors get smaller their power density stays constant). Moore’s law, providing smaller transistors coupled with ... [ Read More ]

Chapel Users ‘CHIUW’ Their Way Through Portland


A few dozen Chapel enthusiasts recently devoted a weekend to CHIUW 2015 — the second annual Chapel Implementers and Users Workshop. CHIUW (pronounced “chew”) is a forum for developers and practitioners of the Chapel parallel programming language to meet and share results while strategizing about the language’s future. This year’s workshop was held in Portland, Oregon, as part of the 36th annual ACM SIGPLAN conference on Programming Language Design and Implementation (PLDI). Between events, attendees made good on the CHIUW name by taking advantage of Portland’s food scene at Frank’s Noodle House, the Red Star, Blossoming Lotus, Burnside Brewing Company, Salt and Straw, Voodoo Doughnuts (natch) and Tilt (get the pie shake!). CHIUW 2015 was ... [ Read More ]

Characterization of an Application for Hybrid Multi/Many-core Systems


In my last blog post, I illustrated a paradigm shift in chip technology and how node architecture must significantly change to support these trends. In this post, I will discuss a way to characterize applications for investigating approaches to moving forward into the world of multi- and many-core hybrid systems. When porting/optimizing an application to the new generation of hybrid multi-/many-core systems, one must identify enough parallelization to utilize two levels of parallelism on the node. Whether the node is an accelerated node or a many-core node, a significant amount of threading on the node is a requirement for good performance. The days of using messaging across all the cores on a node are over. Additionally, the lower-level ... [ Read More ]

We put the bugs in … we take the bugs out!


Many years ago I was leading a workshop on programming methods, and I can’t remember which language we were using at the time — it doesn’t matter — but we were covering numerous high level software development flows like spiral, V-model and waterfall. An astute engineer in the middle of the room raised his hand and interrupted the slide show discussion. “This is all nice, but at my company,” he said, “we have a simpler two-step process. We put the bugs in, and then we have to find them and take them back out!” The room erupted in laughter and nodding heads. It was a powerful and insightful summary, eloquently and humbly stated. It didn’t really matter what the programming method, model or language were; coders all need a method of ... [ Read More ]