CUDA "недопустимый символ устройства" - PullRequest
0 голосов
/ 04 ноября 2010

Скелет кода:

a_kernel.cu

__constant__ unsigned char carray[256];

a.cu

#include <a_kernel.cu>
...
unsigned char h_carray[256];
...
cudaMemcpyToSymbol("carray", h_carray, 256);

Конфигурация системы
Windows7 64bit
Инструментарий CUDA 3.1, SDK 3.1
Файл правил GeForce GTX 460
в SDK 3.1

У меня недопустимая строка ошибки символа устройства на cudaMemcpyToSymbol.
Любая помощь будет принята с благодарностью,:)

Ответы [ 2 ]

0 голосов
/ 04 ноября 2010

Было бы полезно, если бы вы могли опубликовать некоторый код для воспроизведения проблемы, возможно, вы могли бы сделать это на форумах CUDA . Сказав это, __constant__ переменные имеют статическую (то есть единицу перевода) область видимости. Простейшая структура для подражания будет выглядеть следующим образом. Обратите внимание, что также стоит проверить CUDA 3.2 .

host_code.cpp:

#include "cuda_funcs.h"

...
{
  unsigned char h_carray[256];
  cudaMemcpyToSymbol("carray", h_carray, 256);
  processOnGpu(...);
}
...

cuda_funcs.h:

void processOnGpu(...);

cuda_funcs.cu:

__constant__ unsigned char carray[256];

__global__ void kernel(...)
{
  ...
}

void processOnGpu(...)
{
  ...
  kernel<<<...>>>(...);
  ...
}
0 голосов
/ 04 ноября 2010

Оформить заказ в руководстве cuda

Необходимо указать вид или направление копии из памяти.Возможно, по умолчанию используется "cudaDevicetoHost".

cudaMemcpyToSymbol ("carray", h_carray, 256, 0, cudaHostToDevice);

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