tutorial codeblocks projeto c++ e mpi

13
1 Código:: Blocks é um IDE C livre construída para atender as mais exigentes necessidades dos seus utilizadores. Foi concebido para ser muito extensível e totalmente configurável. Finalmente, uma IDE com todas as funcionalidades que você precisa que é consistente na aparência e operações em todas as plataformas. Construído como um framework de plugins, o Code::Blocks pode ser estendido com plug-ins. Qualquer tipo de funcionalidade pode ser acrescentado em instalando/codificando um plugin. Por exemplo, a funcionalidade de compilação e depuração já é fornecido pelos plugins! Criando um Projeto C++ CODE::BLOCKS Descrição Site Oficial Clique no link dos binaries: http://sourceforge.net/projects/codebloc ks/files/Binaries/8.02/codeblocks-8.02- << www.insciti.com.br/ead/moodle >> << email: [email protected] – Prof. Marcelo Facio Palin >> Prof. Marcelo Facio Palin [email protected] 18 de março de 2010 Revisão do Doc: 2.2 Onde baixar o Code::Blocks; Vamos aprender a criar um projeto “Hello World” que roda no Console (Tela DOS); Vamos aprender a executar o programa; Vamos aprender a compilar um projeto MPI. Para isso aprenderemos a incluir arquivos .h e linkar com as bibliotecas lib O que vamos aprender? http://www.codeblocks.org/

Upload: mpalin

Post on 30-Jul-2015

665 views

Category:

Documents


5 download

DESCRIPTION

Passo a passo crie um programa em paralelo no windows

TRANSCRIPT

Page 1: Tutorial CodeBlocks Projeto C++ e MPI

1

Código:: Blocks é um IDE C livre construída para atender as mais

exigentes necessidades dos seus utilizadores. Foi concebido para ser

muito extensível e totalmente configurável.

Finalmente, uma IDE com todas as funcionalidades que você precisa

que é consistente na aparência e operações em todas as

plataformas.

Construído como um framework de plugins, o Code::Blocks pode ser

estendido com plug-ins. Qualquer tipo de funcionalidade pode ser

acrescentado em instalando/codificando um plugin. Por exemplo, a

funcionalidade de compilação e depuração já é fornecido pelos

plugins!

Criando um Projeto C++

CODE::BLOCKS

Descrição

Site Oficial

Clique no link dos binaries:

http://sourceforge.net/projects/codeblocks/files/Binaries/8.02/codeblocks-8.02-

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

<< email: [email protected] – Prof. Marcelo Facio Palin >>

Prof. Marcelo Facio Palin

[email protected]

18 de março de 2010

Revisão do Doc: 2.2

• Onde baixar o Code::Blocks;

• Vamos aprender a criar um projeto “Hello World” que roda no Console (Tela DOS);

• Vamos aprender a executar o programa;

• Vamos aprender a compilar um projeto MPI. Para isso aprenderemos a incluir arquivos .h e linkar com as bibliotecas lib

O que vamos aprender?

http://www.codeblocks.org/

Page 2: Tutorial CodeBlocks Projeto C++ e MPI

2

SourceForge.net é o maior website do mundo voltado

ao desenvolvimento de software de código aberto,

hospedando mais de 100.000 projetos e mais de

1.000.000 de usuários registrados com um recurso

centralizado de gerenciamento de projetos,

comunicações e código. SourceForge.net tem o maior

repositório de código aberto e aplicações disponível

na internet, e hospeda mais produtos de

desenvolvimento de código aberto que qualquer

outro site ou rede no mundo. SourceForge.net provê

uma grande variedade de serviços para projetos

hospedados e para a comunidade de Código Aberto.

Faça o Download pelo Sourceforge.net

Fig 02: Tela para download do código binário com o MinGW.

Code::Blocks – IDE C++ - Free

O que é o Sourceforge.net?

Ao clicar sobre a palavra Sourceforge na Fig 02, o download se iniciará automaticamente. O arquivo tem o tamanho de 19.3Mb.

Download

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Page 3: Tutorial CodeBlocks Projeto C++ e MPI

3

Criando o Primeiro Projeto com Code::Blocks

Fig 01: Tela Principal da IDE Code::Blocks

Code::Blocks – IDE C++ - Free

O mingw é um conjunto de ferramentas GNU, que foram especificamente portadas para o Ambiente Win32. Entre elas, incluem-se, GCC, BINUTILS e outros. O objetivo principal do mingw é poder disponibilizar aos usuários das ferramentas GNU, binários executáveis (exe) e bibliotecas dinâmicas(dll) usando as API's nativas do Windows, atributo que nenhuma outra ferramenta faz. A sigla MinGw vem de Minimalist GNU for Windows(Um projeto GNU), ou seja, é um conjunto mínimo de ferramentas GNU para desenvolvimento sobre o ambiente Windows. A MinGw é um conjunto de ferramentas GNU que foram portadas para o ambiente windows, entretanto, de uma maneira geral, foi portado para o Windows apenas o que é necessário para desenvolvimento mesmo, ou seja, não foi portado um servidor X. Uma desvantagem perante a cygwin é que ele não possui o bash portado para o windows. Para resolver isto, eles decidiram criar o msys, que é uma versão semelhante ao bash do cygwin, entretanto bem inferior.

O que é o MinGW?

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Tela Principal do Code::Blocks

Page 4: Tutorial CodeBlocks Projeto C++ e MPI

4

Create a new Project

Code::Blocks – IDE C++ - Free

Escolha a opção Console Application e clique OK.

Console Application

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

A próxima tela é somente de Boas-Vindas do Wizard (auxiliar para criar um projeto). Se você marcar a opção essa tela não aparecerá mais nas próximas vezes. Para quem está iniciando deixe sem marcar a opção.

Page 5: Tutorial CodeBlocks Projeto C++ e MPI

5

Code::Blocks – IDE C++ - Free

Escolha a Linguagem C++

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<< w

ww

.insc

iti.c

om

.br/

ead

/mo

od

le >

>

Na tela ao lado digite o Nome do Projeto: HelloWorld Escolha em qual pasta deseja salvá-lo. No meu exemplo estou salvando o projeto dentro do diretório de projetos do .Net 2008, mas poderia ser qualquer pasta.

Digite o Nome do Projeto

O Code::Blocks criará um projeto chamado HelloWorld.cbp (CBP – code blocks Project). Após essa tela você deverá indicar o compilador C++ para o projeto. Se você instalou corretamente o Code::Blocks com o MinGW o compilador já estará definido como o GCC.

Page 6: Tutorial CodeBlocks Projeto C++ e MPI

6

Projeto foi Criado

Code::Blocks – IDE C++ - Free

Compilador do Código C++ (GNU) é o GCC

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Caso o Code::Blocks tenha sido instalado corretamente o compilador GCC já estará definido. Observe que o código compilado para depuração de código sempre ficará dentro da pasta \bin\Debug e o código final (Release) dentro da pasta Release. Qual é a diferença entre o código de Debug e o de Release?

Na Aba Management do Code::Blocks temos a indicação de que o Projeto HelloWorld tem a pasta Sources (fonte) onde tem somente o arquivo main.cpp.

Editando o Código main.cpp

Na Aba Management dê um duplo clique sobre o nome do arquivo main.cpp que o código automaticamente se abrirá para a edição.

Page 7: Tutorial CodeBlocks Projeto C++ e MPI

7

Tela de Saída

Code::Blocks – IDE C++ - Free

COMPILAR - EXECUTAR

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

O code::Blocks não necessita que coloquemos a função getchar() para parar o código na tela, ele já faz isso automaticamente:

Na figura acima temos os botões COMPILAR, EXECUTAR e o botão que faz os dois ao mesmo tempo. Fica a seu critério escolher entre eles e a opção no Menu Build -> Build (F9). A opção compilar e executar está no Menu Build -> Build na run (Ctrl + F9).

Page 8: Tutorial CodeBlocks Projeto C++ e MPI

8

Hello World em Paralelo

Code::Blocks – IDE C++ - Free

Programação Paralela com MPI

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

// Projeto em C - Hello World Paralelo com MPI

#include <stdio.h>

#include <mpi.h>

int main(int argc, char *argv[])

{

int rank,size;

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD, &size);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

printf("Ola, mundo. Eu sou processador %d de %d processadores.\n",

rank,size);

MPI_Finalize();

Depois de copiar o código em MPI para o Editor, clique inverso sobre o nome do projeto e escolha Properties...

Page 9: Tutorial CodeBlocks Projeto C++ e MPI

9

Definindo o diretório da mpi.lib.

Code::Blocks – IDE C++ - Free

Programação Paralela

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<< w

ww

.insc

iti.c

om

.br/

ead

/mo

od

le >

>

Na figura abaixo clique no botão Project’s Build options...

Primeiro clique na aba Linker Settings e depois no botão Add.. Na caixa menor chamada Add Library clique no botão (...) e vá até aonde o seu arquivo mpi.lib está, indique -o e clique ok.

Se surgir a pergunta: Keep this as a relative path? Clique em Não. Ou seja, ele manterá o caminho exato até o arquivo mpi.lib.

Page 10: Tutorial CodeBlocks Projeto C++ e MPI

10

Definindo o diretório dos .h (INCLUDES)

Code::Blocks – IDE C++ - Free

Detalhes de como deve ficar o PATH para a mpil.ib

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Depois de inserido o caminho para a mpi.lib se selecionar e clicar em Edit Você verá que o caminho para a lib está completo como na figura abaixo.

Feito isso, clique OK. Pronto a biblioteca mpi.lib foi indicada para linkar.

Na aba, Search Directories, da figura abaixo, você deve adicionar o diretório onde estão os .h do MPI.

Para adicionar o diretório você deve clicar no botão ADD indicando o diretório desejado. Ou seja, o diretório: C:\Arquivos de programas\MPICH2\include ou C:\MPICH2\include dependendo de como você instalou o MPICH.

Page 11: Tutorial CodeBlocks Projeto C++ e MPI

11

Atenção: tudo o que você configurou valerá somente para a compilação em Debug

Code::Blocks – IDE C++ - Free

Configurando o diretório de saída do .EXE

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Na figura abaixo temos um campo chamado Output filename. Nele você deve indicar o diretório aonde o .exe será gravado. Como a pasta MPICH2\examples já está compartilhada e preparada para rodarmos o programa paralelo, troque de \bin\Debug\HelloWorld.exe para C:\Arquivos de programas\MPICH2\examples\HelloWorld_parallel.exe.

Page 12: Tutorial CodeBlocks Projeto C++ e MPI

12

Code::Blocks – IDE C++ - Free

Você poderá fazer o mesmo para o Release

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

Experimente clicar em Release ...

Você verá que as configurações sumiram. Portanto, igual o .Net 2008, você terá que fazer as mesmas configurações para o Release, caso queira que o programa rode mais rápido e fique mais enxuto. Lembre-se, release = lançamento, é quando o programador irá entregar o .exe final sem erros. Clique em COMPILAR e verifique se não há ERROS!

Page 13: Tutorial CodeBlocks Projeto C++ e MPI

13

Erros comuns

Code::Blocks – IDE C++ - Free

<< email: [email protected] – Prof. Marcelo Facio Palin >>

<<

ww

w.in

scit

i.co

m.b

r/ea

d/m

oo

dle

>>

A tela mostra o exemplo da execução do programa que calcula o produto escalar entre dois vetores. Lembrando que a dimensão do vetor deve ser maior que o número de nós do cluster, e mais, a divisão entre a dimensão pelo número de máquinas deve ser exato. Essa primeira versão do programa não trata desses erros.

COMO EXECUTAR UM PROGRAMA MPI?

No Windows não é necessário digitar CPI.exe, basta somente o nome CPI.

No Linux tudo é CASE SENSITIVE, ou seja, devemos levar em conta até o Maiúscula/Minúscula.

Abra o prompt no diretório MPICH2/examples onde está o programa calc_prodescalar.exe. Digite mpiexec –n 3 calc_prodescalar , onde –n 3 indica que rodará em 3 máquinas o programa chamado calc_prodescalar.exe.

ERRO! EXECUTAR UM PROGRAMA MPI DIRETAMENTE, SEM CHAMAR O MPIEXEC CAUSARÁ ERRO DE EXECUÇÃO! USE O PROMPT DO DOS E CHAME O MPIEXEC

Caso o Windows peça a senha, provavelmente ocorreu um problema no registro da senha do usuário Windows com o wmpiregister.exe. Faça o registro da senha novamente. Lembrando que o Login e a senha são os mesmos do usuário Windows. E que a senha não pode ser NULA!