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.

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

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!

avatar
 
  Notificações  
Notificar