mirror of
https://github.com/gonum/gonum.git
synced 2025-10-05 23:26:52 +08:00
45 lines
827 B
Go
45 lines
827 B
Go
// Copyright ©2014 The Gonum Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package testblas
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"golang.org/x/exp/rand"
|
|
|
|
"gonum.org/v1/gonum/blas"
|
|
)
|
|
|
|
func DgemmBenchmark(b *testing.B, dgemm Dgemmer, m, n, k int, tA, tB blas.Transpose) {
|
|
a := make([]float64, m*k)
|
|
for i := range a {
|
|
a[i] = rand.Float64()
|
|
}
|
|
bv := make([]float64, k*n)
|
|
for i := range bv {
|
|
bv[i] = rand.Float64()
|
|
}
|
|
c := make([]float64, m*n)
|
|
for i := range c {
|
|
c[i] = rand.Float64()
|
|
}
|
|
var lda, ldb int
|
|
if tA == blas.Trans {
|
|
lda = m
|
|
} else {
|
|
lda = k
|
|
}
|
|
if tB == blas.Trans {
|
|
ldb = k
|
|
} else {
|
|
ldb = n
|
|
}
|
|
ldc := n
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
dgemm.Dgemm(tA, tB, m, n, k, 3.0, a, lda, bv, ldb, 1.0, c, ldc)
|
|
}
|
|
}
|