No período dos dias 21 a 25 de Julho de 2015, aconteceu na Universidade Anhembi Morumbi o evento The Developers Conference 2015, em que cada dia é marcado por uma série de trilhas que tratam de assuntos tais como Web, aplicações móveis, Internet das Coisas, dentre outras. E uma destas trilhas foi sobre o tema de Embarcados, que aconteceu no dia 23, tendo como coordenador o mestre Alessandro Cunha.

Dentre as propostas que enviei durante o Call for Papers do evento, aquela com o tema de “Aplicações Multicore com Linux Embarcado usando Raspberry Pi 2” foi aprovada e selecionada.

Como professor acadêmico, vejo que é de fundamental importância destacar a necessidade atual de saber programar aplicações que usem sistemas multicores, ainda mais em um cenário onde até mesmo o seu smartphone pode ser dotado de um processador multicore. Se há algum tempo atrás a programação multicore era algo visto somente na academia, longe do chamado “uso civil”, hoje… É praticamente mandatório. Está em seus computadores, televisores, videogames, tablets, smartphones, e até mesmo relógios.

Aplicações Multicore satira
Figura 1 – Sátira com “Game of Thrones”. Tradução: Multicore está vindo. Fonte: es.memegenerator.net

O que acontece é que muitos programadores infelizmente não prestam a devida atenção a esse aspecto, e suas aplicações falham em utilizar de modo eficiente os recursos presentes na máquina em execução, correndo o risco de levar potenciais usuários a descreditar a aplicação usada.

Lembro-me muito bem de um treinamento que fiz com as equipes da Intel e da Microsoft em São Paulo-SP, a respeito de demonstrar as novas arquiteturas de Ultrabooks com processadores Intel e Windows 8. Os professores destacaram que de nada adianta desenvolverem uma baita arquitetura, fazer toda uma propaganda de baixo consumo e potência, se as aplicações que forem executadas não fizerem uso eficiente dos recursos, e assim, usarem demasiadamente do processador, levando a um maior consumo de bateria e lentidão do sistema, por exemplo.

Aplicacoes Multicore: satira 2
Figura 2 – Meme satirizando o multicore onde só um núcleo trabalha. Fonte: www.reddit.com

Tomando o embalo dos ânimos embarcados, aproveitei para usar a Raspberry Pi 2 como alvo da minha palestra, pelo simples fato de ser uma placa barata, amplamente divulgada pela mídia digital (coff, coff, Facebook), e… ser multicore. 4 núcleos ARM Cortex A7 rodando a 900 MHz de pura emoção.

Aplicacoes-Multicore-Raspberry-Pi-2
Figura 3 – Raspberry Pi 2. Fonte: www.raspberrypi.org

Beleza, o usuário comprou a placa, instalou Linux, começa a rodar uns programas, fica se sentindo o máximo por estar com um equipamento “top”. Mas estarão seus programas usando esses núcleos…? É só escrever um programa, compilar e usar…? Não.

É preciso que o seu programa use de maneira eficiente os recursos disponíveis na máquina em questão, tais como a presença de mais de um núcleo de processamento, grande ponto do meu argumento, que vai de encontro ao que chamamos de programação paralela. Nisso, há também mais uma série de desafios tais como lidar com conflitos ao acesso de memória, deadlocks, dentre outros, que podem vir a se tornar um pesadelo, caso uma aplicação anteriormente sequencial não seja devidamente adaptada para o seu equivalente paralelo.

Destacando este ponto, trabalhei na palestra que apresentei os seguintes aspectos:

Para ver como eu trabalhei estes assuntos, veja adiante os slides que usei no evento TDC 2015.

Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 – TDC2015 do André Curvello