cuda简单应用程序工作32位不适用于64位

问题描述:

我的简单cuda helloworld应用程序运行良好,当在Windows 10中使用Visual Studio 2015社区32位构建。但是,如果我建立它在64位,它不会执行cuda简单应用程序工作32位不适用于64位

GPU:特斯拉K40c

工具包:CUDA 8

操作系统:Windows 10的64位

Visual Studio中:社区版。

输出控制台中没有错误消息。

#include "cuda_runtime.h" 
#include "device_launch_parameters.h" 
#include<stdio.h> 
__global__ void welcome() { 
printf("Hello world :)"); 
} 

int main() { 
welcome << <1, 1 >> >(); 
cudaDeviceSynchronize(); 
return 0; 
} 
+0

我遵循安装指南中的确切步骤,如果它是一个破损的安装如何deviceQuery示例将工作。 –

+0

除了64位主机代码之外,您还生成64位CUDA代码吗?这是一个控制它的单独标志。更确切地说,'nvcc -m32'生成32位器件代码,缺少这样的标记会生成64位器件代码。 – CygnusX1

我面临同样的问题,并打开了一个错误,以NVIDIA#1855074。

他们复制它成功,我在等待更新。

有一件事是肯定的,它是在他们身边。

我发现的唯一解决方法是通过nvidia-smi将我的卡插入WDDM模式,这打破了我的任务栏。

我建议等待修复。

+0

如何跟踪这个bug?有没有解决?我面临着类似的问题。 cudaMalloc只是挂在我的应用程序之一的Win10 x64中! – azmath

+0

它应该从CUDA 9开始解决。 –

+0

我可以确认CUDA 9.1与VS 2017 15.5.6具有相同的问题。我有一个基于插件的应用程序,其中核心应用程序在运行时加载dll。所有这些dll都使用CUDA。没有问题的dll使用'dlib'深度学习库。该问题是由使用'darknet'深度学习框架的特定dll引起的,并且在调用cudaMalloc时会挂起。 – azmath