For the university, I’m developing a small CUDA program under Windows using Visual C++ express.
At the university, where we have access to NVidia hardware, I can properly compile my project and run it.
However, at home I just have a laptop with an integrated intel graphic card or a 9 years old desktop which of course has a completely outdated graphic card.
Therefore, to be able to continue programming and testing I’m trying to use the emulation mode. And most of the time I get stuck by this compilation error (which is non blocking when not using emulation):
domainModel.h(38) : error C2622: member ‘__cuda_emu::SuperChar::cuda’ of union ‘__cuda_emu::SuperChar’ has assignment operator
Here are the lines around line 38:
29 // Definition of the "category" data type just to simplify manipulation
30 typedef uchar4 CudaSuperString[CATEGORY_STR_SIZE]; // CATEGORY_STR_SIZE (a macro) is a 64 elements table
31
32 // As I want to use standard strn* C functions, I'm creating a similar structure but with normal 'char'
33 typedef char PosixSuperString[CATEGORY_STR_SIZE * sizeof(uchar4)];
34
35 // Now I make a union of those 2 types so that I can easily use either ones.
36 union SuperChar
37 {
38 CudaSuperString cuda;
39 PosixSuperString posix;
40 };
So this code is working in release mode, but not in emulation mode. And I do not make sens of the error message.
Side note: once it did compile in emulation mode. I just wanting to get some help of a friend, I just compile the code and to my surprised it worked!! Now my friend is gone, and the code is again not compiling :-(