【问题标题】:Cuda cusolver can't link in Visual studio 2013Cuda cusolver 无法在 Visual Studio 2013 中链接
【发布时间】:2015-08-05 18:05:16
【问题描述】:

我基本上已经尝试了所有方法,但我无法让 vs2013 编译和链接到 cusolver 库。我已经尝试了 cuda 安装包附带的所有示例项目,并且基本上所有示例都可以正常工作。虽然没有使用 cusolver 的样本。包含文件工作得很好。链接器出错了,所有其他 cuda 东西都链接得很好。我尝试将一行 cusolver 代码添加到一个完美运行的 cuda 示例中,但它会中断。这是代码sn-p:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "cusolver_common.h"
#include "cusolverDn.h"
#include <stdio.h>

cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);

__global__ void addKernel(int *c, const int *a, const int *b)
{
    int i = threadIdx.x;
    c[i] = a[i] + b[i];
}

int main()
{
    cusolverDnCreate(new cusolverDnHandle_t);

    return 0;
}

构建输出是:

1>------ Build started: Project: The cudan, Configuration: Release x64 ------
1>  Compiling CUDA source file kernel.cu...
1>  
1>  c:\Users\Gdizzle\documents\visual studio 2013\Projects\The cudan\The cudan>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\include"     --keep-dir x64\Release -maxrregcount=0  --machine 64 --compile -cudart static     -DWIN32 -DWIN64 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Zi  /MD  " -o x64\Release\kernel.cu.obj "c:\Users\Gdizzle\documents\visual studio 2013\Projects\The cudan\The cudan\kernel.cu" 
1>  kernel.cu
1>kernel.cu.obj : error LNK2001: unresolved external symbol cusolverDnCreate
1>c:\users\gdizzle\documents\visual studio 2013\Projects\The cudan\x64\Release\The cudan.exe : fatal error LNK1120: 1 unresolved externals

我尝试在项目属性 -> vc++ 和链接器选项中添加目录,但没有帮助。有任何想法吗?太奇怪了,这 1 个库不起作用。

(另外,如果您对如何使用 gpu 编程求解具有最小二乘的方程组有任何其他想法会有所帮助)

编辑更新:您不得通过在 cudaLinker 或 vc++ 目录等其他链接器选项中添加额外的库或额外的包含目录来包含额外的 .h 文件或额外的库

【问题讨论】:

  • 您需要将 cusolver 库添加到链接规范中。其他 cuda 库的路径(目录)应该已经存在,您只需将 cusolver.lib 添加到其他依赖项。看看here
  • 它仍然给我同样的错误

标签: c++ visual-studio visual-studio-2013 cuda cusolver


【解决方案1】:

我刚刚在 Windows 7 64 位、Visual Studio 2013 社区、CUDA 7 上对此进行了测试。

  1. 首先打开vectorAdd cuda 示例代码。确保您可以正确构建此代码。 (应该是 x64 项目。CUDA 7 does not support 32-bit projects or operating systems on windows.)如果你不能正确构建这个,你的问题与 cusolver 无关

  2. 在vectorAdd.cu的顶部添加如下头文件:

    #include <cusolverDn.h>
    
  3. 将以下两行添加到main 例程的开头:

    cusolverDnHandle_t my_handle;
    cusolverDnCreate(&my_handle);
    
  4. 转到项目...向量添加属性...链接器...输入...其他依赖项。在此字段中,您应该已经找到了许多库,包括 cudart_static.lib。点击该字段,然后点击右侧的下拉菜单箭头,然后点击&lt;Edit...&gt;在编辑窗口的库列表底部,将cusolver.lib单独添加一行。

  5. 重建项目。

【讨论】:

    猜你喜欢
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    相关资源
    最近更新 更多