AIPS 和 Linux:历史回顾
那是一个黑暗而暴风雨的夜晚。好吧,也许不是——但在 1993 年秋末的一天,弗吉尼亚州中部,天气非常恶劣。我怀着 eager anticipation 等待着弗吉尼亚理工大学的一位三年级大学生的到来,他带着珍贵的货物:我们的旗舰应用程序 AIPS 的工作版本,他已将其移植到一个全新的且相对默默无闻的操作系统。他还带来了一些将彻底改变我工作场所计算基础的东西:一个 QIC-60 磁带盒,其中包含一个非常早期、经过大量修改和定制的 SLS 发行版 Linux。我相信它是基于内核 0.99.12,尽管也可能是 0.99.11。
我在位于弗吉尼亚州夏洛茨维尔的国家射电天文台 (NRAO) 总部工作。我们的任务是为天文学家提供世界一流的设施,通过无线电波观察宇宙。尽管大多数人认为我们 倾听 任何东西,但事实并非如此。相反,我们收集信号,通过一些令人印象深刻的硬件和软件进行处理,最终得到天空的图片,如果我们能在电磁频谱的无线电部分 看到 天空,天空会是什么样子。
在 1993 年的那个特殊的日子里,我的主要职责是系统编程和 AIPS(天文图像处理系统)的全球安装支持。这是 NRAO 用于处理来自我们望远镜的信号的主要应用程序。它是命令行解释器、图形图像显示和大量(300 多个)程序或“任务”的组合,这些程序或“任务”执行更专门的功能。这些功能范围从简单的簿记任务到严肃的数值计算算法,例如反卷积、最大熵、傅里叶变换等等。

图 1. 最紧凑配置的甚大天线阵
国家射电天文台成立于 20 世纪 50 年代末的衰落时期,现在是一个设施,在美国各地有几个分散的地点设有望远镜。总部位于夏洛茨维尔,其主要仪器是甚大天线阵 (VLA),位于新墨西哥州索科罗以西 50 英里处;西弗吉尼亚州的绿岸望远镜(GBT,计划于 2000 年 8 月投入使用)和甚长基线阵列 (VLBA),该阵列在从夏威夷到新罕布什尔州,以及从华盛顿州到美属维尔京群岛的地点拥有十个大型望远镜。绿岸和 VLA 都设有游客中心。任何看过电影 超时空接触 或 2010 的人都见过 VLA;这两部电影的部分场景都是在圣奥古斯丁平原的 VLA 站点拍摄的。不,VLA 旁边没有峡谷;那是 超时空接触 导演的艺术许可!峡谷实际上是邻近亚利桑那州的切利峡谷。
此外,NRAO 正在与几家欧洲合作伙伴合作开展一个项目,以创建另一个阵列,这次是用于更高频率(毫米波长)无线电波。这个项目将包括 64 个中等大小的可移动望远镜,这些望远镜将位于智利安第斯山脉偏远地区一个名为阿塔卡玛的 15,000 英尺以上的高原上。目前正处于设计阶段的阿塔卡玛大型毫米波阵列 (ALMA) 有望在天文学领域开辟更多新领域。
可以看出,我们在大多数仪器中使用射电望远镜阵列。它们协同工作,可以提供比单独行动更好的图像。用于关联阵列中所有望远镜信号的技术称为 孔径合成,并用于我们目前的所有阵列。这项技术是 AIPS 最重要的 raison d'etre。

图 3. 四天线阵列中的六个唯一基线
在不深入过多技术细节的情况下,以下是孔径合成的工作原理。使用多个射电望远镜(天线),捕获来自每个天线的信号,通过电线或微波“波导”发送,数字化并馈送到称为“相关器”的专用计算机中。这台独一无二的计算机接收来自每个天线的信号,并将它们与所有其他信号相关联。结果是一系列称为“基线”的信号,因为它们表示连接两个天线的基线两端信号的相关性。对于一组 n 个天线,您将获得 nx(n-1)/2 个基线。例如,如果 n 为 4,您将得到 (4x3)/2 或 6 个基线(参见图 3)。您不会将天线与其自身相关联,并且您不会将天线 1-天线 2 和天线 2-天线 1 基线视为单独的基线。
当信号像这样相关时,您最终会得到一组“可见性”,这几乎就像到达每个天线的信号的傅里叶变换。基本上,每个基线都给出了“U-V”平面上的一个点,并且对结果进行网格化、插值和变换可以生成实际图像。真正酷的是,此图像具有与使用宽度与 整个阵列 相同的望远镜拍摄的图像相同的分辨率。因此,VLA 在其“A”配置中,最远的天线之间相隔 15 英里以上,相当于直径 15 英里的望远镜。更棒的是;借助 VLBA,我们在夏威夷和圣克罗伊的天线之间拥有地球直径的大部分。正如你们中的许多人可能知道的那样,在天文学中,当您想“放大”时,直径才是重要的。我们不是以角秒(月球看起来大约是 30 分 角,或 1800 角秒)来测量角距离,而是使用 VLBA 以毫角秒来测量事物。
AIPS 是一个支持射电望远镜获取的数据的简化和分析的软件包。它对于像 VLA 和 VLBA 这样的望远镜阵列最有用。在过去的几年中,它也已成功用于“空间 VLBI”(甚长基线干涉测量),与日本卫星(HALCA 或 VSOP)上的小型望远镜结合使用。
AIPS 是我们现在大多数人所说的“遗留软件”,最初是用一种真正古老的 FORTRAN 方言(甚至早于受人尊敬的 FORTRAN IV)编写的。AIPS 现在使用 FORTRAN 77,尽管它已被至少一个 FORTRAN 90 编译器成功消化。
夏洛茨维尔的一台 Modcomp 计算机是第一个实际托管工作 AIPS 系统的系统,它很快传播到 IBM 360 大型机上托管的访客 UNIX 系统。从那里,它在 20 世纪 80 年代初传播到 VAX/VMS 系统,通常带有附加的浮点系统阵列处理器(这种特殊的设备在道义上等同于 80387 浮点加速器,一些老手可能还记得它是许多 386 系统不可或缺的一部分)。在 20 世纪 80 年代后期,UNIX 以重要方式重新进入 AIPS 的世界,首先是基于 Motorola-68020 的 Sun-3 系列系统,然后是一系列其他系统,包括 Cray (Unicos)、Convex 和 Alliant 系统。
到 80 年代末期,VMS 在 AIPS 世界中的主导地位受到了严重质疑。Sun 等新兴公司的性能开始挑战其性价比,而第一批 SPARC 工作站完全击败了它们。在 20 世纪 90 年代初期,AIPS 转向了 UNIX 变体的杂烩:AIX、Stardent(短暂地)、Ultrix、HP-UX、SGI 的 Irix 和 DEC(哎呀,Compaq)OSF1。曾尝试移植到 IBM 3090,但由于其上的非 IEEE 浮点格式的精度问题而失败。在这场活跃的活动中,Jeff Uphoff 完成了到 Linux 的移植。
1993 年秋季,NRAO 收到了来自布莱克斯堡弗吉尼亚理工大学的一位射电天文学家的查询,请求允许他的一名学生将 AIPS 复制到他的 PC 上,以尝试移植到一个名为 Linux 的新系统。(当时,AIPS 仍然是专有代码,根据相当繁琐的许可证和用户协议发布给非营利组织;这种情况后来发生了变化。)当时 NRAO AIPS 组中的大多数人的直接反应是礼貌的怀疑,但我们认为这将是一项有趣的练习。当时我们一直在考虑在个人计算机上运行 AIPS 的问题,但尚未着手进行。
仅仅两周后,我接到了来自同一位 Jeff Uphoff 的技术支持电话,他在电话中暗示在使用 f2c/gcc 编译例程时遇到了一些困难(请记住,那是 1993 年,在 g77 变得突出之前)。事实证明,问题很小,Jeff 已经成功完成了整个移植,甚至达到了运行基准“Dirty Dozen Tasks”或 DDT 套件的程度。此基准测试在旧式 SPARCstation 1 或 SPARC IPX 上大约需要一个小时才能运行。在 Jeff 可怜的“高地”386 上,它花费了一天多的时间,但它以可接受的精度结果完成了运行。我们同样对他在他的小型 DeskJet 500 打印机上打印 PostScript 输出的能力印象深刻;我们当时的 HP 和 QMS 打印机都花费了数千美元。
毋庸置疑,这一壮举以及 Linux 所需修改的贡献对 NRAO 产生了巨大影响。在一个月之内,我们邀请 Jeff 来访,并在我们实验室的系统上安装了运行 AIPS 的 Linux 副本。这就是上面引言中提到的黑暗而暴风雨的夜晚,它见证了我们两人手持(当时最先进的)Gateway 486/66 系统的启动软盘,忙于为 AIPS 做好准备。在几个小时内,我们安装了系统,从各个方面和目的来看,它都像一台 Sun,甚至包括 Open Look 窗口管理器,并且忙于处理 AIPS 数据。我们对其进行了基准测试,速度约为我们当时拥有的 Sparc IPX 系统的一半。看到 486 的成本远低于 IPX,这再次引起了我们的注意。
在原始移植后的几个月内,NRAO 将 Jeff Uphoff 列入其工资单,并且在 Intel 硬件上提高 AIPS 性能的竞赛开始了。在此过程中,NRAO 夏洛茨维尔计算部门最终拥有了许多执行服务器职责的 Linux 机器,并且一些程序员和科学家自愿(在某些情况下,要求)使用 Linux 桌面系统。该操作系统也在我们的许多家庭系统中像野火一样蔓延,作为 Redmond 操作系统的辅助或在某些情况下作为替代品。
然而,正是使用 GNU g77 FORTRAN 编译器的 EGCS 版本,才将 Intel/Linux 平台推到了射电天文学界的前沿。1995 年,使用 EGCS 1.0.2 版本,我们(好吧,好吧,又是 Jeff;他为什么不写这篇文章呢?)成功地在 g77 下构建了 AIPS。这提高了 Pentium Pro 200 上 AIPSMark(我们的基准,定义为 4000 除以在我们的大型数据集上运行 DDT 的秒数;AIPSMark 越大越好,Sparc IPX 为 1.0)从 3.3 到大约 5。通过进一步使用优化参数进行诱导,最终的 AIPSMark 超过了 6。在这突然的跌落中,以前被 Sun、IBM、DEC 和 HP 占据的性价比曲线被彻底打破。到 1998 年,NRAO 正在订购 Linux/Intel 桌面作为科学家首选的工作站,以取代 SPARC Ultra 系统。1999 年,Linux 开始超越 Alpha 和高端 SPARC 等高性能公共工作站;我们在夏洛茨维尔的明星产品是 Pentium III Xeon 550MHz 系统,AIPSMark 超过 21。这仍然远未达到顶级 HP 和 Alpha 系统的超高性能(均为 34 个 AIPSMark 左右),但就性价比而言,它仍然是压倒性的胜利。
在此期间,另一个重大变化发生了。所有这些接触到 copyleft 代码的行为都对我们产生了影响。如前所述,AIPS 最初是在限制性用户协议下发布的,该协议禁止重新分发,并且对我们自己的天文学界中的某些人来说是令人不悦甚至无法接受的。不仅如此,而且与之相关的管理成本也是一种负担。
因此,我们中的几个人发起了一场相当积极的运动,以便在下一次定期发布时将 AIPS 转移到 GNU(自由软件基金会)通用公共许可证。实际上没有人反对该原则,并且在我们的业务部门进行了简短审查后,我们获得了批准。将三段 copyleft 声明应用于数万个文件并非易事,但我们设法将其自动化。(Shell 脚本和 Perl 脚本几乎可以做任何事情。)AIPS 的分发从那时开始起飞,现在,如果您在世界任何地方遇到一位射电天文学家,她很可能在某处拥有 AIPS CD-ROM 或已将其安装在她的系统上。
在 1998 年初,当 Jeff 离开去追求更有利可图的职业(一家以前保密的公司 Transmeta)时,在 AIPS 社区中,Intel/Linux 平台实现完全世界统治还剩下两个主要障碍。这些是在 NFS 挂载的文件系统上的文件锁定,以及对大于 2GB 的文件的支持。随着版本 2.2 中基于内核的 NFS 的出现,第一个问题现在已不再重要。Jeff 编写了 Linux statd,它是 statd-lockd 对的两半之一,该对主要在 NRAO,部分在 Transmeta 管理所有 NFS 文件锁。
至于文件大小的 2GB 限制,现在在这方面也有了希望。随着 SGI 承诺发布其 XFS 代码,这种日志文件系统——在其原始 Irix 环境中提供对大文件的支持——很可能会打破这一障碍。它还应该提供更强大的文件系统,并有望缩短 fsck 20GB 分区所需的时间。
在离开之前,Jeff 确实为 AIPS 的后续项目 AIPS++ 做出了贡献。这个大型项目现在即将成熟,幸运的是,它效仿了其父项目的步伐,采用了通用公共许可证和 Intel/Linux 作为其领先平台之一。
如果您想亲身体验该软件,请将您的浏览器指向 NRAO 的主页,然后点击“软件”链接。但请注意:它不是一个小软件包,需要大约 400MB 的磁盘空间,并且安装过程非常复杂。如果您想分析来自 VLA 的数据,它也最有用;如果您想要一个更简单的程序,请查看 Bill Cotton 的 FITSView。
在许多严肃的天文站点,您会发现图像和数据的主要格式是 FITS,即灵活图像传输系统。这种格式是由 NRAO 和其他科学家的联盟在 1980 年左右发明的,以便他们可以共享数据。流行的 xv 查看器支持此格式的更简单版本。
