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

Метод record_event

Метод record_event класса Stream записывает указанное событие в поток выполнения CUDA. Событие фиксирует момент, когда все операции, поставленные в очередь до вызова метода, завершат своё выполнение. Первым параметром метод принимает объект события Event, вторым необязательным параметром можно указать флаг blocking.

Синтаксис

stream.record_event(event, blocking=False)

Пример

Давайте создадим поток, событие и запишем его в поток:

import torch stream = torch.cuda.Stream() event = torch.cuda.Event() with torch.cuda.stream(stream): t = torch.tensor([1, 2, 3, 4, 5], device='cuda') stream.record_event(event) print("Event recorded")

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

"Event recorded"

Пример

Давайте запишем событие с блокировкой и проверим его состояние:

import torch torch.manual_seed(0) stream = torch.cuda.Stream() event = torch.cuda.Event() with torch.cuda.stream(stream): t = torch.randn(1000, 1000, device='cuda') t = t * 2 stream.record_event(event, blocking=True) event.synchronize() print("Event synchronized")

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

"Event synchronized"

Пример

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

import torch torch.manual_seed(0) stream = torch.cuda.Stream() start_event = torch.cuda.Event(enable_timing=True) end_event = torch.cuda.Event(enable_timing=True) with torch.cuda.stream(stream): start_event.record(stream) t = torch.randn(1000, 1000, device='cuda') res = t @ t.T end_event.record(stream) end_event.synchronize() time = start_event.elapsed_time(end_event) print("time =", time)

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

time = 1.234567

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

  • класс Stream,
    который описывает поток выполнения CUDA
  • метод wait_stream,
    который ожидает завершения другого потока
  • метод query,
    который проверяет завершение всех операций в потоке
  • метод synchronize,
    который ожидает завершения всех операций в потоке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить