<?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; GPU</title>
	<atom:link href="http://www.tecnosapiens.com.br/tag/gpu/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tecnosapiens.com.br</link>
	<description>De pedras lascadas a mentes afiadas</description>
	<lastBuildDate>Tue, 03 Aug 2010 18:21:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<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); [...]


Leia também:<ol><li><a href='http://www.tecnosapiens.com.br/2009/04/rapidinha-cpufreq-selector/' rel='bookmark' title='Permanent Link: Rapidinha: CpuFreq-Selector'>Rapidinha: CpuFreq-Selector</a></li>
<li><a href='http://www.tecnosapiens.com.br/2010/03/rapidinha-css-ou-tabelas-html/' rel='bookmark' title='Permanent Link: Rapidinha: CSS ou Tabelas HTML'>Rapidinha: CSS ou Tabelas HTML</a></li>
<li><a href='http://www.tecnosapiens.com.br/2009/07/computacao-heterogenea/' rel='bookmark' title='Permanent Link: Computação Heterogênea'>Computação Heterogênea</a></li>
</ol>]]></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/>
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.tecnosapiens.com.br%252F2009%252F05%252Frapidinha-compilando-um-programa-c-com-cuda%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Rapidinha%3A%20Compilando%20um%20programa%20C%2B%2B%20com%20CUDA%22%20%7D);"></div>
<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 addtoany_share_save" href="http://www.addtoany.com/share_save"><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/Bookmark"/></a> </p>

<p>Leia também:<ol><li><a href='http://www.tecnosapiens.com.br/2009/04/rapidinha-cpufreq-selector/' rel='bookmark' title='Permanent Link: Rapidinha: CpuFreq-Selector'>Rapidinha: CpuFreq-Selector</a></li>
<li><a href='http://www.tecnosapiens.com.br/2010/03/rapidinha-css-ou-tabelas-html/' rel='bookmark' title='Permanent Link: Rapidinha: CSS ou Tabelas HTML'>Rapidinha: CSS ou Tabelas HTML</a></li>
<li><a href='http://www.tecnosapiens.com.br/2009/07/computacao-heterogenea/' rel='bookmark' title='Permanent Link: Computação Heterogênea'>Computação Heterogênea</a></li>
</ol></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>
