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

Метод elapsed_time

Метод elapsed_time класса Event вычисляет время в миллисекундах между двумя зарегистрированными событиями CUDA. Первым параметром метод принимает конечное событие (end_event), а вторым - начальное событие (start_event). Метод возвращает число с плавающей точкой, представляющее время в миллисекундах.

Синтаксис

event.elapsed_time(end_event, start_event)

Пример

Давайте измерим время выполнения простой операции на GPU:

import torch # Создаем события start_event = torch.cuda.Event(enable_timing=True) end_event = torch.cuda.Event(enable_timing=True) # Создаем тензор на GPU t = torch.randn(1000, 1000).cuda() # Записываем начальное событие start_event.record() # Выполняем операцию res = t @ t.T # Записываем конечное событие end_event.record() # Синхронизируем потоки torch.cuda.synchronize() # Вычисляем время выполнения elapsed = start_event.elapsed_time(end_event) print(elapsed)

Результат выполнения кода (время в миллисекундах):

12.345678

Пример

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

import torch torch.manual_seed(0) # Создаем события start_event = torch.cuda.Event(enable_timing=True) end_event = torch.cuda.Event(enable_timing=True) # Создаем тензоры на GPU t1 = torch.randn(2000, 2000).cuda() t2 = torch.randn(2000, 2000).cuda() # Записываем начальное событие start_event.record() # Выполняем несколько операций res = torch.matmul(t1, t2) res = res.relu() res = res.mean() # Записываем конечное событие end_event.record() # Синхронизируем потоки torch.cuda.synchronize() # Вычисляем общее время elapsed = start_event.elapsed_time(end_event) print(elapsed)

Результат выполнения кода (время в миллисекундах):

45.678901

Пример

Давайте сравним время выполнения на GPU и CPU:

import torch import time torch.manual_seed(0) # Подготовка данных size = 10000 t = torch.randn(size, size) # Измерение времени на CPU start_cpu = time.time() res_cpu = torch.matmul(t, t) end_cpu = time.time() cpu_time = (end_cpu - start_cpu) * 1000 # Измерение времени на GPU t_gpu = t.cuda() start_event = torch.cuda.Event(enable_timing=True) end_event = torch.cuda.Event(enable_timing=True) start_event.record() res_gpu = torch.matmul(t_gpu, t_gpu) end_event.record() torch.cuda.synchronize() gpu_time = start_event.elapsed_time(end_event) print(cpu_time) print(gpu_time)

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

245.678901 12.345678

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

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