Tutorial CodeBlocks Projeto C++ e MPI
description
Transcript of 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
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/
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
>>
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
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.
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.
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.
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).
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...
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.
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.
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.
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!
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!