参数问题

对于kernel中的参数,如果不输出到host端的话,如何进行输出查看每一次数据的变化呢?我对kernel进行了多次迭代计算,在kernel中对一些参数进行了输出,结果发现这样的话,只会进行一次kernel的计算和输出,以后迭代都不再进行,其参数变化也无法查看,请问这是什么情况?

LZ您好,估计是您自己的问题,我也类似干过,输出是没问题的。

以及,您在最后是否加了cudaDeviceSynchronize()或者cudaDeviceReset()?没加的话,可能后面有些输出没有完成的时候,程序就结束了。
不过并不会出现只进行一次kernel的计算和输出,之后不再进行的问题。

综上,建议您检查下您的代码,看看是否有问题。

祝您编码顺利~

我的核函数框架为:
global void kernel()
{
a=……;
if(row>=2 && col>=2)
{
if(a>=0.1)
{…} (其中又嵌套一个if…else…)
else
{…}
}
}
从运行结果发现这样一个问题:当某些线程计算出的a的值符合if条件的时候,它并不执行if下面的语句(跳出if条件),总是执行else部分,这种情况会是什么原因啊?

LZ您好,我只能说,CUDA C中的if-else完全和普通C/C++中是一样的,并无特殊。
如果您的结果和预期不同,请您检查您的代码实现。
CUDA C自身出现问题的可能性非常低,可以不予考虑。

大致如上,祝您好运~

好吧!试问一下,参数较多会不会导致跳出某些语句的执行?

LZ您好,不会的,请相信CUDA是一个可靠的平台,而不会随意出现各种奇葩的状况。

祝您好运~