After persistently getting error : identifier "atomicAdd" is undefined
, I've found the solution to be to compile with -arch sm_20
flag. But how to pass this compiler flag in VS 2010? I have tried like so under Project > Properties
:
But this apparently has had no effect and the error persists - what am I doing wrong?
Many thanks.
Now there’s a whole new bunch of modules that need to be specified in order to make a set of custom build rules to work with Visual Studio 2010 project. This blog explains the steps involved in making CUDA work on the new Visual Studio 2010.
To configure your project's CUDA properties page: In the Solution Explorer, click on the project name so that it is highlighted. From the Project menu, choose Properties. The Property Pages window opens. Select CUDA C/C++ in the left pane.
The latest CUDA Toolkit 3.2 does not has support for the VS100 C compiler and hence the reason why you still need to have Visual Studio 2008 installed on your machine. Also make sure you have the right Windows SDK (or at least anything below Windows SDK v7.0 which is automatically installed with VS 2010). Now we are ready to get started.
You’re fundamentally trying to include CUDA code in a .cpp module, and that is basically a no-no. That won’t get compiled with the usual nvcc setup. nvcc passes that off to the host compiler, and the host compiler doesn’t know anything about the __CUDACC flags, nor does it know what a CUDA experimental extended lambda is.
You can select the options for the GPU Code Generation in this dialog:
In this case "compute_20" means that i am compiling for the virtual compute architecture 2.0 - virtual architecture influences the PTX generation stage.
The second part that comes after the coma is "sm_21".This influences the CUBIN generation stage. It defines the real GPU architecture i want to compile the PTX to.
You can find detailed description of the nvcc command line parameters that control the code generation here.
Go to the "Device" section under "CUDA C/C++". There, within "Code Generation" you can specify your sm_20
. No need for the -arch
.
Be aware that there's separate properties for both the project and .cu files. Apparently they get merged before compilation.
I'd gotten caught by this trying to specify GPUs for compute 3.0 & greater, but .cu properties had some leftover specifications for 1.0 & 2.0
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With