program_mult_manycore.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // Aplica o back-end do juninho
  2. @target : mipsjun
  3. @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp`
  4. // Quantidade de palavras de um bloco 32 palavras de 4bytes
  5. @cacheBlockSize: `32`
  6. /**
  7. Profile de compilacao do back-end
  8. O formato da string é um json que descreve um array de definições de cada core
  9. {
  10. "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão
  11. "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
  12. "id": "core0" -> label que define o codigo de cada core
  13. },
  14. Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria
  15. */
  16. @profile: `[
  17. {
  18. "id" : "core0",
  19. "initFunction" : "multiplica(0)",
  20. "filename" : "%s_core_0.txt"
  21. },
  22. {
  23. "id" : "core1",
  24. "initFunction" : "multiplica(5)",
  25. "filename" : "%s_core_1.txt"
  26. },
  27. {
  28. "id" : "core2",
  29. "initFunction" : "multiplica(10)",
  30. "filename" : "%s_core_2.txt"
  31. },
  32. {
  33. "id" : "core3",
  34. "initFunction" : "multiplica(15)",
  35. "filename" : "%s_core_3.txt"
  36. }
  37. ]`
  38. package main;
  39. const (
  40. LIN = 20
  41. COL = 20
  42. NUM_LINHAS_MULT = 5
  43. )
  44. var (
  45. matrizA [LIN][COL]int
  46. matrizB [LIN][COL]int
  47. matrizR [LIN][COL]int
  48. )
  49. func multiplica(initial int) {
  50. aux := 0
  51. limit := initial + NUM_LINHAS_MULT
  52. for i := initial; i < limit; i++ {
  53. for j := 0; j < COL; j++ {
  54. for k := 0; k < LIN; k++ {
  55. aux = aux + (matrizA[i][k] * matrizB[k][j])
  56. }
  57. matrizR[i][j] = aux
  58. aux = 0
  59. }
  60. }
  61. x()
  62. }
  63. func x() int {
  64. a := 1
  65. return a
  66. }