<?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; Compilação</title>
	<atom:link href="http://www.tecnosapiens.com.br/tag/compilacao/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>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_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/05/rapidinha-compilando-um-programa-c-com-cuda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

