Uma Abordagem para o Escalonamento Estático de Tarefas em Multiprocessadores Baseada em Autômatos Celulares Autor: Murillo G. Carneiro 1, Orientadora: Gina M. B. Oliveira 1 1 Programa de Pós-Graduação em Ciência da Computação Universidade Federal do Uberlândia (UFU) Uberlândia MG Brasil carneiro.murillo@gmail.com, gina@facom.ufu.br Nível: Mestrado Ano de ingresso no programa: 2009 Previsão de entrega da proposta: Janeiro / 2011 Época esperada de conclusão: Agosto / 2011 Resumo. O problema de escalonamento estático em multiprocessadores é conhecido por ser NP-Completo e consiste em alocar tarefas entre processadores de tal modo que as restrições de precedência entre as tarefas sejam mantidas e o tempo total de execução seja minimizado. Abordagens propostas para resolver esse problema normalmente utilizam heurísticas ou metaheurísticas. Contudo, muitas delas não tem a capacidade de extrair conhecimento do processo de escalonamento de uma aplicação e precisam começar do zero a cada nova instância. Trabalhos anteriores apontaram o uso promissor de Autômatos Celulares (ACs) no escalonamento em multiprocessadores. Assim, o objetivo desta pesquisa é a construção de um escalonador baseado em AC que, a partir do modelo de vizinhança linear, seja capaz de realizar o escalonamento ótimo (ou sub-ótimo) mediante a extração e reuso do conhecimento de uma aplicação em outras. Palavras-Chave. escalonamento de tarefas, sistemas multiprocessadores, autômatos celulares, vizinhança linear.
1. Introdução Autômatos Celulares (ACs) têm sido empregados com sucesso nos mais diversos campos de pesquisa da computação: criptografia [Wolfran 1986], simulação de sistemas complexos e de vida artificial [Oliveira 2003], entre outros. ACs são sistemas dinâmicos discretos (tempo e espaço) e possuem como uma de suas principais características a capacidade de emergir um comportamento global a partir de interações entre unidades locais. Trabalhos anteriores [Seredynski and Zomaya 2002], [Swiecicka et al. 2006] e [Vidica 2006] apontaram o uso promissor de abordagens baseadas em AC para o Problema de Escalonamento Estático de Tarefas (PEET). O PEET consiste basicamente em designar um conjunto de tarefas que compõem uma aplicação aos diversos processadores do sistema de tal forma que o Makespan ou tempo total da execução, seja mínimo. O problema é conhecido por ser NP-Completo em sua forma geral [Ullman 1975] e tem sido um grande desafio para muitos pesquisadores. Tendo em vista que algoritmos exatos não são capazes de encontrar soluções ótimas para quaisquer instâncias do problema em tempo considerável, o uso de métodos heurísticos tem sido muito frequente. O principal objetivo desta pesquisa é a construção de um novo método baseado em AC capaz de realizar o escalonamento estático de tarefas em sistemas multiprocessadores de modo ótimo (ou, pelo menos, sub-ótimo) para várias aplicações diferentes. A idéia principal é modelar um algoritmo apto a extrair conhecimento sobre o processo de escalonamento de uma determinada aplicação e reusá-lo no escalonamento de outras. Para auxiliar no processo de extração do conhecimento é trivial combinar o uso de ACs e Algoritmos Genéticos (AGs) conforme já foi proposto anteriormente em [Mitchell et al. 1996], devido ao grande espaço de regras existentes para determinados tamanhos de vizinhança. A seguir, nas seções 2, 3 e 4, são apresentadas, respectivamente, uma breve introdução acerca do problema de escalonamento de tarefas, alguns conceitos sobre ACs e o funcionamento de um escalonador baseado em ACs. Na seção 5 são exibidos alguns algoritmos clássicos para o problema. Em seguida, na seção 6, tem-se um esboço da metodologia criada para o desenvolvimento da proposta, o levantamento do estado atual e também um cronograma relacionado ao planejamento restante para a conclusão do trabalho. 2. Escalonamento de Tarefas em Multiprocessadores Um programa paralelo pode ser representado por um Grafo Acíclico Direcionado (GAD) definido por uma tupla G = (V, E, W, C), onde V ={ t 1,..., t N } denota o conjunto de N tarefas do grafo; E ={ e i,j t i, t j V } representa o conjunto de arestas de comunicação, também denominadas restrições de precedência; W ={ w 1,..., w n } representa o conjunto de tempos de execução das tarefa, ou seja, para cada tarefa t V é associado um peso de computação w(t) W referente ao custo de execução da mesma; e C = { c i,j e i,j E} denota o conjunto de custos de comunicação de arestas, ou seja, a cada aresta e i,j E é associado um custo de comunicação c i,j C relacionado ao custo de transferência de dados entre as tarefas t i e t j quando são executadas em processadores distintos. Satisfazendo essas condições G é denominado grafo de precedência de tarefas ou, simplesmente, grafo de programa. Na figura 1 tem-se um exemplo de um grafo de programa. É importante esclarecer que o conjunto de arestas E define as relações de precedência entre tarefas. Assim, uma tarefa não pode ser executada a menos que todos os seus predecessores tenham completado suas execuções e todos os dados relevantes estejam disponíveis. Preempção de tarefas e execuções redundantes não são permitidas na versão do problema considerado neste artigo.
Figure 1. Exemplo de um grafo de programa. Um sistema multiprocessador por sua vez, pode ser representado por um grafo não ponderado e não direcionado G s = (V s, E s ), denominado grafo de sistema. V s é o conjunto de N nós do grafo de sistema que representa os processadores de um computador paralelo de arquitetura MIMD ( Multiple Instruction Multiple Data) com suas respectivas memórias locais. E s é o conjunto de arestas representando canais bi-direcionais entre processadores e definindo a topologia do sistema multiprocessador. Nesse modelo assume-se também que todos os processadores tem o mesmo poder computacional e que as comunicações entre os canais não consomem qualquer tempo do processador. Na figura 2 é exibido um grafo de sistema para dois processadores: P0 e P1. Figure 2. Grafo de sistema para dois processadores: P0 e P1. O escalonamento de tarefas não é um problema novo. Existem na literatura vários trabalhos que estudam esse tema de diversas formas [Kwok and Ahmad 1999], estando relacionados ora a proposição de novos algoritmos e abordagens para o problema [Drozdowski 1997] e ora ao estudo teórico e matemático de fatores ligados ao próprio escalonamento [Motta et al. 2002]. É importante afirmar ainda que o problema possui diversas variações [Cardoso 2004], como por exemplo o caso dinâmico e estático. No primeiro as decisões de alocação se realizam durante a execução do programa, isto porque os custos de comunicação e de computação das tarefas não podem ser totalmente conhecidos em tempo de compilação. Já no segundo, informações relativas ao tempo de execução de cada tarefa e as relações de precedência são previamente especificadas. O caso considerado nesse trabalho é o escalonamento estático de tarefas. 3. Autômatos Celulares Um AC é um sistema composto por espaço celular e função de transição de estados. O espaço celular é um reticulado de N células (componentes simples e idênticos que possuem conectividade local e condições de contorno) dispostas em um arranjo d-dimensional. A regra ou função de transição f por sua vez, é responsável por determinar o próximo estado do AC a partir de seu estado atual, assim ela apresenta uma relação direta com o comportamento apresentado durante a evolução do reticulado. Diz-se evolução o processo de aplicar as regras sobre o reticulado por um número determinado de passos de tempo t. Ainda sobre a evolução de um reticulado, tal processo pode acontecer, normalmente, dos seguintes modos: Paralelo ou Síncrono: onde todas as células do reticulado atualizam seus estados sincronamente em cada passo de tempo.
Sequencial ou Assíncrono: em que apenas uma célula por vez atualiza o seu estado e esse novo estado é considerado na atualização das outras células. Diz-se sequencial porque a ordem em que cada célula é atualizada está representada na sequência do reticulado. Aleatório: a atualização das células é semelhante ao modo sequencial porém a ordem de atualização das células é definida aleatoriamente. Para cada célula i, chamada célula central, uma vizinhança de raio R é definida. Assim, o tamanho da vizinhança de i (que inclui a própria célula) é dado por: n i = 2R+1. É importante perceber que se a célula i no tempo t apresenta estado q t i, então o seu estado no tempo t + 1 dependerá apenas dos estados das células de sua vizinhança no tempo t, ou seja: q t+1 i = f(q t i, q t i1, q t i2,..., q t ni). Como exemplo, na figura 3(a) é exibido um autômato celular uni-dimensional, binário, de tamanho dez e de raio um. Na figura 3(b) tem-se uma função de transição e na figura 3(c) é apresentado a evolução do reticulado em modo paralelo e com condição de contorno periódica por dois passos de tempo. Figure 3. Exemplo de um AC: (a) reticulado inicial; (b) regra de transição; (c) evolução temporal. 4. Escalonamento Baseado em ACs Em [Seredynski and Zomaya 2002], é apresentado um escalonador baseado em AC que opera em dois modos: aprendizagem e operação. Nesse modelo de escalonador, cada célula do reticulado é associada a uma tarefa do grafo de programa. Considerando uma arquitetura composta por N processadores, o AC a ser utilizado tem N possíveis estados, além disso considerando o conjunto de tarefas de tamanho X o reticulado possuirá X células. Assim, supondo um sistema com dois processadores (P0 e P1), tem-se que cada célula do AC pode assumir, em um instante de tempo t, o valor 0, indicando que a tarefa correspondente está alocada no processador P0, ou o valor 1, indicando que a tarefa está alocada no processador P1. Por exemplo, o grafo de programa da figura 1, que é composto por 4 tarefas, deve ser representado por um reticulado de 4 células e em uma configuração onde as tarefas 0 e 3 estão alocadas em P0 e as tarefas 1 e 2 em P1, o reticulado será 0110. No modo de aprendizagem, o escalonador faz uso de um AG para descobrir regras capazes de encontrar soluções ótimas (ou sub-ótimas) para várias instâncias aleatórias de um grafo de programa. A população desse AG é composta de possíveis regras de transições de estados geradas de modo randômico. A cada geração do AG, também são gerados um conjunto de reticulados (CR) cujas alocações das tarefas se dão aleatoriamente. Assim, o método de avaliação da população (função de fitness do AG) é a evolução desse CR pelos individuos por t passos
de tempo. Após esse período cada reticulado do CR é escalonado mediante uma política de escalonamento escolhida a priori e então obtem-se a média de custo de escalonamento para aquela regra. Vale destacar que as melhores regras devem ser mantidas para a geração seguinte do AG (através de elitismo), e que apenas elas são consideradas na seleção de pais para o crossover. Para que o escalonador de AC obtenha bons resultados é importante optar por um modo de vizinhança capaz de capturar as relações entre as tarefas expressas no grafo de programa. Os modos de vizinhança podem ser divididos em lineares e não lineares. No primeiro assume-se que a estrutura não linear de um grafo de programa é aproximada para a estrutura linear de um AC, como foi apresentado na figura 3 (a). Já no modo de vizinhança não linear, a estrutura não linear de um grafo de programa é modelada através de uma estrutura também não linear de vizinhança de um AC. Para tanto, a vizinhança de uma célula do AC é baseada no conjunto de tarefas predecessoras, irmãs e sucessoras da tarefa analisada. Abaixo são introduzidos os dois tipos de vizinhança não lineares apresentados em [Seredynski and Zomaya 2002] e que, aliás, obtiveram os melhores resultados de escalonamento: Selecionada: A vizinhança selecionada de uma tarefa i do grafo de programa é formada pela própria tarefa e somente duas tarefas representativas de cada conjunto de tarefas predecessoras, irmãs e sucessoras da tarefa i. Estas tarefas representativas são, respectivamente, a tarefa com o valor máximo e a tarefa com o valor mínimo, de acordo com algum atributo das tarefas (custo de computação, de comunicação, entre outros) escolhido a priori. Totalística: A vizinhança totalística, diferentemente da vizinhança selecionada, considera todas as tarefas pertencentes aos conjuntos de predecessoras, irmãs e sucessoras de uma dada tarefa central, e não apenas as mais representativas de cada conjunto. No modo de operação normal espera-se que, para uma dada alocação inicial qualquer de tarefas, as regras de AC sejam capazes de minimizar o Makespam. É esperado também que a evolução das regras na fase de aprendizagem possa ser utilizada para o bom desempenho no escalonamento de outros grafos. Em [Swiecicka et al. 2006], tem-se um escalonador baseado em AC que opera em três modos: aprendizagem, operação e reutilização. Os dois primeiros modos são idênticos aos propostos por [Seredynski and Zomaya 2002]. No modo de reutilização as regras descobertas anteriormente são reusadas, com o apoio de um Sistema Imunológico Artificial (SIA), para resolver novas instâncias do problema. No modelo de SIA, as regras descobertas são consideradas anticorpos enquanto que novas instâncias do problema de escalonamento são tratadas como antígenos. Dessa forma, um dado anticorpo reconhece um antígeno específico se ele pode encontrar um escalonamento ótimo para ele. O trabalho de [Vidica 2006] é baseado nos conceitos de escalonador propostos em [Seredynski and Zomaya 2002] e [Swiecicka et al. 2006] e tem como principal contribuição duas novas abordagens para o modo de aprendizagem. A primeira, denominada evolução conjunta, consiste em utilizar, paralelamente, mais de um grafo de programa durante a evolução das regras. O outro modelo, chamado ambiente coevolutivo, consiste na troca do AG tradicional por um Algoritmo Genético Coevolutivo (AGC). Os AGCs diferem dos AGs tradicionais por utilizarem duas populações durante o processo evolutivo. Dessa forma, foi designada uma população de possíveis soluções (regras de AC) e outra população de instâncias do problema a resolver (diferentes grafos de programa).
5. Algoritmos de Escalonamento Clássicos Os algoritmos de escalonamento clássicos para o PEET, também denominados heurísticas de construção, se diferem dos metaheurísticos em vários aspectos. Entretanto, a principal diferença é que eles constroem a cada passo um único escalonamento como resposta a uma determinada entrada enquanto que estes trabalham com um conjunto de escalonamentos. O intuito de estudar os algoritmos clássicos é que alguns deles possuem estruturas de escalonamento muito simples, com bons resultados e que podem ser bem incorporados ao modelo de escalonador baseado em AC deste trabalho. O HLFET (Hightest Level First with Estimated Times) por exemplo, possui uma estrutura de escalonamento simples que consiste na criação de uma lista ordenada descendentemente de acordo com o nível estático das tarefas. Já o ISH (Insertion Scheduling Heuristic) e o MCP (Modified Critical Path) tentam cobrir espaços de tempo vazios nos processadores escalonando tarefas que já estão prontas neles. O ETF (Earliest Time First) por sua vez, avalia cada par tarefa-processador possível a fim de escalonar a relação que possui menor tempo de início, enquanto que, o DLS (Dynamic Level Scheduling) através de um cálculo, denominado Dynamic Level (DL), realizado para todos os pares tarefaprocessador aloca o par com maior valor de DL. 6. Metodologia e Estado da Pesquisa A primeira etapa para o desenvolvimento da pesquisa foi a reprodução do trabalho de [Vidica 2006]. Diante disso, os conceitos de vizinhanças não lineares propostos por [Seredynski and Zomaya 2002] também foram estudados e replicados enquanto que as novas estruturas incorporadas ao modelo de escalonamento baseado em AC propostas por [Swiecicka et al. 2006] tem sido cuidadosamente pesquisadas. Essa etapa é crucial para a pesquisa porque está diretamente relacionada ao propósito dela: o desenvolvimento de um modelo mais eficiente para o PEET através do modo de vizinhança linear. Paralelamente a etapa descrita anteriormente tem acontecido o levantamento do estado da arte no que diz respeito ao problema de escalonamento de tarefas, haja vista que os trabalhos mencionados no parágrafo anterior não expõe de forma precisa a contribuição de seus modelos por não considerarem as várias subdivisões do problema. Diante disso, foi feito um estudo sobre as taxonomias para o problema geral [Casavant and Kuhl 1988] e, especificamente, para o PEET [Kwok and Ahmad 1999] a fim de levantar precisamente a área de contribuição do modelo a ser desenvolvido. ATIVIDADES Dez 10 Jan 11 Fev 11 Mar 11 Abr 11 Mai 11 Jun 11 Jul 11 Ago 11 Reprodução Abordagem Avaliação Escrita Defesa Table 1. Cronograma geral de atividades. Na tabela 1 é apresentado o cronograma geral de atividades a serem realizadas até a defesa da dissertação. A etapa de Reprodução faz referência a replicação de experimentos de [Seredynski and Zomaya 2002], [Swiecicka et al. 2006] e [Vidica 2006] e estudo de trabalhos que podem auxiliar na pesquisa [Kwok and Ahmad 1999]. A Abordagem está relacionada
ao período designado para construção e desenvolvimento da proposta. Já a Avaliação é o período destinado a analisar quantitativamente e qualitativamente a eficiência do modelo. O período destinado a Escrita e a Defesa estão, respectivamente, ligados à escrita, tanto de artigos quanto da própria tese, e apresentação do projeto. References Cardoso, D. F. (2004). Escalonamento estático de tarefas em ambientes computacionais heterogêneos sob o modelo logp. Master s thesis, Universidade Federal Fluminense - Programa de Pós-Graduação em Computação. Casavant, T. L. and Kuhl, J. G. (1988). A taxonomy of scheduling in general-purpose distributed computing systems. IEEE Transactions on Software Enginnering, 14(2):141 154. Drozdowski, M. (1997). Selected Problems of Scheduling Tasks in Multiprocessor Computer Systems. PhD thesis, Instytut Informatyki Politechnika Poznanska. Kwok, Y.-K. and Ahmad, I. (1999). Static scheduling algorithms for allocating directed task graphs to multiprocessors. ACM Computing Surveys, 31(4):406 471. Mitchell, M., Crutchfield, J. P., and Das, R. (1996). Evolving cellular automata with genetic algorithms: A review of recent work. In Proceedings of the First International Conference on Evolutionary Computation and Its Applications (EvCA 96). Motta, E., Rajpathak, D., Zdrahal, Z., and Roy, R. (2002). The epistemology of scheduling problems. 15th European Conference on Artificial Intelligence (ECAI 2002). Oliveira, G. M. B. (2003). Autômatos celulares: aspectos dinâmicos e computacionais. III Jornada de Mini-cursos em Inteligência Artificial (MCIA), 8:297 345. Seredynski, F. and Zomaya, A. Y. (2002). Sequential and parallel cellular automatabased scheduling algorithms. IEEE Transactions on Parallel and Distributed Systems, 13(10):1009 1022. Swiecicka, A., Seredynski, F., and Zomaya, A. Y. (2006). Multiprocessor scheduling and rescheduling with use of cellular automata and artificial immune system support. IEEE Transactions on Parallel and Distributed Systems, 17(3):253 262. Ullman, J. D. (1975). NP-complete scheduling problems. Journal of Computer and System Science, 10(3):384 393. Vidica, P. M. (2006). Autômatos celulares e algoritmos genéticos aplicados ao problema do escalonamento de tarefas em sistemas multiprocessadores. Master s thesis, Universidade Federal de Uberlândia - Programa de Pós-Graduação em Ciência da Computação. Wolfran, S. (1986). Cryptography with cellular automata. Advances in Cryptology: Crypto 85 Proceedings, 218:429 432.