How to release CUDA code

Hello,

I am at the point of setting up my program for release. I have a number of cubin (which I might transform to ptx) files that I am using in a program using JCUDA. I am able to reference the cubin files and execute the CUDA kernels and do the complete program on my machine.

What I’m wondering is given my cubin file how can I release my program to the broadest community. The main objective is to only have the user install the NVIDIA GPU drivers and be able to execute my CUDA program without having to install the CUDA toolkit.

Of course if they do not have an NVIDIA GPU then I will break through my check for NVIDIA GPUs and use an alternative version of the code.

Just some updates. I have finished doing tests for the CPU version of the code, and from it looks like I will just have to provide a tutorial on how to install the CUDA toolkit (which I think is a bit annoying for the users). So far the tests consist of checking if FFTW bindings are available for the machine as well as native bindings to some C functions I implemented. Using the toolkit makes checking the cubin files easy because I do not have to recompile the cubin on the local machine. However, I still cant figure out how to run the code without requiring the CUDA toolkit to be installed.

Any alternatives to this design would be greatly appreciated.

NVIDIA allows you to bundle libcudart.so and other runtime libs with your application. If you are using the CUDA runtime, this is easier than having users install the CUDA toolkit.

Fortunately I am using the CUDA runtime, so I will see about packaging the cudart library.

Does it matter what cudart library from the toolkit to get for a user pertaining to their NVIDIA GPU drivers or should the basic functionality of any of the cudart libraries be compatible with just about any NVIDIA GPU. (For example getting the cudart library from toolkit v5.0 versus toolkit v4.2 … etc.)

Thank you for the response.

You would need to ship the version of the CUDART library that the application was linked against. For example, a CUDA application linked against the CUDART library from CUDA 5.0 will not run with older versions of the CUDART library, such as the CUDART library from CUDA 4.2. The CUDART library is versioned, like all libraries that come with CUDA.

The EULA.txt file in the CUDA Toolkit doc directory contains a section on Redistributable Software specifying what files developers can redistribute with their application.