为什么我的cuda程序一运行就黑屏?
我的cuda程序有递归算法,而且只让它在第一个线程中执行,我总代码500多行。编译没问题。但是执行就会黑屏,过一会重新加载驱动,返回桌面。我想找出问题出在哪里,然后就用Nsight的“Start Cuda Debugging”,程序执行到最后也没有问题。请问是什么原因呢?会不会是我创建的变量太多了呢?但为什么Nsight的“Start Cuda Debugging”执行却不会报错呢?
部分程序如下:
__global__ static void ReceiveLeafE(Point3D * pcuCamPoint, int * pcuNumCamPoint, Point3D * pcuLeafPoint, int * pcuNumLeafPoint, float * pcuELeafCam)
{
if (threadIdx.x == 0)
{
//================parameters==================//
float g_ellipseA = pow( 18.0f, 2.0f );
float g_ellipseB = pow( 52.0f, 2.0f );
float g_a = 0.014155f; // z = a*y^2
float g_n = 1.33f;
float g_sigma = 0.3f;
float g_kL = 0.3f;
.....下面还有很多代码。
}
}
楼主您好,较新版本的nsight下运行,支持kernel preemption的。所以和常规运行下的效果不同。
您这个在正常情况下运行会导致超时的,
ICE可能如果没睡将稍候给出您如何取消时间限制,避免黑屏的方式。
LZ您好,请您禁用TDR或者将TDR的时间改长一些。
您可以在右下角的nsight monitor图标上点击右键——options
——general——Microsoft Display Driver 里面修改。
祝您好运~
谢谢版主,我已经键TDR禁用了,其实我的问题不是nsight 的问题。在nsight 的 “start cuda debugging”下是没有问题。问题是直接运行cuda程序的话出问题。
如“雷扫千军”所说:“较新版本的nsight下运行,支持kernel preemption的。所以和常规运行下的效果不同。您这个在正常情况下运行会导致超时的“。
可能我的问题是如何让我的程序能够允许超时。请问怎么解决这个问题呢?
楼主您好,您想要超时需要
(1)禁用TDR
(2)重新启动贵计算机。
一般100个人里面,禁用后依然超时的,都是没有重新启动。请您尝试重新启动下。
谢谢版主,如果版主知道怎么解决的话,能帮帮我吗?有空回复我就可以,很郁闷啊~~~
LZ您好:
1:nsight那里修改TDR是直接修改的您系统上的注册表信息,您修改了以后,您的系统上直接运行CUDA程序不会有时间限制了。
2:这个和您的程序无关的,不存在“让程序允许超时”。
3:请您在修改以后,重启系统一次,以便修改生效。
祝您好运~
LZ您好,请淡定,这是个小问题的,已经回复您具体做法。
祝您运行顺利~
system
2013 年6 月 13 日 14:39
10
您确定是帮主不是版主么?ICE制造苹果1000代中…
请立刻重启。谢谢。