<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>GPUBrasil &#187; dica</title>
	<atom:link href="http://gpubrasil.com/category/dica/feed/" rel="self" type="application/rss+xml" />
	<link>http://gpubrasil.com</link>
	<description>Porque nós ficamos com as galinhas.</description>
	<lastBuildDate>Sat, 07 Aug 2010 04:41:05 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gpubrasil.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/da575ef40bb222b2f66e657599f35884?s=96&#038;d=http://s2.wp.com/i/buttonw-com.png</url>
		<title>GPUBrasil &#187; dica</title>
		<link>http://gpubrasil.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gpubrasil.com/osd.xml" title="GPUBrasil" />
	<atom:link rel='hub' href='http://gpubrasil.com/?pushpress=hub'/>
		<item>
		<title>The OpenCL Programming Book</title>
		<link>http://gpubrasil.com/2010/04/13/the-opencl-programming-book/</link>
		<comments>http://gpubrasil.com/2010/04/13/the-opencl-programming-book/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 19:27:23 +0000</pubDate>
		<dc:creator>padbr</dc:creator>
				<category><![CDATA[Noticia]]></category>
		<category><![CDATA[acadêmico]]></category>
		<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.com/?p=298</guid>
		<description><![CDATA[The book starts with the basics of parallelization, covers the main concepts, grammar, and setting up a development environment for OpenCL, concluding with source-code walkthroughs of the FFT and Mersenne Twister algorithms written in OpenCL. It is highly recommended for those wishing to get started on programming in OpenCL. Format: Adobe Reader (PDF) File Size: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=298&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">The book starts with the basics of parallelization, covers the main concepts, grammar, and setting up a development environment for OpenCL, concluding with source-code walkthroughs of the FFT and Mersenne Twister algorithms written in OpenCL.<br />
It is highly recommended for those wishing to get started on programming in OpenCL.</p>
<p><strong>Format</strong>: Adobe Reader (PDF)<br />
<strong>File Size</strong>: 3.49MB<br />
<strong>Digital</strong>: 246 pages<br />
<strong>Price</strong>: USD 19.50<br />
<strong>Publisher</strong>: Fixstars Corporation<br />
<strong>Author</strong>: Fixstars Corporation (Ryoji Tsuchiyama, Takashi Nakamura, Takuro Iizuka, Akihiro Asahara, Satoshi Miki)</p>
<p><strong>Published Date</strong>: 3/31/2010</p>
<p><span style="color:#ffffff;">.</span><br />
<span style="color:#008000;"><strong>OpenCL Programming Contents</strong></span></p>
<div>
<div>
<dl>
<dt><strong>Introduction to Parallelization</strong></dt>
<dd>Why Parallell</dd>
<dd>Parallel Computing (Hardware)</dd>
<dd>Parallel Computing (Software)</dd>
<dd>Conclusion</dd>
<dt><strong>OpenCL</strong></dt>
<dd>What is OpenCL?</dd>
<dd>Historical Background</dd>
<dd>An Overview of OpenCL</dd>
<dd>Why OpenCL?</dd>
<dd>Applicable Platforms</dd>
<dt><strong>OpenCL Setup</strong></dt>
<dd>Available OpenCL Environments</dd>
<dd>Developing Environment Setup</dd>
<dd>First OpenCL Program</dd>
<dt><strong>Basic OpenCL</strong></dt>
<dd>Basic Program Flow</dd>
<dd>Online/Offline Compilation</dd>
<dd>Calling the Kernel</dd>
<dt><strong>Advanced OpenCL</strong></dt>
<dd>OpenCL C</dd>
<dd>OpenCL Programming Practice</dd>
<dt><strong>Case Study</strong></dt>
<dd>FFT (Fast Fourier Transform)</dd>
<dd>Mersenne Twister</dd>
<dt><strong>Notes</strong></dt>
<dt><span style="color:#ffffff;">.</span> </dt>
<dt><a href="http://www.fixstars.com/en/company/books/opencl/" target="_blank">Ver detalhes e comprar</a>.<strong><br />
</strong></dt>
</dl>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/298/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/298/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/298/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=298&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2010/04/13/the-opencl-programming-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cab10693d5f2b0e4a308e0aeda0584af?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">padbr</media:title>
		</media:content>
	</item>
		<item>
		<title>Artigo sobre CUDA</title>
		<link>http://gpubrasil.com/2010/01/14/artigo-sobre-cuda/</link>
		<comments>http://gpubrasil.com/2010/01/14/artigo-sobre-cuda/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 17:40:29 +0000</pubDate>
		<dc:creator>HIdagawa</dc:creator>
				<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.com/?p=227</guid>
		<description><![CDATA[Artigo publicado na &#8220;Viva o Linux&#8221; por Alessandro de Oliveira Faria (A.K.A CABELO) sobre a tecnologia CUDA da NVidia. Nesse artigo ele faz uma introdução sobre a tecnologia CUDA e o seu potencial em acelerar cálculos computacionais através da paralelização. Na segunda parte do artigo, é apresentado um tutorial de instalação do CUDA e como [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=227&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Artigo publicado na &#8220;<a href="http://www.vivaolinux.com.br" target="_blank">Viva o Linux</a>&#8221; por Alessandro de Oliveira Faria (A.K.A CABELO) sobre a tecnologia CUDA da NVidia.</p>
<p style="text-align:justify;">Nesse artigo ele faz uma introdução sobre a tecnologia CUDA e o seu potencial em acelerar cálculos computacionais através da paralelização. Na segunda parte do artigo, é apresentado um tutorial de instalação do CUDA e como compilar e executar os exemplos que acompanham o SDK.</p>
<p style="text-align:justify;">Link para o artigo: &#8220;<a href="http://www.vivaolinux.com.br/artigo/CUDA-Programe-a-sua-NVIDIA/" target="_blank">CUDA: Programe a sua NVIDIA</a>&#8220;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=227&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2010/01/14/artigo-sobre-cuda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fff918887136c8a750f0502d5d916e9?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">HIdagawa</media:title>
		</media:content>
	</item>
		<item>
		<title>Usando o processador vetorial da CPU com o compilador MUDA</title>
		<link>http://gpubrasil.com/2009/10/20/liberando-o-processador-vetorial-da-cpu-com-o-compilador-muda/</link>
		<comments>http://gpubrasil.com/2009/10/20/liberando-o-processador-vetorial-da-cpu-com-o-compilador-muda/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 16:58:49 +0000</pubDate>
		<dc:creator>losferreira</dc:creator>
				<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.wordpress.com/?p=184</guid>
		<description><![CDATA[A linguagem MUDA facilita a utilização da unidade de processamento vetorial normalmente dedicada a multimedia nas CPUs para cálculos vetoriais de uso-geral.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=184&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">A linguagem <a href="http://lucille.sourceforge.net/muda/">MUDA</a> facilita a utilização da unidade de processamento vetorial normalmente dedicada a multimedia nas CPUs para cálculos vetoriais de uso-geral.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=184&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2009/10/20/liberando-o-processador-vetorial-da-cpu-com-o-compilador-muda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c67e36a12b682c4f0cf237fbe45b70f?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">losferreira</media:title>
		</media:content>
	</item>
		<item>
		<title>SDK OpenCL da AMD também serve para CPUs INTeL</title>
		<link>http://gpubrasil.com/2009/10/20/sdk-opencl-da-amd-tambem-serve-para-cpus-intel/</link>
		<comments>http://gpubrasil.com/2009/10/20/sdk-opencl-da-amd-tambem-serve-para-cpus-intel/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 16:31:02 +0000</pubDate>
		<dc:creator>losferreira</dc:creator>
				<category><![CDATA[Noticia]]></category>
		<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.wordpress.com/?p=179</guid>
		<description><![CDATA[A AMD liberou a versão 2.0 do seu SDK para a linguagem OpenCL, que gera código tanto para as CPUs x86 (Intel ou AMD) quanto para as GPUs ATI. Um benchmark comparativo entre uma implementação OpenMP e uma implementação OpenCL, feito por Jack Pien, mostra que o SDK da AMD produz bons resultados mesmo com [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=179&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A AMD liberou a versão 2.0 do seu SDK para a linguagem OpenCL, que gera código tanto para as CPUs x86 (Intel ou AMD) quanto para as GPUs ATI. Um benchmark comparativo entre uma implementação OpenMP e uma implementação OpenCL, feito por <a href="http://www.vizworld.com/2009/09/amds-x86-opencl-openmp/">Jack Pien</a>, mostra que o SDK da AMD produz bons resultados mesmo com um cluster de CPUs INTeL. Quem não tem GPUs no cluster pode compilar o código e desenvolver seus algoritmos, e quando acrescentar GPUs não tem que reescrever tudo de novo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=179&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2009/10/20/sdk-opencl-da-amd-tambem-serve-para-cpus-intel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2c67e36a12b682c4f0cf237fbe45b70f?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">losferreira</media:title>
		</media:content>
	</item>
		<item>
		<title>Saiba as especificações de sua GPU com &#8220;GPU-Z&#8221;</title>
		<link>http://gpubrasil.com/2009/10/09/saiba-as-especificacoes-de-sua-gpu-com-gpu-z/</link>
		<comments>http://gpubrasil.com/2009/10/09/saiba-as-especificacoes-de-sua-gpu-com-gpu-z/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 22:23:48 +0000</pubDate>
		<dc:creator>HIdagawa</dc:creator>
				<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.wordpress.com/?p=131</guid>
		<description><![CDATA[Aqui vai mais uma dica para o pessoal que acompanha o nosso blog. Existe um programinha bastante útil para verificar as especificações de sua GPU, como o &#8220;fill rate&#8221;, o número de shaders, a memória, os clocks, etc, chamado GPU-Z (o link para donwload está no final do post). Abaixo está uma captura de tela [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=131&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Aqui vai mais uma dica para o pessoal que acompanha o nosso blog. Existe um programinha bastante útil para verificar as especificações de sua GPU, como o &#8220;fill rate&#8221;, o número de shaders, a memória, os clocks, etc, chamado GPU-Z (o link para donwload está no final do post).</p>
<p style="text-align:justify;">Abaixo está uma captura de tela do programa para que vocês tenham uma idéia das informações que o programa irá fornecer.</p>
<div id="attachment_132" class="wp-caption aligncenter" style="width: 402px"><img class="size-full wp-image-132" title="GPU-Z Screenshot" src="http://gpubrasil.files.wordpress.com/2009/10/gpuz_screenshot.png?w=392&#038;h=457" alt="GPU-Z Screenshot" width="392" height="457" /><p class="wp-caption-text">GPU-Z Screenshot</p></div>
<p style="text-align:justify;">Esse programa costuma ser utilizado por &#8220;overclockers&#8221; de GPU para demonstrar o funcionamento de suas placas de vídeo com uma velocidade de clock mais elevado.</p>
<p>Além do GPU-Z também existe uma versão para a CPU chamado de CPU-Z.</p>
<p>Baixe o GPU-Z <a href="http://www.techpowerup.com/gpuz/" target="_blank">aqui</a>.</p>
<p>Baixe o CPU-Z <a href="http://www.cpuid.com/cpuz.php" target="_blank">aqui</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=131&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2009/10/09/saiba-as-especificacoes-de-sua-gpu-com-gpu-z/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7fff918887136c8a750f0502d5d916e9?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">HIdagawa</media:title>
		</media:content>

		<media:content url="http://gpubrasil.files.wordpress.com/2009/10/gpuz_screenshot.png" medium="image">
			<media:title type="html">GPU-Z Screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Medição de tempo</title>
		<link>http://gpubrasil.com/2009/10/02/medicao-de-tempo/</link>
		<comments>http://gpubrasil.com/2009/10/02/medicao-de-tempo/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:24:32 +0000</pubDate>
		<dc:creator>Labaki</dc:creator>
				<category><![CDATA[cookbook]]></category>
		<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.wordpress.com/?p=67</guid>
		<description><![CDATA[Freqüentemente precisamos medir o tempo de execução de um programa, especialmente quando queremos mostrar que um programa em GPU é mais rápido que um em CPU. A maioria das funções que a linguagem C oferece não servem a esse propósito, já que medem o tempo em segundos, e um programa para GPU raramente completa um [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=67&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Freqüentemente precisamos medir o tempo de execução de um programa, especialmente quando queremos mostrar que um programa em GPU é mais rápido que um em CPU. A maioria das funções que a linguagem C oferece não servem a esse propósito, já que medem o tempo em segundos, e um programa para GPU raramente completa um segundo de execução. As bibliotecas CUDA oferecem um recurso simples para fazer essa medição, em unidades de milissegundos. Eis um exemplo de código:</p>
<p style="text-align:justify;">
<p><span style="font-family:courier;"> </span></p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;"><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;stdlib.h&gt;</span></span></p>
<p style="text-align:justify;"><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;stdio.h&gt;</span></span></p>
<p style="text-align:justify;"><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;cutil.h&gt;</span></span></p>
<p style="text-align:justify;"><span style="font-family:courier;">int main()</span></p>
<p style="text-align:justify;"><span style="font-family:courier;">{</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">float tempo;</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">unsigned int timer = 0;</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutCreateTimer( &amp;timer));</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutStartTimer( timer));</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Região de execução: aqui vai o trecho de código cujo</span></span></p>
<p style="text-align:justify;padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// tempo de execução queremos medir.</span></span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">tempo = CUT_SAFE_CALL( cutGetTimerValue(timer));</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">printf(<span style="color:#008000;">&#8220;A execução durou %5.3f milissegundos\n&#8221;</span>, tempo);</span></p>
<p style="text-align:justify;padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL(cutDeleteTimer(timer));</span></p>
<p style="text-align:justify;"><span style="font-family:courier;">}</span></p>
<p><span style="font-family:courier;"> </span></p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">Parte ou todo esse roteiro não funcionou pra você? Deixe comentário!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=67&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2009/10/02/medicao-de-tempo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea1e9e7746ea823e164457c495d20c?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Labaki</media:title>
		</media:content>
	</item>
		<item>
		<title>Cuidados na medição de tempo</title>
		<link>http://gpubrasil.com/2009/10/02/cuidados-na-medicao-de-tempo/</link>
		<comments>http://gpubrasil.com/2009/10/02/cuidados-na-medicao-de-tempo/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 20:09:22 +0000</pubDate>
		<dc:creator>Labaki</dc:creator>
				<category><![CDATA[cookbook]]></category>
		<category><![CDATA[dica]]></category>

		<guid isPermaLink="false">http://gpubrasil.wordpress.com/?p=48</guid>
		<description><![CDATA[Adaptado da mensagem enviada por Daniel Medina à lista GPUBrasil. Pessoal, já faz algum tempo que estou para reviver este tópico e sempre esqueço. Quero compartilhar com vocês um detalhe que me consumiu alguns dias quebrando a cabeça em cima disso. Ao implementar em meu programa o algoritmo sugerido pelo Labaki para realizar a análise [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=48&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">
<p style="text-align:justify;">Adaptado da mensagem enviada por <strong>Daniel Medina</strong> à lista <a href="http://groups.google.com.br/group/gpubrasil" target="NEW"> GPUBrasil</a>.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">Pessoal, já faz algum tempo que estou para reviver este tópico e sempre esqueço. Quero compartilhar com vocês um detalhe que me consumiu alguns dias quebrando a cabeça em cima disso.</p>
<p style="text-align:justify;">Ao implementar em meu programa o algoritmo sugerido pelo Labaki para realizar a análise do tempo de execução, notei que o desempenho da GPU estava muito ruim comparado ao da CPU (com volume pequeno de dados estava até maior). Após procurar muito a causa, descobri que o vilão da história é a API do CUDA. Esta camada de software não é inicializada durante a inicialização do programa principal. Ela só é instanciada no momento da primeira chamada a alguma função da API (no meu caso ocorria quando eu chamava a função cuda_malloc pela primeira vez).<br />
<span style="font-family:courier;"><br />
<span style="color:#ff0000;"># include &lt;stdlib.h&gt;</span></span></p>
<p><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;stdio.h&gt;</span></span></p>
<p><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;cutil.h&gt;</span></span></p>
<p><span style="font-family:courier;">int main()</span></p>
<p><span style="font-family:courier;">{</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">float tempo;</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">unsigned int timer = 0;</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutCreateTimer( &amp;timer));</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutStartTimer( timer));</span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Primeiro comando para a GPU (cudaMalloc, por exemplo).</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// &#8230;</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Região de execução: aqui vai o trecho de código cujo</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// tempo de execução queremos medir.</span></span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">tempo = CUT_SAFE_CALL( cutGetTimerValue(timer));</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">printf(<span style="color:#008000;">&#8220;A execução durou %5.3f milissegundos\n&#8221;</span>, tempo);</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL(cutDeleteTimer(timer));</span></p>
<p style="text-align:justify;"><span style="font-family:courier;">}<br />
</span><br />
Ao receber a primeira instrução, a API se inicializa e isto leva um tempo considerável. Empiricamente levantei que esse tempo é de aproximadamente 40ms em uma GTX  280 e 70ms em uma GT 8800.</p>
<p style="text-align:justify;">Para aplicações que duram dias ou semanas, este tempo não chega a ser um problema, mas para aplicações como a minha, cujo tempo de execução é da ordem de milissegundos, este <em>delay</em> é algo altamente indesejável.</p>
<p style="text-align:justify;">Como solução, eu coloquei uma instrução &#8220;dummy&#8221; (malloc de 0 bytes) no início do algoritmo só para inicializar a placa, e desconsiderei este tempo do cálculo utilizado para comparação entre CPU e GPU. Por ser um custo de tempo intrínseco e que acontece somente uma vez em toda a execução do software, ele pode ser desconsiderado do benchmark. Veja um exemplo.</p>
<p style="text-align:justify;"><span style="font-family:courier;"><br />
<span style="color:#ff0000;"># include &lt;stdlib.h&gt;</span></span></p>
<p><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;stdio.h&gt;</span></span></p>
<p><span style="color:#ff0000;"><span style="font-family:courier;"># include &lt;cutil.h&gt;</span></span></p>
<p><span style="font-family:courier;">int main()</span></p>
<p><span style="font-family:courier;">{</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">float tempo;</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">unsigned int timer = 0;</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutCreateTimer( &amp;timer));</span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Um comando dummy, sem efeito no programa, só para</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// inicializar a placa. Esse passa a ser então o primeiro</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// comando de GPU do programa.</span></span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">float* dummy;</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUDA_SAFE_CALL( cudaMalloc((void**) &amp;dummy, sizeof(float)));</span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Só então o cronômetro é ligado:</span></span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL( cutStartTimer( timer));</span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// Região de execução: aqui vai o trecho de código cujo</span></span></p>
<p style="padding-left:30px;"><span style="color:#008000;"><span style="font-family:courier;">// tempo de execução queremos medir.</span></span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">tempo = CUT_SAFE_CALL( cutGetTimerValue(timer));</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">printf(<span style="color:#008000;">&#8220;A execução durou %5.3f milissegundos\n&#8221;</span>, tempo);</span></p>
<p style="padding-left:30px;"><span style="font-family:courier;">CUT_SAFE_CALL(cutDeleteTimer(timer));</span></p>
<p><span style="font-family:courier;">}<br />
</span><br />
Parte ou todo esse roteiro não funcionou pra você? Deixe comentário!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpubrasil.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpubrasil.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpubrasil.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpubrasil.com&amp;blog=9721039&amp;post=48&amp;subd=gpubrasil&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpubrasil.com/2009/10/02/cuidados-na-medicao-de-tempo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b0ea1e9e7746ea823e164457c495d20c?s=96&#38;d=monsterid&#38;r=G" medium="image">
			<media:title type="html">Labaki</media:title>
		</media:content>
	</item>
	</channel>
</rss>