【问题标题】:compiler warning: Double is not supported. Demoting to float编译器警告:不支持双精度。降级为浮动
【发布时间】:2012-02-08 07:58:33
【问题描述】:

我收到以下消息:

不支持双倍。降级为浮动

我在编译器中添加了以下命令:-arch=sm_20 但我仍然收到该消息。
我使用 sdk 4 和 Nvida G105M。

这条消息是什么意思?

【问题讨论】:

  • 我认为您的要求很明显,但通常最好是明确的。尝试类似“这个警告是什么意思?”或类似的东西。

标签: cuda


【解决方案1】:

G105M 的计算能力只有 1.1,因此没有任何双精度浮点能力。如果您确实需要双精度,那么您需要一台至少具有 1.3 计算能力的设备,即便如此,这通常也不是一个好主意,因为它往往是除一些较新的高端 GPU 之外的所有设备的主要性能杀手。

【讨论】:

  • 哦,对不起。你所说的一切都是对的。但这并不能回答他的问题。他没有收到该警告,因为他的计算机中有一个特定的 GPU。阅读 harrism 的帖子。
  • OK - 否决票通常是针对“没有帮助”的答案 - 我认为这个答案仍然有帮助,即使它不能解决眼前的问题 - 它仍然解决了一个更普遍的问题OP将需要解决。如果没有用,我会很乐意删除答案
  • 很抱歉投反对票,我试图撤消投反对票,但它需要我编辑您的文本。所以我通过在底部放置一条线来修改它:D,现在反对票已经消失了;)。你写的完全正确。
  • 好的 - 谢谢 - 虽然我没有看到任何编辑历史记录,但反对票仍然存在。并不是说它真的很重要——我有时只是好奇为什么人们会投反对票。
  • 虽然 Paul R 关于哪些计算能力支持双精度是正确的,但这并不是问题的答案。编译器不知道系统中存在哪些 GPU——它只知道传递给它的命令和代码。
【解决方案2】:

根据您使用“sdk 4”的评论,我推断您正在尝试编译 SDK 示例。 SDK 的 makefile 已经包含了 nvcc 的各种 -arch 或 -gencode 命令行设置,所以即使你添加了 -arch=sm_20,命令行上可能还有其他选项导致编译器生成 pre-sm_13 代码,这可能就是它发出警告的原因。

【讨论】:

  • 嘿,Harrism,我使用的是我自己的版本,构建新版本时出现的第一行输出(在我插入 -arch=sm_20 之后)包含 -arch=sm_20 属性。所以我猜保罗 R 是对的
  • 哈里斯是完全正确的。您不必在计算机中安装 Nvidia GPU 即可构建您的应用程序。
猜你喜欢
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 2022-06-10
  • 2020-09-26
  • 1970-01-01
相关资源
最近更新 更多