Передача данных с хоста на устройство
Загружайте входные данные на GPU.
«Передача данных с хоста на устройство» — бесплатный урок CUDA Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Two Memories, One Goal
Your data starts in host RAM, but the GPU can only crunch numbers that live in its own device memory. First you must move it across. 🚚
Meet cudaMemcpy
The cudaMemcpy function is your delivery truck: it copies a block of bytes from one address to another, host or device.
cudaMemcpy(dst, src, bytes, kind);The Upload Direction
To send input data up to the GPU you use cudaMemcpyHostToDevice. Source is host RAM, destination is device memory.
cudaMemcpy(d_a, h_a, n*sizeof(float), cudaMemcpyHostToDevice);Argument Order Matters
Like memcpy, the destination comes first, then the source. Swap them by accident and your GPU buffer stays empty. 😬
cudaMemcpy(d_dst, h_src, bytes, cudaMemcpyHostToDevice);Count Bytes, Not Elements
The size argument is measured in bytes, so multiply your element count by the type size with sizeof.
size_t bytes = n * sizeof(float);Allocate Before You Copy
The device pointer must already point at real GPU memory. Always cudaMalloc the destination before uploading into it.
cudaMalloc(&d_a, bytes);
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);A Synchronous Wait
Plain cudaMemcpy is blocking: your CPU thread pauses until every byte has safely landed on the GPU.
Then Launch Your Kernel
Upload first, compute second. Once the input is on the device, your kernel can read it and start the real work.
cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);
myKernel<<<blocks, threads>>>(d_a, n);Sizes Must Match
Make sure the byte count you upload fits the buffer you allocated. Copying more than you reserved is a classic overflow bug.
Check the Return Code
cudaMemcpy returns a cudaError_t. Inspect it so a bad pointer or size fails loudly instead of corrupting your run.
cudaError_t err = cudaMemcpy(d_a, h_a, bytes, cudaMemcpyHostToDevice);Copies Are Not Free
Every upload travels across the slow PCIe bus, so copy only the data you truly need on the device.
Quick Check
You want to send an input array from CPU RAM to the GPU. Which call is correct?
Recap
You learned to upload data with cudaMemcpyHostToDevice: allocate the device buffer, put destination first, size it in bytes, and copy before launching. 🎉
Часто задаваемые вопросы
Урок «Передача данных с хоста на устройство» бесплатный?
Да — полный текст урока «Передача данных с хоста на устройство» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Передача данных с хоста на устройство»?
Загружайте входные данные на GPU. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Передача данных с хоста на устройство»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Передача данных с хоста на устройство
- Передача данных с устройства на хост
- Перечисление направления копирования
- Узкое место передачи через PCIe