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


Marcelo Veiga Neves < marcelo.veiga at gmail.com >

Ferramentas pessoais