blas 是一款开发包收集器,为 Go 语言提供
BLAS
功能
。
安装:
<pre class="brush:java;toolbar: true; auto-links: false;">go get github.com/gonum/blas</pre>
BLAS C-绑定:
如果你想使用
OpenBLAS,可在任何目录安装(更多信息,可在
[cgo command documentation](http://golang.org/cmd/cgo/)中查看):
<pre class="brush:java;toolbar: true; auto-links: false;">git clone https://github.com/xianyi/OpenBLAS cd OpenBLAS
make</pre>
然后安装BLAS/ CGO包:
<pre class="brush:java;toolbar: true; auto-links: false;"> CGO_LDFLAGS="-L/path/to/OpenBLAS -lopenblas" go install github.com/gonum/blas/cgo</pre>
如果要使用不同的BLAS包如Intel MKL可以调整CGO LDFLAGS变量:
<pre class="brush:java;toolbar: true; auto-links: false;"> CGO_LDFLAGS="-lmkl_rt" go install github.com/gonum/blas/cgo</pre>
在OS X上最简单的解决方案是使用系统提供的文库:
<pre class="brush:java;toolbar: true; auto-links: false;">CGO_LDFLAGS="-framework Accelerate" go install github.com/gonum/blas/cgo</pre>
开发包:
blas:定义了多个接口BLAS API接口。
blas/native:Go
实施BLAS API的(不完全实现了FLOAT32和float64
API)。
blas/cgo:
绑定到
C实现
cblas接口(如ATLAS,OpenBLAS,英特尔
MKL),OpenBLAS是为Linux和Darwin良好性能的最佳推荐。
blas/blas64 and blas/blas32:该BLAS API为双(i.e., float64) 和单 (float32)精准的实施提供打包:
<pre class="brush:java;toolbar: true; auto-links: false;">package mainimport ( "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))
}</pre>
blas/cblas128 and blas/cblas64:该BLAS API为双(即complex128)和单的实现封装(complex64)精密复杂零件。
###