2013-04-07 3 views
1

Я с удовольствием игнорировал это какое-то время, но теперь это стало проблемой - надеюсь, вы, ребята, можете мне помочь.cudaMallocPitch 'Недопустимые аргументы ", несмотря на руководство по копированию?

Я вызываю cudaMallocPitch, но все, что я пробую, он продолжает давать мне красную подчеркивание и ошибку «недопустимые аргументы». Даже когда я копирую исходный код из руководства по программированию Nvidia CUDA C, он все равно дает мне ошибку. Я совершенно новичок в CUDA, поэтому, пожалуйста, не стесняйтесь указывать на все, что может показаться очевидным, что может вызвать проблему.

Вот точный код, который я имею в виду:

int width = 64, height = 64; 
    float* devPtr; 
    size_t pitch; 
    cudaMallocPitch(&devPtr, pitch, 
        width * sizeof(float), height); 

Любой комментарий очень ценится, ура.

+0

Он компилируется? –

ответ

1

Второй параметр должен быть size_t*, но вы передаете size_t. Попробуйте вместо этого:

cudaMallocPitch(&devPtr, &pitch, width * sizeof(float), height); 

Следует также отметить, что последний параметр типа также size_t. Возможно, height будет лучше, чем size_t.

+0

Поскольку [cudaMallocPitch] (http://docs.nvidia.com/cuda/cuda-runtime-api/index.html#group__CUDART__MEMORY_1g80d689bc903792f906e49be4a0b6d8db) рассчитывает сообщить шаг назад вызывающему процессу, мы должны передать ему адрес поля переменная (т. е. передается как указатель, по ссылке), поэтому она может изменять «pitch» в вызывающем процессе. 'height' как' int', а не 'size_t' не имеет значения. –

+0

Еще не повезло! Я пробовал свой код, а также использовал height как size_t, но он все еще получил красную подсветку и ту же ошибку. – Boyentenbi

+1

Красная подчеркивание может быть побочным эффектом использования CUDA в VS. Вы можете найти «CUDA red underline», чтобы узнать больше об этом. Если код компилируется и работает правильно (используйте [проверка ошибок !!!] (http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the -cuda-runtime-api)) красное подчеркивание, ну, красно-селедка. В противном случае отправьте ошибку, возвращенную ими * компилятором * и/или * ошибкой времени выполнения *, а не используя то, что возвращается intellisense/visual studio. –

 Смежные вопросы

  • Нет связанных вопросов^_^