tf.test.experimental.sync_devices
Синхронизирует все устройства.
tf.test.experimental.sync_devices() -> None
По умолчанию GPU работают асинхронно. Это означает, что при выполнении операции на GPU, например tf.linalg.matmul, она может продолжать выполняться на GPU после возврата функции. Для устройств, отличных от GPU, также можно включить асинхронный режим, вызвав 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