Vetores e transformações com Thrust
Paralelismo no estilo STL na GPU.
Vetores e transformações com Thrust é uma aula grátis de CUDA Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de CUDA Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de CUDA Academy inclui 4 aulas no total.
A STL da sua GPU
Thrust é uma biblioteca de alto nível que se parece com a STL do C++, mas é executada na GPU. Você quase não precisa escrever código de kernel. 🎉
Dois tipos de vetor
O Thrust fornece host_vector para a memória da CPU e device_vector para a memória da GPU. Eles parecem idênticos, mas vivem em mundos diferentes.
thrust::host_vector<int> h(100);
thrust::device_vector<int> d(100);Copiando através da fronteira
Atribuir um host_vector a um device_vector dispara automaticamente uma transferência de memória. Você não precisa escrever manualmente o código repetitivo de cudaMemcpy.
thrust::device_vector<int> d = h; // host to deviceA alocação é automática
Um device_vector aloca e libera a memória da GPU por você usando RAII. Quando sai do escopo, a memória é liberada corretamente.
Preenchimento e sequência
Funções auxiliares como thrust::fill e thrust::sequence inicializam um device_vector inteiro em uma única chamada paralela, em vez de usar um laço manual.
thrust::sequence(d.begin(), d.end()); // 0,1,2,...Transform transforma elemento em elemento
thrust::transform aplica uma função a cada elemento em paralelo e grava o resultado em um intervalo de saída. Esse é o padrão clássico de mapeamento.
thrust::transform(d.begin(), d.end(),
out.begin(), op);Functores são a operação
A operação passada é um functor: uma estrutura com um operator() marcado como __host__ __device__ para que possa ser executado na GPU.
struct Square { __host__ __device__
float operator()(float x){ return x*x; } };Operadores integrados
Para operações matemáticas comuns, o Thrust fornece functores como thrust::plus e thrust::multiplies, evitando que você escreva um functor para tarefas simples.
thrust::transform(a.begin(), a.end(),
b.begin(), c.begin(), thrust::plus<float>());Duas entradas, uma saída
A forma binária de transform recebe dois intervalos de entrada e os combina elemento a elemento, sendo perfeita para a adição de vetores.
Obtendo o ponteiro bruto
Precisa usar um kernel escrito manualmente? thrust::raw_pointer_cast fornece o ponteiro de dispositivo subjacente para você repassá-lo.
float* p = thrust::raw_pointer_cast(d.data());Menos código, menos erros
Thrust oculta a alocação, as cópias e as configurações de lançamento. Em troca de um pouco de controle, obtém código de GPU legível e seguro que simplesmente funciona.
Verificação rápida
Recupere como Thrust aplica uma operação a um vetor inteiro.
Recapitulação
Você usou device_vector para gerenciar a memória automaticamente, transferiu dados por atribuição e executou a transformação com objetos funcionais. Poder da GPU no estilo STL. 💪
Aprenda C++ com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Vetores e transformações com Thrust” é grátis?
Sim — o texto completo de “Vetores e transformações com Thrust” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de CUDA Academy, atualize para CoddyKit PRO. O curso de CUDA Academy inclui 4 aulas no total.
O que vou aprender em “Vetores e transformações com Thrust”?
Paralelismo no estilo STL na GPU. Você pratica CUDA Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar CUDA Academy?
Nenhuma experiência prévia é necessária. CUDA Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Vetores e transformações com Thrust”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de CUDA Academy?
Sim. Cada aula de CUDA Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- GEMM com cuBLAS do jeito certo
- Vetores e transformações com Thrust
- Reduce, Scan e Sort com Thrust
- cuDNN para aprendizado profundo