top | item 44694194

(no title)

a99c43f2d565504 | 7 months ago

As far as I understand, there was a similar mess with CPUs some 50 years ago: All computers were different and there was no such thing as portable code. Then problem solvers came up with abstractions like the C programming language, allowing developers to write more or less the same code for different platforms. I suppose GPUs are slowly going through a similar process now that they're useful in many more domains than just graphics. I'm just spitballing.

discuss

order

jcranmer|7 months ago

The first portable programming language was, uh, Fortran. Indeed, by the time the Unix developers are thinking about porting to different platforms, there are already open source Fortran libraries for math routines (the antecedents of LAPACK). And not long afterwards, the developers of those libraries are going to get together and work out the necessary low-level kernel routines to get good performance on the most powerful hardware of the day--i.e., the BLAS interface that is still the foundation of modern HPC software almost 50 years later.

(One of the problems of C is that people have effectively erased pre-C programming languages from history.)

dotancohen|7 months ago

  > I suppose GPUs are slowly going through a similar process now that they're useful in many more domains than just graphics.
I've been waiting for the G in GPU to be replaced with something else since the first CUDA releases. I honestly think that once we rename this tech, more people will learn to use it.

ecshafer|7 months ago

MPU - Matrix Processing Unit

LAPU - Linear Algebra Processing Unit

pjmlp|7 months ago

Computers have been enjoying high level systems languages, a decade predating C.

Yoric|7 months ago

But it's true that you generally couldn't use the same Lisp dialect on two different families of computers, for instance.

Maken|7 months ago

And yet, we are still using handwritten assembly for hot code paths. All these abstraction layers would need to be porous enough to allow per-device specific code.

pizza234|7 months ago

> And yet, we are still using handwritten assembly for hot code paths

This is actually a win. It implies that abstractions have a negligible (that is, existing but so small that can be ignored) cost for anything other than small parts of the codebase.