---
id: pr-cccl-cub-9013
repo: NVIDIA/cccl
pr: 9013
title: '[Tile] Mark `simd` as `_CCCL_HOST_DEVICE`'
author: miscco
date: '2026-05-15'
url: https://github.com/NVIDIA/cccl/pull/9013
source_category: upstream-code
architectures:
- sm100
tags:
- reduction
techniques: []
hardware_features: []
kernel_types:
- reduction
languages: []
captured_at: '2026-05-16'
status: merged
merge_sha: 902b63fdf1fa1f3fd2f56a69cf1db55f8d9630d6
inclusion_reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.
changed_paths:
- libcudacxx/include/cuda/std/__simd/basic_mask.h
- libcudacxx/include/cuda/std/__simd/basic_vec.h
- libcudacxx/include/cuda/std/__simd/flag.h
- libcudacxx/include/cuda/std/__simd/iterator.h
- libcudacxx/include/cuda/std/__simd/reductions.h
- libcudacxx/include/cuda/std/__simd/specializations/fixed_size_float_vec.h
- libcudacxx/include/cuda/std/__simd/specializations/fixed_size_mask.h
- libcudacxx/include/cuda/std/__simd/specializations/fixed_size_storage.h
- libcudacxx/include/cuda/std/__simd/specializations/fixed_size_vec.h
- libcudacxx/include/cuda/std/__simd/utility.h
- libcudacxx/include/cuda/std/__variant/variant_base.h
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/flags.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/multiple_overaligned.fail.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/non_flag_type.fail.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/non_power_of_two_overaligned.fail.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/arithmetic.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/begin_end.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/comparison.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/concept.compile.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/const_conversion.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/derefence.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/host_stl.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/iterator_traits.compile.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/binary.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/comparison.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/compound_assign.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/conversion.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/ctor.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/instantiation.fail.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/subscript.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/unary.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/all_of.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/any_of.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/none_of.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_count.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_max.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_max_index.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_min.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_min_index.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/aliases.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/alignment.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/rebind.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/resize.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/vectorizable.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/binary.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/comparison.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/compound_assign.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/ctor.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/deduction.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/instantiation.fail.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/subscript.pass.cpp
- libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/unary.pass.cpp
artifact_dir: evidence/pull-bundles/cccl-cub/gh-9013
head_ref_oid: b0b008b86e09bd06ab5e2f1d1c5c4ec7e10032eb
---
# [Tile] Mark `simd` as `_CCCL_HOST_DEVICE`

- Repository: `NVIDIA/cccl`
- PR: [9013](https://github.com/NVIDIA/cccl/pull/9013)
- Decision: `Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.`
- Reason: Search-matched CUDA kernel optimization PR; materialize diff/source before synthesis.

## Changed Paths

- `libcudacxx/include/cuda/std/__simd/basic_mask.h`
- `libcudacxx/include/cuda/std/__simd/basic_vec.h`
- `libcudacxx/include/cuda/std/__simd/flag.h`
- `libcudacxx/include/cuda/std/__simd/iterator.h`
- `libcudacxx/include/cuda/std/__simd/reductions.h`
- `libcudacxx/include/cuda/std/__simd/specializations/fixed_size_float_vec.h`
- `libcudacxx/include/cuda/std/__simd/specializations/fixed_size_mask.h`
- `libcudacxx/include/cuda/std/__simd/specializations/fixed_size_storage.h`
- `libcudacxx/include/cuda/std/__simd/specializations/fixed_size_vec.h`
- `libcudacxx/include/cuda/std/__simd/utility.h`
- `libcudacxx/include/cuda/std/__variant/variant_base.h`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/flags.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/multiple_overaligned.fail.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/non_flag_type.fail.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.flags/non_power_of_two_overaligned.fail.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/arithmetic.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/begin_end.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/comparison.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/concept.compile.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/const_conversion.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/derefence.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/host_stl.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.iterator/iterator_traits.compile.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/binary.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/comparison.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/compound_assign.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/conversion.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/ctor.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/instantiation.fail.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/subscript.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.mask.class/unary.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/all_of.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/any_of.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/none_of.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_count.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_max.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_max_index.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_min.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.reductions/reduce_min_index.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/aliases.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/alignment.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/rebind.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/resize.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.traits/vectorizable.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/binary.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/comparison.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/compound_assign.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/ctor.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/deduction.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/instantiation.fail.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/subscript.pass.cpp`
- `libcudacxx/test/libcudacxx/std/numerics/simd/simd.vec.class/unary.pass.cpp`

## Evidence Bundle

`evidence/pull-bundles/cccl-cub/gh-9013`
