<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Week 2: Optimized Autobrush. Faster painting.</title>
	<atom:link href="http://lukast.mediablog.sk/log/?feed=rss2&#038;p=173" rel="self" type="application/rss+xml" />
	<link>http://lukast.mediablog.sk/log/?p=173</link>
	<description>Just some notes about developing and using Linux</description>
	<lastBuildDate>Mon, 30 Aug 2010 19:48:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Gregory</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-2007</link>
		<dc:creator>Gregory</dc:creator>
		<pubDate>Mon, 15 Feb 2010 18:03:50 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-2007</guid>
		<description>Here, http://assemblyrequired.crashworks.org/2009/10/16/timing-square-root/ the author computes sqrt by multiplying the inverse square root of x by x.

Q3&#039;s fast sqrt * x is around 3.5 times slower than SSE rsqrtss * x. GCC likely generates a call to rsqrtss for your 1.0f / sqrt(x) code.</description>
		<content:encoded><![CDATA[<p>Here, <a href="http://assemblyrequired.crashworks.org/2009/10/16/timing-square-root/" rel="nofollow">http://assemblyrequired.crashworks.org/2009/10/16/timing-square-root/</a> the author computes sqrt by multiplying the inverse square root of x by x.</p>
<p>Q3&#8217;s fast sqrt * x is around 3.5 times slower than SSE rsqrtss * x. GCC likely generates a call to rsqrtss for your 1.0f / sqrt(x) code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joshua Joecks</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1978</link>
		<dc:creator>Joshua Joecks</dc:creator>
		<pubDate>Sun, 14 Feb 2010 00:39:13 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1978</guid>
		<description>It only goes to show where there&#039;s will there&#039;s a way. Keep on trying.</description>
		<content:encoded><![CDATA[<p>It only goes to show where there&#8217;s will there&#8217;s a way. Keep on trying.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mat69</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1936</link>
		<dc:creator>mat69</dc:creator>
		<pubDate>Mon, 08 Feb 2010 16:05:42 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1936</guid>
		<description>You can use the ATIStreamSDK SDK for using OpenCL with cpus even if you have a cpu from intel, iirc you only need libopencl or what it is called and set the correct env vars.</description>
		<content:encoded><![CDATA[<p>You can use the ATIStreamSDK SDK for using OpenCL with cpus even if you have a cpu from intel, iirc you only need libopencl or what it is called and set the correct env vars.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LukasT</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1934</link>
		<dc:creator>LukasT</dc:creator>
		<pubDate>Mon, 08 Feb 2010 15:59:50 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1934</guid>
		<description>I have seen CUDA a little and I studied OpenCL bit. Drivers are problem. E.g. I have NVidia graphics and only version 190.31 or so support OpenCL. So it is kinda weird now :/</description>
		<content:encoded><![CDATA[<p>I have seen CUDA a little and I studied OpenCL bit. Drivers are problem. E.g. I have NVidia graphics and only version 190.31 or so support OpenCL. So it is kinda weird now :/</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mat69</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1933</link>
		<dc:creator>mat69</dc:creator>
		<pubDate>Mon, 08 Feb 2010 15:29:03 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1933</guid>
		<description>Quite interesting! :)

You write about the thought of using gpus to speed up things. Do you have thought about using OpenCL? I know at this stage most drivers are of beta quality but in the future that is for sure to change.

Advantages of OpenCL are that it also works on a range of CPUs if for example the gpu does not support it. One backdraw might be portability of the code as some architectures are not supported. So you would end with a lot of ifdefs.
OpenCL has build in support for many math-functions like atan2 so that might be quite fast. Further one fantastic advantage is automatic support for SSE2 on cpus if you use the build in vector types like int4 or float4.

http://developer.amd.com/gpu/ATIStreamSDK/ImageConvolutionOpenCL/Pages/ImageConvolutionUsingOpenCL.aspx is an example of OpenCL and performance though keep in mind that the drivers at that time were only of beta quality and not optimized that much. Btw. as the author suggests you should really use the C++ bindings as they make error checking amongst others a lot easier. And as an endnote I only have very little experience with OpenCL just tried some very small programs but I like the overall concept.</description>
		<content:encoded><![CDATA[<p>Quite interesting! <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>You write about the thought of using gpus to speed up things. Do you have thought about using OpenCL? I know at this stage most drivers are of beta quality but in the future that is for sure to change.</p>
<p>Advantages of OpenCL are that it also works on a range of CPUs if for example the gpu does not support it. One backdraw might be portability of the code as some architectures are not supported. So you would end with a lot of ifdefs.<br />
OpenCL has build in support for many math-functions like atan2 so that might be quite fast. Further one fantastic advantage is automatic support for SSE2 on cpus if you use the build in vector types like int4 or float4.</p>
<p><a href="http://developer.amd.com/gpu/ATIStreamSDK/ImageConvolutionOpenCL/Pages/ImageConvolutionUsingOpenCL.aspx" rel="nofollow">http://developer.amd.com/gpu/ATIStreamSDK/ImageConvolutionOpenCL/Pages/ImageConvolutionUsingOpenCL.aspx</a> is an example of OpenCL and performance though keep in mind that the drivers at that time were only of beta quality and not optimized that much. Btw. as the author suggests you should really use the C++ bindings as they make error checking amongst others a lot easier. And as an endnote I only have very little experience with OpenCL just tried some very small programs but I like the overall concept.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: LukasT</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1932</link>
		<dc:creator>LukasT</dc:creator>
		<pubDate>Mon, 08 Feb 2010 15:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1932</guid>
		<description>@Kevin: yes, sub-pixel precision is desired feature by digital painters. If you ignore it in brush mask computation, you get serious artefacts. Now you are clicking to the right pixel and the mask is computed so that it is anti-aliased correctly.</description>
		<content:encoded><![CDATA[<p>@Kevin: yes, sub-pixel precision is desired feature by digital painters. If you ignore it in brush mask computation, you get serious artefacts. Now you are clicking to the right pixel and the mask is computed so that it is anti-aliased correctly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kevin Kofler</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1931</link>
		<dc:creator>Kevin Kofler</dc:creator>
		<pubDate>Mon, 08 Feb 2010 14:47:33 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1931</guid>
		<description>Is sub-pixel precision even a desired feature at all? If I zoom an image when editing, it&#039;s to make it easier to hit the right pixel, I sure don&#039;t expect nor want the results to depend on where in the zoomed pixel I&#039;m clicking!</description>
		<content:encoded><![CDATA[<p>Is sub-pixel precision even a desired feature at all? If I zoom an image when editing, it&#8217;s to make it easier to hit the right pixel, I sure don&#8217;t expect nor want the results to depend on where in the zoomed pixel I&#8217;m clicking!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kódl</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1928</link>
		<dc:creator>kódl</dc:creator>
		<pubDate>Mon, 08 Feb 2010 10:23:37 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1928</guid>
		<description>Ou great work&amp;great english -)</description>
		<content:encoded><![CDATA[<p>Ou great work&amp;great english -)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Abdurrahman AVCI</title>
		<link>http://lukast.mediablog.sk/log/?p=173&#038;cpage=1#comment-1927</link>
		<dc:creator>Abdurrahman AVCI</dc:creator>
		<pubDate>Mon, 08 Feb 2010 09:18:08 +0000</pubDate>
		<guid isPermaLink="false">http://lukast.mediablog.sk/log/?p=173#comment-1927</guid>
		<description>Very detailed and very nice article. Keep on rocking. :)</description>
		<content:encoded><![CDATA[<p>Very detailed and very nice article. Keep on rocking. <img src='http://lukast.mediablog.sk/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
