德玛西亚99
通过 cgo 调用例如 cblas 很容易:package main// #include <cblas.h>// #cgo LDFLAGS: -L/usr/lib64/atlas -lcblasimport "C"import "fmt"type matrix struct { rows int cols int elems []float32}func (a matrix) cblasmul(b matrix) (c matrix) { c = matrix{a.rows, b.cols, make([]float32, a.rows*b.cols)} C.cblas_sgemm( C.CblasRowMajor, C.CblasNoTrans, C.CblasNoTrans, C.int(a.rows), C.int(b.cols), C.int(a.cols), 1.0, (*C.float)(&a.elems[0]), C.int(a.cols), (*C.float)(&b.elems[0]), C.int(b.cols), 0.0, (*C.float)(&c.elems[0]), C.int(c.cols)) return c}func main() { a := matrix{100, 100, make([]float32, 100*100)} b := matrix{100, 100, make([]float32, 100*100)} // ... c := a.cblasmul(b) fmt.Println(c)}