Profile cover photo
Profile photo
Mark Hoemmen
Interested in how numerical linear algebra intersects with performance, systems, and programming models.
Interested in how numerical linear algebra intersects with performance, systems, and programming models.

I'm looking for examples of publications that show the difficulty of integrating two large software projects in industry.  It needs to be in industry, because some people accuse gov't of being inefficient at developing software.  Open- or closed-source doesn't matter; what matters is having a publication to cite.  Would anybody happen to have any suggestions?

Post has attachment
Grad students in high-performance computing (HPC), or in science or engineering applications that might use HPC: Apply for the George Michael Fellowship!  (Disclaimer: I'm on the selection committee (unpaid).)  Applications open Monday 03 March.

Post has attachment

Post has attachment
I have been working on a research code with a colleague.  In a
comment, I explained why I complicated one part of the code in order
to preserve the strong exception guarantee.  This is a C++ way of
saying "transactional semantics": either the operation succeeds, or it
commits no side effects.  I remarked that preserving the strong
exception guarantee whenever possible is a kata -- practice of a form
that teaches through repetition.  This reminded me of the three stages of mastery:

There are certainly reasons to "digress" (Ha) from the strong
exception guarantee.  One's software may be modeling or interfacing
with a physical system, where side effects commonly accompany (or
cause) failure to perform to specification.  (Light bulbs that don't
turn on probably have a burnt-out filament.)  Keeping the strong
exception guarantee also costs resources, such as temporary copies of input arguments.  Scientific computing tends to push resource
requirements, or at least has done so historically.  Thus, coders
working in this paradigm tend to favor conserving resources, like
memory and operations, at the expense of other guarantees.

The strong exception guarantee is a special case of an "invariant" --
a property of the program that does not change when a particular
routine runs.  I remember invariants as a tedious ritual of my
freshman introduction to programming course, rather like "showing
one's work" in algebra.  Both felt like "repeating the self-evident."
Successive programming courses dropped invariants without comment.  I wonder now whether continuous practice and respect for the "invariants kata" would have simplified some tricky data structures work later on. I wonder also if language support for declaring and checking invariants in my freshman course (we slogged our way through Java, which "dragged C programmers halfway to COBOL") would have made me appreciate their value sooner.

Post has attachment
"I am against adjournment. The day of judgment is either approaching, or it is not. If it is not, there is no cause for an adjournment; if it is, I choose to be found doing my duty. I wish therefore that candles may be brought." -- Abraham Davenport. 


Post has shared content
Originally shared by ****
This is epic. I don't know how it got published in usenix, but I am not complaining.

Of course, pride precedes the fall, and at some point, you realize that to implement aggressive out-of-order execution, you need to fit more transistors into the same die size, but then a material science guy pops out of a birthday cake and says YEAH WE CAN DO THAT

Post has attachment
FYI when citing FT-GMRES please refer to this tech report:

I've had zero time to write papers since then... Siva mentioned the discussion at the ExaMath meeting (he had to elbow Mike to make him realize you folks were talking about him).

Post has attachment

Post has attachment
The first European Trilinos Users' Group Meeting: EPFL Lausanne 04-06 June 2012.

Post has attachment
Wait while more posts are being loaded