0Pricing
CUDA Academy · Урок

Создание и использование потоков выполнения

Запускайте независимые очереди работ.

«Создание и использование потоков выполнения» — бесплатный урок CUDA Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Independent Work Queues

A non-default stream is your own work queue. Two streams run independently, so the GPU can make progress on both at once. 🧵

The Stream Handle

A stream lives in a cudaStream_t handle. You create it once, pass it to your calls, and destroy it when you are done.

cudaStream_t stream;

Creating a Stream

Call cudaStreamCreate to make a fresh stream. It allocates the queue the driver uses to schedule that stream's work.

cudaStreamCreate(&stream);

Launching a Kernel in a Stream

A kernel's launch config has a fourth argument: shared memory size, then the stream. Pass your stream to queue the kernel there.

kernel<<<grid, block, 0, stream>>>(d_data);

Two Streams, Two Tasks

Put one job on streamA and another on streamB. With no dependency between them, the GPU is free to run both concurrently.

kA<<<g, b, 0, streamA>>>(a);
kB<<<g, b, 0, streamB>>>(d);

Async by Nature

Stream calls are asynchronous: the host returns immediately and keeps going. The GPU works through the queue on its own time.

Waiting on One Stream

Use cudaStreamSynchronize to block the host until just that stream finishes, instead of waiting on the whole device.

cudaStreamSynchronize(stream);

Checking Without Blocking

Want a peek? cudaStreamQuery returns cudaSuccess if the stream is done and cudaErrorNotReady if it is still busy, without stalling you.

cudaStreamQuery(stream);

Cleaning Up

When a stream is no longer needed, release it with cudaStreamDestroy. Pending work still completes before the handle is freed.

cudaStreamDestroy(stream);

Non-Blocking Streams

Create a stream with the cudaStreamNonBlocking flag so it does not implicitly synchronize with the legacy default stream.

cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking);

More Streams, More Overlap

Spreading independent chunks over several streams lets the scheduler keep the engines fed. Beyond a few, returns diminish as hardware fills up.

Quick Check

How do you queue a kernel into a specific stream?

Recap

You can now create streams, launch kernels in them, sync or query, and destroy them. Independent streams unlock real concurrency. ✨

Часто задаваемые вопросы

Урок «Создание и использование потоков выполнения» бесплатный?

Да — полный текст урока «Создание и использование потоков выполнения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.

Чему я научусь в уроке «Создание и использование потоков выполнения»?

Запускайте независимые очереди работ. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать CUDA Academy?

Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Создание и использование потоков выполнения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке CUDA Academy?

Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ловушка потока по умолчанию
  2. Создание и использование потоков выполнения
  3. События для измерения времени и синхронизации
  4. Перекрытие копирования и вычислений
← Назад к CUDA Academy