NVIDIA's reduction example

I wanted to use and reference some of nvidia’s cuda reduction code for summation of integers. However they’re legal header at the top of the source files scares me.

What exactly does this mean:


 * Copyright 1993-2007 NVIDIA Corporation.  All rights reserved.




 * This source code is subject to NVIDIA ownership rights under U.S. and 

 * international Copyright laws.  


 * ..... 


 * U.S. Government End Users.  This source code is a "commercial item" as 

 * that term is defined at 48 C.F.R. 2.101 (OCT 1995), consisting  of 

 * "commercial computer software" and "commercial computer software 

 * documentation" as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) 

 * and is provided to the U.S. Government only as a commercial end item.  

 * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through 

 * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the 

 * source code with only those rights set forth herein.


Am I allowed use this for my thesis research? Obviously I intend on referencing the algorithm.

Secondly, I’m assuming from the wording using this code in commercial software is not allowed, even with acknowledgement? If thats true, are there any freely available implementations of cuda reductions (for summation) available for commercial use?

Are you familiar with the Komrade library? Komrade is available under the permissive Apache 2.0 license, and I think you’ll find it easier to use than the SDK samples.

Komrade’s reduction function is called komrade::reduce.

this looks much more reasonable. Nvidia made this reduction example impossible to follow, especially with all the template code and preprocessor tricks.

If you are interested in learning about programming the GPU you should look at the documentation that accompanies NVIDIA’s reduction example. It does a very good job of explaining the code.