《自然》评选改变科学的10个计算机代码项目( 三 )


预测领先者:大气环流模式(1969年)
在第二次世界大战结束时, 计算机先驱约翰·冯·诺伊曼开始将几年前用于计算弹道轨迹和武器设计的计算机转向天气预测问题 。 真锅淑郎解释道, 在那之前, “天气预报只是经验性的”, 即利用经验和直觉来预测接下来会发生什么 。 相比之下, 冯·诺伊曼的团队“试图基于物理定律进行数值天气预测” 。
新泽西州普林斯顿的美国国家海洋和大气管理局(NOAA)地球物理流体动力学实验室的建模系统部门负责人Venkatramani Balaji表示, 几十年来, 人们已经熟知这些方程式 。 但早期的气象学家无法实际解决这些问题 。 要做到这一点, 需要输入当前的条件, 计算它们在短时间内会如何变化, 并不断重复 。 这个过程非常耗时, 以至于在天气状况实际出现之前还无法完成数学运算 。 1922年, 数学家刘易斯·弗莱·理查森花了几个月时间计算德国慕尼黑的6小时预报 。 根据一段历史记载, 他的结果是“极不准确的”, 包括“在任何已知的陆地条件下都不可能发生的”预测 。 计算机使这个问题变得很容易解决 。
20世纪40年代末, 冯·诺伊曼在普林斯顿高等研究院建立了天气预报团队 。 1955年, 第二个团队——地球物理流体动力学实验室——开始进行他所谓的“无限预测”, 也就是气候建模 。
真锅淑郎于1958年加入气候建模团队, 开始研究大气模型;他的同事柯克·布莱恩将这一模型应用在海洋研究中 。 1969年, 他们成功将二者结合起来, 创造了《自然》杂志在2006年所说的科学计算“里程碑” 。
今天的模型可以将地球表面划分为一个个25公里×25公里的正方形, 并将大气层划分为数十层 。 相比之下, 真锅淑郎和布莱恩的海洋-大气联合模型划分的面积为500平方公里, 将大气分为9个层次, 只覆盖了地球的六分之一 。 尽管如此, Venkatramani Balaji表示, “这个模型做得很好”, 使研究团队第一次能够通过计算机预测二氧化碳含量上升的影响 。
数字运算机:BLAS(1979年)
科学计算通常涉及到使用向量和矩阵进行相对简单的数学运算, 但这样的向量和矩阵实在太多了 。 但在20世纪70年代, 还没有一套普遍认可的计算工具来执行这些运算 。 因此, 从事科学工作的程序员会将时间花在设计高效的代码来进行基本的数学运算, 而不是专注于科学问题 。
编程世界需要一个标准 。 1979年, 这样的标准出现了:基本线性代数程序集(Basic Linear Algebra Subprograms, 简称BLAS) 。 这是一个应用程序接口(API)标准, 用以规范发布基础线性代数操作的数值库, 如矢量或矩阵乘法 。 该标准一直发展到1990年, 为向量数学和后来矩阵数学定义了数十个基本例程 。
美国田纳西大学计算机科学家、BLAS开发团队成员杰克·唐加拉表示, 事实上, BLAS把矩阵和向量数学简化成了和加法和减法一样基本的计算单元 。
美国德克萨斯大学奥斯汀分校的计算机科学家Robert van de Geijn指出, BLAS“可能是为科学计算定义的最重要的接口” 。 除了为常用函数提供标准化的名称之外, 研究人员还可以确保基于BLAS的代码在任何计算机上以相同方式工作 。 该标准还使计算机制造商能够优化BLAS的安装启用, 以实现在其硬件上的快速操作 。
40多年来, BLAS代表了科学计算堆栈的核心, 也就是使科学软件运转的代码 。 美国乔治·华盛顿大学的机械和航空航天工程师洛雷娜·巴尔巴称其为“五层代码中的机械” 。 而杰克·唐加拉说:“它为我们的计算提供了基础结构 。 ”
显微镜必备:NIH Image(1987年)

推荐阅读