Cuda cusolver 无法在 Visual studio 2013 中 link
Cuda cusolver can't link in Visual studio 2013
我基本上已经尝试了所有方法,但我无法让 vs2013 编译并且 link 针对 cusolver 库。 cuda安装包自带的样例项目我都试过了,基本都能正常使用。虽然没有使用 cusolver 的示例。包含文件工作得很好。 linker 出错了,所有其他 cuda 东西 link 都很好。我尝试将一行 cusolver 代码添加到一个完美工作的 cuda 示例中,但它中断了。这是代码片段:
#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++ 和 linker 选项中添加目录,但没有帮助。有任何想法吗?很奇怪,这1个库不起作用。
(此外,如果您对如何使用 gpu 编程求解最小二乘方程组有任何其他想法,那将会有所帮助)
编辑更新:您不得通过在其他 linker 选项(如 cudaLinker 或 vc+ 中添加额外的库或额外的包含目录来包含额外的 .h 文件或额外的库+ 目录
我刚刚在 Windows 7 64 位,Visual Studio 2013 社区,CUDA 7 上测试了这个。
首先打开vectorAdd cuda示例代码。确保您可以正确构建此代码。 (它应该是一个 x64 项目。CUDA 7 does not support 32-bit projects or operating systems on windows.)如果你不能正确构建它,你的问题与 cusolver
无关
在vectorAdd.cu的顶部添加如下头文件:
#include <cusolverDn.h>
将以下两行添加到main
例程的开头:
cusolverDnHandle_t my_handle;
cusolverDnCreate(&my_handle);
转到项目...vectorAdd 属性...链接器...输入...其他依赖项。在此字段中,您应该已经找到许多库,包括 cudart_static.lib。在此字段中单击,然后单击右侧的下拉菜单箭头,然后单击 <Edit...>
在编辑 window 中的库列表的底部,添加 cusolver.lib
它自己的行。
重建项目。
我基本上已经尝试了所有方法,但我无法让 vs2013 编译并且 link 针对 cusolver 库。 cuda安装包自带的样例项目我都试过了,基本都能正常使用。虽然没有使用 cusolver 的示例。包含文件工作得很好。 linker 出错了,所有其他 cuda 东西 link 都很好。我尝试将一行 cusolver 代码添加到一个完美工作的 cuda 示例中,但它中断了。这是代码片段:
#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++ 和 linker 选项中添加目录,但没有帮助。有任何想法吗?很奇怪,这1个库不起作用。
(此外,如果您对如何使用 gpu 编程求解最小二乘方程组有任何其他想法,那将会有所帮助)
编辑更新:您不得通过在其他 linker 选项(如 cudaLinker 或 vc+ 中添加额外的库或额外的包含目录来包含额外的 .h 文件或额外的库+ 目录
我刚刚在 Windows 7 64 位,Visual Studio 2013 社区,CUDA 7 上测试了这个。
首先打开vectorAdd cuda示例代码。确保您可以正确构建此代码。 (它应该是一个 x64 项目。CUDA 7 does not support 32-bit projects or operating systems on windows.)如果你不能正确构建它,你的问题与 cusolver
无关
在vectorAdd.cu的顶部添加如下头文件:
#include <cusolverDn.h>
将以下两行添加到
main
例程的开头:cusolverDnHandle_t my_handle; cusolverDnCreate(&my_handle);
转到项目...vectorAdd 属性...链接器...输入...其他依赖项。在此字段中,您应该已经找到许多库,包括 cudart_static.lib。在此字段中单击,然后单击右侧的下拉菜单箭头,然后单击
<Edit...>
在编辑 window 中的库列表的底部,添加cusolver.lib
它自己的行。重建项目。