error: identificador "atomicAdd" no está definido en visual studio 2010 y cuda 4.2 con Fermi GPU
visual-studio-2010 gpu-atomics (3)
Estaba intentando compilar algunos códigos CUDA en Visual Studio 2010 con CUDA 4.2 (creé este proyecto CUDA usando Parallel Nsight 2.2), pero encontré un problema atómico "error: identificador" atomicAdd "no está definido", que aún no puedo resolver después de revisar varios foros.
Así que traté de obtener información de CUDA SDK Samples. Primero, ejecuté el ejemplo simple de AtomicIntrinsics en CUDA SDK, que pasó su prueba. Luego, copié todos los archivos de esta muestra en un nuevo proyecto CUDA 4.2 en Visual Studio 2010 y los compilé. Aquí está el resultado.
1> E:/CUDA exercise Codes/CUDA_EXERCISES/CUDA_EXERCISES/CUDA_EXERCISES>"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.2/bin/nvcc.exe" -gencode=arch=compute_20,code=/"sm_20,compute_20/" -gencode=arch=compute_20,code=/"sm_20,compute_20/" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version 2010 -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.2/include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug/simpleAtomicIntrinsics.cu.obj" "E:/CUDA exercise Codes/CUDA_EXERCISES/CUDA_EXERCISES/CUDA_EXERCISES/simpleAtomicIntrinsics.cu"
1> simpleAtomicIntrinsics.cu
1> tmpxft_00007220_00000000-3_simpleAtomicIntrinsics.compute_20.cudafe1.gpu
1> tmpxft_00007220_00000000-7_simpleAtomicIntrinsics.compute_20.cudafe2.gpu
1> simpleAtomicIntrinsics.cu
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(33): error : identifier "atomicAdd" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(36): error : identifier "atomicSub" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(39): error : identifier "atomicExch" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(42): error : identifier "atomicMax" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(45): error : identifier "atomicMin" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(48): error : identifier "atomicInc" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(51): error : identifier "atomicDec" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(54): error : identifier "atomicCAS" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(59): error : identifier "atomicAnd" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(62): error : identifier "atomicOr" is undefined
1>
1>e:/cuda exercise codes/cuda_exercises/cuda_exercises/cuda_exercises/simpleAtomicIntrinsics_kernel.cu(65): error : identifier "atomicXor" is undefined
1>
1> 11 errors detected in the compilation of "C:/Users/NIEXIA~1/AppData/Local/Temp/tmpxft_00007220_00000000-9_simpleAtomicIntrinsics.compute_10.cpp1.ii".
1>C:/Program Files (x86)/MSBuild/Microsoft.Cpp/v4.0/BuildCustomizations/CUDA 4.2.targets(361,9): error MSB3721: The command ""C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.2/bin/nvcc.exe" -gencode=arch=compute_20,code=/"sm_20,compute_20/" -gencode=arch=compute_20,code=/"sm_20,compute_20/" -gencode=arch=compute_10,code=/"sm_10,compute_10/" --use-local-env --cl-version 2010 -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin" -I"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v4.2/include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug/simpleAtomicIntrinsics.cu.obj" "E:/CUDA exercise Codes/CUDA_EXERCISES/CUDA_EXERCISES/CUDA_EXERCISES/simpleAtomicIntrinsics.cu"" exited with code 2.
1>
1>Build FAILED.
Por cierto, puedo ejecutar otras muestras como clock, matrixMul, etc. en este proyecto vs2010 CUDA. (Esto significa que la ruta de inclusión está configurada correctamente)
Busqué en Google y encontré el siguiente enlace. Algún problema con Atomic add en CUDA kernel operation . Cambié las propiedades del proyecto y el archivo .cu según eso, pero todavía no puedo resolver el problema.
¿Cualquier sugerencia?
"Atomics no está disponible en la arquitectura de cómputo 1.0, pero aún está intentando compilar de acuerdo con su registro de compilación. Trate de eliminar las referencias a compute_10 y sm_10 de sus propiedades de proyecto CUDA y compilar solo para calcular la arquitectura 2.0 (GeForce 400 series y posteriores ). " Es absolutamente correcto, por cierto, si están compilando el código fuente de rodrigob_doppia (boosted_learning), pueden agregar la línea en la configuración de su máquina: set (CUDA_NVCC_FLAGS "-arch = sm_20" CACHE STRING "nvcc flags" FORCE) En realidad, es configurado para cambiar el indicador de arco a sm_20, exactamente igual al dicho anteriormente.
Atomics no está disponible en la arquitectura de cómputo 1.0, pero aún está intentando compilar de acuerdo con su registro de compilación. Intente eliminar las referencias a compute_10
y sm_10
de las sm_10
de su proyecto CUDA y compilación solo para calcular la arquitectura 2.0 (GeForce 400 series y posteriores).
Intenta compilar con la bandera -arch sm_20