Introdução à Programação em CUDA

Nos últimos anos, as placas gráficas (GPU – Graphical Processing Unit) ganharam relevância no âmbito da computação paralela. De facto, os mais recentes modelos da NVidia e da AMD/ATI – dois dos maiores construtores de placas gráficas – têm na ordem do milhar de núcleos de processamento, “core” na designação anglo-saxónica. Exemplo disso é a GPU NVidia GTX 680 que tem 1536 núcleos, estando creditada com um desempenho máximo (teórico) de 3.1 TFLOPS em cálculo de vírgula flutuante com precisão simples, sendo que um TFLOPS corresponde a 1012 operações de vírgula flutuante por segundo.

Contudo, do ponto de vista de computação paralela, de pouco serve a existência de milhares de cores se o seu uso estiver limitado somente à produção e tratamento de gráficos. Foi pois a pensar na comunidade de computação paralela e no potencial mercado que essa representa, que a NVidia lançou em Novembro de 2006, a versão 1.0 da plataforma Compute Unified Device Architecture (CUDA). Embora limitado às GPU da NVidia, as sucessivas versões de CUDA tornaram possível o uso de GPU para o desenvolvimento e execução de computação paralela de larga escala. Em alguns cenários de computação – tratamento de imagens e video, processamento de dados, aplicações bioinformáticas, etc. – as GPU proporcionam velocidades de execução muito mais rápidas do que as alcançadas pelos processadores (CPU). Neste artigo introduzem-se os conceitos básicos de programação paralela para a plataforma CUDA.

Accionamento de LED e Arduino através de Interface Gráfica em Processing

Introdução

Em continuação dos artigos usando o micro-controlador Arduino que tenho vindo a escrever nas edições anteriores, apresento nesta edição um artigo que aborda uma das primeiras experiências que o utilizador pode ter com a plataforma Arduino, que é o simples accionamento de um ou mais LEDs.

O accionamento e controlo dos LEDs é muito simples pelo que neste artigo irei aprofundar um pouco mais e criar uma interface gráfica usando Processing que irá permitir controlar o LED usando um botão clicável pelo rato.

Continuar a ler

Introdução ao Design de Interfaces

Para um livro que se designa por “Introdução ao”, posso dizer que é um livro bastante completo. A começar pela capa, que na minha opinião, está muito bem conseguido. Simples, desde a fonte até á ilustração. Normalmente os livros técnicos não são “famosos” pelas suas capas mas este, destaca-se. O conteúdo do livro aborda o tema em quase todas as suas áreas, desde o início ao fim, os autores demonstram como é importante a interação humana perante dispositivos digitais, as suas fases de desenvolvimento e nos ensina a importância de seguirmos as regras de design.

O livro está dividido em três partes, de inicio, o livro contempla, historicamente, a importância que existe na interação Pessoa-Máquina, com histórias e exemplos que vão desde os primórdios da linha de comandos até as tecnologias mais recentes como interações móveis baseados em gestos/multi-toque.

Continuar a ler

Exercícios em Java – Algoritmia e Programação Estruturada

Quem está a dar, ou já deu, os seus primeiros passos na programação, sabe como tudo parece um bicho de sete cabeças. Seja qual for a linguagem de programação, existe um conjunto de regras mais simples do que a gramática da língua natural do programador, mas não deixa de ser tanto ou mais restritiva do que esta. Temos então o processo natural de aprendizagem de uma linguagem que passa normalmente pela leitura de texto explicativos destes conceitos, que numa primeira fase, por assentarem numa base lógica muito forte, se tornam muito complicados para a mente criativa do ser humano. Uma maneira de colmatar esta dificuldade na absorção de informação e processos, é a prática. Assim como o exercício físico repetitivo cria flexibilidade e memória muscular, o exercício mental cria a mesma flexibilidade mental assim como molda o pensamento aos conceitos usados.

Continuar a ler