Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

13
Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil

Transcript of Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Page 1: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Pontifical Catholic University of Rio Grande do SulPorto Alegre, Brazil

Page 2: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

2

Carregar o módulo HeMPS 5.2◦# module load hemps/5.2

Esse comando irá carregar os seguintess módulos:◦SystemC 2.2◦Xilinx 13.2◦Modelsim 10.3a◦MIPS Cross Compiler v1◦HeMPS 5.2

Page 3: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

3

function hempslocaldist){ source /soft64/Modules/3.2.8/init/bash source /soft64/source_gaph

export JAVA_HOME=/usr/java7/bin export HEMPS_PATH=/home/gcastilhos/hemps5.0/tag/5.0 export PATH=$PATH:$HEMPS_PATH/bin module load ise mips systemc module load modelsim }

Page 4: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

4

Deve-se criar um arquivo .hmp que irá conter as configurações de projeto.

Page 5: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

5

1. [project name] #nome do projeto que será criado2. mpeg_6x6_3x3_13. [tasks per pe] # número de tarefas simultâneas executadas pelo processadores4. 25. [processor description] # o nível de descrição do projeto (sc – SystemC; scmod – SystemC com Modelsim)

6. sc7. [noc buffer size] # tamanho do buffer do roteador8. 89. [noc routing algorthm] # tipo de algoritmo usado no roteamento10. west11. [dimensions] # dimensão da NoC (X e Y)12. 613. 614. [cluster size] # dimensão dos Clusters (X e Y)15. 316. 317. [masters location] # localização dos mestres dentro dos Clusters (atualmente somente LB)18. LB19. [global master] # define qual Cluster terá o Mestre Global20. 021. [application] # define as aplicações que serão inseridas no MPSoC22. mpeg23. [start time] # define em que tempo a aplicação será inserida24. 1 ms

Page 6: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

6

As aplicações são descritas em C. A comunicação entre tarefas de uma aplicação é feita

através das primitivas Send() e Receive(). Cada tarefa da aplicação deverá ser um arquivo .C

separado Todas as tarefas devem estar em uma pasta com o nome

da aplicação.

Page 7: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

7

1. #include <task.h> # Biblioteca que contém as primitivas da HeMPS.

2. #include <stdlib.h>3. 4. Message msg; # Cria uma estrutura para as mensagens.5. 6. int main(){7. int i, j,t;8. Echo("task A started."); # A função Echo() é usado como debug, pois...9. Echo(itoa(GetTick())); # grava em um arquivo o seu conteudo.10. 11. for(i=0;i<10;i++){12. msg.length = 30; # Seta o tamanho da mensagem.13. for(j=0;j<30;j++) msg.msg[j]=i; # Gera conteúdo da mensagem.14. Send(&msg,taskB); # Envia a mensagem criada para a Tarefa B.15. }16. Echo(itoa(GetTick())); # A função GetTick() retorna o tempo em

ciclos...17. Echo("task A finished."); # de clock do sistema.18. exit(); # Função exit() termina a tarefa.19. }

Ex.: Tarefa A mandando dados para a Tarefa B

Page 8: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

8

1. #include <task.h>2. #include <stdlib.h>3. 4. Message msg;5. 6. int main(){7. int i, j,t;8. Echo("task B started.");9. Echo(itoa(GetTick()));10. 11. for(i=0;i<10;i++){12. Receive(&msg,taskA); # Recebe as mensagens enviadas pela Tarefa A13. }14. Echo(itoa(GetTick()));15. Echo("task B finished.");16. exit();17. }

Ex.: Tarefa B recebendo dados da Tarefa A

Page 9: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

9

Criação do MPSoC◦ # perl $HEMPS_PATH/scripts/hemps.pl exemplo.hmp $path_aplicação

-- Cria o MPSoC e compila o Software

Execução do MPSoC◦ # cd exemplo -- Entrar na pasta do projeto criado◦ # make all -- Compila o Hardware◦ # ./HeMPS -c 50 -- Executa o MPSoC por um tempo de 50 ms

Caso a execução termine com sucesso (todas as aplicações terminem), aparecerá a mensagem “END OF ALL APPLICATIONS!!”

Page 10: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

10

É possível visualizar o mapeamento das tarefas, bem como o tempo que elas foram alocadas e quando terminaram através de duas maneiras:◦ um script chamado hemps-read.pl (ele já se encontra no

path).Ex.: # hemps-read.pl exemplo.hmp

Page 11: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

11

O outro método para Debug, é uma ferramenta gráfica no qual se é capaz de visualizar o mapeamento das tarefas e as mensagens trocadas entre processadores. Um programa em java, localizado na pasta “bin”

Page 12: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

12

◦ Criar uma aplicação que ordene vetores e que possua 3 tarefas: Vetor 1: {33;1;21;12;11;18;2} Vetor 2: {55;43;42;67;90;77;40}

A

CB

1. Tarefa A envia um vetor para cada uma das outras tarefas

A

CB

2. As Tarefas B e C ordenam os vetores

A

CB

3. As Tarefas B e C enviam os vetores ordenados para a Tarefa A

A

CB

4. A Tarefa A imprime (Echo) o vetor ordenado

Page 13: Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil.

Tutorial HeMPS

13

FIM