摩尔定律终结了怎么办?从这几个方向找到出路( 二 )


研究人员发现 , 代码生成技术的潜在改进比现在更加了解底层硬件及其约束 , 并且可以通过使用运行时优化和调度在目标架构中保留可移植性 。
德国德累斯顿工业大学教授、ChairforCompilerConstruction负责人JerónimoCastrillón介绍了 , 该机构在有助于管理工作负载的运行时软件方面的研究工作 。 「你可以查看所拥有的硬件功能 , 并将其通过堆栈渗透到应用程序编程接口中 。 要使其正常工作 , 你需要带动应用程序的模型 。 」
例如 , 如果因加速器被其他运行程序占用而导致某个模块无法使用该加速器 , 则调度程序可能会选择为更通用的内核编译的替代方案 , 而不是保留整个应用程序 , 前提是编译后的代码包含足够多的信息使分析成为可能 。
Castrillón认为可能需要针对应用程序中性能敏感的部分进行一次向领域特定语言(DSL)的转换 , 因为它们可以捕获开发人员的更多意图 。 「通常人们认为进行更高级别的抽象会导致性能降低 , 但如果正确地进行抽象 , 情况就不会如此 。 」
Kelly补充道:「使用DSL , 工具可以理解一部分是图形 , 另一部分是网格 , 而所有C/C++编译器看到的都是更底层的代码 。 然后 , 编译器必须经过艰难的过程 , 才能推断将要发生的事情 。 」
自适应异构系统提出了验证和调试的问题:当在特定时间针对特定结构对某个特定实现进行重新优化时 , 程序员如何知道该实现仍然有效?一种可能是使用与硬件设计人员采用技术相似的形式验证技术 , 以在对电路执行优化之后检查电路在功能上是否等效 。
当涉及到在模拟域而不是数字域中运行的加速器时 , 验证问题变得更加困难 。 因此 , 对于数字精度而言 , 采用不同的方法将存在一定的误差 。
AI开发者已经习惯于使用损失函数和类似指标 , 来确定以降低后的精度运行或采用其他近似技术的神经网络能否获得令人满意的性能 。 但是 , 还没有方法可以对其他类型的程序(例如物理模拟)进行类似的分析 , 而用户希望使用固定的高精度格式 。
Kelly称 , 更全面的数值分析对于确定模拟加速器替代更耗能的数字处理器的效果至关重要 。 如今 , 常规的形式验证方法通常被用于硬件设计 , 以检查电路优化是否正确 , 但无法处理不确定性 。 Castrillón表示 , 该领域的进展(如概率模型检测)可能会提供一种通往工具的途径 , 这些工具可以验证所生成的代码是否适合应用程序 , 且无需位级(bit-level)等价 。
Castrillón称:「我不知道这些是否可以组合在一起 。 或者 , 你可以对大型系统进行有力的形式分析 。 」
如果无法组合 , 则可能需要由程序开发者来定义他们可以忍受的准确率级别;如果平台无法满足要求 , 则将受影响的代码模块分配给消耗更多能源或执行速度更慢的数字处理器 。
尽管自动代码生成器或许可以比现在更好地利用加速器 , 但它们与通用核心之间的关系仍然微妙 。 Leiserson表示 , 尽管对于能耗方面的担忧让专用加速器更优 , 但通用性显然将保持其重要性 。 「如果你用专用硬件 , 最好先证明自己会在大多数时间里使用它 。 」
摩尔定律终结了怎么办?从这几个方向找到出路】如果硬件的通用性继续被证明是更好的方法 , 那么向更高能效和速度发展的道路将脱离晶体管数量进入算法层面 , Leiserson总结道 , 「让我们真正开始对芯片性能进行研究吧 , 不要再等着让技术发展推动算力提升了 。 摩尔定律的出现让我们很长一段时间里不再担心算力问题 , 但历史的车轮已经开始了转动 。 」