Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "math/rand"
- import "time"
- import "fmt"
- const MAT_SIZE = 500
- func multiply(a [MAT_SIZE][MAT_SIZE]float64, b [MAT_SIZE][MAT_SIZE]float64) [MAT_SIZE][MAT_SIZE]float64 {
- var c [MAT_SIZE][MAT_SIZE]float64
- for i := range a {
- for j := range a {
- for k := range a {
- c[i][j] += a[i][k] * b[k][j]
- }
- }
- }
- return c
- }
- func genMat() [MAT_SIZE][MAT_SIZE]float64 {
- var a [MAT_SIZE][MAT_SIZE]float64
- for i := range a {
- for j := range a[i] {
- a[i][j] = rand.Float64() * 100
- }
- }
- return a
- }
- func main() {
- var a [MAT_SIZE][MAT_SIZE]float64
- var b [MAT_SIZE][MAT_SIZE]float64
- var c [MAT_SIZE][MAT_SIZE]float64
- a = genMat()
- b = genMat()
- start := time.Now()
- c = multiply(a, b)
- ellapsed := time.Since(start)
- fmt.Println(c[0][0]) //for avoiding error
- fmt.Printf("Time ellapsed %f seconds\n", ellapsed.Seconds())
- fmt.Printf("MFLOPS: %f", (MAT_SIZE*MAT_SIZE*MAT_SIZE*2)/(1000000.0*ellapsed.Seconds()))
- //AVG MFLOPS 400
- }
Add Comment
Please, Sign In to add comment