Я кодирую интерфейс между приложением 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 ++.У кого-нибудь есть идеи обходного пути или альтернативного решения, которое не требует создания копии?