У меня есть вопрос о моем коде и могу ли я запустить его на моем текущем устройстве или нет. В принципе, я хочу сделать трехмерную интерполяцию. Когда я запускаю мою интерполяцию ядро, я получаю следующее сообщение об ошибке: сбоя ядра: недействительной конфигурации аргументеОшибка ядра: неверный аргумент конфигурации
Я видел in this discussion, что это может произойти, если вы звоните слишком много потоков или блоков, но я не уверен, что это в моем коде. Может ли кто-нибудь взглянуть на него и сказать мне, что случилось?
Вот как я называю мое ядро:
dim3 blockSize(6,6,6);
dim3 threadSize(dimX/blockSize.x,dimY/blockSize.y,dimZ/blockSize.z);
d_interpolate_kernel<<<blockSize,threadSize>>>(output,dimX,dimY,dimZ);
Моих размерами являются ИтМ = 54 или 108, = ИтХ Димы = 42 или 84. Так У меня есть blockSize (6,6,6) и threadSize (9,7,7) или (18,14,14).
Моя карта имеет следующие возможности:
MAX_BLOCK_DIM_X = 512
MAX_BLOCK_DIM_Y = 512
MAX_BLOCK_DIM_Z = 64
MAX_GRID_DIM_X = 65535
MAX_GRID_DIM_Y = 65535
MAX_GRID_DIM_Z = 1
Могу ли я получить ошибку, потому что MAX_GRID_DIM_Z является 1? Если да, есть ли способ обойти это?
Спасибо!
Спасибо, Роберт помог мне изменить blockSize и threadSize. Я также пробовал с более новой карточкой, и это сработало. Я был смущен о сетках и блоках, но теперь это яснее. Спасибо! – azhew