РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
725 of 769 menu

Метод query

Метод query класса Event проверяет состояние события. Он возвращает True, если событие было зарегистрировано (произошло), и False в противном случае. Этот метод не блокирует выполнение программы, в отличие от метода wait.

Метод особенно полезен для неблокирующей проверки завершения операций на GPU. Он позволяет опрашивать состояние события в циклах или условных конструкциях, не останавливая основной поток выполнения.

Синтаксис

event.query()

Метод не принимает параметров и возвращает значение типа bool.

Пример

Базовый пример использования метода query для проверки состояния события:

import torch # Создаем событие event = torch.cuda.Event(enable_timing=False) # Записываем событие t = torch.tensor([1, 2, 3, 4, 5]).cuda() event.record() # Проверяем состояние is_occurred = event.query() print(is_occurred)

Результат выполнения кода:

False

В момент проверки событие ещё не произошло, поэтому метод возвращает False.

Пример

Использование метода query для опроса состояния события в цикле:

import torch import time # Создаем событие event = torch.cuda.Event(enable_timing=False) # Выполняем операцию на GPU t = torch.randn(1000, 1000).cuda() result = t.matmul(t.T) event.record() # Опрашиваем состояние с задержкой while not event.query(): print("Waiting for event...") time.sleep(0.1) print("Event occurred!")

Результат выполнения кода:

Waiting for event... Waiting for event... Event occurred!

Метод query позволяет выполнять другие действия, пока событие не произойдёт.

Пример

Проверка состояния события после явной синхронизации:

import torch # Создаем событие event = torch.cuda.Event(enable_timing=False) # Записываем событие t = torch.zeros(100, 100).cuda() t.add_(1) event.record() # Принудительно синхронизируем event.synchronize() # Проверяем состояние is_occurred = event.query() print(is_occurred)

Результат выполнения кода:

True

После вызова метода synchronize событие точно произошло, и query возвращает True.

Смотрите также

  • класс Event,
    который используется для создания событий
  • метод record,
    который регистрирует событие в потоке
  • метод wait,
    который блокирует поток до наступления события
  • метод synchronize,
    который синхронизирует текущий поток с событием
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить