У меня проблема с привязкой к памяти текстур части глобальной памяти устройства.
У меня большой глобальный массив устройств, заполненный памятью:
двойной * device_global;
cudaMalloc ((void **) & device_global, sizeof (double) * N));
cudaMemcpy (device_global, host, sizeof (double) * N, cudaMemcpyHostToDevice));
Я запускаю множество ядер в цикле for.
Каждому ядру требуется небольшая часть (int offset = 100) device_global
, которую я привязываю к текстуре через:
cudaBindTexture (0, texRef, device_global, channelDesc, sizeof (double) * 10);
Однако проблема, с которой я сталкиваюсь, заключается в том, что я не могу использовать арифметику указателей для привязки только циклического участка device_global
через смещение, которое зацикливается.
Я хотел бы сделать что-то вроде:
cudaBindTexture (0, texRef, device_global + offsett * i, channelDesc, sizeof (double) * 10);
Следует отметить, что вышеуказанный подход работает, если смещение установлено на 0, арифметика указателя не работает.
Любая помощь или другие рекомендации будут высоко оценены.