Does Guix matters for High-Performance Computing?

personal reflections on High-Performance community tendency

Does Guix matters for High-Performance Computing? Too long, don’t read answer: yes! Guix matters when High-Performance Computing (HPC) is involved to produce results in scientific context. The vital importance of considering the computational environment in scientific context is underlined in various talks or articles, for one instance: « Toward practical transparent verifiable and long-term reproducible research using Guix » (Nature Scientific Data, vol. 9, num. 597, 2022). This post sketches my personal point of view on why HPC community is often reluctant.

A tutorial proposal about Guix got rejected (again) by some High-Performance Computing (HPC) conference. The articulation of opinions below is my way to go over my frustration.

Although the submission of a proposal, as asking for anything, implies to accept beforehand the answer – whatever whether the answer is positive or negative – for sure, as a human, my first reaction after the rejection had been: Oh no! When reading the reviews, my attitude was: Damned! Had the reviewers really read the proposal? Sure they did! I am convinced reviewers did their best to rank all the submissions. Was the tutorial proposal about Guix poorer than others? I do not think so. Different people with various backgrounds had been involved in writing it and this proposal about Guix also included all the comments from past rejections to the same conference.

So, why do I feel frustrated? Mostly because the proposal about Guix is not on the same wavelength as the expectation of this conference speaking to HPC community. Even, I feel the feedback of this specific HPC conference represents a mindset of the HPC community. Do not see a general rule backed by one example but here is my attempt to synthesize the scattered response attitude I got when speaking about computational environment, reproducibility and Guix in scientific HPC circles.

Therefore, I try here to untie (again) my understanding between computing – and especially intensive computing as HPC – and scientific outcome. An opportunity to revisit my previous attempts as « Why GuixHPC matters ».

If you’re thinking without writing, you only think you’re thinking.

– attributed to Leslie Lamport

This post had been written in a hurry right after the rejection answer – almost one month ago from now. Then, it was standing with my other drafts. Today1, I slightly polish it to not slide on useless bitterness and thus to focus on what matters: take a sidestep to move forward.

Let me be explicit with the thesis of this post: HPC community is often focused on Engineering methods and “Guix HPC effort” is focused on Science methods. Do not make it bolder than it reads though. Let try to clarify what I mean.

( Please consider that HPC community is not an homogeneous whole. And I consider myself being part of this community for some part with my own ambiguities. This post needs to be read as a reflection on my own practises. )

Engineering and Science… and Technology

We all use terms that appear clear for us, at first. If I list boxer, poodle, basset, mastiff or fox terrier, then we all think about dogs. All these dogs look different and they also have common characteristics. The term “dog” refers to our (implicit) common understanding of what a “dog” is. Now, if we try to refine and provide an explicit definition for each breed, then it is far to be straightforward. All is becoming much more lengthy or complicated. Another example, consider the very common word “table”; the dictionary reads: “A table is a piece of furniture with a flat top that you put things on or sit at”. And consider this other unrelated dictionary definition: “A chest of drawers is a low, flat piece of furniture with drawers in which you keep clothes and other things.” Is a “chest of drawers” a “table”? Hum, yes and no.

Where am I going? It is difficult to precisely define and bound the terms, as Science or Engineering. For instance, the demarcation problem is the question of how to distinguish between science and non-science, quoting Wikipedia: it examines the boundaries between science, pseudoscience and other products of human activity – the debate continues after more than two millennia of dialogue among philosophers of science and scientists in various fields. Ok, we will not define Science today.

How to unlock? I propose this frame:

  • Engineering (how to): ready knowledge or knowledge of what to do;
  • Science (why): understanding knowledge or knowledge of what it means.

Maybe a example helps in clarifying the frame:

Engineering does not require science. Science helps a lot but people built perfectly good brick walls long before they knew why cement works.

attributed to Alan Cox

Let hope it is enough for a rough intuition of the differences.

Moreover, let make a complementary remark about Technology. This term is ambiguous because it means two distinct concepts:

  1. technology (techno- part): the codified process to make a task;
  2. technology (-logy part): the study and the formal discussion about the techno- part.

Under this frame, the mess pops up! Technology is an ambivalent term: it covers two conceptual meanings with the same term. In private company, the department of technology often works on implementing #1 the first meaning, when in academia, the department of technology often refers to #2 the second meaning. And it is even worse: a new algorithm or CRISPR gene editing or the experimental detection of Higgs boson, is it technology mostly in the meaning of #1 or mainly in the meaning #2? The attitude for answering usually is: hum, well, not sure, it depends… Somehow, both cross-pollinate, right? It becomes complicated to plot a straight line.

Still. Two different approaches rise:

  • Engineering method: it first tries to address technology as #1 then consider #2, eventually. Other said, the criteria for the evaluation is: what do we gain compared to current?
  • Science method: it builds on the top of technology #2 aiming to get a new technology #1. Other said, the criteria for the evaluation is: what do we understand compared to current?

From my point of view, we are touching one of the knots.

( Please do not read any judgement whether one is better than other. It is two different approaches and often complementary: large buildings were up long before mechanics of structures had been deployed; the theory of electromagnetism helped in developing radio. )

Concurrency implies which priority policy?

The two approaches are, somehow, concurrent because they do not focus with the same lens. It implies that one aspect is more valued than the other, and conversely.

This HPC conference – as many others – claims: “conference and exhibition is an annual global gathering for HPC technology providers and users. It aims to foster the growth of a thriving community that now includes practitioners of machine learning, data analytics, and quantum computing.”

Reading between these lines, one would be able to predict the kind of reviews we get with the proposal about Guix. Again, as stated earlier, no blame on reviewers: they did a descent job considering their constraints. From my reading, the reviews or feedback range in these categories:

  • How does it compare to X? How much is this tool better?
  • Portability (or reproducibility) without loosing performances is an hyperbole, because of the hardware. Where can we reap?
  • Why would people invest in this other tool? What do they win?

In short, the proposals seem scrutinized through of the lens of Engineering method (what is concretely gained) when the tutorial proposal about Guix was written using the angle of Science method (how to better understand). It is not a simple off-topic. Instead, I think both aims are different; what is valued as the end and as the mean is dissimilar.

Moreover, a random abstract of this HPC conference reads:

As Moore's Law slows down and semiconductor fabrication costs rise, high performance computing (HPC) is at a critical juncture. Cloud hyperscalers are increasingly dominating computing economics by utilizing custom semiconductors. Meanwhile, AI advancements are transforming scientific computation and our approach to achieving scientific breakthroughs. However, HPC remains the core engine for enabling machine learning applications with ever-rising performance requirements.

During the keynote speech, […] Reinventing High Performance Computing: Challenges and Opportunities.

It means, in my humble opinion, that the aim here is to build first the most powerful technology, preferring the capacity size over the deep verification. It rings Gabor’s law – What can be made, will be made. – but that’s another story.

On one hand, one approach looks as: first explore which properties must hold and second consider how to achieve that. On the other hand, the approach is: let first build what we are able to and second let consider how to exploit it at best. Eiffel tower seems an example of the latter when the Large Hadron Collider of CERN seems an example of the former.

All in all, my naive questions for HPC community are: Why do we compute? Why do we need such high-performance computing? And for which aim resolving which problem?

And so, the conclusion?

I will submit again a proposal to ISC High-Performance conference or others. And obviously, I will continue to engage discussions about the practises of computing; especially High-Performance Computing in scientific context. For sure I am convinced it is worth it!

Perhaps tutorial in an HPC conference is not the best mean to currently reach the HPC community. This asks how to disseminate and this post tries to illustrate that’s a topic by itself. It would be awkward to rely on Engineering methods as marketing strategies2 in order to spread the message “how to challenge the computations in HPC context”, no?

The replication crisis is not gone! Because almost all scientific fields now rely on computing in one way or the other, the computations seems a central part about such replication crisis. We will not dive here into explanations between replication or reproduction, or into details of availability of source code, binaries, data or hardware. Many challenges are still open, sure! Sure too that “Guix HPC effort” is completely up-front!

The HPC context implies the computations are very large and most of the time we collectively do not have the resources to pay twice the cost – electricity, cooling, etc. – and it is often not affordable to re-run. Therefore, this asks the criteria for collectively trusting the result. What if there is a bug? Or a mistake? How to challenge an hypothesis if the complete computational environment cannot be manipulated? I am not aware about many solutions for this problem out there. Drop me a message if any. At least, Guix proposes one by a strict identification of software.

Closing Opening remarks

Technology – both meanings – is a tool (mean) helping in completing a task (end). For sure, the human faculties seek the most efficient tool designed for that task. All the question is thus our common understanding of efficient.

The eternal debate “pragmatism” vs “idealism” or “Worse is Better” vs “The Right Thing” does not make sense. A technology – techno, the codified process to make a task concrete – is an optimization (efficiency) over a set of parameters. The optimizer – “Worse is Better” or “The Right Thing” – does not act on the set of parameters but only on the path to reach an optimal solution subject to the definition of efficient. The true question is the collective definition of this set of parameters. What does it mean an efficient computation? Fast? Accurate? Burning few electricity? What do we value most and what do we accept to renounce first?

We collectively must not loose that computing is one mean to one end. Computing is never the end itself. The challenges of huge high-performance computations are appealing. Yeah, I enjoy such puzzles too! However, in my humble opinion, reinventing High-Performance Computing does not mean to build more and more powerful infrastructures. Instead, I think the true reinvention of HPC means to keep the same computational capacity and to decrease as much as possible its need of resource.

Is the software Guix following the right direction about resource consumption? I fear not. Is it worse than others? I don’t know, it’s probably a bit better, I guess. Could we do better? Yes, low hanging fruits… Do we start today?

Do we start today to consider another value of efficient?

Note: Before publishing on my personal website, I do not ask any endorsement by members of the Guix-HPC effort. This post – as all the others published on my personal website – expresses my own opinion and only my own opinion (freedom of speech). Therefore, I do not know if the views articulated here reflect what the Guix-HPC collective think; they might or not be shared.

This postamble to avoid any confusion on potential controversial discussions and make it clear: I am alone accountable.



What is wrong with the scientific research if the outcome is constrained by supply and demand?

© 2014-2024 Simon Tournier <simon (at) >

(last update: 2024-06-05 Wed 09:47)