betterscientificsoftware / bssw.io

Better Scientific Software Homepage
https://bssw.io
Other
140 stars 90 forks source link

Paper on performance, portability and productivity trade offs #542

Open markcmiller86 opened 4 years ago

markcmiller86 commented 4 years ago

I ran across a paper addressing at a high level the topics of performance, portability and productivity. DOI: https://doi.org/10.1016/j.compfluid.2020.104425 Didn't read the entire paper but what I did read I found interesting. One weak area is that all of the arguments are expositions as opposed to tabularized or plotted quantitative analyses. Still, I think it potentially captures some of the high level trade offs quite well.

bartlettroscoe commented 4 years ago

Seems like at least one person should read the entire paper before we endorse it by putting up a curated content article. I think we need to discuss what an "up" vote means at this stage of "Topic Review". Does it mean we like the area covered in the article and think it should be read in detail before deciding to create a PR or does it mean we will commit to create a PR for the article?

bernhold commented 4 years ago

If I were reviewing this paper, I'd have some feedback for the authors. Assuming it has been successfully reviewed and published (Mark's link is a preprint), I think it could have some value as a CC article. Though we're opening the door to a vast number of individual performance portability studies, which might bear consideration. This particular paper summarizes a lot of other work. Would we be open to all of those individual articles, or only "reviews" like this one? I'd like to have a +0.5 thumb to vote on this one.

pagrubel commented 3 years ago

Would this be the paper we should link to? https://www.sciencedirect.com/science/article/pii/S0045793020300013

pagrubel commented 3 years ago

https://doi.org/10.1016/j.compfluid.2020.104425

markcmiller86 commented 1 month ago

I'll take this for October

rinkug commented 3 weeks ago

@markcmiller86 : Can you take this up for november?

markcmiller86 commented 3 weeks ago

Sure thing.

Capturing a ChatGPT summary here...

This journal article discusses the evolving landscape of high performance computing (HPC) architectures over the past decade and their implications for computational fluid dynamics (CFD) applications. It highlights three main challenges faced by developers: achieving good performance, ensuring portability across current and future hardware, and maintaining productivity. Traditional programming approaches struggle to meet all three goals simultaneously, but recent advances in template libraries and Domain Specific Languages (DSLs) offer potential solutions by sacrificing generality for specialized focus.

The paper reviews various high-level libraries and low-level techniques that aid in describing partial differential equations (PDEs) symbolically and targeting specific algorithmic patterns respectively. It also examines the benefits and challenges of these methods, including their performance on different hardware architectures and programming models.

Significantly, the paper details the tension between maximizing performance and ensuring portability and productivity. It discusses the adoption of separate computational accelerators like GPUs, which have led to a heterogeneous computing environment. This has necessitated the development of new programming paradigms and tools that separate the "what" of computation from the "how," moving away from traditional imperative programming languages like C or Fortran.

Furthermore, the article discusses various software libraries and tools that have been developed to target specific problem domains in CFD, which help address these challenges by offering a balance between performance, portability, and productivity. It mentions several notable libraries and frameworks, such as Kokkos and RAJA, which provide abstraction layers to facilitate portability across different computing environments while still aiming to harness optimal performance from the underlying hardware.

Overall, the article provides a comprehensive overview of the state-of-the-art techniques in programming for CFD within the context of modern and evolving HPC architectures, highlighting both the progress and ongoing challenges in the field.