Utilização de Open MPI com Suporte a Checkpoint/Restart
De Wiki do Veiga
Tabela de conteúdo |
Introdução
Open MPI (Open Source High Performance Computing) é a combinação de vários projetos MPI já existente, com o objetivo de disponibilizar uma única implementação MPI integrando funcionalidades destes projetos. Entre as funcionalidades prevista estão C/R e migração de processos, apesar desta última ainda não ter sido implementada (em 05/05/2008).
Este texto contém informações de como compilar e utilizar o suporte a Checkpoint/Restart da Open MPI. Os procedimentos aqui apresentados foram realizados nos laboratórios do GPPD/UFRGS durante a elaboração da minha dissertação de mestrado.
Como Funciona
A arquitetura de Open MPI consiste em três camadas de abstração que, combinadas, provêm todas as suas funcionalidades. A camada mais superior é a OMPI (Open MPI layer), que provê a interface MPI para as aplicações. Logo abaixo, encontra-se a camada ORTE (Open Run-Time Environment), que provê um ambiente de execução paralelo independente das capacidades do sistema. Por fim, a camada OPAL (Open Portable Access Layer) abstrai as peculiaridades específicas do sistema a fim de aumentar a portabilidade das camadas superiores. Abaixo da camada OPAL, está o sistema operacional e os outros serviços que executam no nó local.
O suporte a C/R de Open MPI é implementado através de módulos ligados às diferentes camada de Open MPI, chamado módulo CR, que estende a solução de mesmo propósito de LAM/MPI. Da mesma forma que acontece em LAM/MPI, Open MPI utiliza um protocolo coordenado para obter um estado global consistente na realização do salvamento do contexto de execução. O mecanismo de salvamento de contexto utilizado é BLCR. Uma das principais diferenças em relação à implementação de LAM/MPI é o fato das informações de localização dos processos serem armazenados fora do arquivo de contexto, o que permite o remapeamento de processos após o checkpoint.
Instalação
Verificar a versão do kernel que esta rodando.
uname -r 2.6.24-16-generic
Instalar a última versão da BCLR (http://ftg.lbl.gov/CheckpointRestart/CheckpointDownloads.shtml). Mais informações sobre instalação da BLCR pode ser obtidas na página Checkpoint/Restart de Processos no Linux com BLCR.
tar zxf blcr-0.6.5.tar.gz cd blcr-0.6.5 mkdir builddir cd builddir ../configure --prefix=/home/veiga/blcr-0.6.5-installed/ \ --with-system-map=/boot/System.map-2.6.24-16-generic \ --with-vmlinux=/boot/vmlinuz-2.6.24-16-generic make make insmod check make install
Ainda não foi lançada a versão 1.3 de Open MPI (05/05/2008), então deve-se baixar um snapshot do site http://www.open-mpi.org/nightly/trunk/.
Para instalar Open MPI:
tar xjf openmpi-1.3a1r18377.tar.bz2 ./configure --prefix=/home/gppd/veiga/mestrado/openmpi-1.3a1r18377-installed/ \ --with-blcr=/home/gppd/veiga/mestrado/blcr-0.6.5-installed/ --with-ft=cr --without-gm make make install
Exemplo de Execução
Criar o aquivo de configuração da Open MPI:
$ cat ~/.openmpi/mca-params.conf filem_base_verbose=20 snapc_base_verbose=20 #snapc_base_global_snapshot_dir=/tmp snapc_base_store_in_place=0
Compilar o programa normalmente:
mpicc -o ring ring.c
Executar um programa habilitando o suporte a C/R:
mpirun --debug-daemons --mca btl_tcp_if_exclude lo,tap0 -am ft-enable-cr \ --hostfile hosts.txt -np 2 ring
Executar o ompi-checkpoint passando o PID do mpirun como parâmetro:
pid=`pidof mpirun` && echo $pid && ompi-checkpoint $pid
Reiniciar a aplicação:
ompi-restart ompi_global_snapshot_10920.ckpt
Referências
- Open MPI Home Page: http://www.open-mpi.org/
- A Checkpoint and Restart Service Specification for Open MPI: http://www.open-mpi.org/papers/iu-cs-tr635/
- The Design and Implementation of Checkpoint/Restart Process Fault Tolerance for Open MPI: http://www.open-mpi.org/papers/dpdns-2007/
Marcelo Veiga Neves < marcelo.veiga at gmail.com >
