program_mult_manycore.go 2.0 KB

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