【问题标题】:CUDA error: MapSMtoCores undefined SM 3.5 is undefinedCUDA 错误:MapSMtoCores 未定义 SM 3.5 未定义
【发布时间】:2014-01-27 13:50:38
【问题描述】:

我无法运行包含 CUDA 代码的 python 脚本。它告诉我更新我的 CUDA SDK,但我认为问题是读取 cuda C 文件而不是同名的 cuda C++ 文件。有谁知道如何解决这个问题?

错误信息是:

MapSMtoCores undefined SM 3.5 is undefined (please update to the latest SDK)!
1.1...src/cudaconv2/filter_acts.cu(1179) : getLastCudaError() CUDA error : 
filterActs: kernel execution failed : (9) invalid configuration argument.

我很确定我使用的是 cuda-5。要检查,根据this,我需要

$ cd $(SDK)
$ make
$ ./C/bin/linux/release/deviceQuery

我没有root权限,所以我不得不

$ mkdir ~/CUDA_SDK
$ cp -r /usr/local/cuda/gpu_sdk ~/CUDA_SDK
$ cd ~/CUDA_SDK
$ make

但是,这导致:

  • 表单的许多警告

../../common/inc/helper_cuda.h:246:12: warning: command line option ‘-Wimplicit’ is valid for C/ObjC but not for C++

../../common/inc/helper_cuda.h:246:12: warning: enumeration value ‘FOO’ not handled in switch

  • 表单有很多错误

../../common/inc/helper_cuda.h:252:14: error: ‘FOO’ was not declared in this scope

我在 helper_cuda.h 上查看了 find -name。它有2个版本: ./C/common/inc/helper_cuda.h,包含错误中提到的所有变量的 cuda C 文件的标头, ./CUDALibraries/common/inc/helper_cuda.h,cuda C++ 文件的标头,不包含错误中提到的任何变量。

我还查看了grep "is undefined (please update to the latest SDK)!" -r ~/CUDA_SDK 哪个文件可能正在输出导致这一切的错误(在顶部提到),并且引人注目的是,helper_cuda.h 是仅有的两个文件之一。

如果我可以读取 C++ helper_cuda.h 而不是 C helper_cuda.h,我想我赢了。我应该使用环境变量吗?

【问题讨论】:

  • cuda 代码封装在 python 脚本中,取自 herehere。另外,如果你想要整个 makefile,请告诉我
  • 你的机器里有没有计算能力3.5的设备? SDK 可能已设置为仅支持可用的内容。
  • 您的nvcc 版本是什么?我猜它很旧,您需要将其更新到 5.0 或更高版本。
  • 您好,我已经更新了我的问题,我认为不再是更新 SDK 的问题了!

标签: cuda makefile cuda-gdb


【解决方案1】:

有两个不同的问题。第一个问题是成功构建的 CUDA 应用在运行时失败,第二个问题是由于构建环境无效,构建 CUDA 应用失败。

消息,

MapSMtoCores undefined SM 3.5 未定义(请更新到最新的 SDK)!

当使用 CUDA 示例框架 (helper_cuda.h) 的应用程序(通常是 CUDA 示例之一)在计算能力为 3.5 的设备上运行并且应用程序是使用具有的示例框架版本构建时输出尚未更新以涵盖该计算能力。

如果安装了 CUDA 5,那么该应用似乎是使用早期版本的 SDK 构建的。

第二条消息,

..src/cudaconv2/filter_acts.cu(1179):getLastCudaError() CUDA 错误: filterActs:内核执行失败:(9)无效的配置参数。

可能是由于应用没有检测到第一个错误,然后继续尝试启动内核,但打印第一个错误的函数返回的值无效。

其他错误是构建错误。这些是由于将 CUDA SDK 复制到您的主文件夹并尝试从那里构建而不更新 CUDA 环境变量造成的。

在其本地位置之外构建 CUDA 示例可能需要大量工作,并且对于让“过滤器行为”应用程序正常工作应该不是必需的。要让“过滤器行为”在具有计算能力 3.5 设备的机器上运行,您需要使用 CUDA 5.0 或更高版本重新构建它,或者将其修改为不再依赖于 CUDA 示例框架(这样会更好)。

因此,您应该首先确定您是否有一个实际工作的 CUDA 5 构建环境。如果你没有这个,有root访问权限的人应该修复它。有了一个工作的构建环境,您应该能够重新构建应用程序。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2021-12-17
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2014-02-17
    相关资源
    最近更新 更多