想象你是一个大型交响乐团的总指挥。GPU 的做事方式像指挥几十个“声部小组”——每个小组里的乐手都演奏完全相同的乐谱,只是音高不同,这种“整齐划一”的模式在演奏宏大的和弦时效率极高。但问题来了:当乐谱突然出现复杂的独奏段落(比如稀疏计算),或者某个声部需要临时变奏(比如动态分支),整个小组都得停下来等待,浪费了大量乐手的时间。 而 Graphcore IPU 的诞生,就像把乐团彻底改组:1472 位独立乐手,每人面前摆着一份完全属于自己的乐谱,通过一个高速的“传话网络”随时与任何其他乐手交流。每个人都可以按照自己的节奏演奏,不需要等别人;需要协作时,只需隔着一个“同步点”互相确认一下进度即可。这种“细粒度并行”的哲学,让 IPU 在面对稀疏、动态、不规则的计算任务时,展现出传统 GPU 难以企及的灵活性。 如果把 AI 模型的训练比作一场演出,那么 GPU 擅长的是“整齐的方阵操练”,而 IPU 擅长的是“爵士乐即兴合奏”。Poplar 编译器则像一位资深的编曲师,把庞大的模型乐谱拆解成 1472 份独立分谱,并精心规划每个乐手的演奏时序和沟通节点。这篇文章,我们就从这场“乐团改革”说起,拆解 IPU 的核心架构、并行模型、编程哲学及其独特优势。
理解 IPU 的细粒度并行理念,能让你在 AI 芯片选型、大规模模型部署和性能优化时,跳出“唯 GPU 论”的思维定式,具备应对稀疏计算与动态图等前沿挑战的架构视野。
目录
可视化演示
通过MIMD并行模型、BSP同步通信和IPU与GPU对比三个模式,展示Graphcore IPU细粒度并行AI芯片的核心架构特点。
本节配有交互动效(进入视口后自动加载,约 3KB)。
MIMD细粒度并行模型 IPU每个核心独立执行不同指令,实现真正的MIMD并行 GPU采用SIMT模型,同组核心必须执行相同指令 MIMD: N cores × M instructions → N×M parallelism 细粒度并行使IPU在稀疏和动态计算中具有天然优势
芯片定位:为 AI 量身定制的“爵士乐团”
传统 GPU 就像一支纪律严明的军乐团——所有乐手被分成小组,每组齐奏同一段旋律。这种设计最初是为了图形渲染,因为屏幕上成千上万的像素点都在执行相同的变换操作,天然适合“单指令多数据”。然而 AI 模型的计算模式远比图形渲染复杂:稀疏连接、动态分支、不规则张量操作,让 GPU 的“整齐方阵”常常陷入空转。Graphcore 公司看到了这个痛点,决心打造一款从零开始为 AI 设计的芯片,这就是 IPU——Intelligence Processing Unit,智能处理单元。
如果把 AI 芯片市场比作一场演唱会,英伟达是舞台上光芒四射的摇滚巨星,而 Graphcore IPU 则像一位刚登场的小众爵士乐手。它不追求在传统矩阵乘法上与 GPU 硬碰硬,而是瞄准 GPU 最不擅长的领域——稀疏计算和动态图。IPU 的设计哲学是:AI 计算本质上是众多独立神经元的活动,每个神经元都有自己的“小算盘”,与其强迫它们整齐划一,不如给每个神经元配一个专属处理器。
技术层面,IPU 的不同之处在于它的“全局同步”思想。传统 GPU 使用 SIMT 模型,一组线程必须同步执行同一条指令,遇到分支时部分线程会被屏蔽,计算资源白白浪费。IPU 采用的 MIMD 模型允许每个核心独立取指、独立执行,配合 BSP 同步机制,在需要协作时统一对齐一次步伐即可。这种设计让 IPU 在稀疏、动态、混合精度的 AI 负载中展现出独特的架构红利。
核心架构:1472 个乐手的精密合奏
走进 IPU 的“排练厅”,最震撼的莫过于密密麻麻的 1472 个独立处理器核心。与 GPU 中数十个大型 SIMT 核心不同,IPU 的核心每个都非常简单,没有复杂的分支预测和乱序执行部件,但胜在数量庞大且完全独立。每个核心都配有自己私有的 SRAM 存储,总片上存储容量高达 900MB,远超 GPU 的寄存器文件。这就像给每位乐手都配了一间独立的小琴房,乐谱和乐器随手可得,不需要频繁跑到后台仓库(片外显存)取东西。
核心之间通过一个高效的片上交换网络互联。在传统多核芯片中,核心间通信往往要通过共享总线或层级缓存,延迟高且容易成为瓶颈。IPU 的网络是专门为 AI 计算设计的,任意两个核心之间可以通过片上网络直接交换数据,通信延迟极低。这就像乐手之间通过一个高效的传话筒网络直接交流,不需要把信息先交给指挥再分发。
\begin{equation}
\text{IPU 核心数} = 1472, \quad \text{每核心 SRAM} \approx 624 \text{ KB}, \quad \text{片上总存储} \approx 900 \text{ MB}
\end{equation}
1. 核心总数:IPU 单芯片集成了 1472 个处理器核心,每个核心独立执行指令
2. 每核心存储:每个核心拥有约 624KB 的本地 SRAM,用于存储权重和中间激活值
3. 总存储容量:所有核心本地存储之和接近 900MB,加上其他片上存储,IPU 可以在片内容纳大部分模型参数
回到乐团的比喻:1472 个核心就像 1472 位各怀绝技的乐手,每个人在自己的琴房里准备好乐谱(权重数据),通过传话筒网络(片上交换网络)随时交流。这种架构的深层含义是:数据本地性极高,大部分计算可以在核心内部完成,无需频繁访问片外 DRAM——这正是 AI 计算中内存带宽瓶颈的破解之道。
并行模式:MIMD 与 BSP 的“自由爵士”
IPU 的并行模式可以用一个词概括:MIMD——Multiple Instruction stream, Multiple Data stream,多指令流多数据流。这意味着每个核心在任何时刻都可能执行不同的指令。GPU 的 SIMT 模式就像阅兵方阵:排长喊一声“齐步走”,所有人必须迈同一只脚;而 IPU 的 MIMD 模式则像自由爵士演奏:每个乐手即兴发挥自己的旋律,但通过默契的和声规则(同步机制)保持整体协调。
BSP(Bulk Synchronous Parallel,整体同步并行)模型是 IPU 的灵魂。它将并行计算划分为一个个“超级步骤”:在每个超步中,所有核心独立并行计算;超步结束时,核心通过片上网络交换数据,然后统一到达一个全局同步屏障;所有核心都到达后,才进入下一个超步。这就像爵士乐团约定:每个人自由独奏 8 小节,8 小节结束大家一起碰个酒杯确认进度,然后开始下一段独奏。
\begin{equation}
\text{超步周期} = \text{计算阶段} + \text{通信阶段} + \text{同步屏障}
\end{equation}
1. 计算阶段:所有核心并行执行本地指令,互不干扰,这是真正意义上的细粒度并行
2. 通信阶段:核心之间通过片上网络交换数据,将计算结果传递给需要它的邻居核心
3. 同步屏障:所有核心到达屏障点,等待最慢的那个核心完成,然后统一进入下一轮
你可能会问:同步等待不会浪费性能吗?确实会,但 BSP 模型换来的是巨大的编程简化。在 GPU 的 SIMT 模型下,程序员需要精心管理线程同步、避免死锁、处理分支发散;而在 IPU 的 BSP 模型下,Poplar 编译器自动处理了这些细节,程序员只需要描述计算图,编译器就能自动完成分区、映射和调度。就像乐手只需要专注于演奏自己的音符,总谱的协调工作全部交给了编曲师。
编译器映射:Poplar 的“编曲魔法”
如果说 IPU 硬件是乐团,那么 Poplar 编译器就是那位神秘的编曲师。GPU 世界里,程序员用 CUDA 手写 Kernel,如同指挥为每个声部逐段编写分谱;而 IPU 世界里,Poplar 编译器接收的是 PyTorch 或 TensorFlow 的高层计算图,自动完成从“总谱”到“1472 份分谱”的转换。
Poplar 的核心策略是“图映射”:它将计算图拆分成数以千计的小型子图,每个子图对应一个 IPU 核心;然后通过图着色、划分和布局算法,为每个子图分配核心、规划数据流。这个过程中,编译器会自动平衡计算负载,减少核心间通信量,并优先将频繁交互的计算放在物理相邻的核心上——就像编曲时,让经常配合的两个乐手坐在一起。
\begin{equation}
\text{映射目标:} \quad \min \left( \lambda \cdot T_{\text{计算}} + (1-\lambda) \cdot T_{\text{通信}} \right)
\end{equation}
1. 计算时间项:所有核心中计算量最大的那个核心所需的时间,决定了整个超步的耗时
2. 通信时间项:整个计算图中所有核心间通信所需的总时间,通信越少越好
3. 权重系数:λ 是一个超参数,控制计算与通信的权衡;λ 大则优先减少计算时间,λ 小则优先减少通信
Poplar 编译器还支持丰富的调试工具和性能分析器,让开发者能够看到每个核心的运行状态、内存占用和通信流量。这种“透明化的编曲过程”是 GPU 生态难以比拟的:CUDA 程序员往往只能看到 Macro 级别的调度结果,而 Poplar 允许你深入到每个核心的指令级视角,真正实现“细粒度并行”的可视化和可控化。对 AI 从业者而言,这意味着更深的性能洞察和更精准的优化空间。
优势分析:稀疏与动态计算的优等生
IPU 最大的优势体现在稀疏计算与动态计算中。所谓稀疏,是指计算矩阵中大量元素为零;所谓动态,是指模型结构在运行时会改变。这两者恰好是 GPU 的阿喀琉斯之踵。在 GPU 的 SIMT 模型中,即使只有 1% 的非零元素,也得让整个线程束参与计算并屏蔽空转线程;而 IPU 的 MIMD 模型下,每个核心独立处理一个非零元素,遇到零元素的核心直接跳过,毫不浪费。
让我们以图神经网络(GNN)中的稀疏矩阵乘法为例。图的邻接矩阵通常极度稀疏——社交网络中平均每人只有几百个好友,但用户总数却有数亿。GPU 处理这种计算时,需要将稀疏矩阵稠密化或分组填充;IPU 则可以将每个节点及其邻居映射到一个核心,核心之间通过片上网络直接交换消息,天然契合图计算的消息传递范式。这就像爵士乐中乐手之间的即兴呼应,每个人只关注和自己配对的乐手,而不是等整个乐团同步。
动态计算是 IPU 的另一个主场。在自然语言处理中,不同句子长度不同、不同批次数据分布不同;在强化学习中,网络的输入维度甚至结构都会动态变化。GPU 对这些场景非常头疼,因为需要不断重新编译 Kernel 或填充到固定尺寸;IPU 的核心独立性和 BSP 模型让动态执行变得自然:每个核心可以在自己的超步中决定执行哪条路径,遇到条件分支时直接跳转,不需要让整个核心组都执行两遍。
\begin{equation}
\text{加速比} = \frac{\text{GPU 处理稀疏矩阵的时间}}{\text{IPU 处理稀疏矩阵的时间}} = \frac{k \cdot N^2}{m}
\end{equation}
1. GPU 时间复杂度:GPU 处理 N×N 稀疏矩阵时,由于 SIMT 模型的限制,仍需遍历整个矩阵规模,耗时约为 N 的平方量级
2. IPU 时间复杂度:IPU 只需处理 m 个非零元素,每个核心负责一个元素,耗时为非零元素个数 m
3. 加速比:两者相除即可得到理论上限;当稀疏度极高(m ≪ N²)时,加速比可以非常惊人
当然,IPU 并非万能。对于稠密的大型矩阵乘法(比如 Transformer 中的标准注意力计算),GPU 经过几十年的优化沉淀,其 Tensor Core 的吞吐能力依然是行业顶尖。IPU 的细粒度并行在面对“超大规模稠密矩阵”时,反而可能因为每核心计算能力较弱而处于劣势。因此,IPU 最适合的场景是:稀疏图数据、动态结构模型、混合精度的推理任务——这是它的“舒适区”。
产业生态:从破局者到挑战者
一颗芯片的成功,不仅取决于硬件性能,更取决于软件生态。Graphcore 深知这一点,因此推出了 Poplar SDK,提供了完整的开发工具链:Poplar 图编译器、PopART 推理引擎、PopVision 性能分析器等。这套 SDK 支持主流的 PyTorch 和 TensorFlow,AI 开发者只需将模型迁移到 IPU 平台,就能自动享受到细粒度并行和 BSP 调度带来的优势——前提是模型的计算模式适合 IPU。
如果说 CUDA 生态是 GPU 的“护城河”,那么 Poplar 就是 IPU 的“攻城锤”。Graphcore 积极拥抱开源,与 Hugging Face 合作预训练了多个大语言模型,在 IPU 上运行 BERT 和 GPT 的性能测试成绩相当亮眼。但生态的建立非一日之功:CUDA 积累了十五年的库函数、工具链和开发者社区,AI 工程师十有八九都熟悉“nvidia-smi“,却鲜有人见过”gc-monitor”。
从商业化进程看,Graphcore 的 IPU 已经在微软 Azure、英伟达竞争的云服务商中部署,也推出了 Colossus MK2(GC200)等第二代产品。2023 年,Graphcore 被软银集团收购,估值约 5 亿美元——相比英伟达万亿市值这是“九牛一毛”,但侧面说明了 IPU 的技术价值获得了资本认可。对于 AI 从业者而言,多了解一个 IPU 这样的架构,就多一种解决性能瓶颈的工具箱。
回到乐团的比喻:GPU 是已经磨合多年的老牌交响乐团,乐师经验丰富、指挥调度成熟,是所有厅堂的首选;IPU 则是新兴的爵士组合,乐手个人技艺高超、配合默契,在特定曲风(稀疏与动态计算)上表现出色,但目前能演奏的曲目(生态库)还不够丰富。选择哪个,取决于你的演出需求。
AI 应用场景
图神经网络的稀疏训练与推理
阶段:模型训练与部署
解决的问题:图神经网络处理大规模稀疏图时,GPU 需要将稀疏矩阵填充为稠密块,导致计算和存储浪费严重;IPU 的细粒度并行可让每个核心直接负责一个节点的消息传递,无需稠密化。
具体案例:某社交平台要训练一个 10 亿节点、200 亿边的推荐图模型。传统 GPU 服务器需要 8 卡 V100 并花费大量显存存储零元素填充后的稠密矩阵,训练一个 epoch 需要 12 小时。改用 IPU 后,Poplar 编译器将图节点映射到 1472 个核心上,每个核心独立处理邻居聚合,训练时间缩短至 4 小时。这就像让每个乐手独立演奏自己的声部,而不是让所有人都跟着节奏空转等待。
动态结构模型的推理优化
阶段:模型推理
解决的问题:C++ 编写的动态计算图模型在 GPU 上推理时,频繁的 Kernel 启动和动态形状填充带来严重延迟;IPU 的 MIMD 架构支持每个核心动态跳转,配合 BSP 同步模型天然适合变长输入序列。
具体案例:一家自动驾驶公司需要在车内实时运行多任务感知模型,其中部分分支根据环境动态启用(如检测到雨天就启用雨刷预测分支)。GPU 需要同时预加载所有分支的 Kernel,浪费显存和算力。在 IPU 上,每个分支被映射到独立的核心组,运行时只有被激活的分支才执行,整体推理延迟下降了 35%,功耗降低了 20%。
大规模 Transformer 的预训练加速
阶段:预训练
解决的问题:Transformer 训练中稀疏注意力机制和动态批处理大小在 GPU 上会遇到负载不均问题;IPU 的细粒度并行让每个核心处理一个 Attention Head 的部分计算,BSP 同步保证梯度一致性。
具体案例:Graphcore 与 Hugging Face 合作,在 16 个 IPU 上完成了 350M 参数 GPT-2 模型的训练。相比同等功耗的 GPU 集群,IPU 在长序列训练场景下的吞吐量提升了 1.8 倍,主要得益于 900MB 片上存储减少了对 HBM 的依赖。这就是让每位乐手把自己的分谱背熟(存储本地化),而不是频繁翻看总谱。
Python 演示
# -*- coding: utf-8 -*-"""演示 Poplar 编译器风格的图映射策略模拟"""import numpy as np class Graph: """极简计算图""" def __init__(self, num_nodes): self.num_nodes = num_nodes self.nodes = list(range(num_nodes)) self.edges = [] def add_edge(self, src, dst): self.edges.append((src, dst)) class IPUArchSimulator: """IPU 架构模拟器:加锁等待所有核心函数执行完毕""" def __init__(self, num_cores): self.num_cores = num_cores self.sparse_map = {} def map_graph_to_cores(self, graph): """将计算图节点映射到核心""" self.sparse_map.clear() for i in range(graph.num_nodes): self.sparse_map[i] = i % self.num_cores return self.sparse_map def compute_node(self, node_id): """模拟计算一个节点""" return node_id * node_id + 1 def simulate(self): """执行一轮 BSP 计算""" core_results = {} for node, core in self.sparse_map.items(): val = self.compute_node(node) core_results.setdefault(core, []).append(val) bsp_weights = [sum(vals) for vals in core_results.values()] return max(bsp_weights) / min(bsp_weights) if min(bsp_weights) > 0 else 0.0 def main(): """模型偏斜对比""" graph = Graph(8) graph.add_edge(0, 1) graph.add_edge(1, 2) graph.add_edge(2, 0) graph.add_edge(3, 4) sim = IPUArchSimulator(num_cores=4) mapping = sim.map_graph_to_cores(graph) print("节点到核心的映射:") for key, val in mapping.items(): print(" node {}, core {}".format(key, val)) average_ratio = sim.simulate() print("各核心负载均衡比: {:.4f}".format(average_ratio)) if __name__ == "__main__": main()
self.sparse_map.clear()清空映射表,避免上次的映射残留影响本次模拟for i in range(graph.num_nodes)遍历计算图中的所有节点,为每个节点分配一个核心self.sparse_map[i] = i % self.num_cores将节点均匀哈希到核心上,模拟 Poplar 的初始图划分core_results.setdefault(core, []).append(val)按核心分组汇总计算结果,模拟每个核心的独立工作max / min计算负载均衡比,衡量所有核心是否“同步到达屏障”的关键指标
常见误区
误区IPU 有 1472 个核心,而 A100 只有 108 个 SM,核心数多十几倍,算力一定碾压 GPU。
正解核心数不能直接代表算力。GPU 的每个 SM 内部有 64 个 FP32 单元,一个 SM 能同时执行 128 个浮点运算;而 IPU 的每个核心单周期只能完成少量浮点运算,总吞吐量远低于 A100。IPU 的优势不在于峰值算力,而在于异步性:每个核心独立执行不同指令,在稀疏和动态计算中避免了大量空转。
为何常见:人们习惯用核心数量衡量芯片性能,这是从多核 CPU 时代延续的直觉,但 AI 芯片的算力取决于 FLOPS 和内存带宽的协同,而非单纯核心数。
误区MIMD 就是每个核心完全自由、毫无同步,就像一群完全独立的乐手各弹各的。
正解IPU 采用 BSP 同步模型,所有核心在超步结束时必须统一到达同步屏障,等待最慢的核心完成才能进入下一轮。同步虽然会带来等待开销,但它保证了计算的可确定性和正确性。IPU 的自由是“超步内部的自由”,而不是“全时段的无序”。
为何常见:MIMD 中“多指令流”容易让人误以为完全没有协调,忽略了 BSP 模型这个关键配套机制。
误区IPU 只擅长稀疏矩阵,遇到稠密矩阵就完全没用,只能用于图神经网络。
正解IPU 同样能高效执行稠密矩阵乘法、Transformer 等主流模型。Graphcore 官方在 MLPerf 上展示了 BERT 和 ResNet 的训练成绩,Poplar 编译器会将稠密矩阵自动切分为细粒度子任务分配到各核心。只是相比 GPU,IPU 在稠密场景下的优势不明显,而在稀疏与动态场景下优势才会凸显。
为何常见:宣传材料总是强调差异化优势,导致用户将“优势场景”误解为“唯一场景”。
误区Poplar 编译器就像一个简单的翻译器,把现有框架的代码换个后端就能跑,性能优化空间有限。
正解Poplar 是一个完整的计算图编译与优化器:它负责图划分、核心映射、通信规划、内存分配、指令调度,远比“翻译器”复杂。程序员甚至可以手写 Poplar 的 C++ 顶点代码来精细控制每个核心的行为,获得接近硬件极限的性能。编译器的工作方式更像编曲师对总谱进行重新编排,而非逐字翻译。
为何常见:现代编译器的高级程度往往被低估,很多人用 Python 解释器的直觉去理解编译器的工作。
误区每轮都等待最慢的核心,这种同步机制在负载不均时就是灾难,效率一定不如 GPU 的 SIMT。
正解BSP 模型确实会引入同步等待,但 SimT 模型的分支发散和线程束切换开销同样存在。关键在于负载均衡:Poplar 编译器通过精细的图划分和映射,让每个核心的工作量尽量接近,从而将同步等待时间降到最低。在某些不规则负载下,BSP 的同步开销远小于 GPU 的空转浪费。
为何常见:人们容易忽视 GPU 的隐式同步开销,却对 IPU 的显式同步机制格外苛刻,这是一种认知偏差。
面试题
Q1. 关于 IPU 的核心数量,下列说法正确的是?
- A.IPU 集成了 1472 个独立处理核心← 正确答案
- B.IPU 集成了 108 个流式多处理器
- C.IPU 只有 64 个计算核心
- D.IPU 的核心数量与 GPU 完全相同
答案:A。IPU 集成了 1472 个独立处理核心,这是其细粒度并行架构的基础。108 个 SM 是英伟达 A100 的配置,64 个核心是另一款芯片的参数。
Q2. IPU 采用 MIMD 架构,与 GPU 的 SIMT 相比,核心优势是什么?
- A.每个核心可以独立执行不同指令← 正确答案
- B.所有核心必须执行完全相同指令
- C.核心之间无法相互通信
- D.只能处理稠密矩阵计算
答案:A。MIMD 允许每个核心独立取指、独立执行,这是处理稀疏和动态计算的关键。SIMT 强调同指令多数据,B 是 SIMT 特征,C 和 D 均与 IPU 特性相悖。
Q3. BSP 并行模型中,“超步”包含哪三个阶段?
- A.计算、通信、同步屏障← 正确答案
- B.读取、写入、缓存
- C.加载、存储、释放
- D.编译、链接、执行
答案:A。BSP 模型中,每个超步由三个有序阶段组成:本地计算、全局通信和同步屏障。所有核心完成计算后,交换数据,然后统一同步进入下一超步,这保证了并行的确定性。
Q4. 关于 Poplar 编译器的图映射策略,以下说法正确的有哪些?
- A.将计算图拆分为多个子图← 正确答案
- B.每个子图映射到独立 IPU 核心← 正确答案
- C.自动规划核心间的数据通信时序← 正确答案
- D.只支持 TensorFlow,不支持 PyTorch
答案:ABC。Poplar 的核心工作就是图拆分、子图映射和通信规划,同时支持主流框架包括 PyTorch 与 TensorFlow。D 选项错误。
Q5. 稀疏矩阵 A 为 N×N,非零元素个数为 m,IPU 处理该矩阵乘法的理论耗时为?
- A.O(N²)
- B.O(m)← 正确答案
- C.O(N log N)
- D.O(N)
答案:B。IPU 的 MIMD 模型让每个核心处理一个非零元素,因此时间复杂度与非零元素个数 m 成正比。GPU 因 SIMT 限制需要 O(N²) 的访存,这正是 IPU 在稀疏场景的优势来源。
Q6. IPU 相比 GPU 在哪些场景下更有优势?
- A.高稀疏度图神经网络← 正确答案
- B.动态结构模型推理← 正确答案
- C.超大规模稠密矩阵乘法
- D.不规则批处理负载← 正确答案
答案:ABD。IPU 的核心独立性让它在稀疏、动态、不规则负载中优势明显。稠密矩阵乘法是 GPU Tensor Core 的主场,IPU 在该场景下不具备优势。
Q7. IPU 片上总存储容量约为多少?
- A.40MB
- B.900MB← 正确答案
- C.80GB
- D.16GB
答案:B。IPU 拥有约 900MB 的片上 SRAM,这是其数据本地化设计的关键。80GB 是 H100 的 HBM 容量,16GB 常见于消费级 GPU,40MB 远低于 AI 芯片需求。
Q8. 关于 BSP 同步模型与 SIMT 模型的区别,下列说法最准确的是?
- A.BSP 在超步内允许自由执行,SIMT 要求每个线程束内指令同步← 正确答案
- B.BSP 不需要同步,SIMT 需要同步
- C.BSP 用于 CPU,SIMT 用于 GPU
- D.BSP 比 SIMT 更容易产生死锁
答案:A。BSP 的同步粒度是“超步”级别,超步内核心自由执行;SIMT 的同步粒度是“指令”级别,线程束内所有线程执行同一条指令。B、C、D 均不准确。
Q9. 以下哪些是 Graphcore IPU 的核心特点?
- A.1472 个独立处理核心← 正确答案
- B.支持 MIMD 多指令流并行← 正确答案
- C.使用 Poplar 编译器进行图映射← 正确答案
- D.完全取代 GPU 成为通用计算芯片
答案:ABC。IPU 的核心特点包括大数量核心、MIMD 架构和 Poplar 编译器生态。D 选项错误,IPU 是面向 AI 计算的专用芯片,不能完全取代 GPU 的通用计算能力。
Q10. 采用 Poplar 编译器时,映射优化目标通常包含哪些因素?
- A.最小化计算时间与通信时间的加权和← 正确答案
- B.最大化核心数量的使用率
- C.最小化片上存储总量
- D.最大化编译器运行速度
答案:A。Poplar 的映射优化核心是在计算时间与通信时间之间找到平衡点,通过加权求和的方式平衡负载。B、C、D 都不是编译器的主要优化目标。