0Pricing
CUDA Academy · 강의

Thrust 벡터와 변환

GPU에서 STL 스타일 병렬 처리를 수행합니다

Thrust 벡터와 변환은(는) CoddyKit의 무료 CUDA Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 CUDA Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.

The STL for Your GPU

Thrust is a high-level library that feels like the C++ STL but runs on the GPU. You write almost no kernel code yourself. 🎉

Two Kinds of Vector

Thrust gives you host_vector for CPU memory and device_vector for GPU memory. They look identical but live in different worlds.

thrust::host_vector<int> h(100);
thrust::device_vector<int> d(100);

Copy Across the Boundary

Assigning a host_vector to a device_vector triggers a memory transfer automatically. No cudaMemcpy boilerplate to write by hand.

thrust::device_vector<int> d = h; // host to device

Allocation Is Automatic

A device_vector allocates and frees GPU memory for you using RAII. When it goes out of scope, the memory is released cleanly.

Fill and Sequence

Helpers like thrust::fill and thrust::sequence initialize a whole device_vector in one parallel call instead of a manual loop.

thrust::sequence(d.begin(), d.end()); // 0,1,2,...

Transform Maps Element to Element

thrust::transform applies a function to every element in parallel and writes the result to an output range. This is the classic map pattern.

thrust::transform(d.begin(), d.end(),
  out.begin(), op);

Functors Are the Operation

The operation you pass is a functor: a struct with an operator() marked __host__ __device__ so it can run on the GPU.

struct Square { __host__ __device__
  float operator()(float x){ return x*x; } };

Built-In Operators

For common math, Thrust ships functors like thrust::plus and thrust::multiplies, so you skip writing a functor for simple jobs.

thrust::transform(a.begin(), a.end(),
  b.begin(), c.begin(), thrust::plus<float>());

Two Inputs, One Output

The binary form of transform takes two input ranges and combines them pairwise, perfect for element-wise vector addition.

Get the Raw Pointer

Need to drop into a hand-written kernel? thrust::raw_pointer_cast hands you the underlying device pointer to pass along.

float* p = thrust::raw_pointer_cast(d.data());

Less Code, Fewer Bugs

Thrust hides allocation, copies, and launch configs. You trade a little control for readable, safe GPU code that just works.

Quick Check

Recall how Thrust applies an operation to a whole vector.

Recap

You used device_vector for automatic memory, transferred data by assignment, and ran transform with functors. STL-style GPU power. 💪

자주 묻는 질문

“Thrust 벡터와 변환” 강의는 무료인가요?

네 — “Thrust 벡터와 변환” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 CUDA Academy 강의 전체를 잠금 해제할 수 있습니다. CUDA Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Thrust 벡터와 변환”에서 뭘 배우나요?

GPU에서 STL 스타일 병렬 처리를 수행합니다 브라우저에서 직접 실행하는 실습 코드로 CUDA Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

CUDA Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 CUDA Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Thrust 벡터와 변환” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 CUDA Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 CUDA Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. cuBLAS GEMM 제대로 사용하기
  2. Thrust 벡터와 변환
  3. Thrust의 리듀스, 스캔, 정렬
  4. 딥러닝을 위한 cuDNN
← CUDA Academy(으)로 돌아가기