c BSP no InteGrade II WorkShop do InteGrade 1 Objetivo O principal objetivo é permitir que aplicações BSP sejam executadas no InteGrade sem ou com poucas modificações. As interfaces do core do InteGrade não foram sobrecarregadas, no sentido que criarmos interfaces separadas para o suporte ao BSP Usamos CORBA para a troca de mensagens entre as tarefas 2 Comunicação entre Tarefas BSP O BSP define duas formas de comunicação entre tarefas: DRMA - permite que uma tarefa leia e escreva no espaço de endereço remoto de outra tarefa BSMP - implementa a passagem de mensagens para comunicação entre tarefas 3 Implementação no InteGrade para comunicação entre Tarefas BSP Atualmente implementamos a maioria dos métodos definidos pelo DRMA. Permitindo a execução de simples aplicações BSP. Além desses métodos foram implementados rotinas gerais que servem para inicialização do BSP, sincronização de super passos, etc. 4 Lista de métodos implementados bsp_begin - inicializa uma aplicação BSP bsp_pushregister - declara que um endereço de mémoria pode ser acessado por outras tarefas BSP bsp_popregister - declara que determinado endereço não pode ser acessado remotamente bsp_put - escreve na área de mémoria de uma outra tarefa bsp_get - lê de uma área de mémoria de uma outra tarefa 5 Lista de métodos implementados bsp_sync - a barreira de sincronização bsp_pid - retorna o ID da tarefa BSP bsp_nprocs - retorna o número de tarefas da aplicação paralela 6 Componentes da implementação BSP no InteGrade BSPProxy StubPool Process Zero 7 O BspProxy É um servente CORBA responsável por receber qualquer comunicação relacionada ao BSP para uma determinada tarefa Em nossa implementação cada tarefa de uma aplicação paralela tem um bspproxy associado O proxy contém métodos da API BSP, além de possuir métodos internos a nossa implementação Criação e manipulação transparente ao usuário da API 8 O StubPool É responsável pela instanciação dos stubs dos clientes que acessam os proxies das outras tarefas Organizam os stubs de uma forma que só uma instancia da biblioteca do O2 é utilizada O proxy contém métodos da API BSP, além de possuir métodos internos a nossa implementação Criação e manipulação transparente ao usuário da API 9 Process Zero É o primeiro processo que compôe uma aplicação BSP É responsável por distribuir as tarefas no sentido de colocá-las em contato com o GRM para negociação de execução. É responsável por dar um ID para cada tarefa restante da aplicação BSP E por fim, também é responsável por gerenciar as barreiras de sincronização 10 A execução de uma aplicação BSP no InteGrade Aplicações BSP precisam iniciar a execução, dividir as tarefas e gerenciar as barreiras de sincronização 11 Passo a passo na execução de uma aplicação BSP no InteGrade 1) 2) 3) 4) Usuário registra a aplicação no repositório de aplicações usando o ASCT(Application Submittion and Control Tool) o usuário usa o ASCT para solicitar ao GRM(Global Resource Manager) a execução de uma aplicação paralela Quando a solicitação chega a um LRM(Local Resource Manager) ele baixa o arquivo de configuração do ASCT O método bsp_begin é executado, o arquivo de configuração é lido 12 Passo a passo na execução de uma aplicação BSP no InteGrade 5) Se o processo é o process zero O ASCT é instanciado, a partir do ASCT pode-se solicitar ao GRM o agendamento das tarefas restantes Antes da requisição ser enviada uma nova versão do arquivo de configuração é gerado, adaptado para o restante das tarefas que irão ser agendadas. Esta versão do arquivo contém uma indicação dizendo que estas tarefas não são o process zero e contém a IOR do process zero 13 Passo a passo na execução de uma aplicação BSP no InteGrade É o process zero que fornece o ID para as tarefas Após coletar todas as IOR’s das tarefas o process zero se comunica com todas as tarefas fornecendo a IOR das outras tarefas, dessa forma as tarefas podem conversar entre si 14 Passo a passo na execução de uma aplicação BSP no InteGrade 6) Se o processo não é o process zero Tudo o que a tarefa tem a fazer é: Instanciar seu servente Enviar uma mensagem de registro para o process zero Esperar receber seu ID e as IOR’s das outras tarefas 15 Passo a passo na execução de uma aplicação BSP no InteGrade _ _ No fim do bsp_begin cada tarefa tem seu próprio ID o conjunto de todas as IOR’s das demais tarefas e a do process zero A comunicação entre as tarefas será feita através do bspproxy e do stubpool utilizando o CORBA para as chamadas remotas de métodos 16 Passo a passo na execução de uma aplicação BSP no InteGrade _ _ _ _ Como visto anteriormente a computação no BSP é feita através de super passos (supersteps) Cada superstep é finalizado por uma sincronização de barreira Operações como bsp_put, bsp_pushregister só são efetivadas no fim do superstep. O bsp_synch é o método responsável pela sincronização 17 Passo a passo na execução do bsp_synch 1) 2) Quando um processo chama bsp_synch, ele envia uma mensagem de synch para o process zero e para de executar. Quando todas as tarefas enviam synch para o process zero este por sua vez envia um sync_done para todas as tarefas que agora podem processar as operações pendentes. 18 Trabalhos futuros _ _ _ Realização de mais testes para depuração, correção e otimização da implementação atual Implementação do tipo de troca de mensagens BSMP Checkpointing e migração 19 Exemplo de código 20