OpenMP com Intel Edison

OpenMP com Intel Edison
OpenMP com Intel Edison

OpenMP (Open Multi-Processing) é uma API e conjunto de diretivas de compilação que permite o desenvolvimento de aplicações com processamento paralelo para utilizar todo o potencial de processadores multi-core ou então para múltiplos processadores que compartilhem a mesma memória principal.

 

Ela tem suporte para as linguagens C, C++ e Fortran. E funciona por meio de diretivas como uma extensão do compilador que precisa ser compatível com a OpenMP.

 

Processamento paralelo é um assunto muito complexo e a OpenMP tem inúmeros recursos, mas aqui iremos abordar apenas uma introdução ao tema e os primeiros passos para a utilização desse recurso na Intel Edison, que conta com um microprocessador Intel Atom dual-core.

 

Para quem está em seus primeiros contatos com a Intel Edison eu recomendo fortemente a leitura de três textos incríveis:

 

 

OpenMP na Intel Edison

 

Nos testes vou utilizar a distribuição Linux Ubilinux, baseada no Debian 7 "Wheezy" e customizada para a Intel Edison, por ela ter suporte total ao OpenMP. Caso você também tenha interesse em instalar a Ubilinux na sua Intel Edison, basta seguir as instruções deste guia da Sparkfun.

 

Primeiro conecte a placa na internet, abra um terminal via ssh, atualize, e baixe o htop para monitorarmos o uso dos núcleos do Intel Atom.

 

 

Deixe o htop aberto e abra outro terminal para executar o teste enquanto monitora o uso do processador.

 

Crie um arquivo main.c, e utilize o código abaixo.

 

 

O código é muito simples, e roda um loop onde fazemos operações matemáticas comuns apenas para mensurarmos a diferença do tempo utilizando um ou dois cores do processador.

 

 

Sem OpenMP

 

Agora vamos compilar e rodar o nosso programa da forma tradicional, medindo o tempo que ele levará para completar a rotina.

 

 

Resultados:

 

Execução sem OpenMP
Figura 1 - Execução sem OpenMP
htop sem OpenMP
Figura 2 - htop sem OpenMP

 

 

Com OpenMP

 

Agora vamos compilar utilizando a opção -fopenmp no GCC e depois rodar a aplicação novamente.

 

 

Resultados:

Execução com OpenMP
Figura 3 - Execução com OpenMP
htop com OpenMP
Figura 4 - htop com OpenMP

 

 

Conclusão

 

A utilização do OpenMP permitiu, com a adição de apenas uma linha de código, utilizarmos o potêncial total dos dois núcleos do processador principal da Intel Edison e praticamente reduzir pela metade o tempo de execução da nossa rotina.

Licença Creative Commons
OpenMP com Intel Edison por Igor Borges. Esta obra está licenciado com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Deixe um comentário

Seja o Primeiro a Comentar!

Notificar
avatar
 
wpDiscuz