123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // Aplica o back-end do juninho
- @target : mipsjun
- // Diretorio onde o resultado da compilação será gravado
- @outputDirectory : `C:\Users\EUGENIO CARVALHO\Desktop\tmp\comp`
- // Quantidade de palavras de um bloco 32 palavras de 4bytes
- @cacheBlockSize: `32`
- /**
- Profile de compilacao do back-end
- O formato da string é um json que descreve um array de definições de cada core
- {
- "stackBaseAddress" : 5888, -> endereço da base da pilha do core em questão
- "initFunction": "multiplica(0)", -> define a main de cada core. aceita ate 4 parametros com valores de constantes
- "id": "core0" -> label que define o codigo de cada core
- },
- Se "stackBaseAddress" não for definido o compilador irá inferir o valor iniciando do ultimo endereço da memoria
- */
- @profile: `[
- {
- "id" : "core0",
- "initFunction" : "multiplica(0)",
- "filename" : "%s_core_0.txt"
- },
- {
- "id" : "core1",
- "initFunction" : "multiplica(5)",
- "filename" : "%s_core_1.txt"
- },
- {
- "id" : "core2",
- "initFunction" : "multiplica(10)",
- "filename" : "%s_core_2.txt"
- },
- {
- "id" : "core3",
- "initFunction" : "multiplica(15)",
- "filename" : "%s_core_3.txt"
- }
- ]`
- package main;
- const (
- LIN = 20
- COL = 20
- NUM_LINHAS_MULT = 5
- )
- var (
- matrizA [LIN][COL]int
- matrizB [LIN][COL]int
- matrizR [LIN][COL]int
- )
- func multiplica(initial int) {
- tmp := 10
- aux := 0
- x := tmp + 1
- limit := initial + NUM_LINHAS_MULT
- for i := initial; i < x; i++ {
- //for i := initial; i < limit; i++ {
- for j := 0; j < COL; j++ {
- for k := 0; k < LIN; k++ {
- aux = aux + (matrizA[i][k] * matrizB[k][j])
- }
- matrizR[i][j] = aux
- aux = 0
- }
- }
- }
|