program_jun_mult_manycore.go 2.0 KB

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