Многопоточность Tensorflow C API, которая является правильной

#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. Во многих документах говорится, что сеанс потокобезопасен, поэтому несколько потоков могут использовать один и тот же сеанс для достижения параллелизма. Я понимаю это, поскольку несколько сеансов могут одновременно запускать разные части графика. Что, если я использую этот механизм только для вычисления разных данных от разных пользователей? Это означает, что к графику прикреплено несколько копий промежуточного тензора?