【发布时间】:2017-05-24 03:05:32
【问题描述】:
我有一个非常奇怪的错误。我正在 Cuda 中编写一个模拟康威生命游戏的程序。我将二维数组传输到设备,并且有一个 if-case 检查状态线程。
if(iam==-1)
{ //i am on
iam=0;
}
else if(iam==1)
{ //i am dying
iam=-1;
}
else //i am off
{
if(counter_alive==2)//two neighboors alive
{
iam=1; //i will be on
}
// iam = -999;
}
当最后一行在注释中时,没有任何作用,并且 var "iam" 具有第一个值。但是,如果我放弃 //,它将起作用。当然,如果流程的代码执行 else,var "iam" 将取值 -999。 有任何想法吗?我错过了什么吗? 提前致谢!
【问题讨论】:
-
@talonmies:你怎么知道这个问题与 C 或 C++ 无关?就目前而言,我宁愿怀疑它确实如此,但可能根本与 CUDA 没有任何联系。 :)
-
@tera:因为它只是标签垃圾邮件,这就是原因。而且我宁愿只是悄悄地删除标签,而不是让一个通常的 C 或 C++ 愤怒的巨魔来删除它并同时开始一场激烈的战争
-
嗯,好的。请注意,无论如何,这都是开玩笑的。 @fikos:你真的需要提供一个Minimal, Complete, and Verifiable example。
-
阅读 cmets 让我觉得您正在调试某些调试器(例如 NVSight)中的 CUDA 代码,对吗?您实际上是在调试模式下编译它并且没有优化吗?那将是
-G。没有它,调试器可能会有点丢失并显示奇怪的结果。例如。if语句可以简化为谓词赋值。
标签: if-statement cuda nvidia