2 ms·
Are there programming languages or optimizers that simplify this kind of plumbing?
by amelius 5mo ago
Are there programming languages or optimizers that simplify this kind of plumbing?
- mlochbaum 5mo agoThis is one of the best uses I've found for Singeli[0]. Here's how I implemented an AVX2 transpose kernel similar to that in transpose_Vec256_kernel, for generic type and vector/kernel size (I use unpack instructions rather than shuffle and blend, which I think is probably faster since it's just one instruction for each interaction): https://github.com/dzaima/CBQN/blob/v0.11.0/src/singeli/src/transpose.singeli#L9-L37 https://github.com/dzaima/CBQN/blob/v0.11.0/src/singeli/src/... The language is oriented towards compile-time array programming instead of managing a bunch of individual vectors. So you have runtime vec_select{} (docs at [1]), mirrored by compile-time select{}, and the indices generated by pairs{} can be used in either. [0] https://github.com/mlochbaum/Singeli/ https://github.com/mlochbaum/Singeli/ [1] https://github.com/mlochbaum/Singeli/tree/master/include#simd-selection https://github.com/mlochbaum/Singeli/tree/master/include#sim...
- bsoles 5mo agoMATLAB
- glouwbug 5mo agoThe GOAT. I remember playing with CUDA in there around 2011/2012. GNU Octave if you’re on NIX or you don’t have $40k for a license
- mike_hearn 5mo agoCUDA! And its libraries. A lot of AI engineering is about optimizing matrix operations on GPUs.