Pular para o conteúdo principal

GPGPU - Parte I

Utilizando a placa de vídeo para realizar operações matriciais.


Essa é uma idéia que ouço desde quando entrei na USP em 1998. Basicamente, as placas de vídeo são capazes de realizar operações matriciais de "uma só vez". Peço aos mais entendidos que me corrijam quando eu estiver (muito) errado.

Isso pode parecer meio estranho mas muitas das transformações de imagens apresentadas por sua placa de vídeo são série de transformações lineares. Dito isso, é um desperdício de tempo e processamento multiplicar uma matriz por outra com três laços aninhados! Aliás, é um desperdício deixar sua planilha eletrônica resolver equações lineares e outros problemas lineares computando um elemento da planilha por vez.

Chegou a hora de dar um basta nisso. Já não era sem tempo. Com avanço das placas de vídeo e das linguagens de renderização (pasmem! eu pensei que isso já seria possível a 10 anos atrás) é possível, por exemplo, multiplicar um vetor por um escalar em tempo constante.

Vamos por colocar as mãos na massa... O que é necessário ? Pelo que eu investiguei, é preciso do OpenGL 2.0 (mais especificamente o GLSL que a linguagem de programação de shaders) ou uma das edições recentes do DirectX (9 em diante).

Peraí... alguém me explica: isso é complicado mesmo ou por que ninguém fez nada até agora? E pra que essa linguagem GLSL. Porque, conforme veremos, enviar blocos de código para a Placa de Vídeo executar requer uma certa sofisticação tecnológica que tanto a Kronos como os fabricantes de placas de vídeo não nos deram.

Um passo por vez... o que é OpenGL? Isso pode parecer uma pergunta besta mas na verdade entender o significado do OpenGL ajuda a compreender a sofisticação do processo. O OpenGL não é uma API para interagir com a placa de vídeo! Nada disso... o OpenGL é na verdade uma API para a renderização de gráficos. O programador dispõe de uma linguagem para descrever o modelo gráfico que desejar e os drivers das placas de vídeo (que implementam o OpenGL) transformam esse modelo em chamadas de baixo nível para a placa. Essa últimas realizam as computações necessárias e emitem seus resultados para o monitor.

Veja que o programador não programa diretamente a placa para realizar as operações lineares. Também, observe quanto o OpenGL é diferente do DirectX que fornece através do seu componente Direct3D chamadas de baixo nível a placa de vídeo (o que favorece o desenvolvimento de jogos _ Por outro lado, a linguagem de renderização do OpenGL favorece o desenvolvimento de programas gráficos profissionais). Perceba que no OpenGL o desenvolvedor descreve os vários conceitos presentes no o 3D Studio : cenário, fontes de iluminação, textura dos objetos, a câmera etc. Bom é através de um mapeamento desses conceitos para a computação tradicional é que é possível implementar o GPGPU.

Comentários

Postagens mais visitadas deste blog

Um texto pós-moderno - better man

Espere olhando para as horas... são 4 horas. Tem que parar. Nesse tom melancólico, começa a modesta música "better man", uma balada pop composta por Eddie Vedder ainda na adolescência. A música é a ilustração perfeita da ironia. O próprio título é irônico, uma vez que em momento algum na música aparece um better man. She lies and says she's in love with him, can't find a better man... Irônico, não!? Para começar, com a personagem central da história, a mulher que aguarda tarde da noite seu esposo... Ela chega a treinar com o espelho o fim do relacionamento. E o que faz? Diz a negação do que queria dizer. Vedder escreve músicas sobre sentimentos fortes. Sua relação com a mãe foi bastante complicada pelo o que descreve em suas canções. Na trilogia Mommy, Vedder descreve um homem perturbado com o relacionamento materno; a mãe mente para o filho sobre a identidade do pai, revela a verdade para o garoto na puberdade dizendo a ele como se parece com o verdadeiro pai e o

Pequeno manual do ócio em terras alemãs

  Pequeno manual do ócio em terras alemãs Como Lei alemã favorece aproveitadoras (e alguns aproveitadores que nunca tive o desprazer de conhecer)   Há algumas vias pelas quais pessoas de países em desenvolvimento migram para países como a Alemanha.   Por exemplo, é sabido que países desenvolvidos sofrem de escassez de mão-de-obra qualificada. Por esse motivo, países como a Alemanha dispõe vistos "especiais" para profissionais em demanda. Esse é o conceito do Blaukart (Blue Card) que na Alemanha se destina a profissionais salário anual seja superior a 55 mil euros ou 43 mil no caso de profissionais de áreas em alta demanda. Não há como recrutar essa mão-de-obra sem que a família desses profissionais também possa ser relocada. Então esses profissionais e seus familiares são relocados.   Além de se qualificar para essas vagas em demanda, ou ser parte direta da família qualificada, outra via possível para a imigração para o território alemão é através do matrimôni

O argumento anti-álcool

A lógica contra a produção do álcool é mais ou menos a seguinte: Os produtores capitalistas, produtores do combustível de humanos e máquinas irão preferir vender combustível mais caro para os mais ricos do que comida barata para os mais pobres. Máquinas e homens irão competir por combustível... Mas enquanto os ricos terão dinheiro para comprar comida e combustível o que sobrará aos pobres!? Vale lembrar que não importa se a produção é de cana ou de milho, a competição é pela terra e não pelo grão. Ainda, mesmo que o país agrícola taxe o produtor de combustível de maneira diferenciada ao produtor de comida, o governo teria maiores dificuldades em repartir o "bolo", haja vista que os governos que temos não são as instituições mais eficientes e, além do que, a comida estará mais cara. Ora, esquecem os "amigos" comunistas que a venda de biocombustível dará aos países agrícolas uma oportunidade ímpar de participar da economia mundial como protagonistas, e não meros fi