MPI Linux. Alternativas Práticas

Texto

(1)

MPI – Linux MPI – Linux

Alternativas Práticas Alternativas Práticas

(2)

Downloads Downloads

Portable Ubuntu Portable Ubuntu

http://sourceforge.net/projects/portableubuntu/http://sourceforge.net/projects/portableubuntu/

files/portableubuntu/UNO/Portable_Ubuntu.ex files/portableubuntu/UNO/Portable_Ubuntu.ex

e/download e/download

WubiWubi

http://www.ubuntu.com/GetUbuntu/downloadhttp://www.ubuntu.com/GetUbuntu/download

Linux pen-drive Linux pen-drive

http://www.pendrivelinux.com/http://www.pendrivelinux.com/

(3)

Portable Ubuntu Portable Ubuntu

Kernel do Linux modificado para usar o Kernel do Linux modificado para usar o

Windows como dispositivos de hardware!

Windows como dispositivos de hardware!

O núcleo roda como um processo do Windows, O núcleo roda como um processo do Windows,

outros programas auxiliares necessários;

outros programas auxiliares necessários;

Tudo automático, não necessita instalação;

Tudo automático, não necessita instalação;

Troca de dados muito fácil com windows, Troca de dados muito fácil com windows,

acessa o hardware (suportado) acessa o hardware (suportado)

automaticamente;

automaticamente;

Exemplo ->

Exemplo ->

(4)

Wubi Wubi

Maneira relativamente simples de instalar Maneira relativamente simples de instalar

e executar o Linux a partir do windows;

e executar o Linux a partir do windows;

Alternativa normal de instalação do Alternativa normal de instalação do

Ubuntu, basta inserir o CD no drive (e Ubuntu, basta inserir o CD no drive (e

“clicar” em wubi.exe!)

“clicar” em wubi.exe!)

Não roda simultaneamente com windows;

Não roda simultaneamente com windows;

Suporte a hardware depende de sorte Suporte a hardware depende de sorte 

Exemplo ->

Exemplo ->

(5)

Pendrive linux Pendrive linux

Linux normal, instalado no pendrive;

Linux normal, instalado no pendrive;

Não altera absolutamente nada no Não altera absolutamente nada no

computador original!

computador original!

Suporte a hardware depende de sorte Suporte a hardware depende de sorte 

http://www.pendrivelinux.com/downloads/u90http://www.pendrivelinux.com/downloads/u90 4/U904p.exe

4/U904p.exe

http://www.pendrivelinux.com/downloads/casphttp://www.pendrivelinux.com/downloads/casp er-rw/4GB-casper-rw.zip

er-rw/4GB-casper-rw.zip

Exemplo ->

Exemplo ->

(6)

Observações Observações

Outras opções possíveis:

Outras opções possíveis:

MPI Windows nativo;MPI Windows nativo;

Cygwin?;Cygwin?;

Máquinas virtuais:Máquinas virtuais:

VMWare;

VMWare;

VirtualBox;

VirtualBox;

etc.;

etc.;

(7)

PU – Aumentar Disco do Sistema!

PU – Aumentar Disco do Sistema!

NoNo WindowsWindows::

Criar arquivo vazio:Criar arquivo vazio:

fsutil file createnew more_space.img 2147483648 fsutil file createnew more_space.img 2147483648

Concatenar com arquivo atual:Concatenar com arquivo atual:

copy /b rootfs.img+more_space.img rootfs_.img copy /b rootfs.img+more_space.img rootfs_.img

Renomear:Renomear:

ren rootfs.img rootfs_orig.img ren rootfs.img rootfs_orig.img

ren rootfs_.img rootfs.img ren rootfs_.img rootfs.img

No PU:

No PU:

sudo resize2fs –f /dev/cobd0sudo resize2fs –f /dev/cobd0

(8)

PU – Preparação do Sistema PU – Preparação do Sistema

Adicionar a lingua portuguesa (System – Adicionar a lingua portuguesa (System –

Administration – Language Support);

Administration – Language Support);

Remover aplicativos desnecessários (synaptic – Remover aplicativos desnecessários (synaptic –

Installed);

Installed);

Atualizar o sistema (synaptic – Atualizar o sistema (synaptic –

Installed[upgradable]);

Installed[upgradable]);

Instalar aplicativos necessários (synaptic – Not Instalar aplicativos necessários (synaptic – Not

Installed):

Installed):

openmpi-dev, openmpi-bin, openmpi-doc;openmpi-dev, openmpi-bin, openmpi-doc;

g++, g++-4.2;g++, g++-4.2;

etc, etc, etc;etc, etc, etc;

(9)

Uso do Linux Uso do Linux

Inúmeras fontes: on-line, livros, etc.;

Inúmeras fontes: on-line, livros, etc.;

Em particular, recomendo:

Em particular, recomendo:

http://focalinux.cipsga.org.br/http://focalinux.cipsga.org.br/

Iniciante;

Iniciante;

Intermediário;

Intermediário;

Avançado;

Avançado;

(10)

Compilação de Programa C++

Compilação de Programa C++

Criar código fonte com editor de texto;

Criar código fonte com editor de texto;

g++ -o nome_executavel nome_fonte.C g++ -o nome_executavel nome_fonte.C

No terminal:

No terminal:

g++ -o 00_first 00_first.Cg++ -o 00_first 00_first.C

./00_first./00_first

Infinitos outros detalhes que veremos (ou Infinitos outros detalhes que veremos (ou

não) mais para a frente…

não) mais para a frente…

(11)

MPI – Primeiro Programa MPI – Primeiro Programa

01_first.C 01_first.C

Inicialização e finalização do MPI;

Inicialização e finalização do MPI;

Compilação:

Compilação:

mpicxx -o 01_first 01_first.Cmpicxx -o 01_first 01_first.C

./01_first (um processo apenas!)./01_first (um processo apenas!)

Para executar 8 processos em paralelo:

Para executar 8 processos em paralelo:

mpiexec -n 8 ./01_firstmpiexec -n 8 ./01_first

(12)

mpiexec mpiexec

Executa “N” cópias de um programa em Executa “N” cópias de um programa em

paralelo;

paralelo;

Há maneiras de executar códigos Há maneiras de executar códigos

diferentes (incomun);

diferentes (incomun);

Cria variáveis do ambiente que indicam Cria variáveis do ambiente que indicam

que o processo está sendo executado em que o processo está sendo executado em

um ambiente paralelo;

um ambiente paralelo;

““Padronizado” junto com o mpi;Padronizado” junto com o mpi;

““mpirun” é uma alternativa;mpirun” é uma alternativa;

(13)

MPI_INIT() MPI_INIT()

Deve ser chamada antes de qualquer Deve ser chamada antes de qualquer

função MPI;

função MPI;

Exceto: MPI_GET_VERSION, Exceto: MPI_GET_VERSION,

MPI_INITIALIZED, MPI_FINALIZED;

MPI_INITIALIZED, MPI_FINALIZED;

Chamada por todos os processos, apenas Chamada por todos os processos, apenas

uma vez (em cada processo);

uma vez (em cada processo);

Em C e C++ é possível passar Em C e C++ é possível passar

argumentos da linha de comando;

argumentos da linha de comando;

(14)

MPI_INIT() MPI_INIT()

C:

int MPI_Init(int *argc, char ***argv) Fortran:

MPI_INIT(IERROR) INTEGER IERROR C++:

void MPI::Init(int& argc, char**& argv) void MPI::Init()

(15)

MPI_FINALIZE() MPI_FINALIZE()

Desliga o ambiente paralelo;

Desliga o ambiente paralelo;

Todas as comunicações devem ter sido Todas as comunicações devem ter sido

completadas antes da chamada desta completadas antes da chamada desta

função!

função!

Não deve ser usada para “limpeza!”

Não deve ser usada para “limpeza!”

(16)

MPI_FINALIZE() MPI_FINALIZE()

C:

int MPI_FInalize(void) Fortran:

MPI_FINALIZE(IERROR) INTEGER IERROR

C++:

void MPI::Finalize()

(17)

Detecção de Erros Detecção de Erros

C: valores de retorno da função;

C: valores de retorno da função;

Fortran: último argumento da subrotina;

Fortran: último argumento da subrotina;

C++: exception C++: exception

try { try { x x xx x x

catch (e) { catch (e) { x x xx x x

}}

Em não se fazendo nada, comportamento padrão chama Em não se fazendo nada, comportamento padrão chama

MPI_ABORT();

MPI_ABORT();

(18)

Comunicadores Comunicadores

Subconjunto dos processos que formam o Subconjunto dos processos que formam o programa paralelo (iniciado com mpiexec);

programa paralelo (iniciado com mpiexec);

0,3

1,4

8,6 9,5,

2,1,4

4,2,3 10,7 11,0

3,1

5,2

6,5

7,0

13 12

comm_row

comm_column

MPI::COMM_WORLD

(19)

Comunicadores Comunicadores

Podem ser criados tantos quantos Podem ser criados tantos quantos

necessários;

necessários;

Padrão:

Padrão:

MPI::COMM_WORLD – Todos os processos;MPI::COMM_WORLD – Todos os processos;

MPI::COMM_SELF – O próprio processo;MPI::COMM_SELF – O próprio processo;

MPI::COMM_NULL – Nenhum processo;MPI::COMM_NULL – Nenhum processo;

No C++, são objetos, com métodos, No C++, são objetos, com métodos,

herança, etc!

herança, etc!

(20)

MPI_COMM_RANK() MPI_COMM_RANK()

Processos sempre numerados de 0 a Processos sempre numerados de 0 a

size-1 em cada comunicador;

size-1 em cada comunicador;

Processo pode pertencer a mais de um Processo pode pertencer a mais de um

comunicador! Terá ranks (possivelmente) comunicador! Terá ranks (possivelmente)

diferentes em cada;

diferentes em cada;

O rank do processador é usado como O rank do processador é usado como identificador para origens e destino de identificador para origens e destino de

mensagens;

mensagens;

(21)

MPI_COMM_RANK() MPI_COMM_RANK()

C:

int MPI_Comm_rank(MPI_Comm comm, int *rank)

Fortran:

MPI_COMM_RANK(COMM, RANK, IERROR) INTEGER COMM, RANK, IERROR

C++:

int MPI::Comm::Get_rank() const

(22)

MPI_COMM_SIZE() MPI_COMM_SIZE()

Número total de processos no Número total de processos no

comunicador;

comunicador;

C:

int MPI_Comm_size(MPI_Comm comm, int

*size)

Fortran:

MPI_COMM_SIZE(COMM, SIZE, IERROR) INTEGER COMM, SIZE, IERROR

C++:

int MPI::Comm::Get_size() const

Imagem

Referências

temas relacionados :