<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TecnoSapiens &#187; CUDA</title>
	<atom:link href="http://www.tecnosapiens.com.br/category/programacao/cuda/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnosapiens.com.br</link>
	<description>De pedras lascadas a mentes afiadas</description>
	<lastBuildDate>Thu, 08 Sep 2011 17:00:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Computação Heterogênea</title>
		<link>http://www.tecnosapiens.com.br/2009/07/computacao-heterogenea/</link>
		<comments>http://www.tecnosapiens.com.br/2009/07/computacao-heterogenea/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 19:30:20 +0000</pubDate>
		<dc:creator>Weslley</dc:creator>
				<category><![CDATA[Ciência]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Novidades]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[Tecnologia de ponta]]></category>
		<category><![CDATA[Tecnologias do amanhã]]></category>
		<category><![CDATA[cell]]></category>
		<category><![CDATA[computação heterogênea]]></category>
		<category><![CDATA[hpc]]></category>

		<guid isPermaLink="false">http://www.tecnosapiens.com.br/?p=1679</guid>
		<description><![CDATA[Antes de qualquer outra palavra, gostaria de postar aqui um pedido de desculpas aos leitores, devido a diminuição considerável de novas postagens. Entretanto, os membros do time TS estão coincidentemente passando por períodos de mudanças e muito trabalho. Tentaremos, à medida do possível, voltar ao ritmo normal.  Bom, agora, com a cara de um cachorro [...]]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=4b903347bb118f717470fb592a2bdf0d&amp;default=http://www.tecnosapiens.com.br/images/defgravatar.gif' alt='No Gravatar' width=60 height=60/><p>Antes de qualquer outra palavra, gostaria de postar aqui um pedido de desculpas aos leitores, devido a diminuição considerável de novas postagens. Entretanto, os membros do time TS estão coincidentemente passando por períodos de mudanças e muito trabalho. Tentaremos, à medida do possível, voltar ao ritmo normal.  Bom, agora, com a cara de um cachorro que quebrou o vaso da dona, eu volto a falar-lhes sobre as novas &#8220;aventuras&#8221; da computação de alto desempenho, COMPUTAÇÃO HETEROGÊNEA!</p>
<p>A computação de alto desempenho contemporânea vem tomando rumos não imaginados há alguns anos atrás. Enquanto os computadores mais rápidos do mundo alternavam entre arquiteturas complexas e um número grande de processadores comuns, novas máquinas bastante potentes vem juntando diversas arquiteturas e componentes para ganhar desempenho com baixo custo.</p>
<p><span id="more-1679"></span></p>
<p>O <a href="http://www.top500.org/system/9707" target="_blank">RoadRunner</a>, o supercomputador mais rápido atualmente, é composto por processadores PowerXCell 8i 3.2 Ghz, os quais integram os velhos conhecidos PowerPC com alguns processadores auxiliares dentro de um mesmo núcleo, e por processadores Opteron DC 1.8 GHz. Os processadores AMD são responsáveis pelo controle dos dados, e os Cell fazem a parte pesada dos cálculos, resultando assim em cerca de 1,1 PFlops de desempenho.</p>
<p>Já o <a href="http://www.top500.org/system/9883" target="_blank">TSUBAME</a> apresenta algo ainda mais inovador: mesclar processadores &#8220;comuns&#8221; AMD Opteron 2.4/2.6 GHz, Intel Xeon E5440 2.833 GHz com arquiteturas mais complexas, como o <a href="http://forum.pcvsconsole.com/viewthread.php?tid=12946" target="_blank">ClearSpeed CSX600</a>, processadores dedicados a operações matemáticas, além do uso de placas de vídeo nVidia GT200, auxiliando nos cálculos massivos com o CUDA.</p>
<p>Com a tecnologia de integração, fica mais fácil a integração de sistemas já existente para obter mais performance. Assim, se esta vertente da HPC (<em>High Performance Computing</em>) firmar-se como tendência mundial, veremos um número muito grande de sistemas contendo diversas tecnologias antes usadas separadamente, o que parece ser bom, pois o custo de tecnologias <em>Off-the-shelf</em> são menores que os produtos de ponta. Assim, teremos máquinas potentes em computadores pessoais, e não somente em grandes pólos.</p>
<p>See ya!</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.tecnosapiens.com.br%2F2009%2F07%2Fcomputacao-heterogenea%2F&amp;title=Computa%C3%A7%C3%A3o%20Heterog%C3%AAnea" id="wpa2a_2"><img src="http://www.tecnosapiens.com.br/home/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.tecnosapiens.com.br/2009/07/computacao-heterogenea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rapidinha: Compilando um programa C++ com CUDA</title>
		<link>http://www.tecnosapiens.com.br/2009/05/rapidinha-compilando-um-programa-c-com-cuda/</link>
		<comments>http://www.tecnosapiens.com.br/2009/05/rapidinha-compilando-um-programa-c-com-cuda/#comments</comments>
		<pubDate>Wed, 27 May 2009 01:44:46 +0000</pubDate>
		<dc:creator>Weslley</dc:creator>
				<category><![CDATA[Arquivo TecnoSapiens]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Software livre]]></category>
		<category><![CDATA[Tecnologia de ponta]]></category>
		<category><![CDATA[Tecnologias do amanhã]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Compilação]]></category>
		<category><![CDATA[GPU]]></category>

		<guid isPermaLink="false">http://www.tecnosapiens.com.br/?p=1637</guid>
		<description><![CDATA[Em meus primeiros passos no aprendizado de programação em CUDA, tive um problema muito básico, mas que foi difícil encontrar a solução do mesmo: como compilar um programa escrito em C++ for CUDA ??? Vejamos um exemplo de código, o arquivo teste.cu //********************************************************************************************** cudaArray* cu_array; texture&#60;float, 2&#62; tex; // Allocate array cudaMallocArray(&#38;cu_array, cudaCreateChannelDesc&#60;float&#62;(), width, height); [...]]]></description>
			<content:encoded><![CDATA[<img style='float: left; margin-right: 10px; border: none;' src='http://www.gravatar.com/avatar.php?gravatar_id=4b903347bb118f717470fb592a2bdf0d&amp;default=http://www.tecnosapiens.com.br/images/defgravatar.gif' alt='No Gravatar' width=60 height=60/><p>Em meus primeiros passos no aprendizado de programação em <a href="http://en.wikipedia.org/wiki/CUDA" target="_blank">CUDA</a>, tive um problema muito básico, mas que foi difícil encontrar a solução do mesmo: como compilar um programa escrito em <em><a href="http://pt.wikipedia.org/wiki/C%2B%2B" target="_blank"><em>C++</em></a></em> for CUDA ???</p>
<p><span id="more-1637"></span>Vejamos um exemplo de código, o arquivo <strong>teste.cu</strong></p>
<p>//**********************************************************************************************</p>
<p>cudaArray* cu_array;<br />
texture&lt;float, 2&gt; tex;</p>
<p>// Allocate array<br />
cudaMallocArray(&amp;cu_array, cudaCreateChannelDesc&lt;float&gt;(), width, height);</p>
<p>// Copy image data to array<br />
cudaMemcpy(cu_array, image, width*height, cudaMemcpyHostToDevice);</p>
<p>// Bind the array to the texture<br />
cudaBindTexture(tex, cu_array);</p>
<p>// Run kernel<br />
dim3 blockDim(16, 16, 1);<br />
dim3 gridDim(width / blockDim.x, height / blockDim.y, 1);<br />
kernel&lt;&lt;&lt; gridDim, blockDim, 0 &gt;&gt;&gt;(d_odata, width, height);<br />
cudaUnbindTexture(tex);</p>
<p>__global__ void kernel(float* odata, int height, int width)<br />
{<br />
unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;<br />
unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;<br />
float c = texfetch(tex, x, y);<br />
odata[y*width+x] = c;<br />
}<br />
//**********************************************************************************************</p>
<p>Para compilar este programa, primeiramente é necessário ter o compilador <em>nvcc</em> instalado, por meio das bibliotecas fornecidas pela <a href="http://www.nvidia.com/cuda" target="_blank">NVidia</a>.</p>
<p>Temos então a seguinte sequência de comandos:</p>
<p><strong>nvcc -cuda teste.cu</strong></p>
<p>Este comando irá gerar um código <a href="http://pt.wikipedia.org/wiki/C%2B%2B" target="_blank"><em>C++</em></a> a partir do arquivo <strong>teste.cu</strong>, guardando-o no arquivo <strong>teste.cu.cpp</strong>. Após isso, faz-se:</p>
<p><strong>nvcc teste.cu.cpp -o teste.exe</strong></p>
<p>E assim, teremos o executável tão desejado!</p>
<p>Espero que ajude!</p>
<p><em>See ya!</em></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.tecnosapiens.com.br%2F2009%2F05%2Frapidinha-compilando-um-programa-c-com-cuda%2F&amp;title=Rapidinha%3A%20Compilando%20um%20programa%20C%2B%2B%20com%20CUDA" id="wpa2a_4"><img src="http://www.tecnosapiens.com.br/home/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.tecnosapiens.com.br/2009/05/rapidinha-compilando-um-programa-c-com-cuda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

