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

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

The escape of blue eyed vampires (answer)

The island of blue eyed vampires (answer) An initial idea Each one needs to figure out if him/herself is blue eyed. They assume having blue eyes and see how the others react. A technical details There are some variations to formalize this problem using different type of logic: modal logic, temporal logic, Public Announcement Logic and so on. I believe that those kind of prove are tedious to write and read. For now, I will write a sketch to a prove but I belive the best way to prove is using an algorimthm what basically, it would be an adaptation of DPLL algorithm (Davis–Putnam–Logemann–Loveland) that uses dedutive reasoning and prove by contraction. Legend \[\begin{matrix} BlueEyed(X) :X \text{ is blue eyed.} \\ Leave(X) :X \text{ leaves.} \\ O(y) :y \text{ holds at the next (temporal) state.} \end{matrix}\] In this temporal simplified logic, we have a set of state that holds the in- formation of days, \(W = \{d_0, d_1, d_2, d3 \ldots , d_n\}\) and transition \(S : W \rightarrow

Answering: top reasons I hate living in Brazil

Yes, some guys shared a teasing topic about “Top reasons why I hate living in Brazil”: http://www.gringoes.com/forum/forum_posts.asp?TID=17615&PN=1&title=top-reasons-i-hate-living-in-brazil What is the point here? The whole text is loaded of cliclés, people that you will hardly find, etc most of time just pissing people off.   I don’t think Brazil is the best country in the world. Also, I don’t think Brazilians don’t make mistakes. Actually we do all the time but most of us really care about our mistakes specially those were pointed out. Some feel like an expatriate, alien in own country. Others reflect about how we could improve. Others  simply don’t accept teases from John Does. So, I’m actually truly bothered with people believing in a bunch of false statements (specially Brazilians) or supporting some cynical arguments disguised “sincere” criticisms . Yes, I make mistakes all the time, and as most of Brazilians, I don’t speak English. However, I will