Visual Studio 2010 + CUDA 4: нераспознанная ошибка токена при попытке выделить память с помощью NPP - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть следующий исходный файл (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 Ответ

1 голос
/ 19 апреля 2011

Последний аргумент nppiMalloc_32s_C1 неверен. Это всегда должен быть указатель на целочисленную переменную. Процедура внутренне вычисляет правильный размер для выделения (включая выравнивание) и возвращает размер вызывающей стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...