O PVM é um conjunto de ferramentas que possibilita simular a existência de um grande computador multiprocessado usando estações Linux/UNIX distintas ligadas por uma rede de comunicação. O PVM oferece primitivas de manipulação de processos e alocação de máquinas que são implementadas em bibliotecas de ligação nas linguagens ”C" e ”Fortran".
Faremos agora uma breve descrição das configuraçõs necessárias para a execução do PVM. Se você já conhece a interface PVM ou simplesmente quer ir direto para os finalmentes, clique aqui.
Ao usar o PVM, é necessário definir duas variáveis de ambiente:
- PVM_ROOT
- PVM_ARCH
Para não ter que atribuir valores a essas variáveis toda vez que se logar no sistema, basta incluir essas definições no arquivo de configuração. O arquivo de configuração depende do shell que se usa. A tabela abaixo apresenta os nomes dos arquivos de configuração de acordo com o shell utilizado:
Shell | Arquivo |
Bash (Bourne Shell) | .bashrc ou .profile |
Csh (C Shell) | .cshrc |
Ksh (Korn Shell) | .profile |
Sh | .profile |
O shell padrão das máquinas das máquinas do DEP é o C Shell. O shell padrão do cluster (máquina bud) é o Born Shell. Para se certificar sobre qual o shell que se está usando, basta executar o seguinte comando no prompt do sistema:
A variável PVM_ROOT indica em qual diretório o PVM está instalado. Deste modo, o valor dela é o caminho completo deste diretório. Abaixo seguem as linhas a serem incluídas ao fim do arquivo de inicialização para definir PVM_ROOT:
Alterações no .profile (usuário bash, sh ou ksh) ou .bashrc (usuário bash):
PVM_ROOT=/export/tools/pvm3
export PVM_ROOT
setenv PVM_ROOT /export/tools/pvm3
Sistema | Plataforma |
Linux 32 | LINUX |
Linux 64 bits | LINUX64 |
Solaris | SUN4SOL2 |
Solaris multi-processada | SUNMP |
Windows | WIN32 |
Como é muito trabalhoso ficar definindo uma arquitetura para cada máquina que se está utilizando, o PVM possui um script que detecta automaticamente a arquitetura em uso e retorna uma string correspondente ao valor que o PVM_ARCH deve assumir. Este script se chama pvmgetarch e se encontra no diretório lib do PVM. Assim, para automatizar mais esta atribuição, o seguinte trecho de código deve aparecer logo após a definição da variável PVM_ROOT:
Alterações no .profile e .bashrc:
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
else
echo “PVM_ROOT nao esta definido!”
fi
Alterações no .cshrc:
setenv PVM_ARCH `$PVM_ROOT/lib/pvmgetarch`
endif
Resumindo as alterações descritas acima, temos as seguintes linhas para acrescentar no arquivo de configuração:
Resumo das linhas para incluir nos arquivos .bashrc e .profile (usuários bash, sh ou ksh)
PVM_ROOT=/export/tools/pvm3
export PVM_ROOT
if ( -e $PVM_ROOT ) then
PVM_ARCH=`$PVM_ROOT/lib/pvmgetarch`
else
echo PVM_ROOT nao esta definido!
fi
Resumo das linhas para incluir no .cshrc (usuários do csh)
setenv PVM_ROOT /export/tools/pvm3
if ( $?PVM_ROOT ) then
setenv PVM_ARCH `$PVM_ROOT/lib/pvmgetarch`
endif
Compilando programas em PVM
O PVM suporta programas compilados tanto na linguagem Fortran quanto em C. Para simplificar a compilação, é recomendável acrescentar o diretório das bibliotecas do PVM na variável LD_LIBRARY_PATH. Para fazer isso, inclua as seguintes linhas logo após a definição das variáveis do PVM no seu arquivo de configuração:
Linhas a serem incluídas nos arquivos .bashrc e .profile (usuários bash, sh ou ksh):
LD_LIBRARY_PATH=$LD_LIBRARY_PATH\:$PVM_ROOT/lib/$PVM_ARCH
export LD_LIBRARY_PATH
Linhas a serem incluídas no arquivo .cshrc (usuários csh):
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH\:$PVM_ROOT/lib/$PVM_ARCH
Uma vez definida mais esta variável de ambiente, o PVM está pronto para ser usado em outros programas.
Observações finais
O PVM é um software em constante desenvolvimento e muitos problemas ainda estão sendo resolvidos.
Finalmente, críticas e sugestões são mais do que bem vindas.
Introdução ao PVM para Usuários do UNISIM