开发者
下载
[object Object][object Object]

[object Object]

硬件加速的多路归并排序([object Object])。将最多4个已预排序的列表归并为一个降序排列的输出。每个元素是固定8字节的值-索引对结构体。

[object Object]

TMRGSORT操作的是8字节结构体,Tile中的每个元素构成值-索引对的一部分:

[object Object]undefined

因此Tile中排序对的数量为:

  • [object Object][object Object]
  • [object Object][object Object]

实现通过 [object Object][object Object] 转换为对数:

[object Object]
[object Object]

将已预排序的输入列表按降序归并到 [object Object] 中:

dst=merge_desc(src0,src1,)\mathrm{dst} = \mathrm{merge\_desc}(\mathrm{src}_0, \mathrm{src}_1, \ldots)

[object Object][object Object]

[object Object] 视为 4个连续等长的已排序块,在单个Tile内完成4路归并。

[object Object]

约束:

  • [object Object] 必须是 64 的倍数。
  • [object Object] 必须是 [object Object] 的整数倍。
  • [object Object] 必须在 [object Object] 范围内。
  • 不需要 [object Object] —结果直接写入 [object Object]
  • [object Object] 参数(固定为非挂起模式)。

[object Object] 对应的排序对数:

[object Object]undefined
[object Object]

将2~4个独立的已预排序列表归并为一个有序输出。

[object Object]

模板参数 [object Object]

  • [object Object]:正常归并—处理所有输入数据。
  • [object Object]:当任一输入列表耗尽时,硬件挂起并通过 [object Object] 返回每个列表实际处理的元素数量。

[object Object] 结构体:

[object Object]

仅在 [object Object] 时有意义。数据来自硬件寄存器 [object Object]

不同列表数的mask配置:

[object Object]undefined
[object Object]

同步形式(概念性):

[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]

声明于 [object Object]

[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object][object Object][object Object]undefined
[object Object][object Object]undefined
[object Object]
  • [object Object] 必须是64的倍数。
  • [object Object] 必须是 [object Object] 的整数倍。
  • [object Object] 必须在 [object Object] 范围内。
[object Object][object Object]

[object Object] 被使用作为 [object Object] 硬件指令的中间输出缓冲区。归并排序结果首先写入 [object Object],然后通过 [object Object](UB到UB的memcpy)复制到 [object Object]

  • [object Object] 必须与 [object Object] 和所有 [object Object] Tile具有相同的元素类型([object Object][object Object])。
  • [object Object] 必须 [object Object] 且为行主序。
  • [object Object] 的Cols必须至少为所有输入源Cols之和:
    • 2列表:[object Object]
    • 3列表:[object Object]
    • 4列表:[object Object]
  • 辅助函数 [object Object] 返回所需的 [object Object] Cols:
[object Object]
[object Object]

不需要 [object Object]。单列表变体直接写入 [object Object]

[object Object]

TMRGSORT常用于通过迭代归并排序实现TopK选择:

[object Object]
[object Object]

两者实现几乎完全相同,均调用 [object Object] 硬件指令。微小差异:

[object Object]undefined
[object Object][object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object][object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]