flame / blis

BLAS-like Library Instantiation Software Framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GPU support and PortBLAS

chsasank opened this issue · comments

I see in your readme that you're interested in GPU support. A library like yours called PortBLAS exists which promises performance portability across different GPUs: https://github.com/codeplaysoftware/portBLAS. It uses sycl standard and this library used to be called sycl-blas. I wonder if some inspiration (or code) can be take from here to support GPUs for BLIS.

Am no expert at BLAS stuff, but happy to contribute if hand holded a bit.

DGEMM cannot and will not be performance portable unless your standards for performance are low. There are decades of empirical results confirming this.

I think with a pinch of autotuning, I think it is possible. For example, see what triton does for matrix multiplication. No hard coding of important parameters and higher level abstraction. Nothing specific to Nvidia anymore.

If your definition of performance portability is the same binary and no hardware specific optimizations, I agree with you. But I guess, my definition of that is not dissimilar to BLIS's own version of it: https://github.com/flame/blis/tree/master/config

my definition of that is not dissimilar to BLIS's own version of it: https://github.com/flame/blis/tree/master/config

We welcome your contributions of new configurations, to accompany the ones you've discovered in blis/config. And you are welcome to use autotuning to assist your (micro)kernel development.

Unfortunately BLIS doesn't compile to any sort of GPU :(