【问题标题】:CUDA missing host_defines.h centos 7CUDA 缺少 host_defines.h centos 7
【发布时间】:2015-05-03 02:51:45
【问题描述】:

我正在尝试在centos 7.0下的环境Nsight Eclipse edition 6.5中编译一些CUDA工具包V6.5的示例。

我的 Nvidia 卡是 Quadro K2000。

所以我的问题是当我尝试构建其中一个示例时(在工具包 cuda 6.5 中): 控制台中出现以下消息,我不知道为什么:

make all 
Building target: ex3
Invoking: NVCC Linker
/usr/bin/nvcc --cudart static -L/usr/include/cuda --relocatable-device-code=false -gencode arch=compute_20,code=compute_20 -gencode arch=compute_20,code=sm_20 -link -o  "ex3"  ./src/matrixMulCUBLAS.o   -lcublas
/usr/bin/crt/link.stub:2:26: erreur fatale: host_defines.h : Aucun fichier ou dossier de ce type
 #include "host_defines.h"
                          ^
compilation terminée.
make: *** [ex3] Erreur 1




17:17:30 Build Finished (took 57ms)

有人可以帮帮我吗?

【问题讨论】:

  • 您是否向编译器提供了正确的包含目录?这-L/usr/include/cuda不就是-I/usr/include/cuda
  • CUDA 6.5 未将 CentOS 7 列为 an officially supported distro/version
  • 是的,我在 Nsight Eclipse 的 Build -> 工具设置选项卡中的设置中为 NVCC 链接器提供了库 /usr/include/cuda 的属性项目,但它不能更好地工作...... .
  • 我不知道在哪里指定CUDA 6.5 没有在nividia.com 上列出CentOS 7,您认为使用CUDA 6.0 效果更好吗?谢谢
  • 我给了你一个链接。单击上面的文本“官方支持的发行版/版本”,并研究该“入门”文档中的支持版本表。根据您的问题和回答,我认为您的安装已损坏。 cuda 安装程序不会将 nvcc 放在 /usr/bin/nvcc 中,除非您告诉它。我建议从一个干净的环境开始,按照入门指南(与上面的相同链接)进行正确安装,并使用受支持的发行版。如果您想使用 CentOS7,请移至 CUDA 7 RC。

标签: c++ cuda centos nvidia nsight


【解决方案1】:

感谢您的快速cmets 我发现了问题: 有 2 个地方有 NVCC exe

/usr/local/cuda-6.5/bin/nvcc and / usr / bin / nvcc

所以,我做到了:

diff --side-by-side /usr/local/cuda-6.5/bin/nvcc /usr/bin/nvcc

=>文件不同

另外,/usr/local/cuda-6.5/bin/中有一个nvcc.profile文件,用于定位环境变量。 而 Nsight eclipse 环境使用/usr/bin/nvcc 然后 在 2 个文件上创建了一个符号链接:

ln -s /usr/local/cuda-6.5/bin/nvcc nvcc
ln -s /usr/local/cuda-6.5/bin/nvcc.profile nvcc.profile

现在任何项目都可以构建和运行

但是解决方案并不完全好(因为符号链接)

现在我找不到如何在 Nsight Eclipse 版本 6.5 中配置我的项目以使用位于位置 /usr/local/cuda-6.5/bin/nvcc 的 nvcc

我正在属性中搜索,但找不到在哪里执行此操作。

有人有想法吗? 谢谢

【讨论】:

  • 只是为我的解决方案添加更正:符号链接“ln -s /usr/local/cuda-6.5/bin/nvcc.profile”nvcc.profile 不起作用。首先,您必须将 /usr/local/cuda-6.5/bin/nvcc.profile 复制到 /usr/bin 中。然后,您编辑 /usr/bin/nvcc.profile 并将 "TOP = $(HERE)/.." 替换为 "TOP = /usr/local/cuda-6.5/" 现在当你构建 Cuda 项目一切正常
  • 这些都不是必需的。您可能会走这条路,因为您没有对PATH 环境变量进行适当的修改或遵循getting started guide 中的说明。
  • 你能告诉我你认为我没有遵循的那部分指令吗?我再次阅读了入门指南的所有说明,但没有找到我的解决方案...
  • 如果您将 CUDA 和 nvcc 安装在 /usr/local/cuda-6.5/bin(默认位置),那么您不应该有 nvcc 任何其他地方,并且当您设置PATH 环境变量正确,并调用nvcc,它将使用/usr/local/cuda-6.5/bin 中的nvcc,它将正常找到配置文件(以及它需要的所有其他文件)。设置PATH 变量在here 中进行了描述,其含义是您没有(不应该)在其他地方更早另一个 nvcc PATH.
  • 它在/usr/bin 中使用nvcc 因为你的PATH 环境变量当前设置的方式(/usr/bin 出现在/usr/local/cuda-6.5/bin 之前)事实上,您在这两个位置都有一个nvcc。你真的不应该,如果你使用默认安装,安装程序不会在/usr/bin 中添加nvcc。你的机器坏了。解决它的方法是删除其他 CUDA 工具包的任何旧痕迹。如果您使用默认安装位置,并正确修改您的PATH 环境变量,您可以使用多个版本的nvcc,即使是nsight
【解决方案2】:

如果您缺少这些标头,安装 cuda-nvcc-10-0nvidia-cuda-dev 软件包可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-03-14
    • 2023-03-14
    • 2016-05-12
    • 2019-01-27
    • 2019-10-24
    • 2019-09-06
    • 2014-10-26
    • 2020-07-09
    • 2011-04-25
    相关资源
    最近更新 更多