Skip to content

Commit f9b384a

Browse files
sbinetacxz
authored andcommitted
[Go]: migrate to gonum.org/v1 packages
1 parent b71d2cf commit f9b384a

File tree

1 file changed

+32
-35
lines changed

1 file changed

+32
-35
lines changed

perf.go

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,42 @@
33
// Three gonum packages must be installed, and then an additional environment
44
// variable must be set to use the BLAS installation.
55
// To install the gonum packages, run:
6-
// go get github.com/gonum/blas
7-
// go get github.com/gonum/matrix/mat64
8-
// go get github.com/gonum/stat
6+
// go get gonum.org/v1/netlib/blas/netlib
7+
// go get gonum.org/v1/gonum/mat
8+
// go get gonum.org/v1/gonum/stat
99
// The cgo ldflags must then be set to use the BLAS implementation. As an example,
1010
// download OpenBLAS to ~/software
1111
// git clone https://github.com/xianyi/OpenBLAS
1212
// cd OpenBLAS
1313
// make
14-
// Then edit the enivorment variable to have
14+
// Then edit the environment variable to have
1515
// export CGO_LDFLAGS="-L/$HOME/software/OpenBLAS -lopenblas"
1616
package main
1717

1818
import (
19+
"bufio"
1920
"errors"
2021
"fmt"
2122
"log"
2223
"math"
23-
// "math/cmplx"
2424
"math/rand"
25+
"os"
2526
"strconv"
2627
"testing"
27-
"os"
28-
"bufio"
2928

30-
"github.com/gonum/blas/blas64"
31-
"github.com/gonum/blas/cgo"
32-
"github.com/gonum/matrix/mat64"
33-
"github.com/gonum/stat"
29+
"gonum.org/v1/gonum/mat"
30+
"gonum.org/v1/gonum/stat"
31+
"gonum.org/v1/netlib/blas/netlib"
3432
)
3533

3634
func init() {
3735
// Use the BLAS implementation specified in CGO_LDFLAGS. This line can be
3836
// commented out to use the native Go BLAS implementation found in
39-
// github.com/gonum/blas/native.
40-
//blas64.Use(cgo.Implementation{})
37+
// gonum.org/v1/gonum/blas/gonum.
38+
//blas64.Use(gonum.Implementation{})
4139

4240
// These are here so that toggling the BLAS implementation does not make imports unused
43-
_ = cgo.Implementation{}
44-
_ = blas64.General{}
41+
_ = netlib.Implementation{}
4542
}
4643

4744
// fibonacci
@@ -111,39 +108,39 @@ func randmatstat(t int) (float64, float64) {
111108
bd := make([]float64, n*n)
112109
cd := make([]float64, n*n)
113110
dd := make([]float64, n*n)
114-
P := mat64.NewDense(n, 4*n, nil)
115-
Q := mat64.NewDense(2*n, 2*n, nil)
116-
pTmp := mat64.NewDense(4*n, 4*n, nil)
117-
qTmp := mat64.NewDense(2*n, 2*n, nil)
111+
P := mat.NewDense(n, 4*n, nil)
112+
Q := mat.NewDense(2*n, 2*n, nil)
113+
pTmp := mat.NewDense(4*n, 4*n, nil)
114+
qTmp := mat.NewDense(2*n, 2*n, nil)
118115
for i := 0; i < t; i++ {
119116
for i := range ad {
120117
ad[i] = rnd.NormFloat64()
121118
bd[i] = rnd.NormFloat64()
122119
cd[i] = rnd.NormFloat64()
123120
dd[i] = rnd.NormFloat64()
124121
}
125-
a := mat64.NewDense(n, n, ad)
126-
b := mat64.NewDense(n, n, bd)
127-
c := mat64.NewDense(n, n, cd)
128-
d := mat64.NewDense(n, n, dd)
122+
a := mat.NewDense(n, n, ad)
123+
b := mat.NewDense(n, n, bd)
124+
c := mat.NewDense(n, n, cd)
125+
d := mat.NewDense(n, n, dd)
129126
P.Copy(a)
130-
P.View(0, n, n, n).(*mat64.Dense).Copy(b)
131-
P.View(0, 2*n, n, n).(*mat64.Dense).Copy(c)
132-
P.View(0, 3*n, n, n).(*mat64.Dense).Copy(d)
127+
P.Slice(0, n, n, n+n).(*mat.Dense).Copy(b)
128+
P.Slice(0, n, 2*n, 3*n).(*mat.Dense).Copy(c)
129+
P.Slice(0, n, 3*n, 4*n).(*mat.Dense).Copy(d)
133130

134131
Q.Copy(a)
135-
Q.View(0, n, n, n).(*mat64.Dense).Copy(b)
136-
Q.View(n, 0, n, n).(*mat64.Dense).Copy(c)
137-
Q.View(n, n, n, n).(*mat64.Dense).Copy(d)
132+
Q.Slice(0, n, n, 2*n).(*mat.Dense).Copy(b)
133+
Q.Slice(n, 2*n, 0, n).(*mat.Dense).Copy(c)
134+
Q.Slice(n, 2*n, n, 2*n).(*mat.Dense).Copy(d)
138135

139136
pTmp.Mul(P.T(), P)
140137
pTmp.Pow(pTmp, 4)
141138

142139
qTmp.Mul(Q.T(), Q)
143140
qTmp.Pow(qTmp, 4)
144141

145-
v[i] = mat64.Trace(pTmp)
146-
w[i] = mat64.Trace(qTmp)
142+
v[i] = mat.Trace(pTmp)
143+
w[i] = mat.Trace(qTmp)
147144
}
148145
mv, stdv := stat.MeanStdDev(v, nil)
149146
mw, stdw := stat.MeanStdDev(v, nil)
@@ -152,19 +149,19 @@ func randmatstat(t int) (float64, float64) {
152149

153150
// randmatmul
154151

155-
func randmatmul(n int) *mat64.Dense {
152+
func randmatmul(n int) *mat.Dense {
156153
aData := make([]float64, n*n)
157154
for i := range aData {
158155
aData[i] = rnd.Float64()
159156
}
160-
a := mat64.NewDense(n, n, aData)
157+
a := mat.NewDense(n, n, aData)
161158

162159
bData := make([]float64, n*n)
163160
for i := range bData {
164161
bData[i] = rnd.Float64()
165162
}
166-
b := mat64.NewDense(n, n, bData)
167-
var c mat64.Dense
163+
b := mat.NewDense(n, n, bData)
164+
var c mat.Dense
168165
c.Mul(a, b)
169166
return &c
170167
}

0 commit comments

Comments
 (0)