如何在windows上链接CUDA的库(例如CUBLAS、CUSPARSE)



我正在尝试编译一个使用cusparse库的cuda程序。我得到链接错误:

kernel.cu.obj : error LNK2019: unresolved external symbol _cusparseSetMatIndexBase@8 referenced in function _main

还有许多与cusparse库有关的同类错误。我已经包含了"cusparse_v2.h"。在编译过程中,如何链接visualstudio2010中的cusparse库?

链接库的一般说明不是CUDA特有的。所以你可能想了解更多关于使用MS VS的信息。无论如何,步骤如下:

  1. 请确保您已打开要处理的项目
  2. 选择视图。。。属性页(从菜单)将打开一个新对话框
  3. 在该对话框的左侧,选择"链接器"打开其子菜单
  4. 在链接器下,选择"输入">
  5. 现在,在右侧的窗格中,观察第一项,即"AdditionalDependencies"。我认为cudart.lib应该已经在场了
  6. 单击cudart.lib右侧。您现在可以键入要添加的新库。键入一个空格(与cudart.lib分开)并键入cusparse.lib
  7. 现在单击对话框右下角的"应用">

如果您的项目/解决方案文件已经使用cuda模板设置,则应该是所需的全部。如果cudart.lib不存在,或者您的项目/解决方案文件还没有理解cuda,那就另当别论了。在这种情况下,我建议重新开始,从Samples中克隆一个项目,并以此为起点构建您的项目。然后,它将选择所有适当的目录进行搜索,以及cuda构建规则。由于所有主要的cuda库(cudart、cublas、cufft、cusparse等)都在同一位置,因此相同的搜索路径应该根据需要选择其中的任何一个。

如果你想链接另一个库,例如cublas.lib,你可以按照类似的顺序,用cublas.lib代替上面的cusparse.lib

请注意,对于较新版本的CUDA(例如CUDA 7.5),仅需要构建64位项目(在修改x64项目属性时请遵循上述步骤)。CUDA 7.5及更高版本将放弃对32位项目的支持。

我通过以下步骤修复了它:

  1. 添加cuda路径:转到:"配置属性->链接器->常规->其他库目录"并将$(CudaToolkitLibDir)添加到列表中。

  2. 添加cuda实时库:转到:"解决方案属性->链接器->输入->其他依赖项",并将cudart.lib添加到列表中。

  3. 添加cublas库:转到:"解决方案属性->链接器->输入->其他依赖项"并将cublas.lib添加到列表中。

  4. 正在将平台更改为x64:转到:"配置属性->平台"并将其设置为x64。

  5. 以管理员身份运行cmd.exe。键入并运行以下两行命令:

netsh winsock重置目录

netsh int ip reset reset.log命中

它可能说需要重新启动,但实际上这并不是必须的。请尝试再次调试您的应用程序,问题应该会得到解决。

相关内容

最新更新