CUDA 排序¶
Accelerate 提供了在 CUDA GPU 上对数组进行排序的例程。
排序大数组¶
accelerate.cuda.sorting.RadixSort建议使用该类对数字类型的大型(大约超过 100 万个项目)数组进行排序。
- 
类accelerate.cuda.sorting.RadixSort(MAXCOUNT,D型细胞,降=假,流= 0 )¶
- 提供基数排序和基数选择。 - 此处实现的算法最适合大型数组 ( ),因为它使用多个内核启动引入了延迟。建议改为用于较小阵列的批次。 - N > 1e6- segmented_sort- 参数: - maxcount ( int ) – 要排序的最大项目数
- D型(numpy.dtype) -元素类型排序
- 降序( bool ) – 按降序排序?
- 流– 运行内核的 CUDA 流
 - 
argselect( k , keys , begin_bit=0 , end_bit=None ) ¶
- 类似于 - RadixSort.select但返回新的排序索引。- 参数: - 键(numpy.ndarray)– 就地排序的键
- begin_bit ( int ) – 要排序的第一位
- end_bit ( int ) – 可选。最后一点排序
 - 返回: - 将新排序指示为 CUDA 设备或主机上的数组的索引。 
 - 
argsort(键, begin_bit=0 , end_bit=None ) ¶
- 类似于 - RadixSort.sort但返回新的排序索引。- 参数: - 键(numpy.ndarray)– 就地排序的键
- begin_bit ( int ) – 要排序的第一位
- end_bit ( int ) – 可选。最后一点排序
 - 返回: - 将新排序指示为 CUDA 设备或主机上的数组的索引。 
 - 
close( ) ¶
- 显式释放内部资源 - 删除对象时自动调用。 
 - 
init_arg(大小) ¶
- 使用从零开始的升序整数初始化 uint32 的空 CUDA ndarray - 参数: - size ( int ) – 输出数组的元素数 - 返回: - 带有值的数组 - [0, 1, 2, ...m size - 1 ]
 - 
select( k , keys , vals=None , begin_bit=0 , end_bit=None ) ¶
- 在 上执行就地 k-select - keys。- 内存传输是自动执行的。 - 参数: - 键(numpy.ndarray)– 就地排序的键
- vals ( numpy.ndarray ) – 可选。要沿排序重新排序的其他值。它被修改到位。uint32此版本仅支持 dtype。
- begin_bit ( int ) – 要排序的第一位
- end_bit ( int ) – 可选。最后一点排序
 
 - 
sort(键, vals=None , begin_bit=0 , end_bit=None ) ¶
- 对 执行就地排序 - keys。内存传输是自动执行的。- 参数: - 键(numpy.ndarray)– 就地排序的键
- vals ( numpy.ndarray ) – 可选。要沿排序重新排序的其他值。它被修改到位。uint32此版本仅支持 dtype。
- begin_bit ( int ) – 要排序的第一位
- end_bit ( int ) – 可选。最后一点排序
 
 
对许多小数组进行排序¶
使用accelerate.cuda.sorting.RadixSort小(大约不到1万件)阵列有显著的开销,由于多内核启动。更好的选择是使用
accelerate.cuda.sorting.segmented_sort()which 启动单个内核来对一批许多小数组进行排序。
- 
accelerate.cuda.sorting.segmented_sort(键, vals ,段,流=0 ) ¶
- 对小段 (N < 1e6) 执行就地排序。 - 参数: - 键(numpy.ndarray)– 就地排序的键。
- vals ( numpy.ndarray ) – 要沿排序就地重新排序的值。uint32此实现仅 支持 dtype。
- 段(numpy.ndarray)– 段分离位置。例如,对于, , , 的
段  。array([3, 6, 8])keys[:3]keys[3:6]keys[6:8]keys[8:]
- 流- 可选。在其中执行内核的 cuda 流。