Cuda 对cusolverDn的未定义引用

Cuda 对cusolverDn的未定义引用,cuda,cusolver,Cuda,Cusolver,我正在尝试运行cuda 7.0中提供的cuSolver库。我在使用cuSolver库时遇到了一个问题,这个问题必须非常简单才能解决,但我在这里寻求一些帮助 我看了很多贴在周围的例子,我特别选择了JackOLantern的这一个: 我刚刚将其简化为内核_0.cu: #include "cuda_runtime.h" #include "device_launch_parameters.h" #include<iostream> #include<iomanip> #in

我正在尝试运行cuda 7.0中提供的cuSolver库。我在使用cuSolver库时遇到了一个问题,这个问题必须非常简单才能解决,但我在这里寻求一些帮助

我看了很多贴在周围的例子,我特别选择了JackOLantern的这一个:

我刚刚将其简化为内核_0.cu:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<stdio.h>
#include<assert.h> 
#include<math.h>

#include <cusolverDn.h>
#include <cuda_runtime_api.h>

#include "Utilities.cuh"

/********/
/* MAIN */
/********/
int main(){

// --- gesvd only supports Nrows >= Ncols
// --- column major memory ordering

// --- cuSOLVE input/output parameters/arrays
int *devInfo;           gpuErrchk(cudaMalloc(&devInfo,          sizeof(int)));

// --- CUDA solver initialization
cusolverDnHandle_t solver_handle;
cusolverDnCreate(&solver_handle);

cusolverDnDestroy(solver_handle);

return 0;

}
我得到的是:

Utilities.cu(27): warning: conversion from a string literal to "char *" is deprecated

Utilities.cu(27): warning: conversion from a string literal to "char *" is deprecated

/tmp/tmpxft_00007e1d_00000000-22_kernel_0.o: In function `main':
tmpxft_00007e1d_00000000-4_kernel_0.cudafe1.cpp:(.text+0x3d): undefined     reference to `cusolverDnCreate'
tmpxft_00007e1d_00000000-4_kernel_0.cudafe1.cpp:(.text+0x49): undefined   reference to `cusolverDnDestroy'
collect2: error: ld returned 1 exit status
如果我注释掉cusolverDnCreate和CUSOLVERNDESTROY,它编译得很好,所以库显然包含得很好

我遗漏了什么简单的基本点?我到处找了找,但找不到。谢谢你

我遗漏了什么简单的基本点

您必须链接到cusolver库:

/usr/local/cuda-7.0/bin/nvcc kernel_0.cu Utilities.cu -lcusolver
我遗漏了什么简单的基本点

您必须链接到cusolver库:

/usr/local/cuda-7.0/bin/nvcc kernel_0.cu Utilities.cu -lcusolver

它们是警告,而不是错误。你在Linux下编译,而我在Windows下编译。在
Utilities.cu
中,将
gpuerchk
函数的
char*文件
项更改为
const char*文件
。这应该可以解决问题。请注意,@talonmies在发布了
gpuerchk
功能。谢谢Jackolanten!它们是警告,而不是错误。你在Linux下编译,而我在Windows下编译。在
Utilities.cu
中,将
gpuerchk
函数的
char*文件
项更改为
const char*文件
。这应该可以解决问题。请注意,@talonmies在发布了
gpuerchk
功能。谢谢Jackolanten!非常感谢罗伯特(以及其他许多有用的答案)。这就解决了问题。非常感谢罗伯特(以及其他许多有用的答案)。这就解决了问题。