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

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

Embed Size (px)

Citation preview

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