【问题标题】:Simple CUDA app, cudaMalloc ends with Error: unspecified driver error简单的 CUDA 应用程序,cudaMalloc 以 Error: unspecified driver error 结尾
【发布时间】:2014-08-18 08:52:04
【问题描述】:

我是 CUDA 的新手,所以请耐心等待。我有一个简单的 VS2012 项目,其中包含一个 main.cpp 文件,其源代码如下:

#include <stdio.h>

/*CUDA*/
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
#include <cuda.h>

int main(int argc, char **argv){

    /*Device Variables*/
    uchar3 *Image_dev;
    cudaMalloc((void**)&Image_dev,64*48*sizeof(uchar3));
    printf("Error:\t%s\n", cudaGetErrorString(cudaGetLastError()));

    return(0);
}

它运行时没有任何致命错误,但是 cudaGetLastError() 写出一个错误“未指定的驱动程序错误”,我不知道为什么。我做错了什么?

我有安装了最新驱动程序的 GeForce GT 740m。我已经安装了 CUDA 6.0。 我配置了所有的包含和链接。我将 cudart.lib 添加到 Linker->Input->Additional Dependencies。

我还设置了以下内容:

项目配置->VC++ Directoties->可执行目录 $(CUDA_BIN_PATH)

项目配置->VC++ Directoties->在 $(CUDA_INC_PATH) 中包含目录

项目配置->VC++ 目录->库目录 $(CUDA_LIB_PATH)

项目配置->链接器->常规->附加库目录->$(CUDA_LIB_PATH)

我还设置了 compute_30 和 sm_30。

我做错了什么?

问候,

罗伯特

【问题讨论】:

  • 您是否尝试过运行 cuda-memcheck 来查看是否存在错误指针问题?
  • 不,我没有。但是不知道怎么运行?请提供任何提示或链接。
  • 我尝试使用 memcheck 运行 Cuda 调试,但失败并显示以下消息:使用 API 版本 3010 创建了 CUDA 上下文。调试需要 API 版本 3020。更新附加的进程以使用更新版本的CUDA API。
  • 您的机器配置可能不匹配,或者项目配置不匹配。您是否安装了 CUDA 6.0 之前的 CUDA 工具包?你能运行deviceQueryCUDA 示例代码吗?

标签: c++ cuda


【解决方案1】:

好吧,我已经解决了我的问题,但我并不真正理解解决方案,这可能是因为 Robert Crovella 所说的一些不匹配的配置。我也安装了 CUDA 5.5 和 CUDA 6.0,但我已经设置了 6.0 工具包。所以我不知道到底是什么问题。

但我的解决方案是: 我刚刚创建了一个全新的 CUDA 项目,一切正常,所以我完成了配置,并像那个 CUDA 项目一样设置了我的项目,当我添加到链接器->输入->附加依赖项这些库时它开始工作

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

我不明白,因为所有这些库都已经在 Inherited 值中。 但它开始起作用了。如果有人知道,为什么需要手动添加这些库,请发布。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多