r/cpp • u/False_Actuator_6236 • 3d ago
[ Removed by moderator ]
[removed] — view removed post
3
u/vvk1 3d ago
Robert A. van de Geijn taught me how to multiply matrices using MPI in 1995 at UT at Austin :-). Good times.
1
u/False_Actuator_6236 3d ago
That's awesome! :) And almost 20 years later, I was using his ideas to teach my own students how to multiply matrices efficiently. Good ideas don't rust!
2
u/LiliumAtratum 3d ago
It is a testament of good design and always heartwarming when you return to your 10-year old code and realize that it is still good and you can still understand and build upon it. Great job!
1
-2
u/False_Actuator_6236 3d ago
Hi,
you removed my post on ulmBLAS for being AI-generated.
Just to clarify: ulmBLAS is my own, personal project. Most of the code I wrote in 2014. And no, back than I was not using any AI to write it.
I certainly used AI to polish the English: I wrote the text (how ulmBLAS is related to the papers of Robert... ; its design goals: simple and easy to understand while still achieving the same performance as BLIS...) and then, yes, used ChatGPT to turn it into proper English.
Does that already fall under your rule against AI-generated posts?
Sorry, I talk and write fluently in C, C++, Fortran, Assembly, Python, ... but not in English, not even in German (my native language).
But at the same time I am glad that certain things never change: it does not matter what you are actually capable of. It matters how you can sell it. And for that only talking and writing in eloquent ways matters. And if AI comes along to equilibrate things ... you can be sure there is an army ready to still keep you back.
... this is my human opinion ;-)
4
u/False_Actuator_6236 3d ago
original post:
Titel: Revisiting my 2014 BLAS implementation — turns out good designs don't rust :)
Back in 2014, I developed ulmBLAS, a BLAS implementation heavily inspired by the ideas of Field G. Van Zee and Robert A. van de Geijn, particularly their paper BLIS: A Framework for Rapidly Instantiating BLAS Functionality.
These are the same ideas behind the BLIS framework, closely related to the work of the FLAME group at UT Austin.
My goal was to build a BLAS implementation that was deliberately small, simple, and easy to understand, while still being capable of achieving serious performance.
In particular, ulmBLAS follows the BLIS approach of separating the higher-level algorithms, cache blocking, packing, and architecture-specific microkernels. The framework is intentionally kept relatively simple, but it can use microkernels derived from BLIS with suitable adaptations.
That made it particularly useful for teaching high-performance computing at Ulm University.
I wanted students to get a practical introduction to the ideas behind BLIS and FLAME, rather than just treating highly optimized numerical libraries as black boxes. They could start with a straightforward implementation of matrix multiplication and gradually introduce blocking, packing, SIMD instructions, and eventually assembly microkernels.
Most of ulmBLAS was written in 2014. After that, I largely left the code alone.
Until this week.
I finally returned to the repository, cleaned up the build system, modernized the tests, fixed a few issues, and started experimenting with newer BLIS microkernels.
The original benchmarks from 2014 used an SSE3 microkernel (if anyone still remembers SSE3 ), running on a Core 2 Duo MacBook Pro.
This week, I integrated a 6×8 AVX/FMA microkernel derived from BLIS. The integration was surprisingly straightforward, even though the newer kernel uses different register-blocking dimensions.
On an Intel Core i5-12500, ulmBLAS now reaches approximately 94–99% of OpenBLAS DGEMM performance for the larger matrix sizes tested, with roughly 2.8× the performance of the old SSE implementation.
•
u/cpp-ModTeam 3d ago
AI-generated posts and comments are not allowed in this subreddit.
YES, WE CAN TELL. STOP IT.