segunda-feira, 8 de novembro de 2010

Compilar código com paralelismo

Como compilar código com paralelismo em C, utilizando o compilador GCC e a biblioteca OpenMP.

Primeiro baixe a versão 4.3.1 do gcc com o MinGW. A versão do gcc que roda com o MinGW oficial atual é a 3.5.0. Somente a partir da versão 4.2.0, o gcc dá suporte a biblioteca OpenMP.

Link para a versão não oficial do MinGW com Gcc 4.3.1: http://downloads.sourceforge.net/tdm-gcc/tdm-mingw-1.808.3-f2.exe

Após baixar e instalar, vá até a pasta C:\MinGW\lib\gcc\mingw32\4.3.2 e procure pelo arquivo libgomp.spec, abra-o com o bloco de notas ou notepad++. Na última linha do arquivo acrescente o seguinte parâmetro: -lpthreadGCE2 (Esse parâmetro manda o compilador linkar a biblioteca libpthreadGCE2.a que tem as funções para o funcionamento do paralelismo). A última linha do arquivo deverá ficar assim:

*link_gomp: -lgomp %{static: -lpthread } -lpthreadGCE2

Agora clique com o botão direito em Meu Computador ou vá em Painel de controle -> Sistema, vá na aba "Avançado", depois clique no botão "Variáveis de ambiente" lá em baixo, em "Variáveis do Sistema" clique em PATH e clique em "Editar". Em "Valor da variável" coloque no final C:\MinGW\bin, depois do ;. Clique em "OK", "OK" e "OK".

Para informar onde seu código deve ser paralelizado é necessário informar ao compilador onde isso deve ser feito. Utiliza-se a diretiva #pragma. Então antes de iniciar a operação que quer paralelizar, coloque #pragma omp parallel, e logo abaixo, insira chaves para delimitar o blogo de código que será paralelizado.

Abaixo das chaves inseridas, antes do primeiro for, insira a diretiva #pragma omp for private(i, j, k), não coloque as chaves dessa vez. As letras i, j e k indicam que ele deverá paralelizar os laços de repetição que possuem essas variáveis de controle.

Exemplo de código:

#pragma omp parallel
{
#pragma omp for private(i, j, k)
for (i=0;i<ordem;i++) {
for (j=0;j<ordem;j++) {
result[i][j] = 0;
for (k=0;k<ordem;k++) {
result[i][j] += matriz1[i][k] * matriz2[k][i];
}
}
}
}



Por fim, Vá em Iniciar -> Executar.. e digite cmd. Navegue até a pasta que tem o seu código fonte (Para mudar de pasta no cmd utilize o comando cd \caminho\). Então é a hora de compilar:

código normal:
gcc codigoFonte.c -o arquivoDeSaida.exe
código paralelizado:
gcc codigoFonte.c -o arquivoDeSaida.exe -fopenmp

Essa é uma forma simples de paralelisar seu código utilizando o compilador GCC e a biblioteca OpenMP.

domingo, 7 de novembro de 2010

[dica] Camtasia Studio gravar Power Point

O software Camtasia apresenta um erro ao escolher a opção de gravar Power Point: "The Camtasia Studio PowerPoint Addins is not enabled. Do you wish to enable the addin and begin recording Powerpoint?"

Ao clicar em Sim (Yes) é exibido uma mensagem de erro: "An error was encountered while enabling the Camtasia Studio PowerPoint Addin.

Para habilitar o Plugin vá em: Tools -> Options -> PowerPoint -> Enable PowerPoint Add-in - OK

Se você usa o Windows 7 ou Vista terá outra mensagem de erro impedindo habilitar o plugin: "Administrator privileges are required to enable PowerPoint Add-in".

Esse erro ocorre porque você está tentando fazer alterações no Power Point, o que no Windows 7 e Vista só é permitido pelo Administrador. Porém, mesmo que você só tenha um usuário em seu computador e esteja logado com ele, o programa não é executado como Administrador.

Você precisa executar o Camtasia Studio como administrador e repetir os passos acima. Para fazer isso, clique com o botão direito do mouse e em "Executar como Administrador" (e enfatizando, repita os passos acima).

Logo, depois o plugin estará disponível no Power Point na aba "Suplementos".