--- parent: Extended API nav_order: 1 --- # Thread Groups ```cuda struct ThreadGroup { static constexpr cuda::thread_scope thread_scope; Integral size() const; Integral thread_rank() const; void sync() const; }; ``` The _ThreadGroup concept_ defines the requirements of a type that represents a group of cooperating threads. The [CUDA Cooperative Groups Library] provides a number of types that satisfy this concept. ## Data Members | `thread_scope` | The scope at which `ThreadGroup::sync()` synchronizes memory operations and thread execution. | ## Member Functions | `size` | Returns the number of participating threads. | | `thread_rank` | Returns a unique value for each participating thread (`0 <= ThreadGroup::thread_rank() < ThreadGroup::size()`). | | `sync` | Synchronizes the participating threads. | ## Notes This concept is defined for documentation purposes but is not materialized in the library. ## Example ```cuda #include #include struct single_thread_group { static constexpr cuda::thread_scope thread_scope = cuda::thread_scope::thread_scope_thread; cuda::std::size_t size() const { return 1; } cuda::std::size_t thread_rank() const { return 0; } void sync() const {} }; ``` [See it on Godbolt](https://godbolt.org/z/6c16KxqY7){: .btn } [CUDA Cooperative Groups Library]: https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#group-types-cg