#c #tensorflow
#c #tensorflow
Вопрос:
Вариант 1: TF_Graph* graph
и TF_SessionWithGraph* session
создается в основном потоке. вызов нескольких потоков TF_SessionRun
с графиком и сеансом из основного потока и с локальным потоком TF_Tensor
.
Вариант 2: TF_Graph* graph
инициализируется в основном потоке. multiple TF_SessionWithGraph
создается в рабочих потоках с использованием одного и того же графика, инициализированного в основном потоке. TF_SessionRun
вызывается с помощью graph из основного потока с помощью thread local TF_Tensor
.
Вариант 3: оба TF_Graph
и TF_SessionWithGraph
являются локальными потоками.
Комментарии:
1. Не экспериментировал с интерфейсом C , но если он похож на версию Python, все 3 подхода допустимы. Первый подход позволяет повторно использовать объекты сеанса / графика между потоками, поэтому он максимально экономит память
2. Во многих документах говорится, что сеанс потокобезопасен, поэтому несколько потоков могут использовать один и тот же сеанс для достижения параллелизма. Я понимаю это, поскольку несколько сеансов могут одновременно запускать разные части графика. Что, если я использую этот механизм только для вычисления разных данных от разных пользователей? Это означает, что к графику прикреплено несколько копий промежуточного тензора?