CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
140 lines
13 KiB
ReStructuredText
140 lines
13 KiB
ReStructuredText
.. meta::
|
|
:description: rocPRIM operations
|
|
:keywords: rocPRIM, ROCm, API, documentation, operations
|
|
|
|
********************************************************************
|
|
Types of rocPRIM operations
|
|
********************************************************************
|
|
|
|
A rocPRIM operation is a computation over a sequence of elements.
|
|
|
|
The elements of the sequence can be of any type and belong to any class. Template specialization optimizes the computations over data types.
|
|
|
|
The :doc:`scope <./rocPRIM-scope>` of an operation determines whether an operation is running at the thread, warp, block, or grid level.
|
|
|
|
The following tables provide a summary of the different types of operations and what they do.
|
|
|
|
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
| Type | Operation | Description |
|
|
+========================+===========================+===============================================+
|
|
| Basic |Transform |Transform operations are device-level |
|
|
| | |operations that apply a function to each |
|
|
| | |element in the sequence. They're equivalent to |
|
|
| | |the ``map`` functional operation. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Select |Select operations are device-level operations |
|
|
| | |that select the first ``N`` elements in the |
|
|
| | |sequence that satisfy a condition set by a |
|
|
| | |selection mask or a predicate function. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Unique |Unique operations are device-level operations |
|
|
| | |that return only the first element from a |
|
|
| | |group of similar consecutive elements. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Histogram |Histogram operations are device-level |
|
|
| | |operations that return a statistical |
|
|
| | |distribution of the sequence. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Aggregation |Reduce |Reduce operations can run at the thread, warp, |
|
|
| | |block, grid, or device level. They're |
|
|
| | |equivalent to the functional ``fold_left``. |
|
|
| | |Reduce runs in a pairwise manner over the |
|
|
| | |sequence in multiple iterations, reducing the |
|
|
| | |sequence until only one result remains. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Scan |Scan is a cumulative version of reduce that |
|
|
| | |returns the sequence of intermediate values. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Difference |Adjacent difference |Adjacent difference operations are |
|
|
| | |device-level and block-level operations that |
|
|
| | |compute the difference between either the |
|
|
| | |current element and the next one in the |
|
|
| | |sequence, or between the current element and |
|
|
| | |the previous one in the sequence. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Discontinuity |Discontinuity operations are block-level |
|
|
| | |operations that find items in a |
|
|
| | |sequence that don't follow the sequence order. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Reordering |Sort |Sort operations are device-level, block-level, |
|
|
| | |and warp-level operations that reorder a |
|
|
| | |sequence based on item comparisons. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Partial sort |Partial sort is a device-level operation that |
|
|
| | |reorders a sequence by sorting it up to and |
|
|
| | |including a given index. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Nth element |Nth element is a device-level operation that |
|
|
| | |inserts a value in its sorted position in the |
|
|
| | |sequence. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Exchange |The exchange operations are block-level and |
|
|
| | |warp-level operations that transpose stripe |
|
|
| | |arrangements to block arrangements and vice |
|
|
| | |versa. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Shuffle |Shuffle operations are block-level and |
|
|
| | |warp-level operations that move items between |
|
|
| | |warps or threads in order to share memory. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Partitioning |Partition |Partition operations are device-level |
|
|
| | |operations that separate the sequence |
|
|
| | |based on a selection predicate. The order of |
|
|
| | |the items in the sequence that return ``true`` |
|
|
| | |is retained. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Merging |Merge |Merge operations are device-level operations |
|
|
| | |that merge two ordered sequence into one while |
|
|
| | |preserving the order. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Data movement |Store |Store operations are block, warp, and thread |
|
|
| | |level operations that store items in block or |
|
|
| | |stripe arrangements in contiguous memory. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Load |Load operations are block, warp, and thread |
|
|
| | |level operations that load data stored |
|
|
| | |in contiguous memory into a block arrangement. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Memcpy |Memcopy operations are device-level operations |
|
|
| | |that run multiple device-to-device memory copy |
|
|
| | |operations as single batch operations. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Search |Find first of |Find first of is a device-level operation that |
|
|
| | |searches the sequence for the first occurrence |
|
|
| | |of any of the items in a given range of items. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Find end |Find end is a device-level operation that |
|
|
| | |finds the last occurrence of a series of items |
|
|
| | |in the sequence. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Adjacent find |Adjacent find is a device-level operation that |
|
|
| | |searches for the first occurrence of two |
|
|
| | |consecutive equal items. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Search |Search is a device-level operation that |
|
|
| | |searches the sequence for the first occurrence |
|
|
| | |of a series of items. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Search N |Search N is a device-level operation that |
|
|
| | |searches the sequence for the first occurrence |
|
|
| | |of a series of N items that are all equal to |
|
|
| | |a given value. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Binary search |Binary search is a device-level operation that |
|
|
| | |does a binary search on a sorted range of |
|
|
| | |inputs. |
|
|
+------------------------+---------------------------+-----------------------------------------------+
|
|
|Miscellaneous |Run length encode |Run length encode operations are device-level |
|
|
| | |operations that do device-wide encodings of |
|
|
| | |runs of consecutive equal values. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Run length decode |Run length decode operations are block-level |
|
|
| | |operations that decode run length encoded |
|
|
| | |arrays of items. |
|
|
| +---------------------------+-----------------------------------------------+
|
|
| |Kernel config |Kernel config constructs are device-level |
|
|
| | |constructs that set the grid and block |
|
|
| | |dimensions as well as the algorithms to use for|
|
|
| | |the store and load operations. |
|
|
+------------------------+---------------------------+-----------------------------------------------+ |