Аргумент типа "unsigned int *" несовместим с параметром типа "size_t *" - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть этот код в cuda с c ++:

// Variables
float        *query_dev;
float        *ref_dev;
float        *dist_dev;
int          *ind_dev;
cudaArray    *ref_array;
cudaError_t  result;
size_t       query_pitch;
size_t       query_pitch_in_bytes;
size_t       ref_pitch;
size_t       ref_pitch_in_bytes;
size_t       ind_pitch;
size_t       ind_pitch_in_bytes;
size_t       max_nb_query_traited;
size_t       actual_nb_query_width;
unsigned int memory_total;
unsigned int memory_free;

// Check if we can use texture memory for reference points
unsigned int use_texture = ( ref_width*size_of_float<=MAX_TEXTURE_WIDTH_IN_BYTES && height*size_of_float<=MAX_TEXTURE_HEIGHT_IN_BYTES );

// CUDA Initialisation
cuInit(0);

// Check free memory using driver API ; only (MAX_PART_OF_FREE_MEMORY_USED*100)% of   memory will be used

CUcontext cuContext;
CUdevice  cuDevice=0;
cuCtxCreate(&cuContext, 0, cuDevice);
cuMemGetInfo(&memory_free, &memory_total);

Я получил сообщение об ошибке компиляции в строке: cuMemGetInfo (& memory_free, & memory_total);

Ошибки:

app.cu(311): error: argument of type "unsigned int *" is incompatible with parameter of type "size_t *"

app.cu(311): error: argument of type "unsigned int *" is incompatible with parameter of type "size_t

311 это строка: cuMemGetInfo(&memory_free, &memory_total);

Понятия не имею, что это за ошибка, у вас есть идеи по этому поводу?

Ответы [ 3 ]

6 голосов
/ 02 ноября 2011

Измените следующие строки:

unsigned int memory_total;
unsigned int memory_free;

на:

size_t memory_total;
size_t memory_free;

Возможно, вы пытаетесь использовать старый код, который был изначально создан до CUDA 3.0.

Источник

5 голосов
/ 02 ноября 2011

Ошибка говорит о том, что size_t и unsigned int - это разные типы, поэтому вы не можете передать указатель на одну функцию, которая ожидает другую.

Либо измените типы memory_free и memory_total на size_t, либо используйте временные size_t переменные, а затем скопируйте значение в memory_free и memory_total

P.S. Вы опубликовали слишком много исходного кода, пожалуйста, постарайтесь свести к минимуму ваши примеры.

1 голос
/ 02 ноября 2011

Не можете ли вы определить оба значения

unsigned int memory_total;
unsigned int memory_free;

как

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