Мне нужно сделать вывод, используя модель тензорного потока внутри ядра cuda. Для этого мне понадобятся функции DEVICE для вывода, которые можно вызывать из ядра cuda. Ничего подобного в tensorflow C++ API не нашел.





Я ни в коем случае не эксперт по Tensorflow. Но учтите, что выполнение логического вывода на GPU в нетривиальной сети обычно требует нескольких вызовов ядра. Кажется маловероятным, что тот тип API, который вы ищете, существует. Даже учитывая, что теоретически возможен запуск ядер из других ядер (например, с использованием динамического параллелизма), весь смысл Tensorflow заключается в том, чтобы описать ваши вычисления на уровне абстракции, намного превышающем все, что связано с CUDA. Вы используете Tensorflow, чтобы выполнить сопоставление с CUDA за вас. Tensorflow — это, по сути, своего рода компилятор, который переводит ваш вычислительный граф в то, что он считает лучшим способом выполнения вычислений, описываемых графом, на заданном целевом оборудовании. Детали этого вида сопоставления сильно зависят от цели и могут быть изменены. Разоблачение любых подобных вещей в общедоступном API, казалось бы, идет вразрез с самой природой того, чем стремится быть Tensorflow. Конечно, Tensorflow имеет открытый исходный код, поэтому всегда можно просто посмотреть и выяснить, как именно выглядит код устройства, сгенерированный Tensorflow, и как его нужно вызывать. Однако количество усилий, необходимых для этого, скорее всего, непомерно велико; и следовало бы ожидать, что все это сломается с каждой новой версией…
Вместо того, чтобы задавать вопрос о том, как вручную вызывать внутренние компоненты сеанса Tensorflow, более плодотворным подходом может показаться, что Tensorflow вместо этого вызывает вас. Казалось бы, например, с помощью добавление пользовательской операции вы могли бы заставить Tensorflow вызывать код вашего GPU…