Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
wnbell committed Mar 13, 2012
0 parents commit 2a31749
Show file tree
Hide file tree
Showing 33 changed files with 1,686 additions and 0 deletions.
5 changes: 5 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
markdown: rdiscount
pygments: true
#permalink: /:title.html
permalink: /:month-:day-:year/:title.html
#base: http://php-tracker.org
71 changes: 71 additions & 0 deletions _layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html>
<head>
<title>{{ page.title }}</title>

<meta charset='utf-8'>
<meta name="robots" content="all" />
<meta name="title" content="{{ page.title }}" />
<meta name="description" content="{{ page.description }}" />

<base href="{{ site.base }}" />

<!--- main style -->
<link rel="stylesheet" type="text/css" href="{{ site.base }}/css/style.css" media="screen" />

<!--- syntax highlighting -->
<link rel="stylesheet" type="text/css" href="{{ site.base }}/css/syntax/colorful.css" media="screen" />

<script type="text/javascript" src="actions.js"></script>
</head>

<body>
<div id="container">
<div id="menubar">&nbsp;</div>
<ul id="menu">
<li><a href="{{ site.base }}/"><img src="{{ site.base }}/thrust_logo.png" alt="Thrust" height=80px title="Thrust"/></a></li>
<li><a title="Quick Start Guide" href="https://github.com/thrust/thrust/wiki/Quick-Start-Guide">Get Started</a></li>
<li><a title="Thrust Documentation" href="https://github.com/thrust/thrust/wiki/Documentation" class="submenu_title">Documentation</a>
<ul class="submenu">
<li><a title="Thrust API Doxygen" href="http://docs.thrust.googlecode.com/hg/modules.html">Thrust API (Doxygen)</a></li>
<li><a title="Example Programs" href="https://github.com/thrust/thrust/tree/master/examples">Example Programs</a></li>
<li><a title="GPU Computing Gems Article" href="https://github.com/downloads/thrust/thrust/Thrust%20-%20A%20Productivity-Oriented%20Library%20for%20CUDA.pdf">General Overview (PDF)</a></li>
</ul>
</li>
<!--- TODO use this approach for populating submenus
{% for post in site.categories.main %}
<li><a title="{{ post.title }}" href="{{ post.url }}" class="submenu_title">{{ post.title }}</a>
{% if post.parentof %}
<ul class="submenu">
{% for subpost in site.categories[post.parentof] %}
<li><a title="{{ subpost.title }}" href="{{ subpost.url }}">{{ subpost.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
-->
<li><a title="Thrust issue tracker on Github" href="https://github.com/thrust/thrust/issues">Issues</a></li>
<li><a title="Download Thrust source code and support materials" href="https://github.com/thrust/thrust/downloads" class="submenu_title">Downloads</a>
<ul class="submenu">
<li><a title="Download Latest Release" href="https://github.com/downloads/thrust/thrust/thrust-1.6.0.zip">Latest Thrust Release</a></li>
<li><a title="Download Latest Examples" href="https://github.com/downloads/thrust/thrust/examples-1.6.zip">Latest Examples</a></li>
</ul>
</li>
</ul>


{{ content }}

<!--- Disqus would go here -->

<div class="footer">
<!--- Could put things here -->
</div>

</div>

<!--- TODO Update with Thrust's Google Analytics info -->

</body>
</html>
84 changes: 84 additions & 0 deletions _posts/2009-05-26-Thrust-v1.0.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
layout: default
title: Thrust v1.0.0 release
category: news
---
## {{ page.title }} ##

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 will proceed under this title.

Thrust is open source under the Apache 2.0 license and available now at http://thrust.googlecode.com. Download Thrust and check out the Thrust tutorial to get started.

The thrust::host_vector and thrust::device_vector containers simplify memory management and transfers between host and device. Thrust provides efficient algorithms for:

* sorting – thrust::sort and thrust::sort_by_key
* transformations – thrust::transform
* reductions – thrust::reduce and thrust::transform_reduce
* scans – thrust::inclusive_scan and thrust::transform_inclusive_scan
* And many more!

You can refer to the online documentation for a complete listing and join the thrust-users discussion group.

As the following code example shows, Thrust programs are concise and readable.

{% highlight c++ %}
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/generate.h>
#include <thrust/sort.h>
#include <cstdlib>

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

// transfer to device and sort
thrust::device_vector<int> d_vec = h_vec;
thrust::sort(d_vec.begin(), d_vec.end());
return 0;
}
{% endhighlight %}

Thrust provides high-level primitives for composing interesting computations. This example computes the norm of a vector.

{% highlight c++ %}
#include <thrust/transform_reduce.h>
#include <thrust/functional.h>
#include <thrust/device_vector.h>
#include <thrust/host_vector.h>
#include <cmath>

// square<T> computes the square of a number f(x) -> x*x
template <typename T>
struct square
{
__host__ __device__
T operator()(const T& x) const {
return x * x;
}
};

int main(void)
{
// initialize host array
float x[4] = {1.0, 2.0, 3.0, 4.0};

// transfer to device
thrust::device_vector<float> d_x(x, x + 4);

// setup arguments
square<float> unary_op;
thrust::plus<float> 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 << norm << std::endl;
return 0;
}
{% endhighlight %}

46 changes: 46 additions & 0 deletions _posts/2009-10-09-Thrust-v1.1.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: default
title: Thrust v1.1.0 release
category: news
---
## {{ page.title }} ##
We are pleased to announce the release of Thrust v1.1, an open-source template library for developing CUDA applications. Modeled after the C++ Standard Template Library (STL), Thrust brings a familiar abstraction layer to the realm of GPU computing.

Version 1.1 adds several new features, including:

* fancy iterators
* binary search algorithms
* pair and tuple types
* segmented scan (experimental)
* pinned memory support (experimental)
* and more!

As the following code example shows, Thrust programs are concise and readable.

{% highlight c++ %}
#include <thrust/host_vector.h>
#include <thrust/device_vector.h>
#include <thrust/generate.h>
#include <thrust/sort.h>
#include <cstdlib>

int main(void)
{
// generate twenty random numbers on the host
thrust::host_vector<int> h_vec(20);
thrust::generate(h_vec.begin(), h_vec.end(), rand);

// transfer data to the device
thrust::device_vector<int> d_vec = h_vec;

// sort data on the device
thrust::sort(d_vec.begin(), d_vec.end());

return 0;
}
{% endhighlight %}

Get started with Thrust today! First download Thrust v1.1 and then follow the online tutorial. Refer to the online documentation for a complete list of features. Many concrete examples and a set of introductory slides are also available.

Thrust is open-source software distributed under the OSI-approved Apache License v2.0.

69 changes: 69 additions & 0 deletions _posts/2010-03-23-Thrust-v1.2.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
layout: default
title: Thrust v1.2.0 release
category: news
---
## {{ page.title }} ##

We are pleased to announce the release of Thrust v1.2, an open-source template library for developing CUDA applications. Modeled after the C++ Standard Template Library (STL), Thrust brings a familiar abstraction layer to the realm of GPU computing.

Version 1.2 adds several new features, including:

* support for multicore CPUs via OpenMP
* support for CUDA 3.0 and new GPUs based on the Fermi architecture
* support for the Ocelot virtual machine
* pseudo random number generation
* key-value reduction
* set intersection
* and more!

As the following code example shows, Thrust programs are concise and readable.

{% highlight c++ %}
#include <thrust/device_vector.h>
#include <thrust/iterator/constant_iterator.h>
#include <thrust/reduce.h>
#include <string>

// This example computes a run-length code for an array
// of characters using a key-value (or segmented) reduction

int main(void)
{
// input data on the host
std::string data = "aaabbbbbcddeeeeeeeeeff";

size_t N = data.size();

// copy input data to the device
thrust::device_vector<char> input(data.begin(), data.end());

// allocate storage for output data and run lengths
thrust::device_vector<char> output(N);
thrust::device_vector<int> lengths(N);

// compute run lengths
size_t num_runs =
thrust::reduce_by_key(input.begin(), input.end(), // input key sequence
thrust::constant_iterator<int>(1), // input value sequence
output.begin(), // output key sequence
lengths.begin() // output value sequence
).first - output.begin(); // compute the output size

// output is now [a,b,c,d,e,f]
// lengths is now [3,5,1,2,9,2]
return 0;
}
{% endhighlight %}

Get started with Thrust today! First download Thrust v1.2 and then follow the online quick-start guide. Refer to the online documentation for a complete list of features. Many concrete examples and a set of introductory slides are also available.

Thrust is open-source software distributed under the OSI-approved Apache License v2.0.

Acknowledgments
---------------
* Thanks to Gregory Diamos for contributing a CUDA implementation of set_intersection
* Thanks to Ryuta Suzuki & Gregory Diamos for rigorously testing Thrust's unit tests and examples against Ocelot
* Thanks to Tom Bradley for contributing an implementation of normal_distribution
* Thanks to Joseph Rhoads for contributing the example summary_statistics

16 changes: 16 additions & 0 deletions _posts/2010-06-29-Thrust-v1.2.1-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
layout: default
title: Thrust v1.2.1 release
category: news
---
## {{ page.title }} ##

We are pleased to announce the release of [Thrust v1.2.1] [1], which is a compatibility release for [CUDA 3.1] [2].

Thrust v1.2.1 adds support for CUDA 3.1, maintains support for CUDA 3.0, and drops support for CUDA 2.3.

Thrust v1.2.1 adds no new functionality over Thrust 1.2.0.

[1]: http://code.google.com/p/thrust/downloads/list
[2]: http://developer.nvidia.com/object/cuda_3_1_downloads.html

30 changes: 30 additions & 0 deletions _posts/2010-10-05-Thrust-v1.3.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
layout: default
title: Thrust v1.3.0 release
category: news
---
## {{ page.title }} ##
We are pleased to announce the release of Thrust v1.3, an open-source template library for developing CUDA applications. Modeled after the C++ Standard Template Library (STL), Thrust brings a familiar abstraction layer to the realm of GPU computing.

Version 1.3 adds several new features, including:

* a state-of-the-art sorting implementation, recently featured on Slashdot.
* performance improvements to stream compaction and reduction
* robust error reporting and failure detection
* support for CUDA 3.2 and gf104-based GPUs
* search algorithms
* and more!


Get started with Thrust today! First download Thrust v1.3 and then follow the online quick-start guide. Refer to the online documentation for a complete list of features. Many concrete examples and a set of introductory slides are also available.

Thrust is open-source software distributed under the OSI-approved Apache License v2.0.

Acknowledgments
---------------
* Thanks to Duane Merrill for contributing a fast radix sort implementation
* Thanks to Erich Elsen for contributing an implementation of find_if
* Thanks to Andrew Corrigan for contributing changes which enable OpenMP in the absence of nvcc
* Thanks to Andrew Corrigan, Cliff Woolley, David Coeurjolly, Janick Martinez Esturo, John Bowers, Maxim Naumov, Michael Garland, and Ryuta Suzuki for bug reports
* Thanks to Cliff Woolley for help with testing

18 changes: 18 additions & 0 deletions _posts/2011-11-28-Thrust-v1.5.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
layout: default
title: Thrust v1.5.0 release
category: news
---
## {{ page.title }} ##

Thrust v1.5.0 provides introduces new programmer productivity and performance
enhancements. New functionality for creating anonymous "lambda" functions has
been added. A faster host sort provides 2-10x faster performance for sorting
arithmetic types on (single-threaded) CPUs. A new OpenMP sort provides 2.5x-3.0x
speedup over the host sort using a quad-core CPU. When sorting arithmetic types
with the OpenMP backend the combined performance improvement is 5.9x for 32-bit
integers and ranges from 3.0x (64-bit types) to 14.2x (8-bit types). A new CUDA
reduce_by_key implementation provides 2-3x faster performance.

The CHANGELOG details the complete list of changes since v1.4.

12 changes: 12 additions & 0 deletions _posts/2012-01-30-Thrust-v1.5.1-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
layout: default
title: Thrust v1.5.1 release
category: news
---
## {{ page.title }} ##

We've posted a new download for [Thrust v1.5.1] [1]. This version is being distributed with CUDA 4.1 (final) and fixes an uncommon [sort bug][2] discovered in v1.5.0.

[1]: http://code.google.com/p/thrust/downloads/list
[2]: http://code.google.com/p/thrust/source/browse/CHANGELOG?name=1.5.1

17 changes: 17 additions & 0 deletions _posts/2012-03-07-Thrust-v1.6.0-release.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
layout: default
title: Thrust v1.6.0 release
category: news
---
## {{ page.title }} ##

We are pleased to announce the release of Thrust v1.6, an open-source C++ library for developing high-performance parallel applications. Modeled after the C++ Standard Template Library, Thrust brings a familiar abstraction layer to the realm of parallel computing.

Version 1.6 enables developers to extend and customize Thrust algorithms as well as invent entirely novel parallel backends. To showcase these powerful features in action, version 1.6 also adds support for a new backend system based on the Threading Building Blocks (TBB) library. Furthermore, the new backend enables better integration between Thrust algorithms and existing applications that already rely on TBB for intelligent task scheduling.

Finally, in an effort to eliminate any barriers to collaboration and the facilitate the development of new features and additional backend systems, Thrust is now hosted on Github! Everyone is encouraged to fork Thrust on Github and advertise their enhancements. Have you come across some important but missing functionality? Add it and tell everyone about it. Fixed a minor bug? Create a pull request and see it resolved quickly. Wish Thrust supported your favorite threading library or some exotic parallel architecture? Start building your own backend system now!

Get started with Thrust today! First download Thrust v1.6 and then follow the online quick-start guide. Refer to the online documentation for a complete list of features. Many concrete example programs and a set of introductory slides are also available.

Thrust is open-source software distributed under the OSI-approved Apache License 2.0.

Loading

0 comments on commit 2a31749

Please sign in to comment.