Как объявить функцию (метод), используя текстуру cuda <>? - PullRequest
0 голосов
/ 19 января 2020

Я работаю над проектом cuda 10.2 в VS2019. Я пытаюсь создать класс, у которого есть методы с texture<> в качестве аргумента, но это кажется невозможным.

Я начинаю определение в файле .cu следующим образом:

template<class T, cudaTextureReadMode mode>
void CBSplines::CreateTextureFromVolume(texture<T, 3, mode>* tex, //...

Тогда я получаю эту ошибку:

Класс ошибок "CBSplines" не имеет члена "CreateTextureFromVolume"

Для решения этой проблемы я добавляю определение заголовка, но тогда я получаю эту ошибку:

Ошибка (активная) Текстура E0864 не является шаблоном

Как получить класс с использованием методов с texture<> аргументом (ами) ?

__

Подробнее: я использую заголовок для нескольких файлов .cu, которые определяют глобальные функции и методы. Ошибки от nv cc ie., Компиляция, а не roslyn.

1 Ответ

1 голос
/ 19 января 2020

Вы не можете этого сделать. Цитирование документации :

Ссылка на текстуру объявляется в области видимости файла как переменная типа texture

Вы не можете сделать ничего, кроме как определить их на используемую область перевода и ссылаться на них по имени в коде хоста или устройства. Они являются непрозрачными объектами с шаблоном, подобным синтаксису, но они не являются ни типом, ни шаблоном.

То, что вы ищете, - это объект текстуры API , который можно передавать в качестве аргументов функции. Однако я не уверен, что их можно использовать в качестве аргументов шаблона.

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