Visual Studio 2010 + CUDA 4:尝试使用NPP分配内存时无法识别的令牌错误

时间:2011-04-19 07:34:56

标签: c++ visual-studio-2010 visual-c++ cuda

对于同名的类,我有以下源文件(CUDA_Integral_Image.cu):

#include "cuda_runtime.h"
#include "npp.h"
#include "CUDA_Integral_Image.h"
#include <stdlib.h>
#include <time.h>

...

// allocated device source image
int step = width;
Npp8u* pSI = nppiMalloc_8u_C1(width, height, &step);
// copy test image up to device
cudaMemcpy2D(pSI, width, pHI, width, width, height, cudaMemcpyHostToDevice);
// allocate device result images
Npp32s* pDi = nppiMalloc_32s_C1(width,height,width*sizeof(int)); // LINE 30

尝试编译此代码会导致:

.../CUDA_Integral_Image.cu(30): error : unrecognized token
1>  
.../CUDA_Integral_Image.cu(30): error : expected an identifier
1>  
.../CUDA_Integral_Image.cu(30): error : unrecognized token
1>  
.../CUDA_Integral_Image.cu(30): error : expected an expression

CUDA_Integral_Image.h中没有包含其他头文件。所有NPP依赖项(.h和lib)似乎都没有问题地添加。此外,Npp8u *和nppiMalloc_8u_C1被认可很好。我完全不知道是什么导致了这个错误。

..如果我将代码更改为:

Npp32s* pDi; // LINE 30
pDi = nppiMalloc_32s_C1(width,height,width*sizeof(int));

我收到了错误:

.../CUDA_Integral_Image.cu(30): error : unrecognized token
1>  
.../CUDA_Integral_Image.cu(30): error : expected an identifier
1>  
.../CUDA_Integral_Image.cu(31): error : identifier "pDi" is undefined
1>  
.../CUDA_Integral_Image.cu(31): error : unrecognized token
1>  
.../CUDA_Integral_Image.cu(31): error : expected an expression

不知道造成这种情况的原因,不胜感激任何建议!

1 个答案:

答案 0 :(得分:1)

nppiMalloc_32s_C1的最后一个参数不正确。它应该始终是指向整数变量的指针。例程在内部计算分配的正确大小(包括对齐)并将大小返回给调用者。