Vectorizable Vs. Vectorizability: The Big Difference


Is your application vectorizable? Today, users generally answer that question by compiling with and without vectorization turned on and then looking at the difference in runtimes. While this is easy to do, it is not appropriate since it only answers the question:  “Is my application vectorizable” with the current compiler? The question to be addressed is whether the important looping structures in the application can be restructured to be vectorized. Thus, “What is the vectorizability of the application?” In fact, we will not be dealing with the traditional vector instruction that existed on Cray systems delivered in the ’80s. What we have today are functional units that look more like the even earlier Illiac IV —how many of you remember ... [ Read More ]

[Video] Innovative HPC Models Give Oil and Gas Companies an Edge


  As worldwide demand for energy continues to rise, the oil industry is working to satisfy demand for the hydrocarbon part of that equation. High performance computing is becoming critical to companies that are seeking new sources of hydrocarbons and trying to maximize existing reserves. At Cray, we’ve been working hard to stay ahead of oil and gas companies’ needs, and our efforts over the past few years have made our solutions an excellent match for them. Understanding the HPC problems facing oil and gas organizations Traditionally, efforts to improve seismic processing throughput have come from a match between the availability of newer CPUs featuring faster clock speeds, and new algorithms designed to take advantage of ... [ 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 ]

What Sank the First Successful Wartime Sub?


The story of the first wartime “kill” by a submarine — the H.L. Hunley, built to help defend the Confederacy in the U.S. Civil War — is a thrilling tale of naval bravery. It is Feb. 17, 1864.  The Hunley, engaged in a desperate bid to break through the Union’s blockade of Charleston Harbor, attacks and sinks the Union’s USS Housatonic. But shortly afterward the Hunley herself sinks for reasons that are never understood, creating one of naval history’s great mysteries. Just sailing the Hunley required bravery. The vessel was built from a 40-foot-long cylindrical iron boiler, tapered at both ends to provide a measure of streamlining. There was no engine: The 1,240-ton sub was powered by seven sailors, turning a hand crank that drove the ... [ 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 ]