<?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>Hoopoe Cloud Blogs &#187; CUDA.NET</title>
	<atom:link href="http://blogs.hoopoe-cloud.com/index.php/category/cudanet/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.hoopoe-cloud.com</link>
	<description>Our WordPress weblog</description>
	<lastBuildDate>Thu, 16 Sep 2010 17:28:23 +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>01 &#8211; What is CUDA.NET</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2010/09/01-what-is-cuda-net/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2010/09/01-what-is-cuda-net/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 17:27:08 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET Tutorials]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[GPU]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=200</guid>
		<description><![CDATA[CUDA.NET is a library that provides access to GPU computing resources on top (using) CUDA API by NVIDIA. This article is divided into the following topics: What is a GPU? Overview of CUDA Introduction to CUDA.NET Typical Applications Supported Platforms What is a GPU? GPU stands for Graphics Processing Unit. It is a special, dedicated hardware usually [...]]]></description>
			<content:encoded><![CDATA[<p>CUDA.NET is a library that provides access to GPU computing resources on top (using) CUDA API by NVIDIA.</p>
<p>This article is divided into the following topics:</p>
<ul>
<li>What is a GPU?</li>
<li>Overview of CUDA</li>
<li>Introduction to CUDA.NET</li>
<li>Typical Applications</li>
<li>Supported Platforms</li>
</ul>
<h3>What is a GPU?</h3>
<p>GPU stands for <strong>G</strong>raphics <strong>P</strong>rocessing <strong>U</strong>nit.<br />
It is a special, dedicated hardware usually used for graphics (2D, 3D, gaming) but now also employed to computing purposes as well.</p>
<p>GPU is used as a general term to represent a hardware solution and there are various vendors worldwide manufacturing them &#8211; although there are many types of GPUs only specific models or generations can be used for computing or with CUDA.</p>
<p>There are benefits for using the GPU as a computing resource &#8211; It provides strong computing power compared to other equivalents such as CPU, DSP or other dedicated chips with somewhat ease of programming.<br />
For example, a reasonable GPU with 128 cores can provide about 500 GFLOPS (500 billion floating point operations per second), whereas a 4 core CPU can provide about 90 GFLOPS. The numbers can vary based on multiple parameters, but by means of raw computing power, these numbers provide a rough estimate for the potential in using the GPU.</p>
<h3>Overview of CUDA</h3>
<p>CUDA stands for <strong>C</strong>ompute <strong>U</strong>nified <strong>D</strong>evice <strong>A</strong>rchitecture and is a software environment created by NVIDIA to provide developers with specific API to utilize the GPU for computing directly, rather than doing graphics (the main purpose of GPUs).</p>
<p>This software environment provides API to enumerate the GPUs available in a system as computational devices, initialize them, allocate memory for each and execute code, actually full management aspects of these computing resources accessible on a computer.</p>
<p>CUDA itself is built with C, provides defined API and further libraries to assist developers, such as FFT and BLAS to perform Fourier transforms or linear algebra calculation, accelerated, on the GPU.</p>
<p>For further, deeper reading of these topics (GPU / CUDA), please follow this link: <a href="http://www.nvidia.com/cuda" target="_blank">CUDA</a>.</p>
<h3>Introduction to CUDA.NET</h3>
<p>As outlined above, the environments available today to GPU developers are mostly based on C and meant for native applications. However there is a need to have the same capabilities from managed (.NET/Java) applications. This is where CUDA.NET enters.</p>
<p>CUDA.NET is mostly an interfacing library, providing the same set of API as CUDA for low-level access, using the same terms and concepts. It is also a pure .NET implementation so one can use it from any .NET language or platform that supports CUDA and .NET (Linux, MacOSX etc.).</p>
<p>In addition to a low-level interface, CUDA.NET provides an object-oriented abstraction over CUDA, using the same objects and terms, but with simplifed access for .NET based applications. The same objects can be shared between both environments, but developers would find the OO interface much more friendly and intuitive for use.</p>
<p>The same set of libraries covered by CUDA is also accessible from CUDA.NET &#8211; FFT, BLAS and upcoming support for new libraries.</p>
<h3>Typical Applications</h3>
<p>The GPU can be beneficial for applications where computing takes a significant amount of time or is a bottleneck, as well when looking to free other resources and offload computations to the GPU (as it doesn&#8217;t affect the system while working in the background).</p>
<p>Fields where a sort of accelerated computing is needs, or processing of multiple elements can benefit the GPU.<br />
To name a few:</p>
<ul>
<li>Image/Video processing (filters, encoding, decoding)</li>
<li>Signal processing</li>
<li>Finance</li>
<li>Oil &amp; gas (Geophysics)</li>
<li>Medical imaging</li>
<li>Scientific computations, simulations and research</li>
</ul>
<h3>Supported Platforms</h3>
<p>As mentioned earlier, CUDA.NET is based on a pure .NET implementation.</p>
<p>It can be used on (assuming the OS supports CUDA): </p>
<ul>
<li>Windows
<ul>
<li>For desktops/embedded: XP and above</li>
<li>For servers: 2003 and above</li>
</ul>
</li>
<li>Linux and other UNIX variants</li>
<li>Macintosh (MacOSX)</li>
</ul>
<p>The library is fully compatible with 32 and 64 bit systems of all kinds mentioned above.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2010/09/01-what-is-cuda-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>00 &#8211; Preface</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2010/08/00-preface/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2010/08/00-preface/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 08:19:06 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[CUDA.NET Tutorials]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[GeForce]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[Quadro]]></category>
		<category><![CDATA[Tesla]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=189</guid>
		<description><![CDATA[The new CUDA.NET Tutorials category was created to collect and manage resources and materials for developers starting to work and develop with CUDA.NET library for various platforms. The usual composition will be of articles on specific topics and gradually increasing complexity. This post will include an additional Table of Contents for published articles as we go. [...]]]></description>
			<content:encoded><![CDATA[<p>The new CUDA.NET Tutorials category was created to collect and manage resources and materials for developers starting to work and develop with CUDA.NET library for various platforms.</p>
<p>The usual composition will be of articles on specific topics and gradually increasing complexity.</p>
<p>This post will include an additional <em>Table of Contents</em> for published articles as we go.</p>
<h3><span style="text-decoration: underline;">Table of Contents</span></h3>
<ol>
<li><a href="http://blogs.hoopoe-cloud.com/index.php/2010/08/00-preface/">Preface</a></li>
</ol>
<p> </p>
<p>For any question or comment, please contact us through our email address: support (at) hoopoe-cloud.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2010/08/00-preface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CUDA.NET 3.0.0 Released</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2010/06/cuda-net-3-0-0-released/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2010/06/cuda-net-3-0-0-released/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 16:04:28 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[CUDA 3.0]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[GeForce]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[multi-GPU]]></category>
		<category><![CDATA[multi-threaded]]></category>
		<category><![CDATA[NVIDIA]]></category>
		<category><![CDATA[OpenGL]]></category>
		<category><![CDATA[Quadro]]></category>
		<category><![CDATA[Tesla]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=183</guid>
		<description><![CDATA[Dear all, We are happy to announce the release of CUDA.NET version 3.0.0. This release provides support for latest CUDA 3.0 API and few more updates that will make programming with CUDA from .NET easier and faster. Additions: Support for CUDA 3.0 API Added memset functions for CUDA class Supporting new graphics interoperability functions Improved [...]]]></description>
			<content:encoded><![CDATA[<p>Dear all,</p>
<p>We are happy to announce the release of CUDA.NET version 3.0.0.<br />
This release provides support for latest CUDA 3.0 API and few more updates that will make programming with CUDA from .NET easier and faster.</p>
<p>Additions:</p>
<ul>
<li>Support for CUDA 3.0 API</li>
<li>Added memset functions for CUDA class</li>
<li>Supporting new graphics interoperability functions</li>
<li>Improved generics support for memory operations</li>
<li>Added CUDAContextSynchronizer class</li>
</ul>
<p><strong>Improved memory operations</strong><br />
We employ GCHandle class to be used with generic memory copies in CUDA class. This method allows to work with every data type (existing vectors or user defined) natively in .NET. The implication is that now you can copy existing custom arrays of structures/classes (user data-types) to device with memory copy functions.</p>
<p><strong>CUDAContextSynchronizer</strong><br />
This class was added to assist developers in multi-GPU and multi-threaded environments sharing the same device. It uses existing CUDA API to manipulate the context each thread is attached to and provides .NET means to synchronize between threads sharing the same device for different computations.<br />
Find it under the Tools namespace, the documentation includes a description of how to use it.</p>
<p>We hope you will enjoy this release.<br />
As always, please send us comments or suggestions to: <a href="support@hoopoe-cloud.com">support@hoopoe-cloud.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2010/06/cuda-net-3-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GECCO 2010 &#8211; GPU Competition</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2010/01/gecco-2010-gpu-competition/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2010/01/gecco-2010-gpu-competition/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 09:01:45 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[genetic]]></category>
		<category><![CDATA[genetic programming]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[memorial university]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=172</guid>
		<description><![CDATA[Dear all, GECCO (GPUs for Genetic and Evolutionary Computation Conference) will take part this year between July 7th-11th, at Portland, Oregon, USA. Rules and competition guidelines are published on the website provided by the link below. Registration is open until June 4th, 2010. Link to the competition GECCO 2010. Thanks to Dr. Simon Harding, Memorial [...]]]></description>
			<content:encoded><![CDATA[<p>Dear all,</p>
<p>GECCO (GPUs for <strong>G</strong>enetic and <strong>E</strong>volutionary <strong>C</strong>omputation <strong>C</strong>onference) will take part this year between July 7<sup>th</sup>-11<sup>th</sup>, at Portland, Oregon, USA.</p>
<p>Rules and competition guidelines are published on the website provided by the link below.<br />
Registration is open until June 4<sup>th</sup>, 2010.</p>
<p>Link to the competition <a href="http://www.gpgpgpu.com/gecco2010/">GECCO 2010</a>.</p>
<p>Thanks to Dr. Simon Harding, Memorial University, Canada, for the notes and update.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2010/01/gecco-2010-gpu-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>World Cloud Computing Summit 2009</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/11/world-cloud-computing-summit-2009/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/11/world-cloud-computing-summit-2009/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 08:11:39 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[Hoopoe]]></category>
		<category><![CDATA[OpenCL.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[ebay]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GPGPU]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mellanox]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[RedHat]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Tesla]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=150</guid>
		<description><![CDATA[The 2nd annual cloud computing summit is about to take place in Shfayim, Israel, between December 2-3, 2009. Following last year success, the event will cover recent developments and progress in cloud technologies. Presenting with top-of-the-line companies active in this field, including (partial list): Amazon, Google, eBay, IBM, HP, Sun, RedHat and more. Additional &#8220;hands-on&#8221; labs and [...]]]></description>
			<content:encoded><![CDATA[<p>The 2nd annual cloud computing summit is about to take place in Shfayim, Israel, between December 2-3, 2009.</p>
<p>Following last year success, the event will cover recent developments and progress in cloud technologies. Presenting with top-of-the-line companies active in this field, including (partial list): Amazon, Google, eBay, IBM, HP, Sun, RedHat and more.</p>
<p>Additional &#8220;hands-on&#8221; labs and workshops are offered during the event for participants that would like to learn more about cloud technologies and integration possibilities.</p>
<p>We are also presenting Hoopoe at the summit, for GPU Cloud Computing, and providing a workshop on GPU Computing in general and Hoopoe as well.</p>
<p>This event ends 2009 and symbolically the last decade, marking cloud computing as a major development that we are about to see more and more in the next years.</p>
<p>You are invited to join us during the event.<br />
<a href="http://events.myreg.co.il/117364577/page004.htm">Agenda</a><br />
<a href="http://events.myreg.co.il/IGT2009/">Registration</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/11/world-cloud-computing-summit-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CIGPU 2010 &#8211; Computational Intelligence Session</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/11/cigpu-2010-computational-intelligence-session/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/11/cigpu-2010-computational-intelligence-session/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:31:11 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=145</guid>
		<description><![CDATA[A special event is about to take place between 18-23 July, 2010 in Barcelona, Spain. The session on Computational Intelligence on Consumer Games and Graphics Hardware (CIGPU 2010) will be part of IEEE World Congress on Computational Intelligence Conference 2010 (WCCI-2010). Building on the success of previous CIGPU sessions and workshops, CIGPU 2010 will further explore the [...]]]></description>
			<content:encoded><![CDATA[<p>A special event is about to take place between 18-23 July, 2010 in Barcelona, Spain.</p>
<p>The session on Computational Intelligence on Consumer Games and Graphics Hardware (CIGPU 2010) will be part of IEEE World Congress on Computational Intelligence Conference 2010 (WCCI-2010).</p>
<p>Building on the success of previous CIGPU sessions and workshops, CIGPU 2010 will further explore the role that GPU technologies can play in computational intelligence (CI) research.  Submissions of original research are invited on the use of parallel graphics hardware for computational intelligence.  Work might involve exploring new techniques for exploiting the hardware, new algorithms to implement on the hardware, new applications for accelerated CI, new ways of making the technology available to CI researchers or the utilisation of the next generation of technologies.</p>
<p>“Anyone who has implemented computational intelligence techniques using any parallel graphics hardware will want to submit to this special session.”</p>
<p>Thanks to Dr. Simon Harding, Memorial University, Canada, for sharing this information with us.<br />
In addition, the session will discuss using CUDA.NET for running related simulations on the GPU.</p>
<p>For more information: <a href="http://www.cs.ucl.ac.uk/staff/W.Langdon/cigpu/" target="_blank">CIGPU 2010 Submissions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/11/cigpu-2010-computational-intelligence-session/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CUDA.NET 2.3.7 Released</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/10/cudanet-237-released/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/10/cudanet-237-released/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:07:11 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[CUDA Runtime]]></category>
		<category><![CDATA[native support]]></category>
		<category><![CDATA[Release]]></category>
		<category><![CDATA[runtime]]></category>
		<category><![CDATA[runtime API]]></category>
		<category><![CDATA[SizeT]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=141</guid>
		<description><![CDATA[Dear all, We would like to announce for the release of CUDA.NET 2.3.7. This version addresses various issues with runtime API and types. The change was in data types and structures compliance with the native wrapper of CUDA Runtime API, to support cross-platform environments operating in 32 or 64 bit mode. The structures now support [...]]]></description>
			<content:encoded><![CDATA[<p>Dear all,</p>
<p>We would like to announce for the release of CUDA.NET 2.3.7.</p>
<p>This version addresses various issues with runtime API and types. The change was in data types and structures compliance with the native wrapper of CUDA Runtime API, to support cross-platform environments operating in 32 or 64 bit mode. The structures now support the <em>SizeT</em> structure we introduced in the previous CUDA.NET release.</p>
<p>Link to the <a href="http://www.hoopoe-cloud.com/Solutions/CUDA.NET/Default.aspx" target="_blank">download</a> page.</p>
<p>Please send us your comments and feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/10/cudanet-237-released/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>CUDA.NET examples issues</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/09/cudanet-examples-issues/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/09/cudanet-examples-issues/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 13:42:01 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[compiling]]></category>
		<category><![CDATA[nvcc]]></category>
		<category><![CDATA[vc++]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=121</guid>
		<description><![CDATA[The examples attached with the CUDA.NET library demonstrate simple aspects of programming with CUDA.NET to the GPU. They mostly consist of a code that runs on the GPU itself, written in the CUDA language. These files end with the *.cu suffix. In order to use these files with the GPU, they have to pass a [...]]]></description>
			<content:encoded><![CDATA[<p>The examples attached with the CUDA.NET library demonstrate simple aspects of programming with CUDA.NET to the GPU.<br />
They mostly consist of a code that runs on the GPU itself, written in the CUDA language. These files end with the *.cu suffix.</p>
<p>In order to use these files with the GPU, they have to pass a compilation step, processed by the <em>nvcc</em>compiler (included in CUDA Toolkit) to create a cubin file (binary file the GPU uses).<br />
To operate properly, the <em>nvcc</em> compiler needs access to the <em>cl</em> compiler (Visual C++ equipped with Visual Studio or can be downloaded as standalone).</p>
<p style="text-align: left;">If <em>nvcc</em> cannot find the <em>cl</em> compiler or the environment is not fully configured it fails.<br />
This can happen when <em>cl</em> is executed from a C# or VB.NET project (where the environment is not configured to C++).<br />
To overcome the errors, it is possible to define to <em>nvcc</em> command line parameters that will allow it to compile the code. This parameter specifies the path to the <em>cl</em> compiler.<br />
For example (considering a Visual Studio 2008 installation), add the following parameter:<br />
<em>&#8211;compiler-bindir=&#8221;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin&#8221;</em></p>
<p style="text-align: left;">On different platforms/installations this path can be different. Older versions of Visual Studio will have a different path as well.<br />
The complete command line to execute <em>nvcc</em> with is:<br />
<em>nvcc test.cu &#8211;cubin &#8211;compiler-bindir=&#8221;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin&#8221;</em><br />
If compiling a CUDA file named &#8220;test.cu&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/09/cudanet-examples-issues/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Problems with the CHM documentation</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/09/problems-with-the-chm-documentation/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/09/problems-with-the-chm-documentation/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 13:30:31 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[OpenCL.NET]]></category>
		<category><![CDATA[CHM]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[problem]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=117</guid>
		<description><![CDATA[Hi, We are being asked from time to time for errors when viewing the CHM documentation of CUDA.NET or OpenCL.NET. Usually there is an &#8220;Internet Explorer&#8221; like message stating the page cannot be displayed. This happens because of Internet Explorer security configuration that blocks CHM content when opened directly from the Web. The best way [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>We are being asked from time to time for errors when viewing the CHM documentation of CUDA.NET or OpenCL.NET.<br />
Usually there is an &#8220;Internet Explorer&#8221; like message stating the page cannot be displayed.</p>
<p>This happens because of Internet Explorer security configuration that blocks CHM content when opened directly from the Web.<br />
The best way to resolve it is to download the ZIP file to a safe folder on your computer (not temporary internet folders), unzip it and then open the file outside of Internet Explorer itself.</p>
<p>This should resolve the more in most of the cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/09/problems-with-the-chm-documentation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SizeT &#8211; .NET and native code</title>
		<link>http://blogs.hoopoe-cloud.com/index.php/2009/09/sizet-net-and-native-code/</link>
		<comments>http://blogs.hoopoe-cloud.com/index.php/2009/09/sizet-net-and-native-code/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 11:02:16 +0000</pubDate>
		<dc:creator>moti_bot</dc:creator>
				<category><![CDATA[CUDA.NET]]></category>
		<category><![CDATA[OpenCL.NET]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[DLL]]></category>
		<category><![CDATA[interoperability]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[OpenCL]]></category>

		<guid isPermaLink="false">http://blogs.hoopoe-cloud.com/?p=109</guid>
		<description><![CDATA[Hi, In this post I wanted to introduce you with a new construct we added to the latest release of CUDA.NET (2.3.6) and will be available with the published OpenCL.NET library. The problem .NET is a very fixed environment, defining well known types, such that an int is always 4 bytes long (32 bit) and [...]]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>In this post I wanted to introduce you with a new construct we added to the latest release of CUDA.NET (2.3.6) and will be available with the published OpenCL.NET library.</p>
<h3>The problem</h3>
<p>.NET is a very fixed environment, defining well known types, such that an <em>int</em> is always 4 bytes long (32 bit) and a long is always 8 bytes long (64 bit).</p>
<p>This is not the case with native code, for developers of C/C++. Writing a program in 32 bit environment, will always yield 32 bit types, unless using specific directives to get 64 bit variables. When writing 64 bit programs, they do get access to 64 bit wide variables as primitives supported by the compiler.</p>
<p>This clearly creates a portability problem for code and applications written in 32 and 64 bit environments.</p>
<p>Another example, is pointer size, where in C/C++ environments, under 32 bit the pointer is 4 bytes wide (<em>int</em>) and under 64 bit systems it is 8 bytes wide (<em>long</em>). The .NET environment (through different languages) provides a simple construct to overcome this problem, namely the <em>IntPtr</em> object, which some of you may be familiar with.</p>
<p>Now, coming back to our domain, the runtime API (also the driver in a new CUDA 2.3 function) and OpenCL makes extensive use of the C/C++ <em>size_t</em> data type. This data type ensures for developers that under different environments they will get the maximum width of the supported data type, <em>unsigned int</em> for 32 bit systems and <em>unsigned long</em> for 64 bit systems.</p>
<h3>Possible options</h3>
<p>By means of the interoprating library (wrapper), such as CUDA.NET, it creates a problem, since the API should provide several versions of the function, one given an <em>uint</em> (to map to 32 bit with <em>unsigned int</em> C/C++ type), and <em>ulong</em> (to map against <em>unsigned long</em> in 64 bit C/C++ systems). Supplying such an interface to the user will have to force him a specific behavior and system, since in .NET, the <em>uint</em> is always 32 bit wide, and <em>ulong</em> is 64 bit wide, no matter what.</p>
<p>Another option can be to provide a unique, standalone interface, using the <em>IntPtr</em> object, since .NET takes care to make it 32 bit wide in 32 bit systems and 64 bit wide for 64 bit systems, dynamically, without user intervention.</p>
<p>But using the IntPtr and a very serious downside, it is not dynamic, once it&#8217;s value is set, it cannot be changed through simple arithmetic operators, like +,-,*,/ or else.</p>
<h3>The solution</h3>
<p>Exactly for this purpose we created the <em>SizeT</em> object (structure). First, it maps to the same name as it&#8217;s native counterpart (<em>size_t</em>) and second it provides the dynamic mechanisms we want for working with 32 or 64 bit systems transparently.</p>
<p><em>SizeT</em> can serve just like any other basic primitive in .NET.<br />
For example:<br />
<code><br />
SizeT temp = 15;<br />
uint value = (uint)temp;<br />
ulong value2 = (ulong)temp;<br />
temp = value;<br />
</code></p>
<p>Internally, the <em>SizeT</em> wraps the IntPtr object to provide the same dynamic capabilities under 32 and 64 bit platforms.<br />
It can host the required .NET primitives (int, uint, long, ulong), so when programming, one will make a good habit for using the <em>SizeT</em> instead of other data types (working with the runtime CUDA API).</p>
<p>For OpenCL the interface was built from the first place to use <em>SizeT</em> in mind, as the OpenCL API uses only <em>size_t</em> data types for cross platform functions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.hoopoe-cloud.com/index.php/2009/09/sizet-net-and-native-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

