Linux 驱动四面 3-D 显示器

作者:Douglas B. Maxwell

PC 集群的性价比使其成为传统高端可视化超级计算机的可行替代方案。商品 PC 硬件的快速发展既降低了成本,又加速了过时的计算周期。从 SGI 购买图形功能的通用规则是每个图形管道预算 25 万美元。对于那些买不起配备四个图形管道的 Onyx 级计算机的人来说,可以在两个管道中添加额外的光栅管理器,以驱动四面显示系统。相比之下,我们的实验集群每个节点的成本不到 1000 美元。加上视频矩阵切换器,总成本不到 15000 美元。即使考虑到快速的过时周期,价格差异也如此之大,以至于一个组织可以在一台 SGI 系统的生命周期内多次更换或升级图形集群。PC 的另一个优势是低成本部件的广泛可用性。总的来说,PC 具有成本效益、强大且灵活。

我们展示了一个实验,将商品集群集成到现有的四面显示系统——Mechdyne 公司的环绕屏幕可视化系统 (SSVR)。目标是在多个墙面上实现主动立体可视化,使用帧锁定、交换锁定和数据锁定功能。

高端可视化超级计算机将多墙面、主动立体可视化打包在一起提供。立体呈现和场景图数据的协调由计算机在硬件中或通过调用专有软件库自动处理。集群从一开始就被设计为尝试取代老化的 SGI 计算设备,这些设备用于驱动我们当前的四面显示系统。我们发现自己正在考验配备 Infinite Reality 2 图形的 Onyx 2 系统的能力,因为需要渲染越来越多的多边形,同时需要主动立体的固定帧速率。在实施集群时,必须处理这些问题,以便在多个屏幕上产生连贯的场景。

集群节点之间的通信至关重要。像素、几何图元甚至场景图数据等数据在节点之间传递。数据的处理方式和传递的数据类型极大地影响了集群的网络带宽需求。设置图形集群通信软件架构的两种基本方法是客户端/服务器和主/从。

在客户端/服务器方法中,单个节点向图形渲染客户端提供数据。这种安排的优点是许多应用程序可以嵌入与相同渲染客户端节点一起工作的服务器。这种环境非常灵活。缺点是网络带宽消耗更高。大多数客户端/服务器集群依赖于相对昂贵的 Myrinet 或千兆以太网硬件。

Linux Powers Four-Wall 3-D Display

图 1. 商品集群配置图

本项目中使用的主/从方法由多个节点组成,其中图形集群的每个节点在本地存储并运行图形应用程序的相同副本。因此,只需要在节点之间共享少量信息,网络带宽不再是主要问题。此信息可能仅包括输入设备数据和时间戳。在这种配置中,主节点处理应用程序状态更改。

所有图形集群都必须满足以下三个要求

  • 帧锁定:同步集群中每个节点的视频帧的过程,以便它们产生流畅、连贯的图像。帧锁定可以通过软件或硬件实现。

  • 交换锁定:同步帧缓冲区渲染和交换的过程。这是必要的,因为场景的每个视图包含不同的数据量和要渲染的多边形数量。这可能会导致每个节点每个帧的渲染时间不同。

  • 数据锁定:同步视图以保持屏幕之间一致性的过程。由于集群中的每个节点都从本地存储的信息中渲染其帧,因此这成为一个问题。

我们使用了一组标准 PC 配置,配备了 MSI G4Ti4600 显卡,由 NVIDIA 的 GeForce4 Ti 图形处理单元 (GPU) 和 128Mb DDR 视频内存驱动。虽然不是完全必要,但 PC 是相同的,这使得软件安装更容易。PC 通过 100BaseT 网络适配器和 100BaseT 交换机进行通信。

SSVR 的投影仪连接到 Extron CrossPoint Plus 124 矩阵视频切换器。该切换器能够接受来自 12 个源的视频输入并输出到 4 个源。

由于帧锁定和数据锁定在软件中通过并行端口处理,因此制造了一个特殊的盒子(图 2)来适当处理信号。这个盒子也是用商用现成硬件制造的,成本不到 20 美元。除了控制切换器外,这个盒子还向一组 Crystal Eyes 红外发射器输出帧锁定信号。

Linux Powers Four-Wall 3-D Display

图 2. 一个通过并行端口连接处理帧锁定和数据锁定的制造盒子。

系统实现

各种软件用于处理集群的主动立体和场景同步需求。商品集群构建在 Red Hat Linux 7.2 的标准安装之上,然后对内核进行修补以包含实时应用程序接口 (RTAI),这允许低延迟和任务完成时间。

SoftGenLock 和 RTAI 协同使用以提供软件主动立体解决方案。RTAI 内核模块检测显示器的垂直刷新,并更改显卡内存中的指针,该指针告诉显卡在屏幕上绘制什么。通过在 XFree86 中指定虚拟帧缓冲区,为应用程序提供双倍大小的缓冲区,该缓冲区是绘制到屏幕的实际帧缓冲区的两倍大小。例如,如果在主动立体中以 1024 × 768 的分辨率显示,则虚拟桌面需要为 2048 × 768 的分辨率。RTAI 内核模块将帧缓冲区分成两半,并交替显示 1024 × 768 块的场景。应用程序通过渲染到 X 帧缓冲区的左右两侧来绘制立体图像,分别用于右眼和左眼。

帧锁定/数据锁定是通过在并行端口上同步集群中的机器来实现的。RTAI 内核模块写入并行端口上的一个引脚,并从另一个引脚读取,以确保集群中的其他机器已完成一个帧。主节点告诉集群中的所有其他节点何时绘制,集群中的其他节点报告它们何时准备好新帧。数据锁定是通过确保集群中的从属机器在并行端口处于特定状态时处于正确的眼睛上来实现的。

SoftGenLock 不同步集群节点之间的应用程序;它提供数据锁定和立体。应用程序负责同步应用程序中的视锥体和动画。最后,由于 SoftGenLock 仅使用 VGA 寄存器,因此它可能与任何显卡一起使用。

在安装 PC 集群时,在设置之前必须处理许多问题。以下是重点以及关于如何正确设置系统的一些建议

  • 确保集群设置位置有足够的 HVAC、电源和网络接入。

  • 将集群和显示系统设置在不同的房间,因为风扇、驱动器等的噪音可能会分散注意力。

  • 准备好处理与铺设电缆相关的许多问题。在此阶段花费时间标记和检查电缆的适当尺寸和长度将节省以后的时间。这将减轻信号衰减和简单地在“巢”中丢失电缆的问题。

  • 创建一个主电源开关以一次关闭所有单元。

我们在不到两周的时间内构建并安装了一个三面墙集群。此集群配置为使用主动立体,并具有演示交换锁定和数据锁定的能力。

测试和评估

我们通过实施一个简单的可视化软件系统来测试 PC 商品集群。我们利用了可互操作的软件架构 VR Juggler,它为与各种显示、跟踪和计算系统以及各种交互设备接口提供了一组编程抽象。该软件用于可视化地形信息,具有多种显示模式,包括立体模式。它可以重新编译以在不同的计算架构上工作,并通过包含不同的默认设备配置文件在执行时重新配置。

该应用程序与集群系统平滑集成,并且性能超出预期。显示器和立体观看的质量与使用 SGI Onyx 2 和 IR2 图形的三个墙面上运行的相同软件相当。但是,集群能够以更好的性能可视化数据。图 3 显示了在四面显示系统的三个侧墙上运行的集群软件。

Linux Powers Four-Wall 3-D Display

图 3. 驱动四面显示器的测试应用程序

摘要和结论

图形 PC 集群的使用现在正成为使用单个大型可视化超级计算机的可行低成本替代方案。PC 和相关的视频硬件相当便宜、计算能力强大且灵活。也有大量可用于它们的软件,例如 VR Juggler,它允许应用程序轻松地与各种显示系统和交互设备接口。我们的集群实验探索了逐步淘汰和替换现有昂贵的单个大型计算硬件的可行性。结果表明,我们可以在不久的将来实现这种转变,我们相信我们的经验将激励其他人效仿。

致谢

作者要感谢以下人员对该项目的支持和贡献:Aaron Bryden、Greg S. Schmidt、Ian Roth 和 J. Edward Swan II。

资源

Linux Powers Four-Wall 3-D Display
电子邮件:maxwelldb@npt.nuwc.navy.mil

Douglas B. Maxwell (vrdeity@yahoo.com) 是一位机械工程师,最近调到位于罗德岛州纽波特的 Naval Undersea Warfare Center 的武器和对抗措施控制小组。他之前的职位是华盛顿特区 Naval Research Laboratory 虚拟现实实验室。他专注于虚拟环境中的设计合成、模拟和培训。

加载 Disqus 评论