tf.test.experimental.sync_devices
Синхронизирует все устройства.
tf.test.experimental.sync_devices() -> None
По умолчанию графические процессоры работают асинхронно. Это означает, что при выполнении операции на графическом процессоре, например, tf.linalg.matmul, операция может по-прежнему выполняться на графическом процессоре, когда функция возвращает значение. Устройства, не являющиеся графическими процессорами, также могут быть настроены на асинхронную работу, вызвав tf.config.experimental.set_synchronous_execution(False). Вызов sync_devices() блокирует выполнение, пока ожидаемые операции не завершат выполнение. Это в первую очередь полезно для измерения производительности во время тестирования.
Например, вот как можно измерить время выполнения tf.linalg.matmul:
import time
x = tf.random.normal((4096, 4096))
tf.linalg.matmul(x, x) # Warmup.
tf.test.experimental.sync_devices() # Block until warmup has completed.
start = time.time()
y = tf.linalg.matmul(x, x)
tf.test.experimental.sync_devices() # Block until matmul has completed.
end = time.time()
print(f'Time taken: {end - start}')Если вызов sync_devices() был опущен, время, выведенное на печать, может быть слишком малым. Это происходит потому, что операция может по-прежнему выполняться асинхронно, когда выполняется строка end = time.time().
| Возможные исключения | |
|---|---|
RuntimeError | Если выполняется вне режима Eager. Этот метод должен вызываться в режиме Eager, за пределами любых tf.function. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/test/experimental/sync_devices