OpenMP com Intel Edison

openmp

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.

Engenheiro de Computação atuando com Big Data na Amazon Web Services!

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

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

Home » Linux Embarcado » OpenMP com Intel Edison
Comentários:
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments
Talvez você goste:

Séries

Menu