К сожалению, компилятор CUDA, похоже, обычно имеет некоторые проблемы с переменными шаблонами. Если вы посмотрите на сборку , вы увидите, что все работает просто отлично. Компилятор явно создает экземпляр шаблона переменной и выделяет соответствующий объект устройства.
.global .align 8 .u64 _Z6d_testIfE;
Сгенерированный код использует этот объект так же, как он должен
ld.global.u64 %rd3, [_Z6d_testIfE];
Я бы посчитал это предупреждение ошибкой компилятора. Обратите внимание, что я не могу воспроизвести проблему с CUDA 10 здесь, поэтому эта проблема, скорее всего, уже исправлена. Подумайте об обновлении вашего компилятора & hellip;