GPU Accelerated PhysX SPH Fluids are not working on some machines

I’ve got 7 test machines all trying to use our application which includes GPU accelerated SPH particles.

The code to setup the cuda context manager (see below) works on some machines, but not others. We’ll get a fatal error if it does not work.

mCudaContextManager = PxCreateCudaContextManager(*mFoundation, cudaContextManagerDesc);
	
	if (mCudaContextManager)
	{
		if (!mCudaContextManager->contextIsValid())
		{
			fatalError("mCudaContextManager is invalid!");

			mCudaContextManager->release();
			mCudaContextManager = NULL;
		}
	}

Here are the setups we’re using and the test results:

CUDA Working? - OS - Graphics Card - Current Driver V - CUDA DLL Version
Yes - Windows 8.1 (64-bit) - GTX 670 MX - 382.05 - 6.14.13.8205 (8.0.0)
Yes - Windows 10 Pro (64-bit) - GTX 980 x2 - 382.05 - 6.14.13.8205 (8.0.0)
Yes - Windows 10 ??? (64-bit) - GTX 770 x2 - 376.53 - 6.14.13.7653 (8.0.0)
No - Windows 10 Home (64-bit)- GTX 770 x2 - 376.53 -
No - Windows 10 Pro (64-bit) - Quadro K2200 - 382.05 -
No - Windows 10 Pro (64-bit) - GTX 980 Ti x2 - 382.05 - 6.14.13.8205 (8.0.0)
Yes - Windows 10 ??? (64-bit) - GTX 1070 - 376.53 - 6.14.13.7653 (8.0.0)

What could cause it to work on some machines and not others? Reinstalling video drivers did not do the trick. Are there any troubleshooting steps I should consider?

Have you included PhysXDevice.dll (or x64 variant if building x64 config)? If its not present alongside the exe, you would be reliant on using the version installed with the PhysX system software, which can be optionally bypassed during driver installation.

In addition, check in nvidia control panel that physx is not forced to cpu. If its forced to cpu,the cudaContextManager creation will return null

Ah, adding the PhysXDevice.dll next to the .exe did the trick. Thanks!