summaryrefslogtreecommitdiff
path: root/test/bench/spectral-norm-parallel.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/bench/spectral-norm-parallel.go')
-rw-r--r--test/bench/spectral-norm-parallel.go48
1 files changed, 24 insertions, 24 deletions
diff --git a/test/bench/spectral-norm-parallel.go b/test/bench/spectral-norm-parallel.go
index 47882c69d..2706f39ec 100644
--- a/test/bench/spectral-norm-parallel.go
+++ b/test/bench/spectral-norm-parallel.go
@@ -37,37 +37,37 @@ POSSIBILITY OF SUCH DAMAGE.
package main
import (
- "flag";
- "fmt";
- "math";
- "runtime";
+ "flag"
+ "fmt"
+ "math"
+ "runtime"
)
var n = flag.Int("n", 2000, "count")
var nCPU = flag.Int("ncpu", 4, "number of cpus")
-func evalA(i, j int) float64 { return 1 / float64(((i+j)*(i+j+1)/2 + i + 1)) }
+func evalA(i, j int) float64 { return 1 / float64(((i+j)*(i+j+1)/2 + i + 1)) }
type Vec []float64
func (v Vec) Times(i, n int, u Vec, c chan int) {
for ; i < n; i++ {
- v[i] = 0;
+ v[i] = 0
for j := 0; j < len(u); j++ {
v[i] += evalA(i, j) * u[j]
}
}
- c <- 1;
+ c <- 1
}
func (v Vec) TimesTransp(i, n int, u Vec, c chan int) {
for ; i < n; i++ {
- v[i] = 0;
+ v[i] = 0
for j := 0; j < len(u); j++ {
v[i] += evalA(j, i) * u[j]
}
}
- c <- 1;
+ c <- 1
}
func wait(c chan int) {
@@ -77,35 +77,35 @@ func wait(c chan int) {
}
func (v Vec) ATimesTransp(u Vec) {
- x := make(Vec, len(u));
- c := make(chan int, *nCPU);
+ x := make(Vec, len(u))
+ c := make(chan int, *nCPU)
for i := 0; i < *nCPU; i++ {
go x.Times(i*len(v) / *nCPU, (i+1)*len(v) / *nCPU, u, c)
}
- wait(c);
+ wait(c)
for i := 0; i < *nCPU; i++ {
go v.TimesTransp(i*len(v) / *nCPU, (i+1)*len(v) / *nCPU, x, c)
}
- wait(c);
+ wait(c)
}
func main() {
- flag.Parse();
- runtime.GOMAXPROCS(*nCPU);
- N := *n;
- u := make(Vec, N);
+ flag.Parse()
+ runtime.GOMAXPROCS(*nCPU)
+ N := *n
+ u := make(Vec, N)
for i := 0; i < N; i++ {
u[i] = 1
}
- v := make(Vec, N);
+ v := make(Vec, N)
for i := 0; i < 10; i++ {
- v.ATimesTransp(u);
- u.ATimesTransp(v);
+ v.ATimesTransp(u)
+ u.ATimesTransp(v)
}
- var vBv, vv float64;
+ var vBv, vv float64
for i := 0; i < N; i++ {
- vBv += u[i] * v[i];
- vv += v[i] * v[i];
+ vBv += u[i] * v[i]
+ vv += v[i] * v[i]
}
- fmt.Printf("%0.9f\n", math.Sqrt(vBv/vv));
+ fmt.Printf("%0.9f\n", math.Sqrt(vBv/vv))
}