1

在构建我的 CUDA 项目时,我收到以下错误:

cutil_inline_runtime.h(328): error: identifier "CURAND_STATUS_DOUBLE_PRECISION_REQUIRED" is undefined

所以我开始用谷歌搜索。由于我找不到解决方案(也没有找到实际问题),我从 nVIDIA CURAND 指南 pdf 下载并开始阅读。在那个pdf中它说:

Enumerator:
...
**CURAND_STATUS_DOUBLE_PRECISION_REQUIRED** GPU does not have double precision required by MRG32k3a
...

这意味着我不能执行双重数据类型的操作......对吗?好吧,这似乎是错误的,因为我向你保证,几天前我使用数据类型制作了一个项目,它工作得很好。有人有建议吗?谢谢!

编辑由于我无法找到问题的“真正”解决方案,最终我在 cutil_inline_runtime.h 中用“CURAND_STATUS_DOUBLE_PRECISION_REQUIRED”注释掉了这些行,现在它可以工作了。我知道这很“丑陋”,但这是唯一有帮助的...

4

2 回答 2

2

我也有这个问题。问题是我使用了不同版本的 cuda SDK 和 cuda 工具包。我使用的是更新版本的 SDK,它引用了 CURAND_STATUS_DOUBLE_PRECISION_REQUIRED 的定义,但在我安装的旧版 cuda 工具包的 curand.h 中未定义该定义。

尝试安装与您的 cuda SDK 版本匹配的工具包版本。

于 2012-08-29T17:00:49.323 回答
1

尝试谷歌搜索“计算能力”,这是 nvidia 定义各种 CUDA 能力的方式。在 CUDA C 编程指南中,多次提到具有 1.2 或更低计算能力的设备不支持双精度 FP 数学:CUDA C 编程,第 140 页,并检查表 F-1,即关于 dpfp 支持的行.

Gefore 8800 GT是G80架构芯片,计算能力1.0。你不能在这张卡上做双重计算。请记住,许多示例代码都使用了仿真模式等,这可能会让您误以为它可以工作。

于 2012-07-02T09:15:12.707 回答