【发布时间】:2013-03-19 05:54:01
【问题描述】:
Similar to the linked question
我遇到了“atomicCAS”和“atomicExch”标识符未找到错误。 我在网上搜索了解决方案,但仍然无法解决我的问题。
我还在项目配置中将Code Generation改为compute_20、sm_20:
“Configuration Properties -> CUDA C/C++ -> Device -> Code Generation”
当我尝试“编辑”此项时,我发现“继承值:compute_10,sm_10”。
此外,当我尝试右键单击函数“atomicCAS”或“atomicExch”并从菜单中选择“Go To Definition (F12)”时,我发现它指向“$(CudaToolkitIncludeDir)\sm_11_atomic_functions.h (191)"。
1。如何克服继承的 compute_10、sm_10 值?
2. 为什么它使用 sm_11_atomic_functions.h 中的原子函数而不是 sm_20_atomic_functions?
3.或者任何人都可以帮助详细描述如何解决这个问题。
非常感谢。
更新:
我们以下面的代码为例。
struct Lock {
int *mutex;
Lock( void ) {
HANDLE_ERROR( cudaMalloc( (void**)&mutex, sizeof(int) ) );
HANDLE_ERROR( cudaMemset( mutex, 0, sizeof(int) ) );
}
~Lock( void ) {
cudaFree( mutex );
}
__device__ void lock( void ) {
#if __CUDA_ARCH__ >= 200
while( atomicCAS( mutex, 0, 1 ) != 0 );
#endif
}
__device__ void unlock( void ) {
#if __CUDA_ARCH__ >= 200
atomicExch( mutex, 0 );
#endif
}
};
我收到一条消息:找不到符号“__CUDA_ARCH__”的定义。
【问题讨论】:
标签: visual-studio-2012 cuda compiler-errors atomic compiler-flags