阿帕网发展的主要挑战之一是解决异构计算机之间的通信问题。在20世纪60年代末和70年代,有几家计算机制造商,他们的机器拥有不同的字长、二进制编码方案、指令集和过多的操作系统。底层的同构接口消息处理器(imp)网络,我们今天称之为“路由器”或“分组交换机”,为连接到阿帕网的异构“主机”提供了统一的接口。由Stephen D. Crocker领导的网络工作组通过发明网络控制协议(NCP)和诸如文件传输和TELNET(远程终端访问)等应用协议解决了这个问题。应对异质性是一个挑战。因特网设计者使用TCP/IP协议套件解决了互连异构包交换网络的问题。
在计算领域,简化指令集计算体系结构(RISC)提供了广泛采用的指令集设计原则,David A. Patterson和John L. Hennessy因此获得了享有盛誉的2017 ACM A.M.图灵奖。尽管我不是一名硬件设计师,但我被Margaret Martonosi(国家计算机、信息系统和工程科学基金会助理主任,谷歌同事Robert Iannucci)等人的观察震惊了,他认为计算机设计中的异质性正在回归,同时也给编译器设计师带来了挑战。除了基于risc的cpu,我们现在看到图形处理单元(gpu)、张量流处理单元(tpu)、量子处理单元(qpu)和现场可编程门阵列(fpga)正在使用或即将出现。每种方法都具有独特的属性,可以为困难(甚至np困难)问题提供最佳的编程解决方案。
混合使用多种计算能力的想法并不新鲜。在20世纪50年代和60年代初,我的论文导师杰拉尔德·埃斯特林和他的同事们研究了他们所谓的“固定加变量计算”。一个我以前写过这方面的文章。b这一次,我想把重点放在编译器作者所面临的挑战上,即将传统和新的编程语言映射到各种编程平台上的函数运算中,要记住编译器必须考虑到它们的各种结果和潜在的并行性。Martonosi指出,必须进行测试和分析,以增加物理设备按预期工作的信心,以及将程序映射到硬件组合上产生预期的计算结果。任何熟悉数值分析问题的人都会理解细节的重要性。例如,如果对实际计算的细节关注不足,大规模浮点计算的精度损失可能会带来错误的结果。
计算是一个无穷无尽的前沿,在寻找新的解决方案的过程中,我们有无穷无尽的新问题要面对。
在许多其他考虑因素中,编译器编写者需要确定如何为相关计算单元建立数据输入或初始状态。如何表示数据?如何将它有利地转移到系统中的其他异构计算组件?如果预期并行操作,如何管理计算的控制流?“运行时”环境是什么样子的?如果计算出了问题,如何检测并发出信号?从某种意义上说,在一个更加异构的计算环境中,这些老问题需要新的答案。正如阿帕网和互联网设计者纠结于互操作性一样,异构计算环境的设计者也必须纠结于互操作性。
这些问题既有令人满意的一面,又不令人惊讶。计算是一个无穷无尽的前沿,在寻找新的解决方案的过程中,我们有无穷无尽的新问题要面对。追求这些想法是至关重要的。“计算-X”,即几乎所有“X”的科学值,是20世纪中期开始的范式转变的一部分th并延续至今。我们在更大范围内以新的方式进行计算的能力将对科学理解的进展速度产生重大影响。
数字图书馆是由计算机协会出版的。版权所有©2021 ACM, Inc.
没有找到条目