# nvidia/thrust

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nvidia-thrust).**

5,003 stars · 760 forks · C++ · NOASSERTION · archived

## Links

- GitHub: https://github.com/NVIDIA/thrust
- awesome-repositories: https://awesome-repositories.com/repository/nvidia-thrust.md

## Topics

`algorithms` `cpp` `cpp11` `cpp14` `cpp17` `cpp20` `cuda` `cxx` `cxx11` `cxx14` `cxx17` `cxx20` `gpu` `gpu-computing` `nvidia` `nvidia-hpc-sdk` `thrust`

## Description

Thrust is a C++ parallel algorithms library that provides a suite of standard-library-inspired interfaces for execution on multi-core and accelerator hardware. It serves as a CUDA-accelerated data library and a generic parallel programming interface designed to enable high-performance data processing across GPUs and CPUs.

The project implements a portable abstraction layer that allows for heterogeneous computing workflows, enabling the same core algorithm logic to run on different hardware accelerators. This is achieved through a generic programming policy design and a backend-agnostic execution model that maps high-level functional calls to parallel hardware.

The library covers a broad range of high-performance computing capabilities, including parallel data manipulation, numerical reductions, and device memory management. It provides specialized tools for transferring data between host system memory and discrete device memory to facilitate large-scale operations like sorting and searching.

## Tags

### Programming Languages & Runtimes

- [C++ Parallelism Libraries](https://awesome-repositories.com/f/programming-languages-runtimes/c-parallelism-libraries.md) — Provides a comprehensive library of parallel primitives and data-parallel templates for high-performance GPU programming in C++.
- [Iterator-Based Abstractions](https://awesome-repositories.com/f/programming-languages-runtimes/iterator-based-abstractions.md) — Uses specialized iterator classes to provide a unified interface for varying memory layouts across different hardware.
- [Policy-Based Design](https://awesome-repositories.com/f/programming-languages-runtimes/policy-based-structures/policy-based-design.md) — Utilizes policy-based design to configure hardware-specific execution and memory models at compile time.

### Artificial Intelligence & ML

- [Kernel Dispatchers](https://awesome-repositories.com/f/artificial-intelligence-ml/gpu-kernel-implementations/kernel-dispatchers.md) — Maps high-level functional calls to parallel grids of threads on GPU hardware accelerators.
- [Cross-Platform Compute Abstractions](https://awesome-repositories.com/f/artificial-intelligence-ml/local-model-orchestrators/heterogeneous-orchestrators/cross-platform-compute-abstractions.md) — Enables a heterogeneous computing workflow where the same core algorithm logic runs on different hardware accelerators.
- [CUDA-Accelerated Libraries](https://awesome-repositories.com/f/artificial-intelligence-ml/deep-learning-libraries/cuda-accelerated-libraries.md) — Provides a suite of tools for managing memory transfers and executing computations specifically on NVIDIA CUDA hardware.

### Data & Databases

- [Host-to-Device Data Transfers](https://awesome-repositories.com/f/data-databases/data-processing-pipelines/data-processing/ml-data-pipelines/training-data-pipelines/pytorch-streaming-integrations/cuda-stream-synchronizations/host-to-device-data-transfers.md) — Provides specialized tools for moving data between host system memory and parallel device memory. ([source](https://github.com/nvidia/thrust#readme))
- [CPU-GPU Backend Switching Abstractions](https://awesome-repositories.com/f/data-databases/storage-scaling/gpu-acceleration-backends/unified-gpu-backend-abstractions/cpu-gpu-backend-switching-abstractions.md) — Provides abstractions that allow algorithms to switch execution between CPU and GPU backends through a unified interface.
- [Accelerator-Based Data Parallelism](https://awesome-repositories.com/f/data-databases/large-scale-data-computation/data-parallelism-scaling/accelerator-based-data-parallelism.md) — Implements large-scale parallel operations like sorting and searching across massive datasets using hardware accelerators.

### Operating Systems & Systems Programming

- [Device Memory Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/system-memory-allocation/device-memory-abstraction-layers.md) — Offers abstraction layers to manage data transfers between system RAM and GPU memory for fast parallel processing.
- [Device-Specific Memory Allocators](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/memory-management/allocation-strategies/dynamic-memory-allocation/custom-memory-allocators/explicit-memory-allocators/device-specific-memory-allocators.md) — Implements customizable memory allocators to decouple memory management from algorithm logic for different device spaces.

### Scientific & Mathematical Computing

- [Parallel Algorithms](https://awesome-repositories.com/f/scientific-mathematical-computing/parallel-algorithms.md) — Provides fundamental data-parallel operations such as sorting and reduction for high-performance computing. ([source](https://github.com/nvidia/thrust#readme))
- [Standard C++ Parallel Algorithm Offloads](https://awesome-repositories.com/f/scientific-mathematical-computing/parallel-algorithms/standard-c-parallel-algorithm-offloads.md) — Provides parallel versions of C++ Standard Template Library (STL) algorithms optimized for device-side execution.
- [Parallel Programming Interfaces](https://awesome-repositories.com/f/scientific-mathematical-computing/parallel-programming-interfaces.md) — Implements a portable abstraction layer for parallel reductions and data transformations across different hardware accelerators.

### Development Tools & Productivity

- [Parallel Reductions](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/parallel-reductions.md) — Provides parallel reduction operations to calculate aggregate values like sums and maximums across many processor cores.

### Software Engineering & Architecture

- [Compile-Time Metaprogramming](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/abstraction-domain-modeling/compile-time-architectural-patterns/compile-time-metaprogramming.md) — Employs compile-time metaprogramming to resolve hardware-specific types and dispatching logic without runtime overhead.
