Linux 遥感
ImageLinks 公司位于佛罗里达州墨尔本市,为商业企业处理大型卫星和航空图像。这项工作需要通过计算密集型算法处理千兆字节的图像数据,进行三维投影、图像处理和复杂的数据融合。本文介绍了 ImageLinks 公司向 Linux 的转换以及由此带来的好处。
1996 年,ImageLinks 公司被允许将之前保密的政府软件商业化。这包括超过 5,000 个源代码文件的面向对象 C++ 代码,这些代码历时 15 年开发完成。业务建立在高端 SGI 和 Sun 平台以及相关服务器之上。我们租赁了价值超过五十万美元的设备,每月付款超过 15,000 美元。除了设备成本外,还有昂贵的专有软件许可证,用于编译器、工具和库。当时,即使是内存升级也必须以高昂的成本通过供应商购买,以免使我们的维护协议失效。
几位技术人员已经在家用机器上使用 Linux,我们想知道移植我们的生产软件需要做些什么。有一天午餐时讨论后,我们决定去当地的电脑零件商店,用公司信用卡购买了我们需要的物品,并开始了一项秘密行动来移植所有代码。
我们安装了 Red Hat 5.2 并开始了移植过程。在接下来的几个月里,Dave Burken 和 Ken Melero 来回传递项目,查找并纠正平台依赖性。当时,主要的障碍是编译器无法正确处理的大量模板代码。随着 Red Hat 6.0 的发布和安装,GCC 编译器能够直接处理模板,移植工作迅速完成。
我们最初的假设是,在 Intel 平台上进行 Linux 移植将产生更具成本效益的解决方案,但我们不相信性能能够与高端工作站相媲美。幸运的是,我们在第二个假设上错了。我们在 Linux 平台上获得显着性能提升的最初迹象是在编译时间上观察到的。“make World”编译我们软件的所有源代码在 SGI Indigo 2s 上需要 10 到 12 个小时。同样的编译在双处理器奔腾计算机上不到两个小时就完成了——更说明问题的是生成的执行文件的大小。gcc 工具的输出生成的执行文件大约是专有编译器大小的一半。这表明了卓越的代码优化,这是开源开发工具的众多优势之一。当我们将几台测试 Linux 机器部署到生产环境中时,这种性能非常明显。最极端的例子是跨传感器图像融合运行。
跨传感器融合产品是通过组合不同类别的卫星图像以创建新产品而制成的。例如,我们经常将高分辨率黑白图像与低分辨率多光谱(彩色)图像结合起来。这些图像通常从不同的视点、不同的分辨率、比例和时间获取。在将卫星图像投影到空间的内部三维模型时,所有这些因素都会被考虑在内,并在三维空间中执行复杂的变换。一旦完成此操作,智能重采样器将遍历三维模型,将像素组合成所需的地图投影和比例。这涉及通过复杂的图像处理和三维变换处理千兆字节的数字图像数据。在专有工作站上,其中一些生产运行需要一个周末的处理时间并不罕见。使用 Linux 机器,我们观察到这些融合的性能提高了近一个数量级。这种显着增加是由于商品硬件的更高性能以及软件工具中优化的代码。
下一个主要好处来自将 Beowulf 集群应用于我们的生产运行。Beowulf 集群可以简单地解释为将一堆计算机与商品网络连接在一起,以实现经济高效的超级计算解决方案。大多数安装使用带有优化内核的 Linux 机器,这些机器通过本地网络上的以太网通信连接在一起。一个节点被指定为主节点,控制从属节点的调度以及与外部世界的所有通信。过去,超级计算机需要为超级计算机的特定架构手工制作软件。PVM 和 MPI 等并行库的最新进展使这项任务变得更加通用。借助这些库,程序员可以识别代码中可以并行化的区域。然后,库负责将其映射到超级计算机体系结构的细节。幸运的是,我们的算法是 CPU 密集型的,并且是粗粒度并行的。换句话说,代码主要由浮点数学计算组成,并且问题可以分成多个部分,这些部分不需要处理器之间进行大量通信。我们的实现涉及将图像分割成瓦片并将它们传递到不同的计算机进行处理。
我们构建了一个 14 节点集群,将 PVM 连接到我们的代码中,并观察到随着我们向集群添加处理器,性能呈线性扩展。执行跟踪显示,有短暂的通信数据传递到节点,然后节点花费大量时间执行必要的计算。事实证明,这对于集群的应用来说是理想的情况——为了更快地运行和推送更多数据,我们只需添加更多处理器。随着 Beowulf 集群的部署,复杂的跨传感器融合作业又下降了一个数量级。在专有机器上需要一个周末才能完成的作业,在单台 Linux 机器上缩短到几个小时,现在可以通过 Beowulf 集群在几分钟内运行完成。
除了性能和成本之外,我们的业务还见证了其他好处,包括改进的稳定性、文档和快速的软件更新。
Mark Lucas 是 ImageLinks 公司的首席技术官。他是 remotesensing.org 的创始人,该网站旨在促进遥感和地理信息系统软件的开源开发。他拥有电气工程学士学位、计算机科学硕士学位,并且是美国空军的退役军官。

图 2. 佛罗里达州墨尔本市的融合卫星图像的一部分。该图像由 Landsat 5 的颜色与印度 IRS 1C 卫星的 5 米空间分辨率相结合而成。

图 3. 加利福尼亚州米尔皮塔斯地区的合成图像。多个卫星图像和矢量图层融合在一起以制作产品。

图 4. ImageLinks Beowulf 集群由 12 个节点、RAID 磁盘驱动器、100BT 以太网交换机和电源调节组成。

图 5. 四个 650MHz 奔腾 III 节点,在一个 4U 机架式单元中配备 384 兆内存。

图 6. Jeff Largent 在节点安装到机架之前对其进行测试。
