C++ Cuda Can';t将类拆分为头并实现
我有下一个文件 Kernel.cuC++ Cuda Can';t将类拆分为头并实现,c++,compiler-errors,cuda,C++,Compiler Errors,Cuda,我有下一个文件 Kernel.cu #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> #include <cuda.h> #include <device_launch_parameters.h> #include <texture_fetch_functions.h> #include <builtin_types.h&
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <cuda.h>
#include <device_launch_parameters.h>
#include <texture_fetch_functions.h>
#include <builtin_types.h>
#include <vector_functions.h>
#include <float.h>
#include "Book.cuh"
extern "C" __global__ void Custom2(double *data, double *c)
{
int i = threadIdx.x;
Book *book=new Book(data);
}
这些文件编译时没有任何问题。
但现在我想将声明和实现拆分为两个文件.cu和.cuh
因此,我将有两个文件,而不是Book.cuh文件
书啊
#pragma once
#include "cuda_runtime.h"
class Book
{
public:
__device__ Book(double *data);
__device__ double* operator[] (const int index);
};
Book.cu
#pragma once
#include "Book.cuh"
__device__ Book::Book(double *data)
{
}
__device__ double* Book::operator[] (const int index)
{
return nullptr;
}
现在我的项目没有编译
这是一个错误
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(689,9): error MSB3721: The command ""D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\bin\nvcc.exe" -gencode=arch=compute_20,code=sm_20 --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -I"D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" -I"D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 -cubin -cudart static -o X:\Projects\CudaTest\CudaTest\\kernel.ptx "X:\Projects\CudaTest\Cuda\kernel.cu"" exited with code 255.
Cuda编译器设置
NVCC编译类型:生成.cubin文件(-cubin)
我的环境:
Windows 10 x64
Cuda 8.0
视频卡:Geforce GTX 660M
我是C开发人员,以前没有C++或CUDA的经验,我不确定这是CUDA特定的问题,还是我几乎没有的C++知识。可能我的问题很容易解决,但我已经花了几个小时没有任何进展。
这个问题是cuda特有的。 简而言之,解决方案是将生成可重定位设备代码设置为-Yes(-rdc=true) 答案很长:您还没有实际显示nvcc产生的错误
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\CUDA 8.0.targets(689,9): error MSB3721: The command ""D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\bin\nvcc.exe" -gencode=arch=compute_20,code=sm_20 --use-local-env --cl-version 2015 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64" -I"D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" -I"D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 -cubin -cudart static -o X:\Projects\CudaTest\CudaTest\\kernel.ptx "X:\Projects\CudaTest\Cuda\kernel.cu"" exited with code 255.