Adaptação para arquitetura 64 bits de versão do MrBayes para processamento paralelo e relatório de instalação.
MrBayes é um software característico da área de bioinformática para análise bayesiana de filogenia. Um dos grandes desafios da bioinformática é a utilização de processamento distribuído, ou paralelo, para a redução do tempo de processamento que, de outra forma, pode consumir meses.
Por ser um software Livre e de código aberto licenciado pela GNU General Public (GPL), foi possível à equipe "John P. Huelsenbeck da Section of Ecology, Behavior and Evolution Division of Biological Sciences University of California, San Diego e Fredrik Ronquist School of Computational Science Florida State University" implementar uma versão para processamento paralelo.
Este texto relata a instalação do MrBayes em sua versão para processamento paralelo em um servidor
Linux de 64 bits e oito processadores.
Instalando o MrBayes
O MrBayes e seu Makefile correspondente foram originariamente desenvolvidos para 32 bits (arquitetura x86) e sua instalação é bastante simples. Porém, sua instalação em arquitetura 64 bits torna-se problema pela dificuldade de endereçamento de mais memória e mais de 4 núcleos de processadores.
No entanto, mais memória e mais processadores tem-se tornado exigência para a redução do tempo de processamento em processos paralelizáveis. Assim, sua instalação em sistemas operacionais com arquitetura 64 bits necessita de diversas bibliotecas e de modificações específicas no arquivo Makefile.
Um script foi criado para modificar esse arquivo e portá-lo para a arquitetura 64 bits. Abaixo, seguem os tópicos para a configuração e instalação desses arquivos.
Download do MrBayes
O software pode ser encontrado em diversos repositórios; dois deles são apresentados a seguir. Sugere-se descarregar o arquivo de download no diretório padrão /opt.
Download MrBayes. Entrar no diretório:
# cd /opt
Obter MrBayes:
# wget http://mrbayes.csit.fsu.edu/download2.php?arch=src
ou
# wget http://dfn.dl.sourceforge.net/sourceforge/mrbayes/mrbayes-3.1.2.tar.gz
Descompactar o arquivo:
# tar -xvzf mrbayes-3.1.2.tar.gz
Preparando ambiente paralelo com bibliotecas MPI
O MPI (Message Passing Interface) é um padrão de desenvolvimento de bibliotecas de troca de mensagens independente de fabricante. O MPI resultou do trabalho em conjunto de grupos e pessoas no período de 1992 a 1994. A figura abaixo apresenta alguns grupos que trabalharam na definição do padrão MPI.
No universo do software livre e de código aberto há diversos softwares e bibliotecas que auxiliam a implementação de programas para o processamento paralelo. Entre as muitas bibliotecas disponíveis, a lista a seguir pode ser utilizada para preparar o ambiente paralelo em seu servidor.
Programa | Classificação |
libmpich2-dev | Arquivo de desenvolvimento para MPICH2. |
libmpich2-1.2 | Biblioteca compartilhada para MPICH2. |
libmpich1.0gf | Biblioteca compartilha para tempo de execução MPICH2. |
libmpich1.0-dev | Biblioteca estática e ficheiro de desenvolvimento. |
libmpich-shmem1.0gf | Biblioteca compartilha para uso de tempo de execução em mpich-shmem. |
libmpich-shmem1.0-dev | Biblioteca estática e ficheiro de desenvolvimento. |
libmpich-mpd1.0gf | Biblioteca compartilha para uso de tempo de execução em mpich-mpd. |
libmpich-mpd1.0-dev | Biblioteca estática mpich e ficheiro de desenvolvimento. |
libopenmpi1.3 | Biblioteca para alto desempenho para troca de mensagem. |
mpich-mpd-bin | Implementação de sistema computação paralela, versão MPD. |
mpich-shmem-bin | Implementação de sistema computação paralela, versão Shmem. |
mpich2 | Implementação do padrão MPI. |
openmpi-bin | Biblioteca MPI para alta performance. |
openmpi-checkpoint | Biblioteca MPI para alta performance com suporte a checkpoint. |
openmpi-common | Biblioteca MPI para alta performance de análise de mensagens. |
libreadline5-dev | Auxilia a consistência de interface de usuários entre programas distintos. |
A instalação desses programas dá-se por meio do gerenciador de pacotes da distribuição Linux que estiver sendo utilizada; neste caso específico, serão utilizados gerenciadores de pacotes do Ubuntu Linux arquitetura x86_64. Os comandos abaixo farão as instalações dos mesmos. Caso já tenha um ambiente MPI instalado no servidor ou no computador essa instalação deve ser desconsiderada.
Instalação MPI.
Verificar atualização:
# apt-get update
# apt-get upgrade
Instalação dos softwares MPI:
# apt-get install libmpich2-dev libmpich2-1.2 libmpich1.0gf libmpich1.0-dev libmpich-shmem1.0gf libmpich-shmem1.0-dev libmpich-mpd1.0gf libmpich-mpd1.0-dev libopenmpi1.3 mpich-mpd-bin mpich-shmem-bin mpich2 openmpi-bin openmpi-checkpoint openmpi-bin libreadline5-dev
Após a execução satisfatória do comando de instalação acima deve-se verificar a disponibilidade dos comandos MPI. Digita-se o comando mpi no terminal seguido do pressionamento da tecla TAB. Compare com a imagem abaixo. Caso não tenha ocorrido erro o resultado será semelhante ao da figura abaixo de instalação no servidor galileu.
Correção do Makefile para 64 bits
O MrBayes, como mencionado, funciona perfeitamente em plataformas 32 bits; portanto, é necessário fazer correção no arquivo Makefile para que não ocorra erro de compilação durante a checagem da arquitetura do kernel. A compilação em ambiente com arquitetura x86_64 sem a correção desse arquivo culminou no seguinte erro em meio a muitas linhas exibidas na saída padrão.
/usr/bin/ld: i386 architecture of input file `mb.o' is incompatible with i386:x86-64 output
/usr/bin/ld: i386 architecture of input file `mcmc.o' is incompatible with i386:x86-64 output
Uma correção do arquivo Makefile está disponível no site
www.technical.bestgrid.org. Esse mesmo arquivo foi colocado disponível em outro site para o caso de problemas de acesso ao primeiro. No quadro abaixo seguem os links para obtenção do arquivo de correção.
1) www.technical.bestgrid.org
http://technical.bestgrid.org/images/7/73/Mb_64bit-safe.patch.txt
2) www.vivaolinux.com.br
http://www.vivaolinux.com.br/scripts/download.php?arquivo=MakePatch
Baixe o arquivo dentro da pasta gerada quando da descompactação do MrBayes (/opt/mrbayes-3.1.2). Mude o nome do arquivo para MakePatch. Essa modificação não interfere no processo de instalação servindo, entretanto, para melhor distinção de nome dos arquivos e suas contextualizações.
O script a seguir foi elaborado pelos autores para indicar todos os arquivos e parâmetros da sintaxe do comando patch de forma automática.
#!/bin/sh
# Script auxiliar para correção da arquitetura do MrBayes
# Elaborado por:
# Vitor: vitorbs@gmail.com
# Cleysinho: Cleysinhonv@gmail.com
# O download desse script pode ser encontrado no link:
# http://www.vivaolinux.com.br/scripts/download.php?arquivo=script_correcao_arq64
if test "$1" = ""
then
echo "Usage: $0 <PATCH_FILE>"
exit 0
fi
for i in *
do
patch -R "$i" < "$1"
done
Caso não se queira fazer o download pode-se criar um arquivo, adicionar o conteúdo do script, atribuir permissão de execução e processar o script. Abaixo, será apresentado o passo-a-passo para a correção do arquivo e a compilação do mesmo. As instruções devem ser seguidas com atenção para que nenhum procedimento fique sem ser executado.
Processo de correção e compilação.
1) Se baixar o script no link abaixo, vá para o passo 3.
http://www.vivaolinux.com.br/scripts/download.php?arquivo=MakePatch
2) Criar o arquivo e adicionar o conteúdo acima (no diretório /opt/mrbayes-3.1.2):
# touch script_correcao_arq64
Adicionar conteúdo do arquivo acima (link) no script_correcao_arq64:
# vim script_correcao_arq64
Mudar permissão:
# chmod +x script_correcao_arq64
3) Correção do arquivo Makefile:
# ./script_correcao_arq64 MakePatch
4) Compilação do MrBayes:
# make
Obs.: Será gerado um arquivo executável chamado mb.
Após a compilação deve-se criar o arquivo .mpd.conf no diretório home do usuário e mudar a permissão. Seguem os comandos:
# touch .mpd.conf
# chmod 600
Adicionar o conteúdo abaixo no arquivo:
MPD_SECRETWORD=mr45-j9z
Testando o MrBayes
A compilação gera um arquivo mb, esse executável é responsável por iniciar o MrBayes. Inicialmente para testá-lo sem o uso paralelo pode-se usar o comando ./mb, abaixo segue o comando e a interface do MrBayes no terminal que eu fiz (no diretório da instalação).
# sh /opt/mrbayes-3.1.2/mb
MrBayes v3.1.2
(Bayesian Analysis of Phylogeny)
(Parallel version)
(1 processors available)
by
John P. Huelsenbeck and Fredrik Ronquist
Section of Ecology, Behavior and Evolution
Division of Biological Sciences
University of California, San Diego
johnh@biomail.ucsd.edu
School of Computational Science
Florida State University
ronquist@csit.fsu.edu
Distributed under the GNU General Public License
Type "help" or "help <command>" for information
on the commands that are available.
MrBayes >
Note que a mensagem "1 processors available" em vermelho corresponde a um único processador - modo monoprocessado. Para a forma multiprocessada - paralela - usa-se o comando mpirun seguido do parâmetro -np seguido do número de processadores. Veja o exemplo para 4 processadores a seguir.
# mpirun -np 4 /opt/mrbayes-3.1.2/mb
É necessário indicar o caminho completo do executável, ainda que esteja no diretório corrente pois, caso contrário, será apresentado o seguinte erro:
configuration file /etc/mpd.conf is accessible by others
change permissions to allow read and write access only by you
A execução do comando "mpirun -np 8 /opt/mrbayes-3.1.2/mb" fará com que o programa MrBayes utilize oito processadores para a execução de suas tarefas. A tela com o seguinte resultado:
# mpirun -np 8 /opt/mrbayes-3.1.2/mb
MrBayes v3.1.2
(Bayesian Analysis of Phylogeny)
(Parallel version)
(8 processors available)
by
John P. Huelsenbeck and Fredrik Ronquist
Section of Ecology, Behavior and Evolution
Division of Biological Sciences
University of California, San Diego
johnh@biomail.ucsd.edu
School of Computational Science
Florida State University
ronquist@csit.fsu.edu
Distributed under the GNU General Public License
Type "help" or "help <command>" for information
on the commands that are available.
MrBayes >
Criando script para inicialização do MrBayes (opcional)
Para melhorar a usabilidade do MrBayes, evitando a necessidade de indicar os comandos e os caminhos de forma completa, pode-se usar um simples script.
Crie um arquivo com de nome mrBayes em /usr/local/bin e adicione o conteúdo do quadro abaixo dando permissão de execução (chmod +x mrBayes) ou faça o download do script do link.
#!/bin/sh
# Script para inicialização do MrBayes
#
# José Cleydson F. Silva
# Cleysinhonv@gmail.com
#
# Versão 1.0 - 24/05/2010
#
if [ "$#" -eq 0 ]
then
echo "Usage: mrBayes <NUMBER OF PROCESSOR>"
exit 0
fi
mpirun -np $1 /opt/mrbayes-3.1.2/mb
Para usá-lo dê o comando abaixo, ou seja, o nome do arquivo criado seguido do número de processadores.
# mrBayes 8
O script pode ser obtido no link abaixo: