События для измерения времени и синхронизации
Используйте cudaEvent для измерения времени и упорядочивания работы.
«События для измерения времени и синхронизации» — бесплатный урок CUDA Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
What Is an Event?
A CUDA event is a marker you drop into a stream. The GPU records when it reaches that point, letting you time and order work. ⏱️
The Event Handle
Events use a cudaEvent_t handle, just like streams. You create it, record it, query it, and destroy it when finished.
cudaEvent_t start, stop;Creating Events
Call cudaEventCreate for each event you need. Timing usually wants two: one before the work and one after.
cudaEventCreate(&start);
cudaEventCreate(&stop);Recording an Event
cudaEventRecord places the event into a stream. The GPU stamps it the moment it finishes everything queued before it.
cudaEventRecord(start, stream);Timing a Kernel
Record start, launch your kernel, then record stop, all in the same stream. The gap between them is the real GPU execution time.
cudaEventRecord(start, s);
kernel<<<g, b, 0, s>>>(d);
cudaEventRecord(stop, s);Waiting for an Event
Events are async, so the host must wait. cudaEventSynchronize blocks until the given event has actually been recorded on the GPU.
cudaEventSynchronize(stop);Measuring Elapsed Time
cudaEventElapsedTime returns the milliseconds between two recorded events. This is far more accurate than a host-side CPU clock.
float ms;
cudaEventElapsedTime(&ms, start, stop);Why Not the CPU Clock?
Host timers include launch overhead and miss true GPU timing. Events sit inside the stream, so they capture exactly what the device did.
Cross-Stream Ordering
Events also synchronize streams. cudaStreamWaitEvent makes one stream pause until an event recorded in another has happened.
cudaStreamWaitEvent(streamB, eventA, 0);Building Dependencies
With stream-wait-event you express a dependency: streamB starts its work only after streamA reaches its event, without blocking the host.
Cleaning Up Events
Free events you no longer need with cudaEventDestroy. Like streams, they are cheap but should not be leaked in long-running apps.
cudaEventDestroy(start);
cudaEventDestroy(stop);Quick Check
Which function gives you the time between two events?
Recap
Events let you time GPU work precisely and order one stream after another. They are your tool for measuring and coordinating overlap. 🎯
Часто задаваемые вопросы
Урок «События для измерения времени и синхронизации» бесплатный?
Да — полный текст урока «События для измерения времени и синхронизации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «События для измерения времени и синхронизации»?
Используйте cudaEvent для измерения времени и упорядочивания работы. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «События для измерения времени и синхронизации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ловушка потока по умолчанию
- Создание и использование потоков выполнения
- События для измерения времени и синхронизации
- Перекрытие копирования и вычислений