4. 硅光计算的任务映射基本问题
把一个人工智能计算任务放到硅光计算芯片上执行,并不是把矩阵乘法的循环直接翻译成光路控制指令那么简单。硅光计算的核心优势来自光在波导中传播时的线性干涉与波长复用,但这也意味着任务必须被重新表达成“光域可执行”的形式。任务映射要回答五个相互纠缠的问题:计算任务如何表示、算子能否落到光域、波长如何分配、相位如何配置、以及用什么指标判断映射好坏。本节围绕这五个问题展开,并给出可操作的表示与配置方法。
一、计算任务图表示:从算子到可映射图
任务映射的起点是计算任务图。对硅光计算而言,最合适的表示是带权有向无环图:节点表示算子或张量操作,边表示数据依赖,边上携带张量形状、数据类型和精度要求。与通用计算图不同,硅光任务图还需要标注每个算子的“光域可执行性”和“可融合性”。例如一个卷积层可以拆成 im2col 后的矩阵乘法,而矩阵乘法正是马赫-曾德尔干涉仪阵列(MZI mesh)最擅长的操作;但激活函数、归一化、softmax 等非线性操作通常无法直接在光域完成,必须切回电域。
因此,任务图在映射前要经过一次“光域切分”:把整图划分为若干光域子图(矩阵乘、向量点积、波长加权求和)和电域子图(非线性、控制、缓存)。切分边界就是光电转换点,每个边界都会引入 O/E/O 转换延迟和能耗,所以切分粒度直接决定系统效率。一个实用的表示方法是给每条边标注“若在此处切分,需付出的转换代价”,映射算法据此决定融合范围。
二、光域算子映射约束
光域算子不是任意可用的,它受物理结构约束。以最常见的 MZI mesh 为例,一个 N×N 的干涉阵列在理想情况下实现的是 N×N 酉矩阵乘法;若要实现任意实数矩阵,需要借助奇异值分解,把矩阵写成 UΣVᵀ,其中 U、V 是酉矩阵,Σ 是对角缩放。这意味着一个任意矩阵乘法往往需要“两个干涉阵列 + 一个衰减/增益层”才能完成,而不是单个阵列。
约束还包括:维度约束(阵列规模固定,大矩阵必须分块)、非负约束(光强非负,负数需用差分或相位编码表示)、精度约束(相位量化位数决定有效位宽)、串扰约束(相邻波导耦合带来误差)。这些约束共同决定了哪些算子能映射、以什么粒度映射。例如一个 512×512 的矩阵乘法,在 64×64 的阵列上需要 8×8 分块,分块后还要考虑块间累加是在光域还是电域完成。
三、波长分配与相位配置
波分复用是硅光计算提升吞吐的关键手段。同一组 MZI 阵列可以在不同波长上并行处理多路数据,每个波长承载一个独立的矩阵乘或一个独立的输入通道。波长分配要解决两个问题:一是波长与数据通道的绑定,二是波长间隔与串扰的权衡。典型密集波分复用间隔为 0.8 nm 或 1.6 nm,间隔越小通道越多,但相邻通道串扰越大,通常要求相邻通道隔离度大于 20 dB。
相位配置是波长分配之后的执行环节。每个 MZI 由两个移相器控制,相位差决定分光比。配置流程是:先根据目标矩阵做分解,得到每个 MZI 的目标相位;再把目标相位量化为移相器可实现的电压/电流值;最后通过热光或电光调相写入。热光移相器功耗较高但稳定,电光移相器速度快但存在载流子吸收损耗。配置完成后需要读取监测光电二极管,确认实际相位与目标相位的偏差在容差内。
四、映射优化目标与评价指标
映射不是唯一解,需要在多个目标之间权衡。最常用的四个指标是:端到端时延、单次推理能耗、数值精度和资源占用率。时延由光域计算时间、O/E/O 转换时间和电域控制开销共同决定;能耗主要来自激光器、移相器加热和光电转换;精度受相位量化、串扰和探测器噪声影响;资源占用率则反映阵列和波长是否被充分利用。
这些指标往往互相冲突。例如增加波长通道数可以提升吞吐、降低单位数据能耗,但会加剧串扰、降低精度;增大分块粒度可以减少转换次数,但会降低阵列利用率。因此映射优化通常写成带约束的多目标问题,实际中常用加权求和或帕累托前沿的方式求解。一个可操作的判断方法是:先固定精度下限(例如有效位宽不低于 6 bit),再在满足精度的映射方案中最小化“时延×能耗”的乘积。
五、一个可参考的映射检查清单
在实际工程中,可以用下面这份清单快速检查一个映射方案是否完整。它不替代优化算法,但能避免遗漏关键约束。
| 检查项 | 判断依据 | 示例阈值 |
|---|---|---|
| 算子是否已切分 | 光域/电域边界明确 | 每个非线性算子都有电域归属 |
| 矩阵是否可分解 | UΣVᵀ 分解可行 | 阵列规模 ≥ 矩阵秩 |
| 波长是否冲突 | 通道间隔与隔离度 | 间隔 ≥ 0.8 nm,隔离度 ≥ 20 dB |
| 相位是否可量化 | 量化位宽与容差 | 相位误差 ≤ 2π/64 |
| 精度是否达标 | 有效位宽估算 | ≥ 6 bit |
| 资源是否过载 | 阵列/波长占用率 | ≤ 90% |