<?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>GPGPU &#187; Tag: C/C++ :: GPGPU.org</title>
	<atom:link href="http://gpgpu.org/tag/cc/feed" rel="self" type="application/rss+xml" />
	<link>http://gpgpu.org</link>
	<description>General-Purpose Computation on Graphics Hardware</description>
	<lastBuildDate>Mon, 06 Feb 2012 04:59:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Thrust v1.2 Released</title>
		<link>http://gpgpu.org/2010/03/23/thrust-v1-2-released</link>
		<comments>http://gpgpu.org/2010/03/23/thrust-v1-2-released#comments</comments>
		<pubDate>Tue, 23 Mar 2010 12:01:14 +0000</pubDate>
		<dc:creator>dom</dc:creator>
				<category><![CDATA[Developer Resources]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[NVIDIA CUDA]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Parallel Programming]]></category>

		<guid isPermaLink="false">http://gpgpu.org/?p=2218</guid>
		<description><![CDATA[Version 1.2 of Thrust, an open-source template library for developing CUDA applications, has been released. Modeled after the C++ Standard Template Library (STL), Thrust brings a familiar abstraction layer to the realm of GPU computing. This version adds several new features, including: support for multicore CPUs via OpenMP support for CUDA 3.0 and new GPUs based [...]]]></description>
			<content:encoded><![CDATA[<p>Version 1.2 of <a href="http://thrust.googlecode.com/" target="_blank">Thrust</a>, an open-source template library for developing CUDA applications, has been released. Modeled after the C++ Standard Template Library (STL), Thrust brings a familiar abstraction layer to the realm of GPU computing. This version adds several new features, including:</p>
<ul>
<li><a href="http://code.google.com/p/thrust/wiki/DeviceBackends" target="_blank">support for multicore CPUs via OpenMP</a></li>
<li>support for CUDA 3.0 and new GPUs based on the Fermi architecture</li>
<li>support for the Ocelot virtual machine</li>
<li><a href="http://thrust.googlecode.com/svn/tags/1.2.0/doc/html/group__random.html" target="_blank">pseudo random number generation</a></li>
<li><a href="http://thrust.googlecode.com/svn/tags/1.2.0/doc/html/group__reductions.html" target="_blank">key-value reduction</a></li>
<li><a href="http://thrust.googlecode.com/svn/tags/1.2.0/doc/html/group__set__operations.html" target="_blank">set intersection</a></li>
<li><a href="http://code.google.com/p/thrust/source/browse/tags/1.2.0/CHANGELOG" target="_blank">and many more</a></li>
</ul>
<p>The <a href="http://thrust.googlecode.com/" target="_blank">Thrust web page</a> provides a <a href="http://code.google.com/p/thrust/wiki/QuickStartGuide" target="_blank">quick-start guide</a>, <a href="http://gpgpu.org//code.google.com/p/thrust/wiki/Documentation" target="_blank">online documentation</a>, many <a href="http://thrust.googlecode.com/files/" target="_blank">examples</a> and introductory slides. Thrust is open-source software distributed under the <a href="http://www.opensource.org/licenses/apache2.0.php" target="_blank">OSI-approved Apache License v2.0</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gpgpu.org/2010/03/23/thrust-v1-2-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Libra SDK: C/C++ for both the CPU and GPU</title>
		<link>http://gpgpu.org/2009/06/24/libra-sdk</link>
		<comments>http://gpgpu.org/2009/06/24/libra-sdk#comments</comments>
		<pubDate>Thu, 25 Jun 2009 01:08:59 +0000</pubDate>
		<dc:creator>Mark Harris</dc:creator>
				<category><![CDATA[Developer Resources]]></category>
		<category><![CDATA[APIs]]></category>
		<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://gpgpu.org/?p=1694</guid>
		<description><![CDATA[GPU Systems has announced the Libra SDK, a robustly equipped C/C++ developer kit for fast and easy cross CPU-GPU access suited for scientific computations. The Libra 1.1 SDK includes a C/C++ Matlab-style API, sample programs and documentation. A downloadable trial version of Libra is available from the GPU Systems website, and a Libra demo presentation [...]]]></description>
			<content:encoded><![CDATA[<p>GPU Systems has announced the Libra SDK, a robustly equipped C/C++ developer kit for fast and easy cross CPU-GPU access suited for scientific computations. The Libra 1.1 SDK includes a C/C++ Matlab-style API, sample programs and documentation. A downloadable trial version of Libra is available from the <a href="http://www.gpusystems.com" target="_blank">GPU Systems website</a>, and a Libra <a href="http://www.gpusystems.com/video.html" target="_blank">demo presentation is also available</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://gpgpu.org/2009/06/24/libra-sdk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New PGI 9.0 Compilers Simplify x64+GPU Programming</title>
		<link>http://gpgpu.org/2009/06/24/pgi-9-0-compiler</link>
		<comments>http://gpgpu.org/2009/06/24/pgi-9-0-compiler#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:58:06 +0000</pubDate>
		<dc:creator>Mark Harris</dc:creator>
				<category><![CDATA[Developer Resources]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Compilers]]></category>
		<category><![CDATA[Fortran]]></category>
		<category><![CDATA[NVIDIA CUDA]]></category>

		<guid isPermaLink="false">http://gpgpu.org/?p=1687</guid>
		<description><![CDATA[Yesterday The Portland Group announced the release of version 9.0 of its Fortran and C compilers with support for GPUs and x64 multi-core CPUs.  An introduction to PGI Accelerator Fortran and C programming is available online, as is the PGI Accelerator v1.0 specification. Evaluation copies of the new PGI 9.0 compilers are available from The [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday The Portland Group announced the release of version 9.0 of its Fortran and C compilers with support for GPUs and x64 multi-core CPUs.  An introduction to PGI Accelerator Fortran and C programming is <a href="http://www.pgroup.com/lit/articles/insider/v1n1a1.htm" target="_blank">available online</a>, as is the <a href="http://www.pgroup.com/lit/whitepapers/pgi_accelerator.pdf" target="_blank">PGI Accelerator v1.0 specification</a>. Evaluation copies of the new PGI 9.0 compilers are available from <a href="http://www.pgroup.com" target="_blank">The Portland Group web site</a>. Registration is required.</p>
<p>From the <a title="PGI 9.0 Press Release" href="http://www.pgroup.com/about/news.htm#33" target="_blank">press release</a>:</p>
<blockquote><p>The use of Graphics Processing Units (GPUs) as general purpose accelerators has been a growing trend in high-performance computing (HPC). Until now, use of GPUs from Fortran applications has been extremely limited. Developers targeting GPU accelerators have had to program in C at a detailed level using sequences of function calls to manage movement of data between the x64 host and GPU, and to offload computations from the host to the GPU. The PGI Accelerator Fortran and C compilers automatically analyze whole program structure and data, split portions of an application between a multi-core x64 CPU and a GPU as specified by user directives, and define and generate a mapping of loops to automatically use the parallel cores, hardware threading capabilities and SIMD vector capabilities of modern GPUs.</p></blockquote>
<p><span id="more-1687"></span></p>
<blockquote><p>The PGI Accelerator programming model is available now in the PGI Fortran and C compilers on Linux as an extended free preview for all PGI 9.0 licensees through the end of 2009. Additional PGI 9.0 new features include several Fortran 2003 incremental features, Intel Xeon EX (Nehalem) optimizations including support for SSE 4.1/4.2, Six-Core AMD Opteron (Istanbul) support and optimizations, full OpenMP 3.0 support in C++, an all-new graphical interface on the PGDBG OpenMP/MPI debugger, enhancements to the PGPROF performance profiling environment, and support for Fedora Core 10/11, SuSE 11.1 and Ubuntu 9.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://gpgpu.org/2009/06/24/pgi-9-0-compiler/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thrust: a Template Library for CUDA Applications</title>
		<link>http://gpgpu.org/2009/05/31/thrust</link>
		<comments>http://gpgpu.org/2009/05/31/thrust#comments</comments>
		<pubDate>Mon, 01 Jun 2009 03:04:02 +0000</pubDate>
		<dc:creator>Mark Harris</dc:creator>
				<category><![CDATA[Developer Resources]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Libraries]]></category>
		<category><![CDATA[NVIDIA CUDA]]></category>

		<guid isPermaLink="false">http://gpgpu.org/?p=1631</guid>
		<description><![CDATA[Thrust is an open-source template library for data parallel CUDA applications featuring an interface similar to the C++ Standard Template Library (STL). Thrust provides a flexible high-level interface for GPU programming that greatly enhances developer productivity while remaining high performance. Note that Thrust supersedes Komrade, the initial release of the library, and all future development [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://thrust.googlecode.com" target="_blank">Thrust</a> is an open-source template library for data parallel CUDA applications featuring an interface similar to the C++ Standard Template Library (STL). Thrust provides a flexible high-level interface for GPU programming that greatly enhances developer productivity while remaining high performance. Note that Thrust supersedes Komrade, the initial release of the library, and all future development will proceed under this title.</p>
<p>Thrust is open source under the Apache 2.0 license and available now at <a href="http://thrust.googlecode.com" target="_blank">http://thrust.googlecode.com</a>. <a href="http://code.google.com/p/thrust/downloads/list" target="_blank">Download Thrust</a> and check out the <a href="http://code.google.com/p/thrust/wiki/Tutorial" target="_blank">Thrust tutorial</a> to get started.</p>
<p>The thrust::host_vector and thrust::device_vector containers simplify memory management and transfers between host and device. Thrust provides efficient algorithms for:</p>
<ul>
<li>sorting &#8211; thrust::sort and thrust::sort_by_key</li>
<li>transformations &#8211; thrust::transform</li>
<li>reductions &#8211; thrust::reduce and thrust::transform_reduce</li>
<li>scans &#8211; thrust::inclusive_scan and thrust::transform_inclusive_scan</li>
<li>And many more!</li>
</ul>
<p><span id="more-1631"></span>You can refer to the <a href="http://code.google.com/p/thrust/wiki/Documentation" target="_blank">online documentation</a> for a complete listing and join the <a href="http://groups.google.com/group/thrust-users" target="_blank">thrust-users discussion group</a>.</p>
<p>As the following code example shows, Thrust programs are concise and readable.</p>
<pre>#include &lt;thrust/host_vector.h&gt;
#include &lt;thrust/device_vector.h&gt;
#include &lt;thrust/generate.h&gt;
#include &lt;thrust/sort.h&gt;
#include &lt;cstdlib&gt;

int main(void)
{
    // generate random data on the host
    thrust::host_vector&lt;int&gt; h_vec(20);
    thrust::generate(h_vec.begin(), h_vec.end(), rand);

    // transfer to device and sort
    thrust::device_vector&lt;int&gt; d_vec = h_vec;
    thrust::sort(d_vec.begin(), d_vec.end());
    return 0;
}</pre>
<p>Thrust provides high-level primitives for composing interesting computations.  This example computes the norm of a vector.</p>
<pre>#include &lt;thrust/transform_reduce.h&gt;
#include &lt;thrust/functional.h&gt;
#include &lt;thrust/device_vector.h&gt;
#include &lt;thrust/host_vector.h&gt;
#include &lt;cmath&gt;

// square&lt;T&gt; computes the square of a number f(x) -&gt; x*x
template &lt;typename T&gt;
struct square
{
    __host__ __device__
    T operator()(const T&amp; x) const {
        return x * x;
    }
};</pre>
<pre>int main(void)
{
    // initialize host array
    float x[4] = {1.0, 2.0, 3.0, 4.0};

    // transfer to device
    thrust::device_vector&lt;float&gt; d_x(x, x + 4);

    // setup arguments
    square&lt;float&gt;      unary_op;
    thrust::plus&lt;float&gt; binary_op;
    float init = 0;

    // compute norm
    float norm = std::sqrt( thrust::transform_reduce(d_x.begin(),
                                                     d_x.end(),
                                                     unary_op, init, binary_op) );
    std::cout &lt;&lt; norm &lt;&lt; std::endl;
    return 0;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://gpgpu.org/2009/05/31/thrust/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

