Skip to content

knotman90/cuStreamComp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

cuStreamComp

Efficient CUDA Stream Compaction Library

Based on thw folllowing works:

  1. Markus Billeter et al. Efficient Stream Compaction on Wide SIMD Many-Core Architectures

  2. InK-Compact-: In kernel Stream Compaction and Its Application to Multi-kernel Data Visualization on GPGPU- D.M. Hughes

It is an CUDA efficient implementation of the stream compaction algorithm based on warp ballotting intrinsic.

How to use it

Its usage is straightforward:

  • Create a predicate functor to decide whether an element is valid or not.
struct predicate
{
	__host__ __device__
	bool operator()(const int x)
	{
		return x>0;
	}
};
  • Call the compact procedure to obtain the compacted array d_output.
cuCompactor::compact<int>(d_data,d_output,length,predicate(),blockSize);

Note that both the input d_data and the output d_output arrays have to be allocated on device.

PERFORMANCE

Alt text

About

Efficient CUDA Stream Compaction Library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages