A collection of packages to provide BLAS functionality for the Go programming language
go get github.com/gonum/blas
If you want to use OpenBLAS, install it in any directory:
git clone https://github.com/xianyi/OpenBLAS
cd OpenBLAS
make
The blas/cgo package provides bindings to C-backed BLAS packages. blas/cgo needs the CGO_LDFLAGS
environment variable to point to the blas installation. More information can be found in the
cgo command documentation.
Then install the blas/cgo package:
CGO_LDFLAGS="-L/path/to/OpenBLAS -lopenblas" go install github.com/gonum/blas/cgo
For Windows you can download binary packages for OpenBLAS at SourceForge.
If you want to use a different BLAS package such as the Intel MKL you can
adjust the CGO_LDFLAGS
variable:
CGO_LDFLAGS="-lmkl_rt" go install github.com/gonum/blas/cgo
On OS X the easiest solution is to use the libraries provided by the system:
CGO_LDFLAGS="-framework Accelerate" go install github.com/gonum/blas/cgo
Defines BLAS API split in several interfaces.
Go implementation of the BLAS API (incomplete, implements the float32
and float64
API)
Binding to a C implementation of the cblas interface (e.g. ATLAS, OpenBLAS, Intel MKL)
The recommended (free) option for good performance on both Linux and Darwin is OpenBLAS.
Wrappers for an implementation of the double (i.e., float64
) and single (float32
)
precision real parts of the blas API
package main
import (
"fmt"
"github.com/gonum/blas/blas64"
)
func main() {
v := blas64.Vector{Inc: 1, Data: []float64{1, 1, 1}}
fmt.Println("v has length:", blas64.Nrm2(len(v.Data), v))
}
Wrappers for an implementation of the double (i.e., complex128
) and single (complex64
)
precision complex parts of the blas API
Currently blas/cblas64 and blas/cblas128 require blas/cgo.
If you find any bugs, feel free to file an issue on the github issue tracker for gonum/gonum or gonum/netlib for the CGO implementation if the bug exists in that reposity; no code changes will be made to this repository. Other discussions should be taken to the gonum-dev Google Group.
https://groups.google.com/forum/#!forum/gonum-dev
Please see github.com/gonum/license for general license information, contributors, authors, etc on the Gonum suite of packages.