# 数据并行向量库

< cpp‎ | experimental

定义于头文件 `<experimental/simd>`

### 主类

simd (并行 TS v2) | 数据并行向量类型 (类模板)
simd_mask (并行 TS v2) | 元素类型为 bool 的数据并行类型 (类模板)

### ABI 标签

定义于命名空间 `std::experimental::simd_abi`
scalar (并行 TS v2) | 存储单个元素的标签类型 (typedef)
fixed_size (并行 TS v2) | 存储指定数量元素的标签类型 (别名模板)
compatible (并行 TS v2) | 确保 ABI 兼容性的标签类型 (别名模板)
native (并行 TS v2) | 最有效率的标签类型 (别名模板)
max_fixed_size (并行 TS v2) | 保证支持的固定最大元素数 (常量)
deduce deduce_t (并行 TS v2) | 获得给定的元素类型及元素数的 ABI 类型 (类模板)

### 对齐标签

element_aligned_tag element_aligned (并行 TS v2) | 指示元素对齐的标签类型 (类)
vector_aligned_tag vector_aligned (并行 TS v2) | 指示向量类型对齐的标签类型 (类)
overaligned_tag overaligned (并行 TS v2) | 指示指定对齐的标签类型 (类模板)

### where_expression

const_where_expression (并行 TS v2) | 以非修改操作选择的元素 (类模板)
where_expression (并行 TS v2) | 以修改操作选择的元素 (类模板)
where (并行 TS v2) | 产生 const_where_expression 和 where_expression (函数模板)

### 转型

simd_cast static_simd_cast (并行 TS v2) | 逐元素 static_cast (函数模板)
to_fixed_size to_compatible to_native (并行 TS v2) | 逐元素 ABI 转型 (函数模板)
split (并行 TS v2) | 分割单个 simd 对象为多个 (函数模板)
concat (并行 TS v2) | 连接多个 simd 对象为单个 (函数模板)

### 算法

min (并行 TS v2) | 逐元素 min 操作 (函数模板)
max (并行 TS v2) | 逐元素 max 操作 (函数模板)
minmax (并行 TS v2) | 逐元素 minmax 操作 (函数模板)
clamp (并行 TS v2) | 逐元素 clamp 操作 (函数模板)

### 规约

reduce (并行 TS v2) | 规约向量为单个元素 (函数模板)
hmin (并行 TS v2) | 返回最小元素 (函数模板)
hmax (并行 TS v2) | 返回最大元素 (函数模板)

### 掩码规约

all_of any_of none_of some_of (并行 TS v2) | true 值数上的谓词 (函数模板)
popcount (并行 TS v2) | 返回 true 值数 (函数模板)
find_first_set find_last_set (并行 TS v2) | 返回首个或最末 true 值的位置 (函数模板)

### 特性

is_simd is_simd_mask (并行 TS v2) | 检查类型是否为 `simd` 或 `simd_mask` 类型 (类模板)
is_abi_tag (并行 TS v2) | 检查类型是否为 ABI 标签类型 (类模板)
is_simd_flag_type (并行 TS v2) | 检查类型是否为 simd 标志类型 (类模板)
simd_size (并行 TS v2) | 获得给定的元素类型及 ABI 的元素数 (类模板)
memory_alignment (并行 TS v2) | 获得 vector_aligned 的适当对齐 (类模板)
rebind_simd resize_simd (并行 TS v2) | 更改 `simd` 或 `simd_mask` 的元素数或元素类型 (类模板)

### 数学函数

### 示例