第11章 并行性和局部性的优化

从迭代空间、仿射访问、复用、依赖、并行划分、同步、流水线和局部性优化推导循环变换;用编译流水线、状态轨迹和等价性验证门交付迭代空间、依赖多面体、调度、缓存复用与等价性测试

学习目标

  • 能说明“第11章 并行性和局部性的优化”如何从迭代空间、仿射访问、复用、依赖、并行划分、同步、流水线和局部性优化推导循环变换,并区分Pearson英文第二版、中文译本、现代工具和本站重写
  • 能先预测“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”会改变哪一个输入、表示、栈/图状态、IR、目标代码或验证结果,再操作三类交互证据
  • 能只注入“交换循环后违反跨迭代写后读依赖,样例尺寸未触发错误”,定位首个偏离“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”的状态,并从同一快照完成恢复

为什么从这个问题开始

“第11章 并行性和局部性的优化”围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”建立贯穿任务:对矩阵计算循环嵌套执行交换、分块、并行化与向量化。先写下哪个输入、表示、栈/图状态、IR、目标代码或验证结果会最先变化,再运行参考、故障和恢复路径;运行后补理由不算预测。只有守住“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”并交付迭代空间、依赖多面体、调度、缓存复用与等价性测试,编译成功、分析收敛、目标码长度或基准加速才构成机制证据。

原版书目、556个正式坐标与访问边界

“第11章 并行性和局部性的优化”以Pearson官方书页核对Alfred V. Aho、Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman著 Compilers: Principles, Techniques, and Tools, Second Edition:英文精装ISBN 9780321486813,2006年版;Pearson明确列出12章与两个附录,并说明第10章“指令级并行”、第11章“并行与局部性优化”、第12章“过程间分析”是第二版新增重点。Pearson官方目录继续核对版本与章/附录框架。

“第11章 并行性和局部性的优化”再以中文版完整目录高校馆藏书目核对赵建华、郑滔、戴新宇译《编译原理(第2版)》,机械工业出版社,2009年,631页,ISBN 9787111251217。正式分母计入12个章标题、2个附录标题、533个数字编号节/小节和附录A的9个编号节,合计556个核心目录层级;章末总结、练习、参考文献和索引不重复计为知识节点。

原书与译本均受版权保护,“第11章 并行性和局部性的优化”不复制、翻译或改写原文、图表、算法伪码和练习,只把官方目录当作范围坐标;中文讲解、状态轨迹、反例、交互、练习与答案均为独立教学重写。本页独立核对 1本页独立核对 2只用于核对现代IR、工具或实验边界,不反向证明原书采用本站表述。

原版目录层级与可验证机制

第11章 并行性和局部性的优化

正式坐标 1/67。 原版目录键 第11章 并行性和局部性的优化。在“第11章 并行性和局部性的优化”的第1个正式坐标中,「第11章 并行性和局部性的优化」通过声明阶段接口、名字/类型/状态角色和源—目标语义映射推进仿射循环、依赖、并行与局部性;复核者保存阶段快照、符号表、类型、IR谱系、诊断和源位置,出现阶段边界丢失绑定、类型、控制依赖或源位置就撤回结论。

11·1 基本概念

正式坐标 2/67。 原版目录键 11.1 基本概念。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标2把「11·1 基本概念」落实为把“基本概念”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“基本概念”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·1·1 多处理器

正式坐标 3/67。 原版目录键 11.1.1 多处理器。“第11章 并行性和局部性的优化”的目录节点3「11·1·1 多处理器」不能停在术语或伪码:它要把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,交付依赖图、周期表、资源占用、寄存器压力与异常反例,并把非法移动跨越依赖、守卫、异常或资源限制设为单一反事实。

11·1·2 应用中的并行性

正式坐标 4/67。 原版目录键 11.1.2 应用中的并行性。对“第11章 并行性和局部性的优化”而言,「11·1·2 应用中的并行性」在第4次检查中改变可观察状态,因为它负责把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表;依赖图、周期表、资源占用、寄存器压力与异常反例必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受非法移动跨越依赖、守卫、异常或资源限制。

11·1·3 循环层次的并行性

正式坐标 5/67。 原版目录键 11.1.3 循环层次的并行性。在“第11章 并行性和局部性的优化”的第5个正式坐标中,「11·1·3 循环层次的并行性」通过求解数据流固定点并证明变换在所有控制流路径上保语义推进仿射循环、依赖、并行与局部性;复核者保存格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试,出现边界值、不可执行路径、别名或单调性假设错误就撤回结论。

11·1·4 数据局部性

正式坐标 6/67。 原版目录键 11.1.4 数据局部性。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标6把「11·1·4 数据局部性」落实为以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;只有迭代空间、依赖关系、调度、缓存复用、同步与边界测试可重放且反例排除变换违反跨迭代依赖或只在样例尺寸上偶然正确,本节点才算掌握。

11·1·5 仿射变换理论简介

正式坐标 7/67。 原版目录键 11.1.5 仿射变换理论简介。“第11章 并行性和局部性的优化”的目录节点7「11·1·5 仿射变换理论简介」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·2 矩阵乘法:一个深入的例子

正式坐标 8/67。 原版目录键 11.2 矩阵乘法:一个深入的例子。对“第11章 并行性和局部性的优化”而言,「11·2 矩阵乘法:一个深入的例子」在第8次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·2·1 矩阵乘法算法

正式坐标 9/67。 原版目录键 11.2.1 矩阵乘法算法。在“第11章 并行性和局部性的优化”的第9个正式坐标中,「11·2·1 矩阵乘法算法」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进仿射循环、依赖、并行与局部性;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。

11·2·2 优化

正式坐标 10/67。 原版目录键 11.2.2 优化。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标10把「11·2·2 优化」落实为声明阶段接口、名字/类型/状态角色和源—目标语义映射;只有阶段快照、符号表、类型、IR谱系、诊断和源位置可重放且反例排除阶段边界丢失绑定、类型、控制依赖或源位置,本节点才算掌握。

11·2·3 缓存干扰

正式坐标 11/67。 原版目录键 11.2.3 缓存干扰。“第11章 并行性和局部性的优化”的目录节点11「11·2·3 缓存干扰」不能停在术语或伪码:它要把“缓存干扰”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,交付第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,并把只复述“缓存干扰”名称而没有可观察状态、单故障和恢复验证设为单一反事实。

11·3 迭代空间

正式坐标 12/67。 原版目录键 11.3 迭代空间。对“第11章 并行性和局部性的优化”而言,「11·3 迭代空间」在第12次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·3·1 从循环嵌套构造迭代空间

正式坐标 13/67。 原版目录键 11.3.1 从循环嵌套构造迭代空间。在“第11章 并行性和局部性的优化”的第13个正式坐标中,「11·3·1 从循环嵌套构造迭代空间」通过求解数据流固定点并证明变换在所有控制流路径上保语义推进仿射循环、依赖、并行与局部性;复核者保存格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试,出现边界值、不可执行路径、别名或单调性假设错误就撤回结论。

11·3·2 循环嵌套的执行顺序

正式坐标 14/67。 原版目录键 11.3.2 循环嵌套的执行顺序。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标14把「11·3·2 循环嵌套的执行顺序」落实为求解数据流固定点并证明变换在所有控制流路径上保语义;只有格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试可重放且反例排除边界值、不可执行路径、别名或单调性假设错误,本节点才算掌握。

11·3·3 不等式的矩阵表示

正式坐标 15/67。 原版目录键 11.3.3 不等式的矩阵表示。“第11章 并行性和局部性的优化”的目录节点15「11·3·3 不等式的矩阵表示」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·3·4 加入符号常量

正式坐标 16/67。 原版目录键 11.3.4 加入符号常量。对“第11章 并行性和局部性的优化”而言,「11·3·4 加入符号常量」在第16次检查中改变可观察状态,因为它负责把“加入符号常量”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受只复述“加入符号常量”名称而没有可观察状态、单故障和恢复验证。

11·3·5 控制执行顺序

正式坐标 17/67。 原版目录键 11.3.5 控制执行顺序。在“第11章 并行性和局部性的优化”的第17个正式坐标中,「11·3·5 控制执行顺序」通过把“控制执行顺序”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链推进仿射循环、依赖、并行与局部性;复核者保存第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,出现只复述“控制执行顺序”名称而没有可观察状态、单故障和恢复验证就撤回结论。

11·3·6 改变坐标轴

正式坐标 18/67。 原版目录键 11.3.6 改变坐标轴。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标18把「11·3·6 改变坐标轴」落实为把“改变坐标轴”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“改变坐标轴”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·4 仿射数组下标

正式坐标 19/67。 原版目录键 11.4 仿射数组下标。“第11章 并行性和局部性的优化”的目录节点19「11·4 仿射数组下标」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·4·1 仿射访问

正式坐标 20/67。 原版目录键 11.4.1 仿射访问。对“第11章 并行性和局部性的优化”而言,「11·4·1 仿射访问」在第20次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·4·2 实践中的仿射和非仿射访问

正式坐标 21/67。 原版目录键 11.4.2 实践中的仿射和非仿射访问。在“第11章 并行性和局部性的优化”的第21个正式坐标中,「11·4·2 实践中的仿射和非仿射访问」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进仿射循环、依赖、并行与局部性;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。

11·5 数据复用

正式坐标 22/67。 原版目录键 11.5 数据复用。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标22把「11·5 数据复用」落实为以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;只有迭代空间、依赖关系、调度、缓存复用、同步与边界测试可重放且反例排除变换违反跨迭代依赖或只在样例尺寸上偶然正确,本节点才算掌握。

11·5·1 复用的类型

正式坐标 23/67。 原版目录键 11.5.1 复用的类型。“第11章 并行性和局部性的优化”的目录节点23「11·5·1 复用的类型」不能停在术语或伪码:它要把源级值、地址、类型、控制边和定义—使用关系编码为IR,交付AST/DAG、类型证明、CFG、SSA链、地址计算与回填列表,并把类型、phi输入、控制边、地址或定义—使用关系错位设为单一反事实。

11·5·2 自复用

正式坐标 24/67。 原版目录键 11.5.2 自复用。对“第11章 并行性和局部性的优化”而言,「11·5·2 自复用」在第24次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·5·3 自空间复用

正式坐标 25/67。 原版目录键 11.5.3 自空间复用。在“第11章 并行性和局部性的优化”的第25个正式坐标中,「11·5·3 自空间复用」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进仿射循环、依赖、并行与局部性;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。

11·5·4 组复用

正式坐标 26/67。 原版目录键 11.5.4 组复用。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标26把「11·5·4 组复用」落实为以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;只有迭代空间、依赖关系、调度、缓存复用、同步与边界测试可重放且反例排除变换违反跨迭代依赖或只在样例尺寸上偶然正确,本节点才算掌握。

11·6 数组数据依赖分析

正式坐标 27/67。 原版目录键 11.6 数组数据依赖分析。“第11章 并行性和局部性的优化”的目录节点27「11·6 数组数据依赖分析」不能停在术语或伪码:它要把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,交付依赖图、周期表、资源占用、寄存器压力与异常反例,并把非法移动跨越依赖、守卫、异常或资源限制设为单一反事实。

11·6·1 数组访问的数据依赖定义

正式坐标 28/67。 原版目录键 11.6.1 数组访问的数据依赖定义。对“第11章 并行性和局部性的优化”而言,「11·6·1 数组访问的数据依赖定义」在第28次检查中改变可观察状态,因为它负责把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表;依赖图、周期表、资源占用、寄存器压力与异常反例必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受非法移动跨越依赖、守卫、异常或资源限制。

11·6·2 整数线性规划

正式坐标 29/67。 原版目录键 11.6.2 整数线性规划。在“第11章 并行性和局部性的优化”的第29个正式坐标中,「11·6·2 整数线性规划」通过把“整数线性规划”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链推进仿射循环、依赖、并行与局部性;复核者保存第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,出现只复述“整数线性规划”名称而没有可观察状态、单故障和恢复验证就撤回结论。

11·6·3 最大公约数测试

正式坐标 30/67。 原版目录键 11.6.3 最大公约数测试。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标30把「11·6·3 最大公约数测试」落实为把“最大公约数测试”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“最大公约数测试”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·6·4 求解整数线性规划的启发式方法

正式坐标 31/67。 原版目录键 11.6.4 求解整数线性规划的启发式方法。“第11章 并行性和局部性的优化”的目录节点31「11·6·4 求解整数线性规划的启发式方法」不能停在术语或伪码:它要把“求解整数线性规划的启发式方法”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,交付第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,并把只复述“求解整数线性规划的启发式方法”名称而没有可观察状态、单故障和恢复验证设为单一反事实。

11·6·5 通用整数线性规划的求解

正式坐标 32/67。 原版目录键 11.6.5 通用整数线性规划的求解。对“第11章 并行性和局部性的优化”而言,「11·6·5 通用整数线性规划的求解」在第32次检查中改变可观察状态,因为它负责把“通用整数线性规划的求解”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受只复述“通用整数线性规划的求解”名称而没有可观察状态、单故障和恢复验证。

11·6·6 本节总结

正式坐标 33/67。 原版目录键 11.6.6 本节总结。在“第11章 并行性和局部性的优化”的第33个正式坐标中,「11·6·6 本节总结」通过把“本节总结”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链推进仿射循环、依赖、并行与局部性;复核者保存第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,出现只复述“本节总结”名称而没有可观察状态、单故障和恢复验证就撤回结论。

11·7 寻找无同步的并行性

正式坐标 34/67。 原版目录键 11.7 寻找无同步的并行性。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标34把「11·7 寻找无同步的并行性」落实为把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表;只有依赖图、周期表、资源占用、寄存器压力与异常反例可重放且反例排除非法移动跨越依赖、守卫、异常或资源限制,本节点才算掌握。

11·7·1 一个入门例子

正式坐标 35/67。 原版目录键 11.7.1 一个入门例子。“第11章 并行性和局部性的优化”的目录节点35「11·7·1 一个入门例子」不能停在术语或伪码:它要把“一个入门例子”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,交付第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,并把只复述“一个入门例子”名称而没有可观察状态、单故障和恢复验证设为单一反事实。

11·7·2 仿射空间划分

正式坐标 36/67。 原版目录键 11.7.2 仿射空间划分。对“第11章 并行性和局部性的优化”而言,「11·7·2 仿射空间划分」在第36次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·7·3 空间划分约束

正式坐标 37/67。 原版目录键 11.7.3 空间划分约束。在“第11章 并行性和局部性的优化”的第37个正式坐标中,「11·7·3 空间划分约束」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进仿射循环、依赖、并行与局部性;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。

11·7·4 求解空间划分约束

正式坐标 38/67。 原版目录键 11.7.4 求解空间划分约束。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标38把「11·7·4 求解空间划分约束」落实为以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;只有迭代空间、依赖关系、调度、缓存复用、同步与边界测试可重放且反例排除变换违反跨迭代依赖或只在样例尺寸上偶然正确,本节点才算掌握。

11·7·5 一个简单的代码生成算法

正式坐标 39/67。 原版目录键 11.7.5 一个简单的代码生成算法。“第11章 并行性和局部性的优化”的目录节点39「11·7·5 一个简单的代码生成算法」不能停在术语或伪码:它要声明阶段接口、名字/类型/状态角色和源—目标语义映射,交付阶段快照、符号表、类型、IR谱系、诊断和源位置,并把阶段边界丢失绑定、类型、控制依赖或源位置设为单一反事实。

11·7·6 消除空迭代

正式坐标 40/67。 原版目录键 11.7.6 消除空迭代。对“第11章 并行性和局部性的优化”而言,「11·7·6 消除空迭代」在第40次检查中改变可观察状态,因为它负责把“消除空迭代”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受只复述“消除空迭代”名称而没有可观察状态、单故障和恢复验证。

11·7·7 消除最内层循环中的测试

正式坐标 41/67。 原版目录键 11.7.7 消除最内层循环中的测试。在“第11章 并行性和局部性的优化”的第41个正式坐标中,「11·7·7 消除最内层循环中的测试」通过求解数据流固定点并证明变换在所有控制流路径上保语义推进仿射循环、依赖、并行与局部性;复核者保存格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试,出现边界值、不可执行路径、别名或单调性假设错误就撤回结论。

11·7·8 源代码变换

正式坐标 42/67。 原版目录键 11.7.8 源代码变换。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标42把「11·7·8 源代码变换」落实为把“源代码变换”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“源代码变换”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·8 并行循环之间的同步

正式坐标 43/67。 原版目录键 11.8 并行循环之间的同步。“第11章 并行性和局部性的优化”的目录节点43「11·8 并行循环之间的同步」不能停在术语或伪码:它要求解数据流固定点并证明变换在所有控制流路径上保语义,交付格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试,并把边界值、不可执行路径、别名或单调性假设错误设为单一反事实。

11·8·1 常数次同步

正式坐标 44/67。 原版目录键 11.8.1 常数次同步。对“第11章 并行性和局部性的优化”而言,「11·8·1 常数次同步」在第44次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·8·2 程序依赖图

正式坐标 45/67。 原版目录键 11.8.2 程序依赖图。在“第11章 并行性和局部性的优化”的第45个正式坐标中,「11·8·2 程序依赖图」通过沿依赖图安排属性求值、语义动作和栈位置推进仿射循环、依赖、并行与局部性;复核者保存属性依赖图、拓扑序、栈快照、值与副作用日志,出现属性未就绪、循环依赖或副作用错序就撤回结论。

11·8·3 层次化时间

正式坐标 46/67。 原版目录键 11.8.3 层次化时间。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标46把「11·8·3 层次化时间」落实为把“层次化时间”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“层次化时间”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·8·4 并行化算法

正式坐标 47/67。 原版目录键 11.8.4 并行化算法。“第11章 并行性和局部性的优化”的目录节点47「11·8·4 并行化算法」不能停在术语或伪码:它要把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,交付依赖图、周期表、资源占用、寄存器压力与异常反例,并把非法移动跨越依赖、守卫、异常或资源限制设为单一反事实。

11·9 流水线化

正式坐标 48/67。 原版目录键 11.9 流水线化。对“第11章 并行性和局部性的优化”而言,「11·9 流水线化」在第48次检查中改变可观察状态,因为它负责把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表;依赖图、周期表、资源占用、寄存器压力与异常反例必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受非法移动跨越依赖、守卫、异常或资源限制。

11·9·1 什么是流水线化

正式坐标 49/67。 原版目录键 11.9.1 什么是流水线化。在“第11章 并行性和局部性的优化”的第49个正式坐标中,「11·9·1 什么是流水线化」通过把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表推进仿射循环、依赖、并行与局部性;复核者保存依赖图、周期表、资源占用、寄存器压力与异常反例,出现非法移动跨越依赖、守卫、异常或资源限制就撤回结论。

11·9·2 逐次超松弛:一个例子

正式坐标 50/67。 原版目录键 11.9.2 逐次超松弛:一个例子。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标50把「11·9·2 逐次超松弛:一个例子」落实为把“逐次超松弛:一个例子”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;只有第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据可重放且反例排除只复述“逐次超松弛:一个例子”名称而没有可观察状态、单故障和恢复验证,本节点才算掌握。

11·9·3 完全可置换循环

正式坐标 51/67。 原版目录键 11.9.3 完全可置换循环。“第11章 并行性和局部性的优化”的目录节点51「11·9·3 完全可置换循环」不能停在术语或伪码:它要求解数据流固定点并证明变换在所有控制流路径上保语义,交付格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试,并把边界值、不可执行路径、别名或单调性假设错误设为单一反事实。

11·9·4 完全可置换循环的流水线化

正式坐标 52/67。 原版目录键 11.9.4 完全可置换循环的流水线化。对“第11章 并行性和局部性的优化”而言,「11·9·4 完全可置换循环的流水线化」在第52次检查中改变可观察状态,因为它负责求解数据流固定点并证明变换在所有控制流路径上保语义;格值迭代、交汇/转移、收敛日志、前后CFG和等价性测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受边界值、不可执行路径、别名或单调性假设错误。

11·9·5 通用理论

正式坐标 53/67。 原版目录键 11.9.5 通用理论。在“第11章 并行性和局部性的优化”的第53个正式坐标中,「11·9·5 通用理论」通过把“通用理论”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链推进仿射循环、依赖、并行与局部性;复核者保存第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据,出现只复述“通用理论”名称而没有可观察状态、单故障和恢复验证就撤回结论。

11·9·6 时间划分约束

正式坐标 54/67。 原版目录键 11.9.6 时间划分约束。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标54把「11·9·6 时间划分约束」落实为以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;只有迭代空间、依赖关系、调度、缓存复用、同步与边界测试可重放且反例排除变换违反跨迭代依赖或只在样例尺寸上偶然正确,本节点才算掌握。

11·9·7 使用Farkas引理求解时间划分约束

正式坐标 55/67。 原版目录键 11.9.7 使用Farkas引理求解时间划分约束。“第11章 并行性和局部性的优化”的目录节点55「11·9·7 使用Farkas引理求解时间划分约束」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·9·8 代码变换

正式坐标 56/67。 原版目录键 11.9.8 代码变换。对“第11章 并行性和局部性的优化”而言,「11·9·8 代码变换」在第56次检查中改变可观察状态,因为它负责把“代码变换”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链;第11章 并行性和局部性的优化的输入角色、中间状态、输出、反例与等价性证据必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受只复述“代码变换”名称而没有可观察状态、单故障和恢复验证。

11·9·9 使用最少同步的并行性

正式坐标 57/67。 原版目录键 11.9.9 使用最少同步的并行性。在“第11章 并行性和局部性的优化”的第57个正式坐标中,「11·9·9 使用最少同步的并行性」通过把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表推进仿射循环、依赖、并行与局部性;复核者保存依赖图、周期表、资源占用、寄存器压力与异常反例,出现非法移动跨越依赖、守卫、异常或资源限制就撤回结论。

11·10 局部性优化

正式坐标 58/67。 原版目录键 11.10 局部性优化。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标58把「11·10 局部性优化」落实为声明阶段接口、名字/类型/状态角色和源—目标语义映射;只有阶段快照、符号表、类型、IR谱系、诊断和源位置可重放且反例排除阶段边界丢失绑定、类型、控制依赖或源位置,本节点才算掌握。

11·10·1 计算数据的时间局部性

正式坐标 59/67。 原版目录键 11.10.1 计算数据的时间局部性。“第11章 并行性和局部性的优化”的目录节点59「11·10·1 计算数据的时间局部性」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·10·2 数组收缩

正式坐标 60/67。 原版目录键 11.10.2 数组收缩。对“第11章 并行性和局部性的优化”而言,「11·10·2 数组收缩」在第60次检查中改变可观察状态,因为它负责以迭代域、访问关系和依赖约束证明循环变换、并行与局部性;迭代空间、依赖关系、调度、缓存复用、同步与边界测试必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受变换违反跨迭代依赖或只在样例尺寸上偶然正确。

11·10·3 划分交错

正式坐标 61/67。 原版目录键 11.10.3 划分交错。在“第11章 并行性和局部性的优化”的第61个正式坐标中,「11·10·3 划分交错」通过以迭代域、访问关系和依赖约束证明循环变换、并行与局部性推进仿射循环、依赖、并行与局部性;复核者保存迭代空间、依赖关系、调度、缓存复用、同步与边界测试,出现变换违反跨迭代依赖或只在样例尺寸上偶然正确就撤回结论。

11·10·4 综合应用

正式坐标 62/67。 原版目录键 11.10.4 综合应用。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标62把「11·10·4 综合应用」落实为沿依赖图安排属性求值、语义动作和栈位置;只有属性依赖图、拓扑序、栈快照、值与副作用日志可重放且反例排除属性未就绪、循环依赖或副作用错序,本节点才算掌握。

11·11 仿射变换的其他用途

正式坐标 63/67。 原版目录键 11.11 仿射变换的其他用途。“第11章 并行性和局部性的优化”的目录节点63「11·11 仿射变换的其他用途」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

11·11·1 分布式存储机器

正式坐标 64/67。 原版目录键 11.11.1 分布式存储机器。对“第11章 并行性和局部性的优化”而言,「11·11·1 分布式存储机器」在第64次检查中改变可观察状态,因为它负责追踪栈帧、非局部绑定、根集、堆对象和收集阶段;活动记录、访问链、根集、对象图、写屏障与暂停统计必须与“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”对齐,不能接受生命周期、根集或屏障错误导致悬垂引用、泄漏或误回收。

11·11·2 多指令发射处理器

正式坐标 65/67。 原版目录键 11.11.2 多指令发射处理器。在“第11章 并行性和局部性的优化”的第65个正式坐标中,「11·11·2 多指令发射处理器」通过在IR、寄存器、内存和目标指令间满足定义—使用、调用约定和代价推进仿射循环、依赖、并行与局部性;复核者保存基本块DAG、活跃区间、干涉图、指令匹配和差分执行,出现别名、寄存器类、调用约定或目标副作用被忽略就撤回结论。

11·11·3 向量和SIMD指令

正式坐标 66/67。 原版目录键 11.11.3 向量和SIMD指令。围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”,“第11章 并行性和局部性的优化”在坐标66把「11·11·3 向量和SIMD指令」落实为在IR、寄存器、内存和目标指令间满足定义—使用、调用约定和代价;只有基本块DAG、活跃区间、干涉图、指令匹配和差分执行可重放且反例排除别名、寄存器类、调用约定或目标副作用被忽略,本节点才算掌握。

11·11·4 预取

正式坐标 67/67。 原版目录键 11.11.4 预取。“第11章 并行性和局部性的优化”的目录节点67「11·11·4 预取」不能停在术语或伪码:它要以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,交付迭代空间、依赖关系、调度、缓存复用、同步与边界测试,并把变换违反跨迭代依赖或只在样例尺寸上偶然正确设为单一反事实。

先预测,再操作三个章专属实验

分步1 / 3

1. 输入、表示与翻译流水线

为“第11章 并行性和局部性的优化”选择正式目录坐标,在参考流水线与单一故障间切换,逐阶段核对输入、变换、输出和不变量。

输入—表示—翻译流水线

第11章 并行性和局部性的优化

选择正式目录坐标,再比较参考编译合同与单一故障的首个状态分岔。

阶段 1/4

第11章 并行性和局部性的优化 · 输入与表示

输入
对矩阵计算循环嵌套执行交换、分块、并行化与向量化
变换
冻结仿射循环、依赖、并行与局部性所需的源程序、文法/IR/机器版本、shape和符号角色
输出证据
第11章 并行性和局部性的优化的输入合同、版本表与基线快照
不变量检查
第11章 并行性和局部性的优化的源位置、名字、类型、控制/数据依赖和可见性没有越界

第11章 并行性和局部性的优化的可重放协议

阶段允许动作必留证据拒绝条件
第11章 并行性和局部性的优化 · 输入与表示冻结仿射循环、依赖、并行与局部性所需的源程序、文法/IR/机器版本、shape和符号角色第11章 并行性和局部性的优化的输入合同、版本表与基线快照未满足“第11章 并行性和局部性的优化的源位置、名字、类型、控制/数据依赖和可见性没有越界”
第11章 并行性和局部性的优化 · 状态变换执行从迭代空间、仿射访问、复用、依赖、并行划分、同步、流水线和局部性优化推导循环变换的最小算法并保存每一步状态第11章 并行性和局部性的优化的参考轨迹、故障轨迹与首个状态分岔未满足“第11章 并行性和局部性的优化每一步可由同一输入、规则、版本和顺序复算”
第11章 并行性和局部性的优化 · 输出与代价比较变换前后IR/目标状态、诊断、资源或分析精度第11章 并行性和局部性的优化的前后差、语义映射、代价和恢复路径未满足“第11章 并行性和局部性的优化没有把编译成功、分析收敛或单一基准加速当作完整正确性”
第11章 并行性和局部性的优化 · 独立验证重放预测、单故障、恢复和不适用边界第11章 并行性和局部性的优化的接受、回退或拒绝理由未满足“第11章 并行性和局部性的优化满足“迭代域、访问关系、依赖方向、调度、同步与边界条件一致””
unit: "dbc-unit-11"
question: "循环坐标变换怎样同时保持依赖、并行性和缓存局部性?"
scenario: "对矩阵计算循环嵌套执行交换、分块、并行化与向量化"
invariant: "迭代域、访问关系、依赖方向、调度、同步与边界条件一致"
fault: "交换循环后违反跨迭代写后读依赖,样例尺寸未触发错误"
evidence: "迭代空间、依赖多面体、调度、缓存复用与等价性测试"
reset: restore_concept_mode_stage_trace_step_case_gates_and_artifact

“第11章 并行性和局部性的优化”要求从同一源程序、文法/IR/机器版本、规则、预算和执行顺序重放参考、故障与恢复路径。重置后若目录选择、模式、阶段、轨迹步骤、案例、证据门或交付包没有回到基线,本次比较已经混入状态泄漏。

本页回顾

掌握“第11章 并行性和局部性的优化”不是背术语、表格或伪码,而是围绕“循环坐标变换怎样同时保持依赖、并行性和缓存局部性?”重建输入、表示、状态变换、输出、代价和独立验证,并用“迭代域、访问关系、依赖方向、调度、同步与边界条件一致”拒绝“交换循环后违反跨迭代写后读依赖,样例尺寸未触发错误”。最终交付为迭代空间、依赖多面体、调度、缓存复用与等价性测试。

练习与答案

练习

  1. 问题 1:编译合同。 “第11章 并行性和局部性的优化”为什么必须先冻结源程序、文法/IR/机器版本、规则、预算和验证口径?
  1. 问题 2:目录逐项覆盖。 怎样证明“第11章 并行性和局部性的优化”的正式目录坐标已经进入机制、交互和练习?
  1. 问题 3:故障恢复。 怎样证明“交换循环后违反跨迭代写后读依赖,样例尺寸未触发错误”已经被修正?

名词解释

名词解释

本章出现的专业名词,用大白话再讲一遍。

并行性和局部性的优化

检索键 dbc-A 对应正式目录坐标「第11章 并行性和局部性的优化」;在“第11章 并行性和局部性的优化”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

基本概念

检索键 dbc-B 对应正式目录坐标「11·1 基本概念」;在“第11章 并行性和局部性的优化”中用于把“基本概念”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

多处理器

检索键 dbc-C 对应正式目录坐标「11·1·1 多处理器」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

应用中的并行性

检索键 dbc-D 对应正式目录坐标「11·1·2 应用中的并行性」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

循环层次的并行性

检索键 dbc-E 对应正式目录坐标「11·1·3 循环层次的并行性」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

数据局部性

检索键 dbc-F 对应正式目录坐标「11·1·4 数据局部性」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

仿射变换理论简介

检索键 dbc-G 对应正式目录坐标「11·1·5 仿射变换理论简介」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

矩阵乘法

检索键 dbc-H 对应正式目录坐标「11·2 矩阵乘法:一个深入的例子」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

矩阵乘法算法

检索键 dbc-I 对应正式目录坐标「11·2·1 矩阵乘法算法」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

优化

检索键 dbc-J 对应正式目录坐标「11·2·2 优化」;在“第11章 并行性和局部性的优化”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

缓存干扰

检索键 dbc-K 对应正式目录坐标「11·2·3 缓存干扰」;在“第11章 并行性和局部性的优化”中用于把“缓存干扰”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

迭代空间

检索键 dbc-L 对应正式目录坐标「11·3 迭代空间」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

从循环嵌套构造迭代空间

检索键 dbc-M 对应正式目录坐标「11·3·1 从循环嵌套构造迭代空间」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

循环嵌套的执行顺序

检索键 dbc-N 对应正式目录坐标「11·3·2 循环嵌套的执行顺序」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

不等式的矩阵表示

检索键 dbc-O 对应正式目录坐标「11·3·3 不等式的矩阵表示」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

加入符号常量

检索键 dbc-P 对应正式目录坐标「11·3·4 加入符号常量」;在“第11章 并行性和局部性的优化”中用于把“加入符号常量”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

控制执行顺序

检索键 dbc-Q 对应正式目录坐标「11·3·5 控制执行顺序」;在“第11章 并行性和局部性的优化”中用于把“控制执行顺序”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

改变坐标轴

检索键 dbc-R 对应正式目录坐标「11·3·6 改变坐标轴」;在“第11章 并行性和局部性的优化”中用于把“改变坐标轴”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

仿射数组下标

检索键 dbc-S 对应正式目录坐标「11·4 仿射数组下标」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

仿射访问

检索键 dbc-T 对应正式目录坐标「11·4·1 仿射访问」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

实践中的仿射和非仿射访问

检索键 dbc-U 对应正式目录坐标「11·4·2 实践中的仿射和非仿射访问」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

数据复用

检索键 dbc-V 对应正式目录坐标「11·5 数据复用」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

复用的类型

检索键 dbc-W 对应正式目录坐标「11·5·1 复用的类型」;在“第11章 并行性和局部性的优化”中用于把源级值、地址、类型、控制边和定义—使用关系编码为IR,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

自复用

检索键 dbc-X 对应正式目录坐标「11·5·2 自复用」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

自空间复用

检索键 dbc-Y 对应正式目录坐标「11·5·3 自空间复用」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

组复用

检索键 dbc-Z 对应正式目录坐标「11·5·4 组复用」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

数组数据依赖分析

检索键 dbc-AA 对应正式目录坐标「11·6 数组数据依赖分析」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

数组访问的数据依赖定义

检索键 dbc-AB 对应正式目录坐标「11·6·1 数组访问的数据依赖定义」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

整数线性规划

检索键 dbc-AC 对应正式目录坐标「11·6·2 整数线性规划」;在“第11章 并行性和局部性的优化”中用于把“整数线性规划”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

最大公约数测试

检索键 dbc-AD 对应正式目录坐标「11·6·3 最大公约数测试」;在“第11章 并行性和局部性的优化”中用于把“最大公约数测试”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

求解整数线性规划的启发式方法

检索键 dbc-AE 对应正式目录坐标「11·6·4 求解整数线性规划的启发式方法」;在“第11章 并行性和局部性的优化”中用于把“求解整数线性规划的启发式方法”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

通用整数线性规划的求解

检索键 dbc-AF 对应正式目录坐标「11·6·5 通用整数线性规划的求解」;在“第11章 并行性和局部性的优化”中用于把“通用整数线性规划的求解”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

本节总结

检索键 dbc-AG 对应正式目录坐标「11·6·6 本节总结」;在“第11章 并行性和局部性的优化”中用于把“本节总结”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

寻找无同步的并行性

检索键 dbc-AH 对应正式目录坐标「11·7 寻找无同步的并行性」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

一个入门例子

检索键 dbc-AI 对应正式目录坐标「11·7·1 一个入门例子」;在“第11章 并行性和局部性的优化”中用于把“一个入门例子”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

仿射空间划分

检索键 dbc-AJ 对应正式目录坐标「11·7·2 仿射空间划分」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

空间划分约束

检索键 dbc-AK 对应正式目录坐标「11·7·3 空间划分约束」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

求解空间划分约束

检索键 dbc-AL 对应正式目录坐标「11·7·4 求解空间划分约束」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

一个简单的代码生成算法

检索键 dbc-AM 对应正式目录坐标「11·7·5 一个简单的代码生成算法」;在“第11章 并行性和局部性的优化”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

消除空迭代

检索键 dbc-AN 对应正式目录坐标「11·7·6 消除空迭代」;在“第11章 并行性和局部性的优化”中用于把“消除空迭代”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

消除最内层循环中的测试

检索键 dbc-AO 对应正式目录坐标「11·7·7 消除最内层循环中的测试」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

源代码变换

检索键 dbc-AP 对应正式目录坐标「11·7·8 源代码变换」;在“第11章 并行性和局部性的优化”中用于把“源代码变换”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

并行循环之间的同步

检索键 dbc-AQ 对应正式目录坐标「11·8 并行循环之间的同步」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

常数次同步

检索键 dbc-AR 对应正式目录坐标「11·8·1 常数次同步」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

程序依赖图

检索键 dbc-AS 对应正式目录坐标「11·8·2 程序依赖图」;在“第11章 并行性和局部性的优化”中用于沿依赖图安排属性求值、语义动作和栈位置,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

层次化时间

检索键 dbc-AT 对应正式目录坐标「11·8·3 层次化时间」;在“第11章 并行性和局部性的优化”中用于把“层次化时间”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

并行化算法

检索键 dbc-AU 对应正式目录坐标「11·8·4 并行化算法」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

流水线化

检索键 dbc-AV 对应正式目录坐标「11·9 流水线化」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

什么是流水线化

检索键 dbc-AW 对应正式目录坐标「11·9·1 什么是流水线化」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

逐次超松弛

检索键 dbc-AX 对应正式目录坐标「11·9·2 逐次超松弛:一个例子」;在“第11章 并行性和局部性的优化”中用于把“逐次超松弛:一个例子”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

完全可置换循环

检索键 dbc-AY 对应正式目录坐标「11·9·3 完全可置换循环」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

完全可置换循环的流水线化

检索键 dbc-AZ 对应正式目录坐标「11·9·4 完全可置换循环的流水线化」;在“第11章 并行性和局部性的优化”中用于求解数据流固定点并证明变换在所有控制流路径上保语义,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

通用理论

检索键 dbc-BA 对应正式目录坐标「11·9·5 通用理论」;在“第11章 并行性和局部性的优化”中用于把“通用理论”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

时间划分约束

检索键 dbc-BB 对应正式目录坐标「11·9·6 时间划分约束」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

使用Farkas引理求解时间划分约束

检索键 dbc-BC 对应正式目录坐标「11·9·7 使用Farkas引理求解时间划分约束」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

代码变换

检索键 dbc-BD 对应正式目录坐标「11·9·8 代码变换」;在“第11章 并行性和局部性的优化”中用于把“代码变换”放进仿射循环、依赖、并行与局部性的输入—状态—变换—验证链,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

使用最少同步的并行性

检索键 dbc-BE 对应正式目录坐标「11·9·9 使用最少同步的并行性」;在“第11章 并行性和局部性的优化”中用于把资源、延迟、数据/内存/控制依赖和寄存器压力映射到周期表,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

局部性优化

检索键 dbc-BF 对应正式目录坐标「11·10 局部性优化」;在“第11章 并行性和局部性的优化”中用于声明阶段接口、名字/类型/状态角色和源—目标语义映射,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

计算数据的时间局部性

检索键 dbc-BG 对应正式目录坐标「11·10·1 计算数据的时间局部性」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

数组收缩

检索键 dbc-BH 对应正式目录坐标「11·10·2 数组收缩」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

划分交错

检索键 dbc-BI 对应正式目录坐标「11·10·3 划分交错」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

综合应用

检索键 dbc-BJ 对应正式目录坐标「11·10·4 综合应用」;在“第11章 并行性和局部性的优化”中用于沿依赖图安排属性求值、语义动作和栈位置,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

仿射变换的其他用途

检索键 dbc-BK 对应正式目录坐标「11·11 仿射变换的其他用途」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

分布式存储机器

检索键 dbc-BL 对应正式目录坐标「11·11·1 分布式存储机器」;在“第11章 并行性和局部性的优化”中用于追踪栈帧、非局部绑定、根集、堆对象和收集阶段,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

多指令发射处理器

检索键 dbc-BM 对应正式目录坐标「11·11·2 多指令发射处理器」;在“第11章 并行性和局部性的优化”中用于在IR、寄存器、内存和目标指令间满足定义—使用、调用约定和代价,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

向量和SIMD指令

检索键 dbc-BN 对应正式目录坐标「11·11·3 向量和SIMD指令」;在“第11章 并行性和局部性的优化”中用于在IR、寄存器、内存和目标指令间满足定义—使用、调用约定和代价,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

预取

检索键 dbc-BO 对应正式目录坐标「11·11·4 预取」;在“第11章 并行性和局部性的优化”中用于以迭代域、访问关系和依赖约束证明循环变换、并行与局部性,需要连接原版范围、状态轨迹、等价性证据和不适用边界。

讨论

评论区加载中…