BlasGo is a wrapper library providing BLAS routines in Go.
BlasGo tries to bring BLAS functions to "pure" Go, using BLAS implementation libraries (Intel MKL, NVIDIA CUDA etc). BlasGo needs a CBLAS/BLAS implementation library (Eg: OpenBLAS, ATLAS, etc.) to link against.
This is not a pure Go implementation of BLAS. Rather, this package bridges CBLAS/BLAS implementations with Go. The advantage is that it may be faster than pure Go implementation of BLAS functions, when used with accelereted library for running hardware.
This is a Work in Progress.
This package should be able to link against any CBLAS/BLAS implementation. The cgo build flags has to be set accordingly. View Linking instructions for more details.
Currently, the following libraries are tested:
Library | Linux | Windows |
---|---|---|
BLAS Reference | ☑ | ☑ |
OpenBLAS | ☑ | ☑ |
Intel MKL | ☑ | ☑ |
NVIDIA NVBLAS* | ☑ | ☑ |
* - Needs BLAS flag while linking. See Linking instructions for more details.
List of implementations: Wiki
Any contributions in the form of issues or pull requests are always welcome. Feel free to contribute!