基于集群的可扩展的虚拟现实平台的制作方法

文档序号:6484016阅读:276来源:国知局
专利名称:基于集群的可扩展的虚拟现实平台的制作方法
技术领域
本发明涉及一种集群技术,尤其涉及一种基于集群的可扩展的虚拟现实平台。
背景技术
集群技术在高性能计算中处理并行化复杂计算已有多年的历史了。运用它可以将分散 的计算系统连接起来,完成单个节点的无法完成的计算任务。集群计算模式是一种经济的 计算模式。集群系统使得用户把普通商用硬件(commodity hardware)系统组成机群,并 根据需要随时在机群中增加新的硬件,提高系统的伸缩性和可用性,既提高了系统的性 能,同时也降低了成本。
集群在场景图形显示上的应用——图形集群(graphics clusters)把一个大的场景 分为多个部分,每个部分分别在一个集群节点(cluster node)上显示。
集群节点也可以称作为图形结点(graphics node)或绘图节点,可以把单个图形节 点的显示称作为渲染(rendering)。
如图1所示,现有技术中的集群通过主节点对集群节点的同步进行管理。
上述现有技术至少存在以下缺点灵活性低、可配置性差。

发明内容
本发明的目的是提供一种灵活性高、可配置性好的可扩展的虚拟现实平台。 本发明的目的是通过以下技术方案实现的
本发明的基于集群的可扩展的虚拟现实平台,包括主节点和多个从节点,主节点和每 个从节点分别连接有投影仪,包括电路板,所述主节点和多个从节点分别用于场景渲染, 所述电路板上设有多个并口插槽,所述主节点和每个从节点分别与一个并口插槽连接,并 分别通过各自连接的并口插槽向电路板写入和读取信号数据,并通过该信号数据对场景同 步进行管理。
由上述木发明提供的技术方案可以看出,本发明所述的基于集群的可扩展的虚拟现实 平台,由于主节点和多个从节点分别用于场景渲染,分别通过各自连接的并口插槽向电路 板写入和读取信号数据,并通过该信号数据对场景同歩进行管理。可以将同步控制权从主节点移交给电路板,提高了集群的灵活性和可配置性。


图l为现有技术中集群平台的原理图2为本发明的基于集群的可扩展的虚拟现实平台的原理图。
具体实施例方式
本发明的基于集群的可扩展的虚拟现实平台,其较佳的具体实施方式
如图2所示,包 括主节点(图中未示出)和多个从节点,主节点和每个从节点分别连接有投影仪,还包括 电路板,所述主节点和多个从节点分别用于场景渲染,所述电路板上设有多个并口插槽, 所述主节点和每个从节点分别与一个并口插槽连接,并分别通过各自连接的并口插槽向电 路板写入和读取信号数据,并通过该信号数据对场景同步进行管理。
所述的信号数据包括同步信号和渲染完成信号;所述主节点和每个从节点分别包含VR Juggler中的SwapLockWiredPlugin插件,用于对场景同步进行管理。
所述场景同步的管理包括
当所述主节点和多个从节点向所述电路板写入的信号数据均为同步信号或均为渲染完 成信号时,电路板将该信号数据输出;当所述主节点和多个从节点从电路板读取到该信号 数据时,驱动所述场景运行下一步。
所述SwapLockWiredPlugin插件包括
通过creatBarrier()函数实现对多节点的同步管理,所述多节点中,主节点接收或发 送信号的顺序与从节点对应,使它们当前的动作保持一致,所述电路板经过同一性对比后 同时给它们发出反馈信号。
所述reateBarrier()函数包括
bool SwapLockWiredPlugin::createBarrier()
sendSigrml(0x00); waitSignalUp(0x80); sendSignal (Oxff); waitSignalDown(0x80);
sendSignal(0x00);
5waitSignalUp(0x80); sendSignal (Oxff); waitSignalDown(0x80);
return(true);
所述SwapLockWiredPlugin插件中的 sendSignal() 、 waitSignalUp() 或 waitSignalDown()中的端口读写函数向电路板写入或读取信号数据。
所述sendSignal()函数包括 void SwapLockWiredPlugin::sendSignal (const unsigned char& val)
outb(val, BASEPORT);}。
所述waitSignalUp ()和waitSignalDown ()中read (mWire, &buf, 1)对应的语句改为 inb(BASEPORT + 1)。
所述并口插槽包括15个针,其中,第2个针用于向所述电路板写入数据;第ll针用于
从所述电路板读取数据。
具体实施例
本发明中主节点(master)和多个从节点(slave)中,每个节点连接一个投影仪, 每个节点的PC机上都有相应的场景显示运行程序,通过VR Juggler中的 SwapLockWiredPlugin插件对场景同步进行管理,通过修改SwapLockWiredPlugin插件功 能,每个SwapLockWiredPlugin用于向一个并口的Pin2写入l或0,电路板分析所有接收到的 0、 l信号,当所有信号为0或1时,通过Pinll输出,当SwapLockWiredPlugin从PINll读取到 信号时,驱动场景运行下一步。
与现有集群平台比较,同步控制权从master移交给了电路板,因此在这一点上, master和slave完全是等同的。电路板接收各节点发来的同步信号和渲染完成信号,并响应 这些信号,其中,同步信号为0,渲染完成信号为l。无论是mater还是slave都从并口的第 ll针读信号,从第2针写信号,此时mater和slave是等同的。
M/S (Master/Slaver)结构又称主从结构。在结构中,有一个Master节点,其余都是 Slave节点。每个图形节点存储一份相同的程序和数据,因此,只有很少的数据(通常这种 数据就是集群节点之间用于控制同步的信号)在节点间传输,对网络性能的依赖也不那么 重要。Master节点负责控制应用程序的执行状态。在VR Juggler中集群即采用 Master/Slaver通信结构。
本发明利用VR Juggler集群功能的插件,使用Master/Slaver通信结构。Master节点负责控制程序的执行和接收来自另一数据端发送的数据(此数据用于控制场景的显示状 态),除了这些差别,Master和Slaver的程序是一样的,并且每个节点所用的配置文件都 是相同的。
Master和Slaver同时担任绘图节点,它们之间的并口与电路板相连,并同时向电路板 发送同歩请求(信号),当且仅当电路板收到所有节点的请求时,才向它们分别IH)执以确 保在同一时进行渲染场景。
在VK Juggler中,集群插件属于Gadgeteer模块,因此它会处理一些底层的硬件事 件,尤其是输入输出设备,这些插件完全是可扩展的。
下面对各个插件的功能进行描述
RIMPlugin (Remote Input Manager)插件
RIMPlugin负责为集群中每个节点分发来自不同输入设备(如追踪器、位置指示器 等)的数据,这是实现集群的交互式应用程序的一种途径。如果没有RMPlugin插件,输入 设备只能在所连接此设备的机器上可见。
StartBarrierPlugin (Start Barrier)插件
当K扁Plugin加载后,StartBarrierPlugin必须也要被加载,StartBarrierPlugin插 件确保集群中所有节点在同一帧开始执行。
ApplicationDataManager (Application Data Manager)插件
ApplicationDataManager插件为开发者提供一种"使得集群中各节点共享应用程序数 据"的方法。这种应用程序数据叫做专用共享数据(Application-specific shared data),专用共享数据是范型类cluster::UserData〈T〉实例,类型T即是集群间应用程序需 要共享的数据类型。T必须继承于抽象类vpr: :SerializableObject并重载它的 writeObject()和readObject()方法。这两种方法分别用于序列化(serializing)和解序 列化(de-serializing)共享数据类型。
在集群节点中,ma"er节点将数据写入共享对象,slave节点将数据从共享对象中读出。
Sw印LockTCPPlugin (TCP Sw即Lock)插件
SwapLockTCPPlugin是基于TCP协议的软件级的交换锁插件,这种实现的使得节点间 通信的时间延迟为1 OO微秒,简单易用且无需任何额外的硬件。 Swapl力ckWiredPlugin (Parallel Port Swap Lock)插件
SwapLockWiredPlugin是基于并口通信的交换锁插件,时间延迟可达IO微秒的量级。 这种插件需要连接用于连接各节点并口的特殊硬件,并且需要实时Linux内核模块。这种插 件能够提供很好的实时性。
本发明修改后的SwapLockWiredPlugin插件
7为了提供实时性的扩展集群方案,本发明在SwapLockWiredPlugin源码基础上进行修 改,使之适应本发明中描述的电路板。具体修改的内容包括
SwapLockWiredPlugin插件对多节点的同步管理是通过creatBarrier()函数实现的, 对creatBarrier()函数的修改主要是将主节点接收或发送信号的顺序与从节点对应,使它 们当前的动作保持一致,电路板会经过同一性对比后同时给它们发出反馈信号。此外为了 实现向并n的指定针读写数据,对SwapLockWiredPlugin中的sendSignal ()、 waitSignalUp()和waitSigna丄Down()中的端口读写函数进行了修改。具体代码修改如下
1、 对于createBarrier函数修改如下
bool SwapLx)ckWiredPlugin: :createBarrier()
if (mlsMaster)
sendSignsl(0x00); waitSignalUp(0x80); sendSignal(Oxff); waitSignalDown (0x80); } // master和slave是等同的
6ls6
sendSignal (0x00); waitSignalUp(0x80); sendSignal(Oxff); waitSignalDown(0x80);
return(true);
2、 对于sendSignal函数修改如下
void SwapLockWiredPlugin::sendSignal(const unsigned chax& val)
outb(val' BASEPORT);
3、 对于waitSignalUp和waitSignalDown分别把read(mWire, &buf, l)对应的语句改 为inb (BASEPORT + 1);
本发明中,对于电路板上的每一个并口插槽,可以采用标准的25针并口插槽,也可以 采用15针插槽或其它的并口插槽等,其输入端对应并口的第2针,输出端对应并口的第ll 针,对应的十六进制数就是0xl和0x80。当所有节点向电路板发1或0时,电路板才向所有集 群节点返回1或0,若节点向电路板发送的信号不一致,电路板不会产生任何动作。
各节点通过向"数据端口的第二针"写数据向电路板发信号,当电路板收到来自所有 节点的信号l时,电路板此时输出l;各节点从"状态端口的第ll针"读数据来接收电路板或是1或是0,这两种信号之间相互交替,使得各节点的动作保持一致, 从而实现同步控制。电路板起到节点之间通信的桥梁作用。这种通信信号可简单的通过数 字来表达。
本发明中通过电路板实现集群节点间的通信和控制同步显示,它优于以往的任何可得 的集群方案,具有高度的灵活性和可配置性。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任 何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都 应涵盖在本发明的保护范围之内。
权利要求
1、一种基于集群的可扩展的虚拟现实平台,包括主节点和多个从节点,主节点和每个从节点分别连接有投影仪,其特征在于,包括电路板,所述主节点和多个从节点分别用于场景渲染,所述电路板上设有多个并插槽,所述主节点和每个从节点分别与一个并口插槽连接,并分别通过各自连接的并口插槽向电路板写入和读取信号数据,并通过该信号数据对场景同步进行管理。
2、 根据权利要求i所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述的信号数据包括同步信号和渲染完成信号;所述主节点和每个从节点分别包含VR Juggler中的 SwapLockWiredPlugin插件,用于对场景同步进行管理。
3、 根据权利要求2所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述场景 同步的管理包括当所述主节点和多个从节点向所述电路板写入的信号数据均为同步信号或均为渲染完 成信号时,电路板将该信号数据输出;当所述主节点和多个从节点从电路板读取到该信号 数据时,驱动所述场景运行下一步。
4、 根据权利要求2所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述 Sw即LockWiredPlugin插件包括-通过creatBarrier()函数实现对多节点的同步管理,所述多节点中,主节点接收或发 送信号的顺序与从节点对应,使它们当前的动作保持一致,所述电路板经过同一性对比后 同时给它们发出反馈信号。
5、 根据权利要求4所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述 reateBarrier()函数包括bool SwapLockWiredPlugin::createBarrier()if (mlsMaster)sendSignal(0x00); waitSigna]Up(0x80); sendSignal(Oxff); waitSignalDown(0x80);sendSignal(0x00); waitSignalUp(0x80); sendSignal(Oxff);waitSignalDown(0x80); return (true);
6、 根据权利要求4所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述 SwapLockWiredPlugin插件中的sendSignal () 、 waitSignalUp ()或waitSignalDown ()中的 端口读写函数向电路板写入或读取信号数据。
7、 根据权利要求6所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述sendSignal()函数 包括void SwapLockWiredPlugin::sendSignal(const unsigned char& val) outb(val, BASEPORT);}。
8、 根据权利要求6所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述 waitSignalUp()禾口waitSignalDown()中read(mWire, &buf, l)对应的语句改为inb(BASEPORT +1)。
9、 根据权利要求l所述的基于集群的可扩展的虚拟现实平台,其特征在于,所述并口 插槽包括15个针,其中,第2个针用于向所述电路板写入数据;第ll针用于从所述电路板读 取数据。
全文摘要
本发明公开了一种基于集群的可扩展的虚拟现实平台,包括主节点和多个从节点,主节点和每个从节点分别连接有投影仪,主节点和多个从节点分别用于场景渲染,并分别通过并口插槽与电路板连接,并分别通过各自连接的并口插槽向电路板写入和读取信号数据,通过该信号数据对场景同步进行管理。可以将同步控制权从主节点移交给电路板,提高了集群的灵活性和可配置性。
文档编号G06F12/08GK101510189SQ20091007973
公开日2009年8月19日 申请日期2009年3月9日 优先权日2009年3月9日
发明者薇 刘, 凤 张, 斌 张, 王治强, 高慧婷 申请人:王治强;刘 薇;张 斌;张 凤;高慧婷
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1