I’m trying to make the emulation work in my application. I have some C++ classes which are implemented in an external DLL (which I compiled myself). Those classes have nothing to do with CUDA.
Basically, everything works fine, until I instantiate one of the external C++ classes. When I do, it takes a second or two (I hear the hard drive working), and after that, any call to CUDA returns with cudaErrorMixedDeviceExecution.
I guess that in emulation mode CUDA enumerates all DLLs currently loaded and make sure they’re all in ‘emulation mode’. How do I make sure that my DLL is emulation-compatible?
unsigned char *hostData1 = NULL; unsigned char *hostData2 = NULL; cudaError_t errVal; errVal = cudaMallocHost( (void**)&hostData1, 1024); // <b>cudaSuccess</b> CImage dummy; // First instantiation of class using the DLL, takes a second or two errVal = cudaMallocHost( (void**)&hostData2, 1024); // <b>cudaErrorMixedDeviceExecution</b>