Есть ли в TensorFlow C API способ прямой замены буфера в тензоре с использованием memcpy? - PullRequest
0 голосов
/ 03 января 2019

Я кодирую интерфейс между приложением Fortran и TensorFlow, используя C API.Я успешно передал свои данные в C, запустил сеанс и возвратил результаты, и все работает как положено.Однако я хотел улучшить производительность и уменьшить накладные расходы памяти, заменив указатель буфера в Tensor без необходимости создавать копию (без использования memcpy).Я инициализировал Tensor (и его основной буфер) до нужного размера.Я хотел сделать что-то вроде этого:

TF_TensorData(tensor) = pointerToExistingData;

Конечно, это не разрешено в C. Поэтому я написал функцию, которая будет брать 2 указателя и выполнять назначение.

void* ptrcopy(void* ptr1, const void* ptr2)
{
    ptr1 = ptr2;
    return ptr1;
}

ptrcopy(TF_TensorData(tensor), pointerToExistingData);

Хотя в лучшем случае это неправильный способ достижения моей цели, я думал, что это сработает.Однако если после этого я вызову TF_TensorData (), значение указателя останется прежним.

Я не могу получить прямой доступ к буферу и не хочу использовать API C ++.У кого-нибудь есть идеи обходного пути или альтернативного решения, которое не требует создания копии?

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