CN113553173B - 基于mpi的ue4并行处理方法、装置、设备和介质 - Google Patents

基于mpi的ue4并行处理方法、装置、设备和介质 Download PDF

Info

Publication number
CN113553173B
CN113553173B CN202110706217.4A CN202110706217A CN113553173B CN 113553173 B CN113553173 B CN 113553173B CN 202110706217 A CN202110706217 A CN 202110706217A CN 113553173 B CN113553173 B CN 113553173B
Authority
CN
China
Prior art keywords
entity
processes
mpi
function
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110706217.4A
Other languages
English (en)
Other versions
CN113553173A (zh
Inventor
林宇斐
叶帅
刘逊韵
李豪
朱成璋
周东傲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Defense Technology Innovation Institute PLA Academy of Military Science
Original Assignee
National Defense Technology Innovation Institute PLA Academy of Military Science
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National Defense Technology Innovation Institute PLA Academy of Military Science filed Critical National Defense Technology Innovation Institute PLA Academy of Military Science
Priority to CN202110706217.4A priority Critical patent/CN113553173B/zh
Publication of CN113553173A publication Critical patent/CN113553173A/zh
Application granted granted Critical
Publication of CN113553173B publication Critical patent/CN113553173B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提供一种基于MPI的UE4并行处理方法、装置、设备和介质,该方法包括:至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。本发明提高了UE4中实体数目的可扩展性以及程序的运行速度。

Description

基于MPI的UE4并行处理方法、装置、设备和介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于MPI的UE4并行处理方法、装置、设备和介质。
背景技术
虚幻引擎4(Unreal Engine 4,简称UE4)是一款由艺铂游戏(Epic Games)开发的开源游戏引擎,其因渲染效果逼真而广泛应用于游戏开发、虚拟现实、计算机仿真等领域。UE4中的计算以帧为衡量单位,每帧的计算任务主要包括实体逻辑计算、物理过程计算、渲染计算等。其中,实体逻辑计算主要是指由用户开发的实体中所包含的Tick函数的逻辑计算,该过程需要完成所有实体的状态设置;物理过程计算主要是指根据所有实体的位置、速度等物理状态信息,计算得到实体在下一帧中的物理状态;渲染计算则主要是指根据实体的网格,计算得到可视化图片,以展示给用户。
目前,UE4是采用单进程多线程的方式执行,这种模式所能支持的实体数目往往受限于单个计算机的硬件资源,其扩展能力十分有限。特别是当实体数目较多、实体模型较精细时,实体逻辑计算部分将变得较为复杂,其计算开销将成为整体开销的主要瓶颈。此时,UE4往往由于程序运行速度较慢而无法保证游戏或者仿真的实时性。
发明内容
本发明提供一种基于MPI的UE4并行处理方法、装置、设备和介质,提高了UE4中实体数目的可扩展性以及程序的运行速度。
第一方面,本发明提供了一种基于MPI的UE4并行处理方法,包括:至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体;基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体;所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步。
根据本发明提供的一种基于MPI的UE4并行处理方法,所述基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体,包括:基于MPI的函数,获得进程数量和每个进程对应的进程编号;根据获得进程数量和进程编号,将所述实体划分到MPI的每个进程,使每个进程对应至少一个实体。
根据本发明提供的一种基于MPI的UE4并行处理方法,所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中,包括:至少二个进程中的每个进程将对应的所述至少一个实体的逻辑函数注册到UE4引擎中;所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果,包括:至少二个进程中的每个进程对应的所述至少一个实体的逻辑函数进行运算,得到对应的运算结果。
根据本发明提供的一种基于MPI的UE4并行处理方法,所述实体的逻辑函数包括Tick函数。
根据本发明提供的一种基于MPI的UE4并行处理方法,在UE4引擎生成每一帧图像时,所述基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步之后,还包括:根据所述同步的运算结果,所述至少二个进程中的每个进程设置物理状态,并进行物理运算;根据所述物理运算的结果,所述至少二个进程中的每个进程进行渲染计算。
根据本发明提供的一种基于MPI的UE4并行处理方法,所述至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体之前,还包括:将编译好的MPI库加入到UE4引擎的第三方库中;在UE4引擎中调用MPI的初始化函数初始化MPI;通过UE4引擎编译打包项目文件。
第二方面,本发明还提供了一种基于MPI的UE4并行处理装置,包括:生成模块,用于至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体;划分模块,用于基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体;注册模块,用于所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中;运算模块,用于在UE4引擎生成每一帧图像时,所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果;同步模块,用于基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步。
根据本发明提供的一种基于MPI的UE4并行处理装置,所述划分模块,包括:第一处理单元,用于基于MPI的函数,获得进程数量和每个进程对应的进程编号;第二处理单元,用于根据获得进程数量和进程编号,将所述实体划分到MPI的每个进程,使每个进程对应至少一个实体。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如所述任一种基于MPI的UE4并行处理方法的步骤。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如所述任一种基于MPI的UE4并行处理方法的步骤。
本发明提供的一种基于MPI的UE4并行处理方法、装置、设备和介质,通过至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。可以看出,针对目前UE4存在的实体数目扩展性较差,以及在面对大规模、精细化实体模型需求时运行速度不足的问题,本发明通过采用多进程并行模式,可以将UE4每一帧计算任务中的实体逻辑计算分配到多个进程中执行,这样可以减少单个进程的计算量,从而提高了UE4程序的运行速度,为大规模、精细化实体模型的实时性提供基础和保障,同时采用多进程并行模式,使得支持的实体数目不再受限于单个计算机的硬件资源,也提高了UE4中实体数目的可扩展性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明提供的基于MPI的UE4并行处理方法的一些实施例的流程示意图;
图2是根据本发明提供的基于MPI的UE4并行处理方法的另一些实施例的流程示意图;
图3是目前UE4中计算的主要流程示意图;
图4是应用本发明提供的方法的UE4中计算的一个应用场景的流程示意图;
图5是根据本发明提供的MPI向UE4集成的步骤的流程示意图;
图6是根据本发明提供的向UE4第三方库添加MPI的流程示意图;
图7是根据本发明提供的在UE4中调用MPI初始化语句的流程示意图;
图8是根据本发明提供的基于MPI的UE4并行处理装置的一些实施例的结构示意图;
图9是根据本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面将参考附图并结合实施例来详细说明本发明。
请参阅图1,图1是本发明提供的基于MPI的UE4并行处理方法的一些实施例的流程示意图。如图1所示,该基于MPI的UE4并行处理方法,包括以下步骤:
步骤101,至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体。
在一些实施例中,可以在至少两个进程的每个进程中均生成UE4所需的所有实体,并根据生成的实体构建实体链表。本发明实施例对实体的生成方式和实体链表的构建方式不作限定。作为示例,在游戏开发中,实体是实体组件系统体系结构的三个主要元素之一。它们代表游戏或应用程序中的各个“事物”,即一个实体指的是存在于游戏世界中的物体,比如桌子、人物。对于计算机仿真,实体指的是模仿现实世界的三维物体,其能完整地描述物体的所有几何信息和拓扑信息,包括物体的体、面、边和顶点的信息。
步骤102,基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体。
在一些实施例中,消息传递接口(Message Passing Interface,简称MPI)是一个跨语言的通讯协议,用于编写并行计算机,支持点对点和广播。在至少两个进程的每个进程中均生成UE4所需的所有实体并构建实体链表后,可以将UE4所需的所有实体分配到每个进程中。也就是说,每个进程分配到的实体可以不同也可以相同。作为示例,实体的个数可以是40个,进程的数量可以是4个,将实体的个数平均分配到每个进程中,也就是说,每个进程被分配到了10个实体,具体的实体分配操作可以通过调用MPI的函数,或者使用Metis等第三方库中复杂的任务划分方法分配实体。本发明实施例对实体的划分的方法不作限定。
步骤103,至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中。
在一些实施例中,至少两个进程的每个进程在分配到实体后,会将自己分配到的实体的信息注册到UE4引擎中,仍以实体的个数可以是40个,进程的数量可以是4个,将实体的个数平均分配到每个进程中为例,4个进程在每个进程分配到了10个实体后,会分别将自己分配到的10个实体的信息注册到UE4引擎中。
步骤104,在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果。
在一些实施例中,在UE4引擎生成每一帧图像时,可以通过UE4引擎遍历在其进行实体的信息注册的所有进程,使每个进程分配到的实体的信息进行运算,得到每个进程中实体的运算结果。其中,实体的信息进行的运算可以包括实体材质的运算、实体取模的运算、实体坐标变换的运算等,本发明实施例对实体的信息进行的运算的类型不作限定。
步骤105,基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
在一些实施例中,在UE4引擎生成每一帧图像时,至少两个进程的每个进程的实体的信息进行运算并得到对应的运算结果后,可以使每个进程得到的运算结果在至少两个进程的的各进程之间进行同步。作为示例,可以通过调用MPI中的同步函数,例如MPI_Barrier()函数,或者也可以是MPI_Allgatherv()函数来实现计算结果的同步,其中,MPI_Barrier()函数仅有同步功能,MPI_Allgatherv()函数包含了数据的收集分发和同步功能。这里同步的数据主要为计算得到的实体的物理状态,也可以包括计算得到的其他数据,可以根据具体需要确定同步的数据。
本发明一些实施例公开的基于MPI的UE4并行处理方法,通过至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。可以看出,针对目前UE4存在的实体数目扩展性较差,以及在面对大规模、精细化实体模型需求时运行速度不足的问题,本发明通过采用多进程并行模式,可以将UE4每一帧计算任务中的实体逻辑计算分配到多个进程中执行,这样可以减少单个进程的计算量,从而提高了UE4程序的运行速度,为大规模、精细化实体模型的实时性提供基础和保障,同时采用多进程并行模式,使得支持的实体数目不再受限于单个计算机的硬件资源,也提高了UE4中实体数目的可扩展性。
请参阅图2,图2是根据本发明的基于MPI的UE4并行处理方法的另一些实施例的流程图。如图2所示,该基于MPI的UE4并行处理方法,包括以下步骤:
步骤201,至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体。
在一些实施例的可选实现方式中,至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体之前,还可以包括:将编译好的MPI库加入到UE4引擎的第三方库中;在UE4引擎中调用MPI的初始化函数初始化MPI;通过UE4引擎编译打包项目文件。
步骤202,基于MPI的函数,获得进程数量和每个进程对应的进程编号。
在一些实施例中,作为示例,可以通过使用MPI_Comm_rank()函数获得每个进程对应的进程编号,可以通过使用MPI_Comm_size()函数获得MPI的进程数量。本发明对获得的关于进程的信息不作限定,可以根据具体情况设定。
步骤203,根据获得进程数量和进程编号,将实体划分到每个进程,使每个进程对应至少一个实体。
在一些实施例中,在获得进程数量和进程编号后,可以基于预设的方法或规则,根据进程数量和进程编号,将实体划分到各个进程,其中各个进程以进程编号相区分。可选地,实体划分可以采用简单的均分方法,或者也可以采用图划分等较为复杂的划分方法。作为示例,实体总数或者计算任务量为N,进程总数为Np,进程编号为ProcID,划分到ProcID的实体或者计算任务为[N/Np*ProcID,N/Np*(ProcID+1)-1]。
步骤204,至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中。
在一些实施例中,关于步骤204的具体实现及其所带来的技术效果,可以参考图1对应的实施例中关于步骤103的说明,在此不再赘述。
步骤205,在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果。
在一些实施例的可选实现方式中,至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中,可以包括:至少二个进程中的每个进程将对应的至少一个实体的逻辑函数注册到UE4引擎中;至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果,可以包括:至少二个进程中的每个进程对应的至少一个实体的逻辑函数进行运算,得到对应的运算结果。
仍以实体的个数可以是40个,进程的数量可以是4个,将实体的个数平均分配到每个进程中为例。4个进程分别将自己分配到的10个实体的逻辑函数注册到UE4引擎中,在UE4引擎生成每一帧图像时,通过UE4引擎遍历4个进程,使4个进程中每个进程分配到的实体的逻辑函数进行运算,分别得到4个进程中实体的4个运算结果。
在一些实施例的可选实现方式中,实体的逻辑函数可以包括Tick函数。
作为示例,实体的逻辑函数也可以是其他逻辑函数,可以根据具体情况确定。MPI并行是指每个进程都运行同样的代码逻辑,依靠任务划分,使得不同的进程计算不同的计算任务,然后通过MPI消息传递来同步最后的结果。一般而言,并行主要针对性能瓶颈处的计算开销,本发明主要针对实体Tick函数逻辑的并行,但实际应用时不限于此。
在一些实施例的可选实现方式中,在UE4引擎生成每一帧图像时,至少二个进程中的每个进程将对应的运算结果进行同步之后,还可以包括:根据同步的运算结果,至少二个进程中的每个进程设置物理状态,并进行物理运算;根据物理运算的结果,至少二个进程中的每个进程进行渲染运算。
步骤206,基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
在一些实施例中,关于步骤206的具体实现及其所带来的技术效果,可以参考图1对应的实施例中关于步骤105的说明,在此不再赘述。
当前UE4引擎中的计算主要包括实体Tick函数计算、物理过程计算或物理计算、渲染计算等主要过程。当前UE4引擎中计算的执行流程如图3所示。其中,涉及实体逻辑计算以及后续物理过程计算和渲染计算的主要过程如下:
(31)UE4引擎根据用户代码生成所有实体,并在引擎内部构建实体链表。
(32)UE4在引擎内部初始化阶段遍历实体链表,并将实体Tick函数注册到引擎内部。
(33)执行每帧的计算时,UE4引擎将遍历执行所有的实体Tick函数。
(34)UE4引擎根据实体Tick函数计算结果,设置物理状态,并进行物理过程计算。
(35)UE4根据物理计算结果进行渲染计算。
(36)若引擎退出,则程序结束;否则进行下一帧的计算。
上述引擎退出的情况可以是用户点击退出按钮,也可以是其他情况。
本发明UE4引擎中计算的执行流程可以如图4所示。其中,涉及实体逻辑计算以及后续物理过程计算和渲染计算的主要过程如下:
(41)每个进程均生成所有实体并构建实体链表。
(42)根据进程数量以及进程号,将实体划分到各个进程。
(43)各个进程按照实体划分的结果,仅将本地进程负责的实体Tick函数注册到UE4引擎。
(44)执行每帧的计算时,UE4引擎将遍历执行本地注册的实体Tick函数。
(45)在物理计算之前,各个进程将计算结果进行同步。
(46)UE4引擎根据同步结果,设置物理状态,并进行物理计算。
(47)UE4根据物理计算结果进行渲染计算。
(48)若引擎退出,则程序结束;否则进行下一帧逻辑计算。
从上述可以看出,当前UE4中实体逻辑计算,如图3所示,采用的是单进程多线程模式,由于单个计算机资源有限,UE4所能支持的实体数目也受到限制。本发明中使用多进程的并行模式,如图4所示,可以解决单机资源受限问题,从而解决实体数目受限问题。与当前的UE4相比,本发明中引入了实体划分和同步计算结果两个步骤。将实体划分至各个进程中,使各个进程分担多个实体的计算任务,当实体数目较大时,进程的数量以及各进程被划分的实体数量也可以随之增加,因此大大提高了实体数目的可扩展性,另外,由于各进程分担了部分实体的计算任务,并将计算结果同步,因此加快了程序运行速度。
由于实体划分、程序的并行执行等均需要调用MPI库,所以,在执行图4的流程之前,还需要将MPI向UE4集成,作为示例,可以参考图5的方法:
(51)将编译好的MPI库加入到UE4的第三方库中。
(52)在UE4中初始化MPI。
(53)使用UE4编译打包项目文件。
(54)使用mpirun命令执行并行程序。
其中,上述步骤(51)过程的具体实施流程可以如图6所示:
(61)在UE4引擎Engine目录Source文件夹ThirdParty目录下新建MPI文件夹,并在MPI文件夹下新建lib和include文件夹。
(62)将编译好的MPI库文件拷贝至新建的MPI文件夹下的lib文件夹。
(63)将MPI的头文件拷贝至新建MPI文件夹下的include文件夹中。
(64)在MPI文件夹下,新建相应的编译配置文件(即MPI.Build.cs文件),并配置MPI的头文件和库文件信息。
上述步骤(52)过程中初始化MPI过程如图7所示。作为示例,其具体流程可以如下:
(71)根据操作系统类型修改相应模块的编译配置文件,将MPI库添加至引擎的依赖库路径。
(72)打开与操作系统相应的主程序文件。
(73)在上述主程序文件中添加MPI头文件。
(74)在主程序的起始位置调用MPI_Init()函数,在主程序的终止位置调用MPI_Finalize()函数。
从图2中可以看出,与图1对应的一些实施例的描述相比,图2对应的一些实施例中的基于MPI的UE4并行处理方法体现了如何将实体划分到各个进程中。可以看出,将单个进程上运行的实体逻辑计算划分给多个进程,可以提高UE4项目程序的执行速度。而且,进程数量可以扩展,这为大规模、精细化实体模型的实时性提供了基础。
请参阅图8,作为对上述各图所示方法的实现,本发明还提供了一种基于MPI的UE4并行处理装置的一些实施例,这些装置实施例与图1所示的那些方法实施例相对应,该装置可以应用于各种电子设备中。
如图8所示,一些实施例的基于MPI的UE4并行处理装置800包括生成模块801、划分模块802、注册模块803、运算模块804、同步模块805:生成模块801,用于至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;划分模块802,用于基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;注册模块803,用于至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;运算模块804,用于在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;同步模块805,用于基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
在一些实施例的可选实现方式中,划分模块802,包括:第一处理单元(图中未示出),用于基于MPI的函数,获得进程数量和每个进程对应的进程编号;第二处理单元(图中未示出),用于根据获得进程数量和进程编号,将实体划分到MPI的每个进程,使每个进程对应至少一个实体。
在一些实施例的可选实现方式中,注册模块803,包括:逻辑函数注册单元(图中未示出),用于至少二个进程中的每个进程将对应的至少一个实体的逻辑函数注册到UE4引擎中;运算模块804,包括:逻辑运算单元,用于至少二个进程中的每个进程对应的至少一个实体的逻辑函数进行运算,得到对应的运算结果。
在一些实施例的可选实现方式中,实体的逻辑函数包括Tick函数。
在一些实施例的可选实现方式中,装置800还包括:物理运算单元(图中未示出),用于根据同步的运算结果,至少二个进程中的每个进程设置物理状态,并进行物理运算;渲染运算单元(图中未示出),用于根据物理运算的结果,至少二个进程中的每个进程进行渲染运算。
在一些实施例的可选实现方式中,装置800还包括:第三处理单元(图中未示出),用于将编译好的MPI库加入到UE4引擎的第三方库中;第四处理单元(图中未示出),用于在UE4引擎中调用MPI的初始化函数初始化MPI;第五处理单元(图中未示出),用于通过UE4引擎编译打包项目文件。
可以理解的是,该装置800中记载的各模块与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于装置800及其中包含的模块、单元,在此不再赘述。
图9示例了一种电子设备的实体结构示意图,如图9所示,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行基于MPI的UE4并行处理方法,该方法包括:至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例上述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,上述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,上述计算机程序包括程序指令,当上述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于MPI的UE4并行处理方法,该方法包括:至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的基于MPI的UE4并行处理方法,该方法包括:至少二个进程生成实体,并构建对应的实体链表,实体链表包括至少一个实体;基于MPI的函数,将实体划分到至少二个进程中的每个进程,使每个进程对应至少一个实体;至少二个进程中的每个进程将对应的至少一个实体的信息注册到UE4引擎中;在UE4引擎生成每一帧图像时,至少二个进程中的每个进程对应的至少一个实体的信息进行运算,得到对应的运算结果;基于MPI的函数,至少二个进程中的每个进程将对应的运算结果进行同步。
以上所描述的装置实施例仅仅是示意性的,其中上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分上述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于MPI的UE4并行处理方法,其特征在于,包括:
至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体;
基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体;
所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中;
在UE4引擎生成每一帧图像时,所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果;
基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步。
2.根据权利要求1所述的基于MPI的UE4并行处理方法,其特征在于,所述基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体,包括:
基于MPI的函数,获得进程数量和每个进程对应的进程编号;
根据获得进程数量和进程编号,将所述实体划分到MPI的每个进程,使每个进程对应至少一个实体。
3.根据权利要求2所述的基于MPI的UE4并行处理方法,其特征在于,所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中,包括:
至少二个进程中的每个进程将对应的所述至少一个实体的逻辑函数注册到UE4引擎中;
所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果,包括:
至少二个进程中的每个进程对应的所述至少一个实体的逻辑函数进行运算,得到对应的运算结果。
4.根据权利要求3所述的基于MPI的UE4并行处理方法,其特征在于,所述实体的逻辑函数包括Tick函数。
5.根据权利要求3或4所述的基于MPI的UE4并行处理方法,其特征在于,在UE4引擎生成每一帧图像时,所述基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步之后,还包括:
根据所述同步的运算结果,所述至少二个进程中的每个进程设置物理状态,并进行物理运算;
根据所述物理运算的结果,所述至少二个进程中的每个进程进行渲染运算。
6.根据权利要求1所述的基于MPI的UE4并行处理方法,其特征在于,所述至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体之前,还包括:
将编译好的MPI库加入到UE4引擎的第三方库中;
在UE4引擎中调用MPI的初始化函数初始化MPI;
通过UE4引擎编译打包项目文件。
7.一种基于MPI的UE4并行处理装置,其特征在于,包括:
生成模块,用于至少二个进程生成实体,并构建对应的实体链表,所述实体链表包括至少一个实体;
划分模块,用于基于MPI的函数,将所述实体划分到所述至少二个进程中的每个进程,使每个进程对应至少一个实体;
注册模块,用于所述至少二个进程中的每个进程将对应的所述至少一个实体的信息注册到UE4引擎中;
运算模块,用于在UE4引擎生成每一帧图像时,所述至少二个进程中的每个进程对应的所述至少一个实体的信息进行运算,得到对应的运算结果;
同步模块,用于基于MPI的函数,所述至少二个进程中的每个进程将对应的运算结果进行同步。
8.根据权利要求7所述的基于MPI的UE4并行处理装置,其特征在于,所述划分模块,包括:
第一处理单元,用于基于MPI的函数,获得进程数量和每个进程对应的进程编号;
第二处理单元,用于根据获得进程数量和进程编号,将所述实体划分到MPI的每个进程,使每个进程对应至少一个实体。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述的基于MPI的UE4并行处理方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于MPI的UE4并行处理方法的步骤。
CN202110706217.4A 2021-06-24 2021-06-24 基于mpi的ue4并行处理方法、装置、设备和介质 Active CN113553173B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110706217.4A CN113553173B (zh) 2021-06-24 2021-06-24 基于mpi的ue4并行处理方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110706217.4A CN113553173B (zh) 2021-06-24 2021-06-24 基于mpi的ue4并行处理方法、装置、设备和介质

Publications (2)

Publication Number Publication Date
CN113553173A CN113553173A (zh) 2021-10-26
CN113553173B true CN113553173B (zh) 2022-07-05

Family

ID=78130900

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110706217.4A Active CN113553173B (zh) 2021-06-24 2021-06-24 基于mpi的ue4并行处理方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN113553173B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021212411A1 (en) * 2020-04-23 2021-10-28 Intel Corporation Kinematic interaction system with improved pose tracking
CN114372940A (zh) * 2021-12-15 2022-04-19 南京邮电大学 一种真实场景图像合成方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021212411A1 (en) * 2020-04-23 2021-10-28 Intel Corporation Kinematic interaction system with improved pose tracking
CN114372940A (zh) * 2021-12-15 2022-04-19 南京邮电大学 一种真实场景图像合成方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于碰撞时间的多旋翼无人机视觉避障方法研究;杨兴隆;《上海交通大学硕士学位论文》;CNKI;20220115;全文 *

Also Published As

Publication number Publication date
CN113553173A (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
CN105593813B (zh) 用于可视化从受限环境容器提供的数据的呈现解释器
US9582319B2 (en) Migrating virtual machines across network separated data centers
CN105955805B (zh) 一种应用容器迁移的方法及装置
CN104714823B (zh) 基于OpenStack的新建主机配置方法
CN102073536A (zh) 利用云平台实现模板编辑入库及批量生成虚拟机的方法
CN109656646B (zh) 一种远程桌面控制方法、装置、设备及虚拟化芯片
CN114253557B (zh) 一种云平台应用部署方法、装置、电子设备及存储介质
CN109995814A (zh) 云主机资源的迁移方法及装置、通信设备、存储介质
CN108074210A (zh) 一种用于云渲染的对象获取系统和方法
CN108073350A (zh) 一种用于云渲染的对象存储系统和方法
CN113676501A (zh) 基于Kubernetes集群的应用部署方法、装置以及电子设备
TW201913361A (zh) 頁面更新方法和裝置
Posadas et al. Automatic synthesis of embedded SW for evaluating physical implementation alternatives from UML/MARTE models supporting memory space separation
WO2018175869A1 (en) System and method for mass-animating characters in animated sequences
CN109828823A (zh) 一种基于容器虚拟化技术的无人机算法仿真系统扩展方法
CN112785676A (zh) 一种图像渲染方法、装置、设备和存储介质
CN103581273B (zh) 一种分布式系统执行业务的方法、装置及系统
US20170039037A1 (en) Live mobile application visual editor demo
CN113553173B (zh) 基于mpi的ue4并行处理方法、装置、设备和介质
Corley et al. Evaluating the cloud architecture of AToMPM
CN111951360A (zh) 动画模型处理方法、装置、电子设备及可读存储介质
CN107730572B (zh) 一种图表渲染方法及装置
CN110782040A (zh) 一种pytorch任务训练方法、装置、设备及介质
CN113239328B (zh) 一种业务功能获取方法、装置、电子设备和存储介质
CN111625379B (zh) 一种信息处理的方法、装置、电子设备和可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant