Вот часть кода ядра — объявление переменных и желаемой операции для каждого потока
.global.f32 sum = 0.0
.reg.f32 reg;
atom.global.add.f32 reg, [sum], val;
Я хочу добавить разные переменные в каждом потоке к глобальной переменной sum.
Я предполагаю, что приведенный выше код является правильным — все компилируется без проблем. Но у меня проблема с получением значения глобальной переменной sum обратно на хост.
У меня есть следующий код для хоста, после выполнения ядра.
CUdeviceptr hostSumPtr;
size_t bytes;
cuModuleGetGlobal(&hostSumPtr, &bytes, hModule, "sum");
но это возвращает код ошибки 500 «CUDA_ERROR_NOT_FOUND»
Есть ли способ получить значение глобальной переменной, объявленной в ядре на хост, или каким-либо образом обойти эту проблему другим подходом?
Было 3 проблемы:
Проблема исправлена.
Других решений пока нет …