CUDA-启动超时并被终止-Ubuntu和无显示

CUDA-启动超时并被终止-Ubuntu和无显示,cuda,Cuda,我正在使用包含4个GeForce GTX Titan黑卡的工作站进行CUDA开发。我正在Ubuntu 12.04.5上工作,这些GPU都不用于显示。我注意到使用CUDAGetDeviceProperty时启用了内核执行超时。当我不在Windows上且不使用显示器时,这是否适用 我将以下代码放在我的一个内核中进行测试,该内核通常运行良好: __global__ void update1(double *alpha_out, const double *sDotZ, const double *rh

我正在使用包含4个GeForce GTX Titan黑卡的工作站进行CUDA开发。我正在Ubuntu 12.04.5上工作,这些GPU都不用于显示。我注意到使用CUDAGetDeviceProperty时启用了内核执行超时。当我不在Windows上且不使用显示器时,这是否适用

我将以下代码放在我的一个内核中进行测试,该内核通常运行良好:

__global__ void update1(double *alpha_out, const double *sDotZ, const double *rho, double, *minusAlpha_out, clock_t *global_now)
{
    clock_t start = clock();
    clock_t now;

    for (;;) {
        now = clock();
        clock_t cycles = now > start ? now - start : now + (0xffffffff - start);
        if (cycles >= 50000000000) {
            break;
        }
    }
    *global_now = now;
}
内核启动看起来像:

update1<<<1, 1>>>(d_alpha + idx, d_tmp, d_rho + idx, d_tmp, global_now);
CudaCheckError();
cudaDeviceSynchronize();

它在少量循环中运行良好。如果我在禁用内核执行超时的特斯拉K20m GPU上运行相同的代码,我看不到这个错误,程序正常运行。如果我看到这个错误,这是否一定意味着我达到了内核时间限制,这似乎是启用的,或者我的代码可能有其他错误?所有提到这个问题的人似乎都在使用Windows或使用他们的卡来显示,那么我怎么可能看到这个错误呢

Linux也有一个显示看门狗。根据我的经验,在Ubuntu上,它对于通过
xorg.conf
配置的显示设备是活动的(例如
/etc/X11/xorg.conf
,但具体的配置方法因发行版和版本而异)

因此,可以在Linux上看到内核执行超时错误

通常,您可以通过多种方式解决此问题,但由于您有多个GPU,因此最好的方法是从显示配置(例如xorg.conf或其他任何配置)中删除要在其上执行计算任务的GPU,然后在这些GPU上运行计算任务。一旦X未配置为使用特定GPU,该GPU将不会有任何与之关联的看门狗

还提供了其他具体细节


如果要重新安装东西,另一种通常可以防止计算GPU进入显示路径的方法是在Linux操作系统中加载未插入GPU的GPU。按照您希望的显示方式进行配置后,将计算GPU添加到系统并加载linux工具包。您将希望手动加载显示驱动程序,而不是让linux toolkit来加载,并取消选择让linux显示驱动程序安装程序修改
xorg.conf
的选项。这将类似地为计算使用配置GPU,但将它们保留在显示路径之外。

linux也有一个显示看门狗。根据我的经验,在Ubuntu上,它对于通过
xorg.conf
配置的显示设备是活动的(例如
/etc/X11/xorg.conf
,但具体的配置方法因发行版和版本而异)

因此,可以在Linux上看到内核执行超时错误

通常,您可以通过多种方式解决此问题,但由于您有多个GPU,因此最好的方法是从显示配置(例如xorg.conf或其他任何配置)中删除要在其上执行计算任务的GPU,然后在这些GPU上运行计算任务。一旦X未配置为使用特定GPU,该GPU将不会有任何与之关联的看门狗

还提供了其他具体细节


如果要重新安装东西,另一种通常可以防止计算GPU进入显示路径的方法是在Linux操作系统中加载未插入GPU的GPU。按照您希望的显示方式进行配置后,将计算GPU添加到系统并加载linux工具包。您将希望手动加载显示驱动程序,而不是让linux toolkit来加载,并取消选择让linux显示驱动程序安装程序修改
xorg.conf
的选项。这将类似地为计算使用配置GPU,但将它们保留在显示路径之外。

linux也有一个显示看门狗。根据我的经验,在Ubuntu上,它对于通过
xorg.conf
配置的显示设备是活动的(例如
/etc/X11/xorg.conf
,但具体的配置方法因发行版和版本而异)

因此,可以在Linux上看到内核执行超时错误

通常,您可以通过多种方式解决此问题,但由于您有多个GPU,因此最好的方法是从显示配置(例如xorg.conf或其他任何配置)中删除要在其上执行计算任务的GPU,然后在这些GPU上运行计算任务。一旦X未配置为使用特定GPU,该GPU将不会有任何与之关联的看门狗

还提供了其他具体细节


如果要重新安装东西,另一种通常可以防止计算GPU进入显示路径的方法是在Linux操作系统中加载未插入GPU的GPU。按照您希望的显示方式进行配置后,将计算GPU添加到系统并加载linux工具包。您将希望手动加载显示驱动程序,而不是让linux toolkit来加载,并取消选择让linux显示驱动程序安装程序修改
xorg.conf
的选项。这将类似地为计算使用配置GPU,但将它们保留在显示路径之外。

linux也有一个显示看门狗。根据我的经验,在Ubuntu上,它对于通过
xorg.conf
配置的显示设备是活动的(例如
/etc/X11/xorg.conf
,但具体的配置方法因发行版和版本而异)

因此,可以在Linux上看到内核执行超时错误

通常,您可以通过多种方式解决此问题,但由于您有多个GPU,因此最好的方法是从显示配置(例如xorg.conf或其他任何配置)中删除要在其上执行计算任务的GPU,然后在这些GPU上运行计算任务。一旦X未配置为使用特定GPU,该GPU将不会有任何与之关联的看门狗

还提供了其他具体细节

如果你要重新安装
CudaCheckError() with sync failed at /home/.../xxx.cu:295: 
the launch timed out and was terminated