8 ms·
The art of high performance computing
- mkoubaa 3y agoUT Austin really is a fantastic institution for HPC and computational methods.
- bee_rider 3y agoEvery BLAS you want to use has at least some connection to UT Austin’s TACC.
- mgaunard 3y agoaren't the lapack people in tennessee?
- bee_rider 3y agoSort of like BLAS, LAPACK is more than just one implementation. Dongarra described what everybody should do from Tennesse, but other places implemented it elsewhere.
- mgaunard 3y agoplasma and magma are also from there. I'm not aware of any other significant lapack-related developments, but I might just not know about them.
- victotronics 3y agoNot quite. Every modern BLAS is (likely) based on Kazushige Goto's implementation, and he was indeed at TACC for a while. But probably the best open source implementation "BLIS" is from UT Austin, but not connected to TACC.
- bee_rider 3y agoOh really? I thought BLIS was from TACC. Oops, mea culpa.
- RhysU 3y agohttps://github.com/flame/blis/ https://github.com/flame/blis/ Field et al, recent winners of the James H. Wilkinson Prize for Numerical Software. Field and Goto both collaborated with Robert van de Geijn. Lots of TACC interaction in that broader team.
- davidthewatson 3y agoI was asked to share a TA role on a graduate course in HPC a decade ago. I turned down the offer. After a cursory glance, I can honestly say that if this book were available then, I'd have taken the opportunity. The combination of what I perceive to be Knuth's framing of art, along with carpentry and the need to be a better devops person than your devops person is compelling. Kudos to the author for such an achievement. UT Austin seems to have achieved in computer science what North Texas State did in music.
- deleted 3y ago[deleted]
- atrettel 3y agoI took a course on scientific computing in 2013. It was cross-listed under both the computer science and applied math departments. The issue is that the field is pretty broad overall and a lot of topics were covered in a cursory manner, including anything related to HPC and parallel programming in particular. I don't regret taking the course, but it was too broad for the applications I was pursuing. I haven't looked at what courses are being offered in several years, but when I was a graduate student, I really would have benefited from a dedicated semester-long course on parallel computing, especially going into the weeds about particular algorithms and data structures in parallel and distributed computing. Those were handled in a super cursory manner in the scientific computing course I took, as if somehow you'd know precisely how to parallelize things the first time you try. I've since learned a lot of this stuff on my own and from colleagues over the years, as many people do in HPC, but books like these would have been invaluable as part of a dedicated semester-long course.
- dist1ll 3y agoIt's very interesting how abtracted away HPC sometimes looks from hardware. The books seem to revolve a lot around SPMD programming, algo & DS, task parallelism, synchronization etc, but very little about computer architecture details like supercomputer memory subsystems, high-bandwidth interconnects like CXL, GPU architecture and so on. Are the abstractions and tooling already good enough that you don't need to worry about these details? I'm also curious if HPC practitioners have to fiddle a lot of black-box knobs to squeeze out performance?
- bee_rider 3y agoI don’t think I do HPC (I only will use up to, say, 8 nodes at a time), but the impression I get is that they are already working on quite hard problems at the high-level, so they need to lean on good libraries for the low-level stuff, otherwise it is just too much.
- atrettel 3y agoYes and no. MPI and OpenMP are the primary abstractions from the hardware in HPC, with MPI being an abstracted form of distributed-memory parallel computing and OpenMP being an abstracted form of shared-memory parallel computing. Many researchers write their codes purely using those, often both in the same code. When using those, you really do not need to worry about the architectural details most of the time. Still, some researchers who like to further optimize things do in fact fiddle with a lot of small architectural details to increase performance further. For example, loop unrolling is pretty common and can get quite confusing in my opinion. I vaguely recall some stuff about trying to vectorize operations by preferring addition over multiplication due to the particular CPU architecture, but I do not think I've seen that in practice. Preventing cache misses is another major one, where some codes are written so that the most needed information is stored in the CPU's cache rather than memory. Most codes only handle this by ensuring column-major order loops for array operations in Fortran or row-major order loops in C, but the concept can be extended further. If you know the cache size for your processors, you could hypothetically optimize some operations to keep all of the needed information inside the cache to minimize cache misses. I've never seen this in practice but it was actively discussed in the scientific computing course I took in 2013. The use of particular GPUs depends heavily on the problem being solved, with some being great on GPUs and others being too difficult. I'm not too knowledgeable about that, unfortunately.
- teleforce 3y agoIs there something wrong with the GitHub files since I cannot render any of the textbooks PDF files? https://github.com/VictorEijkhout/TheArtofHPC_pdfs/blob/main/vol1/EijkhoutIntroToHPC.pdf https://github.com/VictorEijkhout/TheArtofHPC_pdfs/blob/main...
- npalli 3y agoI think the files are too large to render in the github browser and they give an error. You can pick the 'download raw' option to download locally and read the file. Worked for me.
- TimMeade 3y agoI just "git clone https://github.com/VictorEijkhout/TheArtofHPC_pdfs.git https://github.com/VictorEijkhout/TheArtofHPC_pdfs.git" on my local drive. Had it all in under a minute.
- rramadass 3y agoJust amazed at how the author has created (and shared for free) such a comprehensive set of books including teaching C++ and Unix tools! There is something to learn for all Programmers (HPC specific or not) here. Related: Jorg Arndt's "Matters Computational" book and FXT library - https://www.jjj.de/fxt/ https://www.jjj.de/fxt/
- rlupi 3y agoI am interested in the more hardware management side of HPC (how problems are detected, diagnosed, mapped into actions such as reboot/reinstall/repairs, how these are scheduled and how that is optimized to provide the best level of service, how this is done if there are multiple objectives to optimize at once e.g. node availability vs overall throughput, how different topologies affect the above, how other constraints affect the above, and in general a system dynamics approach to these problems). I haven't found many good sources for this kind of information. If you are aware of any, please cite them in a comment below.
- synergy20 3y agocheck out openbmc project and DTMF association
- timoteostewart 3y agoDMTF (not DTMF) https://www.dmtf.org/ https://www.dmtf.org/
- CoastalCoder 3y agoThis seemed like a big topic when I was interviewing with Meta and nVidia some months ago. Meta had a few good YouTube videos about the problems of dealing with this many GPUs at scale.
- keefle 3y agoCould you link me the YouTube videos/articles in question? It happens to be my research area and I'm interested in knowing how big companies such as meta deal with multi-GPU systems
- CoastalCoder 3y agoI don't have them bookmarked anymore, but they may have been from this playlist: [0] [0] https://www.youtube.com/playlist?list=PLBnLThDtSXOw_kePWy3CSG7LLf3KdGqQz https://www.youtube.com/playlist?list=PLBnLThDtSXOw_kePWy3CS...
- justin66 3y agoThere is some really good content here for any programmer. And with volume 3, such a contrast: the author teaches C++17 and... Fortran2008.
- toddm 3y agoKudos to Victor for assembling such a wonderful resource! While I am not acquainted with him personally, I did my doctoral work at UT Austin the the 1990's and had the privilege of working with the resources (Cray Y-MP, IBM SP/2 Winterhawk, and mostly on Lonestar, a host name which pointed to a Cray T3E at the time) maintained by TACC (one of my Ph.D. committee members is still on staff!) to complete my work (TACC was called HPCC and/or CHPC if I recall the acronyms correctly). Back then, it was incumbent on the programmer to parallelize their code (in my case, using MPI on the Cray T3E in the UNICOS environment) and have some understanding of the hardware, if only because the field was still emergent and problems were solved by reading the gray Cray ring-binder and whichever copies of Gropp et al. we had on-hand. That and having a very knowledgeable contact as mentioned above :) of course helped...
- victotronics 3y ago> Lonestar, a host name which pointed to a Cray T3E Lonestar5 was a Cray again. Currently Lonestar6 is an oil-immersion AMD Milan cluster with A100 GPUs. The times, they never stand still.
- huitzitziltzin 3y agoDealt with him via TACC for a big simulation I did and was grateful enough for his help to buy a paper copy of the first volume in the series. Very interesting though a bit outside of my area. I will look at the others and encourage anyone interested to check them out.
- LASR 3y agoThe hardware / datacenter side of this is equally fascinating. I used to work in AWS, but on the software / services side of things. But now and then, we would crash some talks from the datacenter folks. One key relevation for me was that increasing compute power in DCs is primarily a thermodynamics problem than actual computing. The nodes have become so dense that shipping power in and shipping heat out, with all kinds of redundancies is an extremely hard problem. And it's not like you can perform a software update if you've discovered some inefficiencies. This was ~10 years ago, so probably some things have changed. What blows me away is that Amazon, starting out as an internet bookstore is at the cutting edge of solving thermodynamics problems.
- projectileboy 3y agoSeymour Cray used to say this all the way back in the 1970s: his biggest problems were associated with dissipating heat. For the Cray 2 he took an even more dramatic approach: "The Cray-2's unusual cooling scheme immersed dense stacks of circuit boards in a special non-conductive liquid called Fluorinert™" (https://www.computerhistory.org/revolution/supercomputers/10/68 https://www.computerhistory.org/revolution/supercomputers/10...)
- logtempo 3y agoFew days ago I saw an article passing by,about chips hiting the kw floor.
- cogman10 3y agoIt always made me wonder why liquid cooling wasn't more of a thing for datacenters. Water has a massive amount of thermal capacity and can quickly and in bulk be cooled to optimal temperatures. You'd probably still need fans and AC to dissipate heat of non-liquid cooled parts, but for the big energy items like CPUs and GPUs/compute engines, you could ship out huge amounts of heat fairly quickly and directly. I guess the complexity and risk of a leak would be a problem, but for amazon sized data centers that doesn't seem like a major concern.
- 3y ago
- jebarker 3y agoI'm interested in what people think of the approach to teaching C++ used here. Any particular drawbacks? I'm a very experienced Python programmer with some C, C++ and CUDA doing application level research in HPC environments (ML/DL). I'd really like to level up my C++ skills and looking through book 3 it seems aimed exactly at the right level for me - doesn't move too slowly and teaches best practices (per the author) rather than trying to be comprehensive.
- leopoldj 3y agoC++ programmer and educator here. This (volume 3) is well organized good beginner level teaching material. You probably know most of it already. I was looking for range-based for loop, std::array and std::span and happy to see that they are all there. Because this book relates to HPC, I'd add a few things: Return Value Optimization, move semantics, and in the recursive function section a note about Tail Call Optimization. As a beginner level material I can highly recommend it.
- jebarker 3y agoThat's great - thank-you. Assuming I work through this quickly, what resources would you recommend as a follow-on?
- rramadass 3y agoI am not the person you asked the question to, but my recommendation would be; 1) Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers by Peter Gottschling - Not too thick and focuses on how to program in the language. 2) Software Architecture with C++: Design modern systems using effective architecture concepts, design patterns, and techniques with C++20 by Adrian Ostrowski et al. - Shows how to use C++ in the modern way/ecosystems i.e. with CI/CD, Microservices etc. Optional but highly recommended; a) Scientific and Engineering C++: An Introduction with Advanced Techniques and Examples by Barton & Nackman - Old pre-Modern C++ book which pioneered many of the techniques which have now become common. One of the best for learning C++ design.
- 3y ago
- lincpa 3y ago[dead]
- guenthert 3y agoWhen joining a small company supporting the engineers of the HPC of a large car manufacturer, I was surprised to see so many in-house developed scripts around the scheduler (LSF). Only much later, when playing myself on a private miniature cluster with SLURM, I noticed that different versions of the scheduler software were generally incompatible to each other, i.e. one couldn't use one inside the cluster and another on external client machine. Hence the need for glue software to inject jobs into the scheduler from outside and retrieve the results later on (IMHO devaluating the scheduler). I would have thought, that after some 30 years of high performance distributed computing, the requirements were well known and at least the protocol for command and data exchange could be fixed. Apparently not so.
- wickberg 3y agoCluster authentication actually remains the sore point for all interactions - for most systems the least-common denominator remains whether one can SSH into a login node. At which point the main job commands - sbatch/squeue - are pretty stable. There have been some attempts to standardize basic job management APIs in the past - DRMAA being one noteworthy example. Although DRMAA v2 was only ever implemented by Grid Engine, and is effectively an lightly-abstracted version of their internal APIs, that has never really seen first-class adoption by Slurm/PBS/LSF. For Slurm, the REST API is meant to be the way forward. It punts the authentication problem to, potentially, anything the admins may care to wire up through an Apache / NGINX proxy. And the basic job submission and status APIs have stablizied to the point that a client application should be able to consume nearly any version going forward.
- kurtabsolon 3y ago[dead]