150 likes | 236 Views
Programa de Pós-Graduação em Ciência da Computação. Modelando uma Aplicação para Mapeamento em NoC. César Augusto Missio Marcon. Definição do Problema. 1. Problema: Temos uma aplicação que requer alto desempenho. O que pode ser feito para atender este desempenho?
E N D
Programa de Pós-Graduação em Ciência da Computação ModelandoumaAplicação para Mapeamentoem NoC César Augusto Missio Marcon
Definição do Problema 1. Problema: Temos uma aplicação que requer alto desempenho. O que pode ser feito para atender este desempenho? • Escolher uma arquitetura alvo que atenda a esta demanda • Descrever a aplicação de forma a ter baixa complexidade temporal • ...
Definição do Problema 1. Problema: Temos uma aplicação que requer alto desempenho. O que pode ser feito para atender este desempenho? • Escolher uma arquitetura alvo que atenda a esta demanda 2. A arquitetura alvo que atende a esta demanda é composta por diversos processadores. O que isto afeta no problema? • Relação computação, armazenamento e comunicação • Grão de computação afeta a relação • Aplicação deve ser descrita de maneira a utilizar eficientemente estes processadores • Descrição paralela e concorrente • ...
Definição do Problema 1. Problema: Temos uma aplicação que requer alto desempenho. O que pode ser feito para atender este desempenho? • Escolher uma arquitetura alvo que atenda a esta demanda. 2. A arquitetura alvo que atende a esta demanda é composta por diversos processadores. O que isto afeta no problema? • Aplicação deve ser descrita de maneira a utilizar eficientemente estes processadores • Descrição paralela e concorrente 3. O que mais é necessário saber? • Bem, até agora temos informação sobre processamento da arquitetura alvo. E quanto ao armazenamento comunicação? • Existem outros requisitos e restrições que norteiam a aplicação? • Redução do consumo de energia • Aumento do tempo de vida da arquitetura alvo • Tolerância a falhas de operação • ...
Definição do Problema 3. O que mais é necessário saber? • Bem, até agora temos informação sobre processamento da arquitetura alvo. E quanto ao armazenamento comunicação? 4. Arquitetura alvo composta por diversos processadores do mesmo tipo, cada um com sua própria hierarquia de memória. Espaço de endereçamento próprio, caracterizando uma máquina NORMA (multicomputador). Como isto pode ajudar? • Descrição paralela composta por tarefas comunicantes através de troca de mensagem • Troca de mensagem requer saber latência das comunicações • ...
Definição do Problema 4. Arquitetura alvo composta por diversos processadores do mesmo tipo, cada um com sua própria hierarquia de memória. Espaço de endereçamento próprio, caracterizando uma máquina NORMA (multicomputador). Como isto pode ajudar? • Descrição paralela composta por tarefas comunicantes através de troca de mensagem • Troca de mensagem requer saber latência das comunicações 5. Processadores se comunicam com latências que são afetadas pela arquitetura de comunicação (e.g. rede do tipo malha). Como isto pode ajudar? • Arquitetura alvo implica que a posição das tarefas afete o desempenho da aplicação (e.g. tarefas altamente comunicantes posicionadas em processadores com alta latência de comunicação atrasam a troca de mensagem) • Usar técnica de mapeamento estático/dinâmico de tarefas • ...
Definição do Problema 5. Processadores se comunicam com latências que são afetadas pela arquitetura de comunicação (e.g. rede do tipo malha). Como isto pode ajudar? • Arquitetura alvo implica que a posição das tarefas afete o desempenho da aplicação (e.g. tarefas altamente comunicantes posicionadas em processadores com alta latência de comunicação atrasam a troca de mensagem) • Usar técnica de mapeamento estático/dinâmico de tarefas 6. Mas tarefas podem ser mapeadas no mesmo processador, e se comunicarem por memória compartilhada! Necessito de mais restrições... • Supor que cada processador suporte eficientemente apenas uma tarefa (problemas podem ser: SOque não faz escalonamento, falta de espaço na área de dados/instruções, ...) • Mapeamento é necessário!
Definição do Problema 6. Mas tarefas podem ser mapeadas no mesmo processador, e se comunicarem por memória compartilhada! Necessito de mais restrições... • Supor que cada processador suporte eficientemente apenas uma tarefa (problemas podem ser: SOque não faz escalonamento, falta de espaço na área de dados/instruções, ...) • Mapeamento é necessário! 7. Ótimo! Vamos ao trabalho... • Já tenho a aplicação paralela (descrita em C++) • Cada tarefa é uma thread. Threads trocam mensagens através de sockets • A arquitetura alvo é um MPSoC homogêneo (mesmos processadores) baseado em NoC malha 2D • Compilador gera código objeto para cada tarefa • Posso compilar as tarefas, colocar em processadores e executar a aplicação • Tenho que decidir o mapeamento (tarefa x processador)
Definição do Problema 7. Ótimo! Vamos ao trabalho... • Já tenho a aplicação paralela (descrita em C++) • Cada tarefa é uma thread. Threads trocam mensagens através de sockets • A arquitetura alvo é um MPSoC homogêneo (mesmos processadores) baseado em NoC malha 2D • Compilador gera código objeto para cada tarefa • Posso compilar as tarefas, colocar em processadores e executar a aplicação • Tenho que decidir o mapeamento (tarefa x processador) 8. Como fazer o mapeamento? • Método exaustivo • Faça um conjunto de associações tarefa-processador • Execute a aplicação e anote o tempo • Faça outra associação diferente das já feitas • Repita procedimento enquanto não forem feitas todas as associações possíveis • A(s) melhor(es) associações define(m) o(s) melhor(es) mapeamento(s)
Definição do Problema 8. Como fazer o mapeamento? • Método exaustivo • Faça um conjunto de associações tarefa-processador • Execute a aplicação e anote o tempo • Faça outra associação diferente das já feitas • Repita procedimento enquanto não forem feitas todas as associações possíveis • A(s) melhor(es) associações define(m) o(s) melhor(es) mapeamento(s) 9. Problema: Executar a aplicação leva em média 20min • Arquitetura tem 9 processadores e aplicação tem igualmente 9 tarefas • Todas tarefas em todas posições gera 9! (362880) possibilidades • Executar todas possibilidades dá 362880 x 20min = 7257600min= 120960horas = 5040dias = 13,8anos • Isto sem computar tempo do setup (colocar as tarefas nas memórias de cada processador e reiniciar o sistema) • Melhor escolher outra alternativa
Definição do Problema 9. Problema: Executar a aplicação leva em média 20min • Arquitetura tem 9 processadores e aplicação tem igualmente 9 tarefas • Todas tarefas em todas posições gera 9! (362880) possibilidades • Executar todas possibilidades dá 362880 x 20min = 7257600min= 120960horas = 5040dias = 13,8anos • Isto sem computar tempo do setup (colocar as tarefas nas memórias de cada processador e reiniciar o sistema) • Melhor escolher outra alternativa 10. Ideias... • Reduzir tempo de execução da aplicação pode ajudar... • Efeito linear, mas ajuda • Explorar menos alternativas pode auxiliar e o efeito pode ser bem melhor que linear... • Ok, mas posso não chegar ao ótimo!
Definição do Problema 10. Ideias... • Reduzir tempo de execução da aplicação pode ajudar... • Efeito linear, mas ajuda • Explorar menos alternativas pode auxiliar e o efeito pode ser bem melhor que linear... • Ok, mas posso não chegar ao ótimo! 11. O que é necessário fazer? • Modelar aplicação obtendo apenas aspectos relevantes ao problema • Problema é escolher um mapeamento que tenha menor latência • Modelar arquitetura alvo para que modelo da aplicação poder ser avaliado em conjunto com a arquitetura • Escolher método para tratar eficientemente os vários mapeamentos • Possivelmente decidindo automaticamente o mapa a ser adotado
Definição do Problema 11. O que é necessário fazer? • Modelar aplicação obtendo apenas aspectos relevantes ao problema • Problema é escolher um mapeamento que tenha menor latência • Modelar arquitetura alvo para que modelo da aplicação poder ser avaliado em conjunto com a arquitetura • Escolher método para tratar eficientemente os vários mapeamentos • Possivelmente decidindo automaticamente o mapa a ser adotado 12. Como modelar aplicação / arquitetura alvo? Qual método? • App.: Eventos discretos • Eventos associados aos "sends" (i.e. associado a cada mensagem) • Arq.: Grafo de conexões valorado • Representa caminhos que mensagens podem usar e quanto custa passar por cada caminho • Met.: SimulatedAnnealing • Escolha de mapeamentos aleatórios com regras para convergir para ótimo
Definição do Problema 12. Como modelar aplicação / arquitetura alvo? Qual método? • App.: Eventos discretos • Eventos associados aos "sends" (i.e. associado a cada mensagem) • Arq.: Grafo de conexões valorado • Representa caminhos que mensagens podem usar e quanto custa passar por cada caminho • Met.: SimulatedAnnealing • Escolha de mapeamentos aleatórios com regras para convergir para ótimo 13. Pensando só na aplicação • Como capturar os eventos? • Executar aplicação e anotar tempo e conteúdo das mensagens • Tempo obtido na execução será igual ao obtido na modelagem? Ou pelo menos relativamente igual? • Mapeamento afeta tempo de execução! O que fazer? • Assumir erro ser irrelevante. Pode? Pense app. como IObounded x CPU bounded... • Outro modelo de App
Definição do Problema 13. Pensando só na aplicação • Como capturar os eventos? • Executar aplicação e anotar tempo e conteúdo das mensagens • Tempo obtido na execução será igual ao obtido na modelagem? Ou pelo menos relativamente igual? • Mapeamento afeta tempo de execução! O que fazer? • Assumir erro ser irrelevante. Pode? Pense app. como IObounded x CPU bounded... • Outro modelo de App 14. Pensando na arquitetura de comunicação • Como modelar topologias? • Para que servem peso nos arcos e ou vértices? • latência, vazão, temperatura, ... • Como posso modelar uma política de arbitragem? • Seria interessante inserir informações estatísticas? Quais? Para que?