Início > Ars Physica, Utilidade Pública > Executando Mathematica remotamente

Executando Mathematica remotamente

terça-feira, 12 abr 2011; \15\UTC\UTC\k 15 Deixe um comentário Go to comments

O Mathematica tem uma função muito interessante de execução remota que poucas pessoas fazem uso já que a implementação original é péssima.

Se você tem a sua disposição um cluster ou grid de computação de alta performance onde o Mathematica está instalado, você pode carregar a interface gráfica do Mathematica no seu computador mas executar todos os comandos na outra máquina de melhor performance. Não é necessário usar nenhum terminal bash; o Mathematica entre os dois computadores conversam sozinhos. Pelo menos para mim essa conexão é bem mais rápida do que carregar a GUI do Mathematica inteira remotamente, i.e. usando algo como o X11 forwarding.

Primeiro, você tem que ter o Mathematica instalado nas duas máquinas. Não é necessário que sejam a mesma versão, mas observe que o núcleo do Mathematica que será executado é o do computador remoto. Qualquer pacote a ser usado deve estar instalado lá. Note também que a versão do Mathematica que será executada é a do computador remoto; então se você tiver Mathematica 8 instalado no seu computador mas o núcleo instalado no computador remoto for Mathematica 7, você não vai poder usar nada específico do Mathematica 8.

O Mathematica possui dois elementos: o núcleo (Kernel) e a interface gráfica. Os Notebooks são uma espécie de script para o kernel. Você pode ter mais de um kernel funcionando ao mesmo tempo. Por padrão, o Mathematica vem configurado para executar um único kernel. Com o tutorial que se segue, você vai adicionar mais kernels ao Mathematica que serão executados em outro computador.

Mais de um Kernel não deve ser confundido com computação em paralelo, que o Mathematica implementa com subkernels. Hoje em dia com clusters e processadores multi-core, cada Kernel do Mathematica admite subkernels, um para cada processador. Em uma máquina Dual Core por exemplo, você pode configurar dois subkernels de um dado kernel. Em uma máquina com 12 processadores, você pode ter até 12 subkernels. O Mathematica não invoca subkernels automaticamente, ele por padrão usará um único core do seu computador. Ou seja, se você tem um Intel Quad Core 2.0 GHz, o Mathematica usa apenas um dos quatro processadores 2.0GHz. Para executar mais de um subkernel você deve prefixar os seus comandos com algo como o Parallelize:

primes = Table[Prime[10^i], {i, 11}]; IntegerLength /@ primes // Parallelize // AbsoluteTiming

Por padrão, ao usar esse comando o Mathematica invocará o número máximo de subkernels possíveis. Em um Quad Core, são 4. Ele então vai dividir a tarefa entre os 4 processadores. Nem todos os processos podem ser divididos em subkernels, no entanto. Após iniciar uma execução remota do Mathematica para um cluster de alta performance, se você quiser usar todo o potencial do cluster, terá que executar comandos como o Parallelize. Em uma computação longa com muita paralelização, é recomendável inicializar os subkernels com o comando LaunchKernels[].

O Mathematica não tem uma implementação satisfatória de execução remota. Os problemas são vários, e.g. portas aleatórias de conexão, que quase sempre serão bloqueadas por Firewall. A alternativa abaixo usa uma conexão ssh do computador local para o remoto e transfere toda a comunicação do kernel remoto por ssh.

 

Passo 1: Instalar scripts

Devido a limitação do WordPress.com, eu renomeei os arquivos para .doc. Primeiro, você precisa baixar os seguintes arquivos dependendo da sua plataforma e salvá-los no seu computador. Importante: eu só testei para o MacOSX.

  • Mac OS X: tunnel e ssh-askpass para ~/Library/Mathematica/FrontEnd (sua home, não o diretório raiz), como tunnel.sh e ssh-askpass (o último sem extensão).
  • Linux: tunnel para ~/.Mathematica/FrontEnd como tunnel.sh.
  • Windows: tunnel.bat, para algo como
    \Documents and Settings\seu_usuario_windows\Application Data\Mathematica\FrontEnd, salve-o como tunnel.bat.

No Mac OS X e no Linux, após transferir e renomear os arquivos, execute o Terminal e aplique os comandos chmod +x tunnel.sh e chmod +x ssh-askpass no diretório onde os scripts foram salvos.

Passo 2: Configurar o Mathematica

No Mathematica no seu computador, siga estes passos:

  1. Acesse o menu Evaluation > Kernel Configuration Options.
  2. Clique em “Add”.
  3. Escolha um nome para o núcleo, e.g. “Cluster remoto”.
  4. Marque a opção “Append name to…” se quiser que os comandos executados no computador remoto e os resultados do computador remoto sejam explicitamente identificados no Notebook do Mathematica. Por exemplo, cada resultado será prefixado como Out [Cluster remoto]: =.
  5. No Mac, por uma questão de compatibilidade com o Linux, marque “Translate Return into New Line”.
  6. Marque “Advanced Options”

Os próximos passos requerem mais explicação:

Arguments to MLOpen deve conter verbatim, uma única linha:

-LinkMode Listen -LinkProtocol TCPIP -LinkOptions MLDontInteract -LinkHost 127.0.0.1

Launch Command para Mac ou Linux

"`userbaseDirectory`/FrontEnd/tunnel.sh" user@remote_machine
"/mathematica/default/Executables/math" "`linkname`"

e para Windows:

"`userbaseDirectory`\FrontEnd\tunnel.bat" user@remote_machine
"/mathematica/default/Executables/math" "`linkname`"

onde /mathematica ... /math deve ser substituído pelo caminho completo do executável de linha de comando do Mathematica no computador remoto. Esse arquivo estará no diretório do executável do Mathematica com nome math. Substitua também user@remote_machine pelo seu login (user) seguido do endereço IP ou hostname do computador remoto.

No Windows, você ainda precisará do PuTTY.

Pronto. Ao abrir um Notebook, o Kernel remoto pode ser escolhido no menu Evaluation > Notebook’s Kernel. Você pode forçar a inicialização do Kernel em Evaluation > Start Kernel. No Mac, uma janela aparecerá perguntando sua senha; no Linux o Terminal fará isso. Se tudo der certo, o Mathematica local irá inicializar o kernel remoto. O bash script tunnel.sh e o tunnel.bat salvam no diretório onde eles estão um arquivo .log, útil para debug.

Sobre esse tutorial: Essa estratégia foi desenvolvida por Sascha Kratky. O ssh-askpass para Mac foi escrito por Richard Brittain, especialista em computação aqui em Dartmouth College.

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: