Deployment on computer with no Nvidia GPU Hybrid CPU/CUDA application and nvcuda.dll

We have an application using CUDA and Thrust that is coming near the deployment phase.
For the sake of our customers, the business has decided to allows the application to be usable on whatever computer, even if they have no Nvidia GPUs and thus, no nvcuda.dll…
Most of our algorithm work (except maybe thrust part) both on GPU and CPU.

Right now, our application is mode for deployment without any nvcuda.dll ( as stated somewhere in the guidelines).
Can we distribute a nvcuda.dll? (legally speaking)
I assume that distributing a nvcuda.dll on a computer already with a Nvidia hardware would pose some problems. So can we imagine to install the nvcuda.dll only if it does not already exists?

Now let’s focus on a computer without Nvidia GPU, with an application with a distributed nvcuda.dll. The application works nearly fine on GPU only algorithm. But it seems that thrust part crashes. Is anybody familiar with thrust without cuda or should we reimplement the whole alorithm without thrust?

Thank you in advance
for your answers

It is pretty clear that you need a CPU-only code path, as thrust is based on CUDA which is dependent on nVidia hardware.

You could either rewrite the thrust code using existing vector classes (e.g. using the STL and related algorithms), or reimplement the required part of the thrust API with CPU only code.


well, we found the way:
delay load nvcuda.dll and you could disable cuda stuff when the cudaInit() fails ( exception).
We also rewrote some algorithms to have a CPU and A GPU version being able to switch from one to another ( or use both in parallel).
I works great!