After persistently getting error : identifier \"atomicAdd\" is undefined
, I\'ve found the solution to be to compile with -arch sm_20
flag. But how
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
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
.