vs2012+cuda5.5的环境,显卡计算力为2.1。我从默认的compute_10,sm_10改到compute_20,sm_21后,Nsight调试变得很慢,运行些较复杂的函数时有时几乎没有反应。这是什么原因。。。
楼主您好:
我没有遇到过改成sm_21后,调试变的很慢的问题。
在nsight的多年中,也没有遇到过其他用户反馈变慢的问题。
建议您等待其他会员、版主、NVIDIA原厂支持、总版主为您解答。
感谢来访。
还出现了改成sm21后,计算结果不正确了的现象。。。
楼主您好,
从sm_10改成sm_21后,结果一般会多少发生不同,
但和你估计的恰恰相反,一般sm_21上的结果是比老计算能力,以及比CPU更为精确的结果,而不是错误。
您觉得呢?
感谢来访。
我来补充一下玫瑰斑竹:
除了玫瑰斑竹说的那种情况以外,LZ不妨提供一下您的具体问题,到底是计算精度有差异被认为是“结果错误”呢?还是其他方面您的错误?以及您是否使用了shared memory?
不妨将您的测试代码简单贴一下。
祝您调试顺利~
调试过程中为什么有些数组的值出现
“[0] 对象的当前状态使该操作无效。 unsigned char[4] device”
的情况呢
LZ您好:
我未曾见过这个情况,请其他人补充。
或者您也可以进一步提供您的详细情况。
以及,您这个在调试过程中的问题,是否影响了您的计算结果?
好像是多维数组拷贝的问题
typedef unsigned char byte;
static byte H_S[8][8];
__device__ byte S[8][8];
main(){
cudaStatus=cudaMemcpyToSymbol(S,H_S,64,0,cudaMemcpyHostToDevice);
}
这样在用Nsight调试的时候就查看不了S中的值了,出现“对象的当前状态使该操作无效”。这是在sm21的时候出现的,如果设置为sm10,就不会这样。是多维数组不能用cudaMemcpyToSymbol拷贝吗?
LZ您好:
您的代码目测无问题的,尚不知道您提出问的原因所在。
祝您好运~
您的代码经横扫斑竹上机调试实测无问题的,调试也无问题,使用的也是sm_21。
您不妨检查下您的软硬件环境。
祝您好运~
我这里只要是定义多维数组,用sm21编译,就看不见里面的值。但用sm10就可以。现在比较头疼的是用sm21编译运行后,结果不是我想要的,但又看不到值来调试。sm21
[attach]3455[/attach] sm10
[attach]3454[/attach]
lz的问题解决了吗,我也遇到同样的问题。。。
没有解决,只能用其他办法查看多维数组里的值了,比如指针