Guest User

Untitled

a guest
May 24th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. package main
  2.  
  3. import "math/rand"
  4. import "time"
  5. import "fmt"
  6.  
  7. const MAT_SIZE = 500
  8.  
  9. func multiply(a [MAT_SIZE][MAT_SIZE]float64, b [MAT_SIZE][MAT_SIZE]float64) [MAT_SIZE][MAT_SIZE]float64 {
  10. var c [MAT_SIZE][MAT_SIZE]float64
  11. for i := range a {
  12. for j := range a {
  13. for k := range a {
  14. c[i][j] += a[i][k] * b[k][j]
  15. }
  16. }
  17. }
  18. return c
  19.  
  20. }
  21.  
  22. func genMat() [MAT_SIZE][MAT_SIZE]float64 {
  23.  
  24. var a [MAT_SIZE][MAT_SIZE]float64
  25. for i := range a {
  26. for j := range a[i] {
  27. a[i][j] = rand.Float64() * 100
  28. }
  29. }
  30. return a
  31. }
  32. func main() {
  33. var a [MAT_SIZE][MAT_SIZE]float64
  34. var b [MAT_SIZE][MAT_SIZE]float64
  35. var c [MAT_SIZE][MAT_SIZE]float64
  36. a = genMat()
  37. b = genMat()
  38.  
  39. start := time.Now()
  40. c = multiply(a, b)
  41. ellapsed := time.Since(start)
  42. fmt.Println(c[0][0]) //for avoiding error
  43. fmt.Printf("Time ellapsed %f seconds\n", ellapsed.Seconds())
  44. fmt.Printf("MFLOPS: %f", (MAT_SIZE*MAT_SIZE*MAT_SIZE*2)/(1000000.0*ellapsed.Seconds()))
  45. //AVG MFLOPS 400
  46. }
Add Comment
Please, Sign In to add comment