• Nenhum resultado encontrado

4 Algoritmos Desenvolvidos

4.1 Exploração de Espaço de Projeto

As topologias são geradas através de um algoritmo genético que busca combinações de canais que constituam uma rede tolerantes a falhas e capazes de entregar pacotes respeitando o deadline de tempo real. A escolha dessa abordagem heurística se justifica tanto pela sua boa adaptabilidade ao problema proposto quanto pela objetividade na realização de testes e obtenção de resultados.

O algoritmo genético proposto realiza uma exploração de espaço de projeto (DSE - Design Space Exploration) nos canais de comunicação de uma topologia regular mesh-2D. O método de DSE é bastante difundido na construção de sistemas e permite ajustar os vários parâmetros de uma arquitetura com o objetivo de atender aos requisitos necessários de uma aplicação (PISCITELLI; PIMENTEL, 2012). Em NoC, este método permite avaliar

as características da rede durante a fase de design, construindo uma rede para obter desempenho otimizado (OLIVEIRA; KREUTZ, 2020).

A geração de novas topologias teve como ponto de partida uma topologia mesh-2D como a apresentada na Figura 23. Inicialmente, apenas os canais mais externos se en- contram ativados, de forma similar a uma topologia anel. A quantidade de roteadores e a quantidade de tarefas da aplicação fornecida como entrada não interferem no método aqui proposto, sendo possível haver uma diferença na quantidade de ambas com variação

no número de caminho possíveis para a entrega de pacotes. A utilização da mesh-2D, um modelo já bastante difundido, como base simplifica o gerenciamento de recursos da rede, fornece uma estrutura básica às topologias na configuração inicial (Figura 23) que diminui a quantidade de topologias que precisam analisadas em virtude da presença de canais pré-ativados nos roteadores presentes nas bordas.

Figura 23: Topologia Inicial

O Algoritmo 1 sintetiza a heurística proposta. Ela executa uma série de operações para a busca de uma solução correspondente a uma combinação de canais cujas ativações resultem numa topologia que seja capaz de entregar pacotes com deadline de tempo real por mais de um caminho distinto.

Algoritmo 1 Heurística para a geração de topologias

Entrada: Grafo de tarefas da aplicação, dimensões da mesh-2D base Saída: Melhor topologia encontrada

gerarPopulaçãoInicial() repetir cruzamento() mutação() mapeamentoDeTarefas() injeçãoDeFalhas() avaliação() seleção()

até que <condição de parada>

A heurística recebe como entrada o grafo de tarefas de uma aplicação específica e as dimensões da topologia mesh-2D utilizada como base. A Figura 24 apresenta o exemplo de uma solução para o problema, um indivíduo correspondente a um vetor V de tamanho n, onde n é a quantidade de canais permutáveis da rede. As posições do vetor V podem assumir o valor 0 ou 1, onde 0 representa o canal desligado e 1 representa o canal ligado. Neste exemplo, os canais de identificadores 1, 3, 4 e 7 estão ativados, enquanto as posições 2, 5 e 6 encontram-se desativadas.

Figura 24: Exemplo de um indivíduo do Algoritmo Genético para a geração de topologias A metodologia de DSE construída neste trabalho constitui um problema de otimiza- ção, onde as soluções viáveis são valoradas e a melhor dentre elas é escolhida de acordo com sua aptidão para resolução do problema (CORMEN et al., 2009). Uma mesh que possua

N canais internos passíveis de estar ativados ou desativados (assumindo valor 0 ou 1) pode originar um total de 2N topologias distintas, não sendo possível realizar toda a vericação

em tempo de execução polinomial. Uma abordagem exata para este problema NP-Hard demandaria uma grande quantidade tempo para fazer uma verificação completa, portanto a abordagem heurística se torna mais viável para o método aqui proposto.

A Figura 25 apresenta o fluxograma da heurística de geração de topologias. O início da execução ocorre com a formação de uma população inicial para o Algoritmo Genético, onde é gerado um conjunto de 50 soluções distintas sorteando de maneira totalmente aleatória um valor (0 ou 1) para cada posição dos cromossomos. Nesta fase, não é esperado que estas primeiras soluções sejam as melhores, elas são apenas o ponto de partida do processo de otimização desempenhado pelas operações seguintes.

O algoritmo então entra num loop onde cada execução completa é chamada de geração, onde uma série de operações são realizadas para que haja evolução na qualidade das soluções. Na operação de cruzamento, o algoritmo seleciona 5 pares de indivíduos, cada qual contendo um dentre os 5 melhores ranqueados na geração atual e outro aleatoriamente escolhido dentre as soluções restantes. O operador cruzamento origina um novo indivíduo proveniente de cada par, portanto, formando 5 novos indivíduos a cada iteração. Na prática, a construção destas novas soluções ocorre com a combinação das características dos genes presentes em cada par, ou seja, os canais presentes (ativados) nas duas topologias que participam de um cruzamento.

Em seguida, o operador de mutação seleciona aleatoriamente uma quantidade dos genes dos novos indivíduos e altera os seus valores. Nesta etapa, o canal correspondente

Figura 25: Fluxograma da heurística de geração de topologias

ao gene sorteado é desativado caso esteja ativado originalmente, é ativado caso esteja desativado. Esta etapa garante que haja variedade genética na rede ao longo das várias iterações, além de garantir que não haja vícios nos indivíduos que persistirem durante muitas gerações.

A Figura 26 contém exemplos válidos de topologias com disposição de canais que atende aos critérios desejados neste trabalho, um total de 17 canais são ativados dentre os possíveis nos dois exemplos. É possível observar que há redundância de caminhos entre quaisquer pares de roteadores, permitindo a entrega dos pacotes mesmo que haja um rompimento que impeça a utilização de um dos canais da rede.

A Figura 27, por sua vez, apresenta exemplos de topologias indesejadas neste trabalho, situações onde não existe a redundância de caminhos. No caso da Figura 27.a, a topologia possui canais cujas remoções causariam a desconexão de alguns roteadores do restante da rede. A Figura 27.b também trata de algo indesejado, pois a topologia possui um grupo de roteadores que está desconectado do restante da rede.

Na etapa de avaliação de conectividade, o cromossomo da rede é transformado em um grafo e o algoritmo de DFS (Depth-First Search) é utilizado para verificar se a rede possui redundância de caminhos para a entrega de pacotes. O teste consiste em checar se a rede possui roteadores que estão desconectados dos demais, além de conferir se a rede

Figura 26: Exemplos de topologias desejadas neste trabalho possui canais cujas remoções causam a desconexão de algum roteador.

Durante a etapa de mapeamento de tarefas, detalhada na seção 4.2, é verificado atra- vés de simulações na ferramenta NoC42 se a rede consegue encaminhar os pacotes sem violações do deadline de tempo real, além de obter a latência média dos pacotes. Na etapa de injeção de falhas, detalhada na seção 4.5, um determinado número de canais é selecionado aleatoriamente para falhar e são observadas as variações ocorridas na latência média e no número de violações de deadline apresentados em simulação.

A função fitness do Algoritmo Genético utiliza os resultados obtidos nas fases an- teriores de avaliação de conectividade, mapeamento de tarefas e injeção de falhas para qualificar os indivíduos segundo a ordem decrescente dos mais aptos para os menos aptos. Os seguintes critérios, todos obtidos por simulações, são levados em consideração para mensurar as melhores soluções:

1. Número de canais cujas remoções desconectam algum roteador da rede;

Figura 27: Exemplos de topologias indesejadas neste trabalho

3. Número de execuções bem-sucedidas quando falhas são injetadas e uma certa por- centagem nos canais para de funcionar;

4. Quantidade de violações de deadline quando a rede executa com injeção de falhas; 5. Quantidade de canais ativados na topologia;

6. Latência média dos pacotes sem falhas injetadas na rede; 7. Latência média dos pacotes com falhas injetadas na rede.

A heurística buscou minimizar os valores dos critérios 1, 2, 4, 5, 6 e 7 enquanto maximizou o critério 3. Quanto à determinação dos valores, os critérios 1 e 5 têm os seus determinados pelo algoritmo genético que realiza a exploração de espaço de projeto. Os resultados de 2 e 6 são determinados pela heurística de mapeamento de tarefas (abordada na seção seguinte). Por fim, os critérios 3, 4 e 7 são determinados pelo módulo de injeção de falhas.

Por último, o algoritmo reequilibra o número de soluções com as quais trabalha ao descartar da população os 5 piores indivíduos no processo de seleção natural e, então,

passa para a geração seguinte.

4.2 Mapeamento de Tarefas

O problema do mapeamento de tarefas, definido por Bokhari (1981) tem por objetivo otimizar a alocação das tarefas nos elementos de processamento (EP) da rede. Esta tarefa pode ser realizada de maneira estática, ainda durante o projeto do sistema, ou de maneira dinâmica quando é realizada em tempo de execução (SINGH et al., 2017).

Neste trabalho, um outro algoritmo genético, baseado no trabalho de Indrusiak, Dziur- zanski e Singh (2016), realiza o mapeamento estático das tarefas nos elementos de pro- cessamento, garantindo a entrega dos pacotes sem violações dos deadlines de tempo real. A utilização de uma estratégia metaheurística é mais viável pelo fato de o problema de alocação de N tarefas numa quantidade P de elementos de processamento ser pertencente à classe NP-Hard (TINDELL; BURNS; WELLINGS, 1992). Este problema prevê um total de

PN possibilidades distintas de alocações de tarefas nos EPs, as quais demandariam um

enorme custo temporal para a obtenção da melhor solução.

A estratégia de mapeamento foi aplicada em cada topologia tolerante a falhas ge- rada através da exploração de espaço de projeto (Design Space Exploration - DSE). Os resultados apresentados por esta heurística também contribuem com uma parte do valor atribuído pela função fitness durante a etapa de avaliação das topologias geradas na fase de DSE.

O Algoritmo 2 apresenta um pseudocódigo para a estratégia de mapeamento. As entradas do algoritmo consistem no grafo de tarefas da aplicação e na tabela de adjacência contendo as ligações dos roteadores na topologia. O algoritmo retorna em sua saída o melhor mapeamento encontrado, o número de violações de deadline apresentadas e a latência média.

O algoritmo genético considera que um indivíduo é uma solução para o problema, e consiste em uma combinação da alocação de tarefas. Dado o conjunto T com x tarefas e dado o conjunto R com os y nodos da rede, cada gene representa uma tarefa, e seu valor varia de 1 a y, indicando o nodo do EP onde cada tarefa será alocada. No exemplo da Figura 28, a tarefa T1 foi alocada no EP do nodo R2, a tarefa T2 no EP do nodo R8, assim até a tarefa T8 que foi alocada no EP localizado em R3.

Algoritmo 2 Heurística para o mapeamento de tarefas

Entrada: Grafo de tarefas da aplicação, Tabela de Adjascência da Topologia Saída: Melhor mapeamento encontrado, Número de Violações, Latência Média

gerarPopulaçãoInicial() repetir cruzamento() mutação() geraçãoDosArquivosDoSimulador() execuçãoNoSimulador() avaliação() seleção()

até que <condição de parada>

Figura 28: Exemplo de uma distribuição de tarefas pela heurística do mapeamento de tarefas formação da população inicial, o algoritmo gera um conjunto de 50 soluções totalmente aleatório, sorteando valores de 1 a y, para cada posição dos cromossomos.

Assim como no Algoritmo 1, o operador de cruzamento seleciona cinco pares de in- divíduos, sendo eles os cinco melhores da geração atual e os outros cinco escolhidos de maneira aleatória entre os restantes. Desta maneira, são originados cinco novos mapea- mentos de tarefas combinando as características das soluções que compões cada par de cruzamento.

O operador de mutação escolhe algumas tarefas para modificar os EPs nos quais elas se encontram alocadas. Para isso, o algoritmo genético seleciona aleatoriamente uma quantidade determinada de genes e realiza a troca dos seus valores por outros escolhi- dos aleatoriamente. A aleatoriedade nos sorteios garante que haja variação genética nos indivíduos, de maneira que as tarefas não sejam alocadas sempre nos mesmos EPs.

Figura 29: Fluxograma da heurística de mapeamento de tarefas

Com os novos indivíduos formados, as simulações são realizadas e os resultados são gerados. A Figura 30 ilustra o processo de conversão dos indivíduos em arquivos de padrão de tráfego do simulador NoC42. Primeiramente, algoritmo lê o grafo de tarefas da aplica- ção, depois identifica nos cromossomos em quais EPs estão mapeadas as tarefas origem e destino da comunicação e, por fim, salva tudo no arquivo de padrão de tráfego. Todas as simulações são executadas na NoC42 e os resultados da latência média e do número de violações de deadline de tempo real são salvos nos arquivos de saída do simulador.

Figura 30: Preparação para a simulação na NoC42

classifica os mapeamentos segundo a ordem crescente do número de violações de deadline de tempo real e da latência média que cada mapeamento apresentará na rede. Além disso, a função atribui uma penalidade para cada violação de deadline que o mapeamento apresente.

Por fim, o operador de seleção natural descarta os cinco piores indivíduos da população e o algoritmo avança para a geração seguinte.

Documentos relacionados