核间切分
需要核心数 = CeilDiv(总长度, 每个核心目标处理x个) 使用核心数 = min(需要核心数, 实际物理核数) 每个核心处理的个数 = CeilDiv(总长度, 使用核心数) 尾核处理的个数 = 总长度 - 每个核心处理的个数 * (使用核心数 - 1)
核内切分
一次L0能装多少个 = FloorDiv(L0级缓存大小, 元素大小) 正常核心循环次数 = CeilDiv(核心处理的个数, 一次L0能装多少个) 最后一次要处理的个数 = 核心处理的个数 - 一次L0能装多少个 * (正常核心循环次数 - 1) 尾核心循环次数和尾核心最后一次处理个数同理
基础对齐运算
CeilDiv(a, b) = (a + b - 1) / b:向上整除FloorDiv(a, b) = a / b:向下整除CeilAlign(a, b) = CeilDiv(a, b) * b:向上对齐FloorAlign(a, b) = FloorDiv(a, b) * b:向下对齐