<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2106030858388342641</id><updated>2024-10-04T22:59:41.080-03:00</updated><title type='text'>Aventuras de um Garoto Digital do Século 21</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://21stdigitalboy.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://21stdigitalboy.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>21stDigitalBoy</name><uri>http://www.blogger.com/profile/03795377422590303564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2106030858388342641.post-7874460693041305531</id><published>2011-05-10T17:34:00.000-03:00</published><updated>2011-05-10T17:34:58.423-03:00</updated><title type='text'>CUDA - A aposta da Nvidia para Computação de Alto Desempenho</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Olá, leitores!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Seguindo a série sobre Supercomputação, vou falar um pouco sobre a tecnologia que tenho estudado nesse tema, a Computing Unified Device Architecture - CUDA.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A arquitetura CUDA permite usar as placas de vídeo da Nvidia como processadores paralelos de uso geral. &amp;nbsp;É uma tecnologia proprietária, mas em constante desenvolvimento e com uma já grande comunidade de usuários e muitos trabalhos publicados. A primeira versão foi lançada ao público em 2006, simultaneamente ao lançamento dos novos chips da família G80. A primeira placa a suportar a CUDA foi a GeForce 8800 GT.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O objetivo desta tecnologia é permitir o uso do poder de processamento de sua placa de vídeo para cálculos de computação geral. Esta técnica nasceu com o nome de GPGPU. Mais informações sobre o GPGPU no&amp;nbsp;&lt;a href=&quot;http://21stdigitalboy.blogspot.com/2011/04/surgimento-e-panorama-da.html&quot;&gt;post anterior&lt;/a&gt;. Ela também visa a facilitar a programação, dispensando um conhecimento profundo da arquitetura de hardware da placa, permitindo ao programador concentrar-se apenas na programação.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Hoje, já está em sua versão 4.0, com suporte para as placas mais novas e também às mais antigas. O desenvolvimento do framework acompanha o desenvolvimento das novas arquiteturas de hardware; novas funções são adicionadas sempre que a arquitetura do hardware evolui.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Então você quer programar em CUDA? Vamos ver o que você vai precisar:&lt;/div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Certifique-se que sua placa está com os drivers atualizados e suporta a tecnologia. Você pode conferir neste link:&amp;nbsp;&lt;a href=&quot;http://www.nvidia.com.br/Download/index.aspx?lang=br&quot;&gt;http://www.nvidia.com.br/Download/index.aspx?lang=br&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Faça o download do toolkit, de acordo com o sistema operacional que você usa:&amp;nbsp;&lt;a href=&quot;http://developer.nvidia.com/cuda-toolkit-32-downloads&quot;&gt;http://developer.nvidia.com/cuda-toolkit-32-downloads&lt;/a&gt;.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Faça o download do SDK (Software Development Kit). O SDK contém exemplos documentados com os códigos fonte, incluindo um template que você pode usar para começar o seu programa. Ele está na mesma página do toolkit.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Caso você tenha problemas na instalação do toolkit e do SDK no Ubuntu, segue um ótimo roteiro para instalá-lo corretamente:&amp;nbsp;&lt;a href=&quot;http://gpubrasil.com/2010/05/12/instalacao-do-cuda-3-0-no-ubuntu-10-04/&quot;&gt;http://gpubrasil.com/2010/05/12/instalacao-do-cuda-3-0-no-ubuntu-10-04/&lt;/a&gt;. Esse roteiro pode ser usado para a versão 3.2 normalmente. Ainda não testei no Ubuntu 11.04, mas sei que também funciona com o 10.10.&lt;/li&gt;
&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Com os drivers e ferramentas instalados, você já tem tudo o que precisa para começar a se divertir com sua placa! ;-)&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Agora, fica muito mais fácil programar quando você usa um Ambiente de Desenvolvimento Integrado (IDE). Para programar em CUDA, utilizando C/C++ você pode usar facilmente qualquer uma das IDE&#39;s conhecidas. Neste post, vou mostrar como configurar o Eclipse no Ubuntu. Por quê? Porque é o que eu uso! ;-) Nada contra o Windows, é que ainda não programei para ele. Mas para usar o Eclipse para Windows, deve ser bem parecido.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O Eclipse tem me ajudado bastante e já estou bem acostumado com ele. Tem bons recursos como refactoring, completa o código, busca de headers, gerenciamento de versões e outras funcionalidades por meio de sua vasta biblioteca de plugins. Eu recomendo! Para configurá-lo siga estes passos:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Faça o download do Eclipse Classic, de acordo com o seu SO:&amp;nbsp;&lt;a href=&quot;http://www.eclipse.org/downloads/&quot;&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://www.eclipse.org/downloads/&quot;&gt;&lt;/a&gt;Após instalá-lo, você terá o ambiente de desenvolvimento padrão para Java. Para programar em C/C++ precisamos instalar o plugin CDT (C/C++ Development Tools). Para isso, faça o seguinte:&lt;/li&gt;
&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;&amp;nbsp;Abra o Eclipse e clique em Help &amp;gt; Install new software...&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;No diálogo que se abre, escolha &quot;All available sites&quot; na primeira caixa de texto.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Embaixo, vai aparecer uma árvore com várias opções. Procure por &quot;Programming Languages&quot; e clique no sinal de + para estender as opções.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Marque a caixa com a opção &quot;Eclipse C/C++ Development Tools&quot;.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Clique em Next&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Se aparecer um termo de serviço, aceite (depois de ler, né? XD) e continue. O Eclipse fará o download dos componentes e irá instalar o ambiente para C/C++.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Quando ele terminar a instalação, irá pedir para reiniciar. Após o reinício, você já pode começar a programar em C/C++!&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Muito bom. Agora que já temos o ambiente pronto, vamos começar um novo projeto e configurá-lo para usar o template do CUDA como base:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li style=&quot;text-align: justify;&quot;&gt;Abra o Eclipse e clique em File &amp;gt; New &amp;gt; Project... (Se você ver a opção C++ Project, pode clicar nela e pular a próxima etapa)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Na caixa do wizard, procure a opção C/C++ e expanda clicando no sinal de +. Escolha C ou C++ Project. Clique em Next.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg83uW-SRaipJVINxdC6Ab2HuPOXsZWyx7la5bBqH89zD462LSFypTIENSDUpes6cwYkwQx92b0unIT1st08VivoQYAStjyFvmdcJ2GVv7nDAr4sepeeWVjpfIFmg1AjPcWAMxpHE-RBf8/s1600/NepProject.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;303&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg83uW-SRaipJVINxdC6Ab2HuPOXsZWyx7la5bBqH89zD462LSFypTIENSDUpes6cwYkwQx92b0unIT1st08VivoQYAStjyFvmdcJ2GVv7nDAr4sepeeWVjpfIFmg1AjPcWAMxpHE-RBf8/s320/NepProject.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: justify;&quot;&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Na próxima etapa, coloque o nome do projeto, e desmarque a caixa &quot;Use default location&quot;. Clique no botão &quot;Browse...&quot; e navegue até a pasta onde você instalou o SDK do CUDA (você se lembra onde, né?). Na pasta raiz do SDK, navegue até a pasta C/src. Nesta pasta, ficam os códigos fonte dos exemplos e o template. Crie uma pasta para o seu projeto. Na seção &quot;Project Type&quot; escolha Executable &amp;gt; Empty Project. Na seção &quot;Toolchains&quot; escolha Linux GCC.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJjssUuasAuw7-nq6WCl0BRqEvaCPuYcKeNeDRDt2o9R5Wkoz2L4VJOlyeJ5eyJdZdRIeIuxl6y5R04UW9UL4vKMoFzIr__xNavdR-5JRtYLdE-zStkgVkIek2BH5z0ZDRpQNp_89f38/s1600/CppProj.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJjssUuasAuw7-nq6WCl0BRqEvaCPuYcKeNeDRDt2o9R5Wkoz2L4VJOlyeJ5eyJdZdRIeIuxl6y5R04UW9UL4vKMoFzIr__xNavdR-5JRtYLdE-zStkgVkIek2BH5z0ZDRpQNp_89f38/s320/CppProj.png&quot; width=&quot;270&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;Na próxima caixa, clique no botão &quot;Advanced Settings&quot; para abrir as propriedades do projeto. No lado esquerdo, clique em &quot;C/C++ Build&quot;. No lado direito, mude a opção &quot;Cofiguration&quot; para [All Configurations]. Desmarque a opção &quot;Generate Makefiles automatically&quot;. Clique na aba &quot;Behaviour&quot; e apague a palavra &quot;all&quot; que está na caixa de texto ao lado da opção &quot;Build(incremental build)&quot;.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEWN5-W_I6_c7POWFVYdkaBwtpF-lDe4JcXC70cQ6Fur7Yo3uG0VXvGZpnk6dw5ibzn9Ks7p7miYhSTRFxob3jhhVpVkHUzRaGf9iFgzDAzW0WlZoeAQOblpWtMDJjJ4xHVYen5vjrEXI/s1600/config.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEWN5-W_I6_c7POWFVYdkaBwtpF-lDe4JcXC70cQ6Fur7Yo3uG0VXvGZpnk6dw5ibzn9Ks7p7miYhSTRFxob3jhhVpVkHUzRaGf9iFgzDAzW0WlZoeAQOblpWtMDJjJ4xHVYen5vjrEXI/s400/config.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Volte no lado esquerdo e expanda a opção &quot;C/C++ General&quot; clicando no nosso velho conhecido sinal de +. Clique na opção &quot;Paths and Symbols&quot;. Na aba &quot;Includes&quot;, escolha &quot;C sources&quot; e clique no botão &quot;Add...&quot; e depois em &quot;File System...&quot;. Navegue até a pasta C/common/inc que fica dentro da pasta do SDK. Faça o mesmo para a opção &quot;C++ sources&quot;, caso você queira programar em C++. Em seguida, clique na aba &quot;Library Paths&quot;. Clique no botão &quot;Add...&quot; e adicione a pasta /usr/local/cuda/lib ou /usr/local/cuda/lib64 de acordo com a arquitetura de seu SO (considerando que você instalou a toolkit no diretório padrão. Caso tenha instalado em outro diretório, basta informá-lo de acordo com sua escolha). Clique em &quot;OK&quot;, depois em &quot;Finish&quot;.&lt;/li&gt;
&lt;li&gt;O Eclipse irá perguntar se você quer mudar para a perspectiva de C/C++, caso seja a primeira vez que você começou um projeto C/C++. Responda &quot;Yes&quot;. Do lado esquerdo, você verá o &quot;Project Explorer&quot;, com os nomes dos seus projetos. Clique com o botão direito do mouse no projeto que acabamos de começar (filosófico isso...) e clique em &quot;Import...&quot;. Na caixa que aparece, expanda o item &quot;General&quot; e clique em &quot;File System&quot;. Clique em &quot;Next&quot;. Na próxima caixa, clique no botão &quot;Browse&quot; e navegue para a pasta do SDK/C/src/template. Marque a caixa de seleção que aparece no lado esquerdo, junto ao nome da pasta template. Isso irá marcar todos os arquivos da pasta. Nós vamos precisar deles. Clique em &quot;Finish&quot;.&lt;/li&gt;
&lt;li&gt;No &quot;Project Explorer&quot;, clique no sinal de + ao lado do nome do seu projeto. Isso irá expandir e mostrar os arquivos que o compõem. Dê um duplo-clique no arquivo chamado &quot;Makefile&quot; para abri-lo. Procure a variável EXECUTABLE e mude o seu valor para um nome qualquer. Este será o nome do executável que será compilado.&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE42EFwXDN_NvelyimNLvUgsdZn6iniByscrtK73hGv_GV5P0e3DAsZ-vIlE5CXF-XBll2-fnnqYTPUdXCmZ_B9se75wGeYHs-RGcHXei5K_p6ZheSuJshmAw9C-MlX1Yp3cQnqPUyaUc/s1600/Captura_de_tela.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE42EFwXDN_NvelyimNLvUgsdZn6iniByscrtK73hGv_GV5P0e3DAsZ-vIlE5CXF-XBll2-fnnqYTPUdXCmZ_B9se75wGeYHs-RGcHXei5K_p6ZheSuJshmAw9C-MlX1Yp3cQnqPUyaUc/s640/Captura_de_tela.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Clique no menu Project &amp;gt; Build project. Repare no console se não ocorrerão erros. Caso a compilação seja bem sucedida, temos que informar ao Eclipse onde está o nosso executável. Clique agora no menu Run &amp;gt; Run Configurations... Nessa caixa, no lado esquerdo, clique em &quot;C/C++ Application&quot; e em seguida, no ícone &quot;New launch configuration&quot;, acima da seção. Ele se parece com uma folha em branco com um sinalzinho de +. Deverá aparecer um item com o nome do seu projeto. Agora clique no botão &quot;Browse&quot;. Navegue até a pasta do SDK/C/bin/linux/release e procure o executável com o nome que você escolheu. Clique em &quot;Apply&quot; e depois em &quot;Run&quot;. Se tudo correr bem, o programa teste será executado no console do Eclipse, mostrando o tempo de execução.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Com isso, estamos prontos para começar a programar. Let&#39;s code!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;No próximo post, vou falar mais das características e de como a CUDA funciona, para termos uma base de conhecimentos. Lembrando que computação paralela requer alguns cuidados, então é fundamental termos alguns conceitos bem definidos para que o nosso código funcione corretamente. Caso surja alguma dúvida, não se acanhe e use os comentários. Se você já usa o CUDA em outros ambientes de desenvolvimento e outros SO&#39;s e quiser compartilhar seu conhecimento, seu comentário (e links!) será bem-vindo. Até o próximo post!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://21stdigitalboy.blogspot.com/feeds/7874460693041305531/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/05/cuda-aposta-da-nvidia-para-computacao.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/7874460693041305531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/7874460693041305531'/><link rel='alternate' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/05/cuda-aposta-da-nvidia-para-computacao.html' title='CUDA - A aposta da Nvidia para Computação de Alto Desempenho'/><author><name>21stDigitalBoy</name><uri>http://www.blogger.com/profile/03795377422590303564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg83uW-SRaipJVINxdC6Ab2HuPOXsZWyx7la5bBqH89zD462LSFypTIENSDUpes6cwYkwQx92b0unIT1st08VivoQYAStjyFvmdcJ2GVv7nDAr4sepeeWVjpfIFmg1AjPcWAMxpHE-RBf8/s72-c/NepProject.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2106030858388342641.post-7861803603986280554</id><published>2011-04-27T15:49:00.000-03:00</published><updated>2011-04-27T16:57:20.372-03:00</updated><title type='text'>Surgimento e Panorama da Supercomputação em GPU</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Olá leitores!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para inaugurar o blog, vamos conversar um pouco sobre essa nova tendência, a da Computação de Alto Desempenho utilizando GPU. Ou, GPU Computing, para simplificar.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;GPU Computing começou com uma turma meio perturbada, que teve a ideia de usar o paralelismo dos fragment processors das placas de vídeo para cálculos gerais. Daí a sigla da época era GPGPU, inglês para Computação de Propósito Geral utilizando Unidades de Processamento Gráfico (General Purpose computation on Graphics Processing Units). Isso foi por volta de 2002, quando os processadores gráficos tinham evoluído de simples processadores de vídeo com algumas funções matemáticas especiais para computação gráfica, para poderosos processadores vetoriais, capazes de processar milhões de pixels, texels, voxels e mais um punhado de coisinhas terminadas em xel. A turminha da computação gráfica já tinha desenvolvido efeitos bem bonitos usando linguagens bem específicas, com Cg (C for graphics), GLSL (OpenGL Shader Language). &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Os shader programs são pequenos trechos de código que são replicados e executados simultaneamente em vários elementos de uma textura ou vértices de um polígono. Através dos shaders, os programadores gráficos conseguem fazer aqueles brilhos, explosões, sombras e outras coisinhas legais que gostamos de ver nos nossos jogos! Então, alguém um dia pensou &quot;Ei, se é possíver fazer uma operação numa textura inteira, por que não fazer umas continhas?&quot;. Se pensarmos em uma imagem como uma matriz de pixels, onde cada pixel é um valor de cor, é possível imaginar que daria para usar esta estrutura para armazenar outro tipo de dados. As placas de vídeo da época já eram capazes de trabalhar com texturas com números de ponto flutuante de 32 bits (o nosso velho float). Então, foi exatamente isso que essa turminha fez! Em vez de cores, eles armazenaram números. E em vez de aplicarem efeitos gráficos, eles trabalharam com várias texturas, fazendo multiplicações, somas, transposições e voilá! Conseguiram fazer essas operações 20 vezes mais rápidos que nos métodos tradicionais. Resumindo, o GPGPU consistia em &quot;enganar&quot; a placa de vídeo e fazê-la mastigar números, em vez de compor texturas. Um verdadeiro trabalho de um ninja dos códigos!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Mas isso dava muito... trabalho! As texturas de ponto flutuante são normalizadas entre 0 e 1, ou -1 e 1. Ou seja, você tem que transformar seus dados para esta faixa, calculá-los e depois transformá-los de volta. E nesse processo, um pouco da precisão numérica era sacrificada. Mas rodar um processo 20 vezes mais rápido é bem incentivador. Rodar aquela simulação de duas semanas em algumas horas? Tô dentro! Começaram a surgir várias pesquisas implementando métodos matemáticos nas placas de vídeo.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Isso chamou a atenção da indústria. Ora, se eu já ganho um punhado de dinheiro vendendo placas para jogadores, se eu vender mais um punhado de placas para pesquisadores, vou ganhar outro punhado de dinheiro! Ei! Esse povo tem mais dinheiro, então eu posso cobrar mais caro! XD&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Bem... mais ou menos. Os pesquisadores querem precisão e facilidade de uso. A maioria dos interessados são físicos, químicos, matemáticos que estão interessados em fazer simulações e não em ficar escrevendo código difícil! Então, as fabricantes se movimentaram e lançaram ferramentas para facilitar o uso de suas placas de vídeo para computação geral.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Hoje, programar a sua placa de vídeo está muito mais fácil as duas maiores fabricantes já oferecem um amplo conjunto de ferramentas para fazê-lo. Destacam-se a tecnologia CUDA, da Nvidia e a OpenCL, um padrão aberto mantido por um consórcio. A gigante Microsoft também quer entrar na brincadeira e lançou o DirectCompute, que permite usar a biblioteca gráfica deles, o famoso DirectX, para computação geral. Também já foram publicados milhares de artigos e muitos softwares famosos, como Matlab, estão usando esta tecnologia para melhorar sua performance. As indústrias de jogos também estão usando esse negocinho para fazer efeitos de física melhores.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Para quem quiser saber mais, dá uma passadinha no site da &lt;a href=&quot;http://www.nvidia.com.br/page/home.html&quot;&gt;Nvidia&lt;/a&gt; e procure por CUDA, ou no site do grupo &lt;a href=&quot;http://www.khronos.org/&quot;&gt;Khronos&lt;/a&gt;, que mantém o OpenCL. Ou aqui, no &lt;a href=&quot;http://gpubrasil.com/&quot;&gt;GPUBrasil&lt;/a&gt;, que é um grupo de estudos com essa tecnologia.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Acho que tá bom por agora, não é? No próximo post, falarei mais sobre a linguagem CUDA, que é a que eu tenho estudado mais e falarei como instalar os kits de desenvolvimento e configurar o Eclipse para programar. Vejo vocês lá!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://21stdigitalboy.blogspot.com/feeds/7861803603986280554/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/04/surgimento-e-panorama-da.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/7861803603986280554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/7861803603986280554'/><link rel='alternate' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/04/surgimento-e-panorama-da.html' title='Surgimento e Panorama da Supercomputação em GPU'/><author><name>21stDigitalBoy</name><uri>http://www.blogger.com/profile/03795377422590303564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2106030858388342641.post-153981536929429757</id><published>2011-04-27T14:42:00.000-03:00</published><updated>2011-04-27T16:57:00.177-03:00</updated><title type='text'>Saudações, aventureiros da Nave Digital</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;Olá, leitores!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Desde que comecei a estudar essa máquina fascinante, chamada computador, lá nos meados da longínqua década de 90 (putz, já é no século passado!), eu descobri muita coisa interessante. E cada dia, descubro coisas novas... E como sei que de vez em quando dá um trampo do cão conseguir informações resolvi criar este blog, que vai servir como um diário de bordo das coisinhas legais com as quais eu estiver brincando.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;O meu objetivo vai ser centralizar e divulgar o que eu for aprendendo e com a contribuição de vocês, nobres leitores, aprender muito mais. E, claro, colaborar para difundir esse conhecimento!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Sobre mim, sou adepto da filosofia do Open Source, então, o que eu for produzindo, vou compartilhar sob essa filosofia. Também sou um cientista, portanto, gosto de chafurdar nas pesquisas para conhecer o que o povo anda criando por aí... E sobretudo, um gamer assumido, então tenha certeza que você vai ouvir muito sobre jogos aqui!&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Bom espero que gostem e achem algo útil por aqui. Logo, logo vou fazer a primeira postagem mais técnica sobre as coisinhas com as quais eu tenho me divertido! T+!&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://21stdigitalboy.blogspot.com/feeds/153981536929429757/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/04/saudacoes-aventureiros-da-nave-digital.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/153981536929429757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2106030858388342641/posts/default/153981536929429757'/><link rel='alternate' type='text/html' href='http://21stdigitalboy.blogspot.com/2011/04/saudacoes-aventureiros-da-nave-digital.html' title='Saudações, aventureiros da Nave Digital'/><author><name>21stDigitalBoy</name><uri>http://www.blogger.com/profile/03795377422590303564</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>