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.go111
1 files changed, 0 insertions, 111 deletions
diff --git a/test/bench/spectral-norm-parallel.go b/test/bench/spectral-norm-parallel.go
deleted file mode 100644
index 2706f39ec..000000000
--- a/test/bench/spectral-norm-parallel.go
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the name of "The Computer Language Benchmarks Game" nor the
- name of "The Computer Language Shootout Benchmarks" nor the names of
- its contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/* The Computer Language Benchmarks Game
- * http://shootout.alioth.debian.org/
- *
- * contributed by The Go Authors.
- * Based on spectral-norm.c by Sebastien Loisel
- */
-
-package main
-
-import (
- "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)) }
-
-type Vec []float64
-
-func (v Vec) Times(i, n int, u Vec, c chan int) {
- for ; i < n; i++ {
- v[i] = 0
- for j := 0; j < len(u); j++ {
- v[i] += evalA(i, j) * u[j]
- }
- }
- c <- 1
-}
-
-func (v Vec) TimesTransp(i, n int, u Vec, c chan int) {
- for ; i < n; i++ {
- v[i] = 0
- for j := 0; j < len(u); j++ {
- v[i] += evalA(j, i) * u[j]
- }
- }
- c <- 1
-}
-
-func wait(c chan int) {
- for i := 0; i < *nCPU; i++ {
- <-c
- }
-}
-
-func (v Vec) ATimesTransp(u Vec) {
- 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)
- for i := 0; i < *nCPU; i++ {
- go v.TimesTransp(i*len(v) / *nCPU, (i+1)*len(v) / *nCPU, x, c)
- }
- wait(c)
-}
-
-func main() {
- flag.Parse()
- runtime.GOMAXPROCS(*nCPU)
- N := *n
- u := make(Vec, N)
- for i := 0; i < N; i++ {
- u[i] = 1
- }
- v := make(Vec, N)
- for i := 0; i < 10; i++ {
- v.ATimesTransp(u)
- u.ATimesTransp(v)
- }
- var vBv, vv float64
- for i := 0; i < N; i++ {
- vBv += u[i] * v[i]
- vv += v[i] * v[i]
- }
- fmt.Printf("%0.9f\n", math.Sqrt(vBv/vv))
-}