CN112947870A - 一种3D打印模型的G-code并行生成方法 - Google Patents

一种3D打印模型的G-code并行生成方法 Download PDF

Info

Publication number
CN112947870A
CN112947870A CN202110083750.XA CN202110083750A CN112947870A CN 112947870 A CN112947870 A CN 112947870A CN 202110083750 A CN202110083750 A CN 202110083750A CN 112947870 A CN112947870 A CN 112947870A
Authority
CN
China
Prior art keywords
code
data
node
model
layer
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.)
Granted
Application number
CN202110083750.XA
Other languages
English (en)
Other versions
CN112947870B (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.)
Northwestern Polytechnical University
Original Assignee
Northwestern Polytechnical University
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 Northwestern Polytechnical University filed Critical Northwestern Polytechnical University
Priority to CN202110083750.XA priority Critical patent/CN112947870B/zh
Publication of CN112947870A publication Critical patent/CN112947870A/zh
Application granted granted Critical
Publication of CN112947870B publication Critical patent/CN112947870B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1211Improving printing performance
    • G06F3/1215Improving printing performance achieving increased printing speed, i.e. reducing the time between printing start and printing end
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/124Parallel printing or parallel ripping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)

Abstract

本发明涉及一种3D打印模型的G‑code并行生成方法,该方法通过多级架构对三维模型的G‑code导出生成进行并行化加速,具体包含四级的G‑code并行化生成,分别为计算节点级、多进程级、多线程级和GPU级。在每一层次的并行化中,依据当前层次的地址空间分布、访存方式及数据结构特点设计了相应的任务划分与数据交互方案,使得各并行执行单元负载均衡及减少数据通信量。本发明减少了三维模型G‑code生成的耗时,提升处理器计算资源的使用率,并支持工业级大尺寸大数据量三维模型的G‑code处理生成。

Description

一种3D打印模型的G-code并行生成方法
技术领域
本发明属于增材制造技术领域,具体涉及一种3D打印模型的G-code并行生成方法。
背景技术
增材制造,又称3D打印,是一种新型的工业制造技术,主要通过计算机对STL模型文件进行处理生成G-code,打印机器在G-code的控制下叠加原材料,实现三维模型的实体打印。这种新型的打印技术,相比于传统制造方式,使得打印的模型更精确,尺寸更大,并且更加节省原材料。而G-code生成转换是对三维模型的数据处理的最后一步,主要是对前驱处理过程所生成的轮廓线进行路径规划,并将规划出来的路径按照G-code标准进行“翻译”,转换为G-code文件。
G代码又称G-code,是一种广泛使用的数控编程语言,主要是用来通过计算机来控制机器按照给定的路径进行移动操作等。3D打印机由于制造厂商的不同,G-code虽然有着不同的风格,但是都基于G-code语言标准。随着越来越多工业领域将3D打印技术应用到了生产链上,对打印的模型的尺寸和数据量提出了更高的要求,例如制造核电站的核内3米多外径的关键构建。这种大型应用场景的增多,使3D打印处理过程的耗时问题至关重要。而G-code代码生成部分,又是增材制造模型数据处理中的最重要,也是最耗时的一步。现有的技术,主要是串行解决方案来生成G-code,有的技术使用了单进程内多线程的方案来加速G-code代码的生成转换,但是在处理工业级超大规模的模型时,受限于单计算节点的计算能力,G-code生成效率及成功率不高,而现有计算机多核处理器为主,该过程对计算资源的利用不充分。
发明内容
要解决的技术问题
为了减少三维模型G-code生成的耗时,提升处理器计算资源的使用率,并支持工业级大尺寸大数据量三维模型的G-code处理生成。由于3D打印流程是按层打印处理,层与层之间的G-code代码关联性不大,G-code代码生成具有很好的并行潜力。故本发明提出了一种3D打印模型的G-code多级并行生成方法,其设计了一种四级生成方案,利用计算机的各执行处理单元并行处理,达到支持大规模大尺寸模型的G-code处理和降低大尺寸模型G-code生成耗时的效果。
技术方案
一种3D打印模型的G-code并行生成方法,包括STL模型在集群间的数据分配,多进程级的轮廓线生成,线程级的G-code生成,GPU级的G-code数据计算,G-code文件的合并。其中,G-code生成和计算主要是依照生产者-消费者模型进行生成处理。总步骤如下:
步骤1:计算节点级及进程级数据并行化。在集群内,以面片为基本单元在计算节点间做数据分配,将原有的模型文件切分为多个子模型文件并分配给每个计算节点。每个节点将子模型文件的面片数据按照面片Z值和所需打印层数的对应关系平均划分给每个进程;
步骤2:多进程级的轮廓线生成。在单个节点内,由每个进程对分配到的数据进行STL文件的面片按层切割,并将切割后生成的切线段进行连接,生成轮廓线数据。之后在进程内,按层对横截面内的所有初始轮廓线进行区域划分,在每个初始轮廓线内生成墙壁区域的轮廓线数组和填充区域的轮廓线。
步骤3:多线程G-code路径生成。在单节点中的单个进程内,生成多个生产者线程和一个消费者线程。依照层数,将路径的生成任务平均分发给每个生产者线程,由生产者线程来执行每层轮廓线的路径规划。
步骤4:GPU级的G-code生成并行化。在每个生产者线程计算G-code路径的步骤中,将轮廓线及配置参数导入GPU内存中,由GPU来计算生成打印模型的墙壁和填充的路径规划所需要的值,包括每个墙壁轮廓线的起始点和填充区域内,填充图案与填充轮廓线的交点。并将生成的路径规划所需要的值传回CPU,由线程利用这些结果,生成墙壁和填充的路径。最后将路径数据放入当前进程所设定的数据缓冲区中。
步骤5:在同一进程内,消费者线程执行G-code的数据转换。消费者线程从数据缓冲区按顺序将路径数据依次取出,按照G-code国际标准,将路径数据转换翻译为G-code,并将G-code写入进程所设置的临时文件中。
步骤6:在一个节点内由主进程将每个从进程生成的临时文件按进程顺序依次合并为子模型的G-code文件。之后,在多个节点内将子模型的G-code文件由从节点传到主节点,并由主节点按照节点的id顺序依次合并,生成最终模型的G-code文件。
本发明技术方案更进一步的说:所述的步骤1中,(1)在计算节点间做任务划分是指,以模型的三角面片为基本单元,以模型的高度和所要切割的层数为划分依据,将每层的切割任务均匀的分配给每个计算节点,将余数层分配给最后一个计算节点,每个计算节点都得到了属于自己层数的Z值范围。然后以面片的最大最小Z值为依据,将属于计算节点Z值范围内的所有面片划分给该计算节点,对于两个节点都属于的面片,同时分配个两个节点。根据划分结果,将原始模型文件分割为若干子模型文件,节点间的顺序和子模型的顺序依次对应。(2)多进程间做任务划分指,继续将每个计算节点分配到的层数连续均匀划分给每个进程,余数分配给最后一个进程,每个进程可以求得自己所有层的Z值范围。再将节点内属于该范围内的所有面片分配给该进程。对于同时属于两个进程的面片,将数据冗余,即两个进程同时拥有。
本发明技术方案更进一步的说:所述步骤2中,(1)切割是指,对于单节点单进程内的数据,以层为基准,计算出模型每层切平面所在的Z值,然后在进程内寻找与切平面相交的面片,即所找面片的最大Z值和最小Z值包含该切平面的Z值。然后面片与切平面相交,计算出两个交点,生成切线段,存入以层数为下标的二维数组。寻找所有与切平面相交的面片,计算出每层的切线段。(2)切线段连接是指,在每一层的切线段数组中,将切线段依次按照右手螺旋的方向顺序连接,生成每层的轮廓线数组。(3)区域划分是指,利用生成的轮廓线,通过对轮廓线进行偏置操作,按照参数生成所需要的墙壁轮廓线组,并对最内层的墙壁轮廓线进行偏置操作,生成填充区域的填充轮廓线。
本发明技术方案更进一步的说:所述步骤3中路径生成任务划分是指:在节点的当前进程里,将每层墙壁轮廓线和填充轮廓线的路径生成任务,以顺序循环的方式划分给每个生产者线程,即第一个层分配给第一个生产者线程,第二层分配给第二个线程,由于层数远多于线程数,循环依次分配,使得每个线程都分配到近似均匀的层数。分配后由生产者进程来执行相应的路径规划。
本发明技术方案更进一步的说:所述步骤4中GPU级的计算是指单节点当前进程内,当生产者线程执行某一层轮廓线的路径规划时,生产者线程从GPU资源池中选取一个GPU,将轮廓线数据和打印配置数据传入GPU内存,由GPU来进行计算所有墙壁轮廓线的起始点,并计算所设定的填充图案与填充轮廓线之间的交点,并将结果分别存入墙壁交点数组和填充交点数组。生产者线程采用独占式GPU的方案,如果资源池中没有GPU,则等待。GPU计算完将生成的墙壁交点数组和填充交点数组传回生产者线程,生产者线程继续执行,依据交点信息生成墙壁轮廓线和填充的路径数据,并将路径数据按照层号存入进程的数据缓冲区的数组中。
本发明技术方案更进一步的说:所述步骤5中G-code的转换指的是单节点当前进程内,构造一个消费者线程,消费者线程从数据缓存区的数组中,按照层号依次顺序取出层的路径数据,并按照G-code的标准将路径数据转换为G-code数据,然后将G-code数据存入当前进程所属的临时文件中去,文件名称为节点“id_进程id”。消费者线程依次取出缓冲区数组中的所有路径数据,若数组中没有当前层的数据,消费者线程则进行等待,直至数组中所需层中有数据。
本发明技术方案更进一步的说:所述步骤6中,(1)节点内的合并是指,在每个节点内设定主从进程,通过数据通信,将从进程的临时文件数据传到主进程,并由主进程将临时文件按照进程编号顺序进行合并,生成当前节点的子模型文件的G-code数据(2)节点间文件合并是指在每个从节点的主进程中,通过集群内的网络进行数据通信传输,将每个从节点的子模型G-code数据收集到主节点内的主进程中,并由主节点内的主进程将不同节点间的文件按照节点顺序合并,生成最终模型的G-code文件。
有益效果
本发明提出的一种3D打印模型的G-code并行生成方法,该方法通过多级架构对三维模型的G-code导出生成进行并行化加速,具体包含四级的G-code并行化生成,分别为计算节点级、多进程级、多线程级和GPU级。在每一层次的并行化中,依据当前层次的地址空间分布、访存方式及数据结构特点设计了相应的任务划分与数据交互方案,使得各并行执行单元负载均衡及减少数据通信量。在G-code生成的线程级并行中,在每一个进程内,使用多个生产者线程和一个消费者线程,多个生产者生产的时候,消费者同时按顺序在进行G-code的数据转换,能够在保证原有G-code的准确性的情况下,有效地降低三维模型G-code生成处理耗时,并且通过各计算节点对相应子模型文件的并行读取,能够降低硬盘I/O时间,而且由于各个计算节点只处理模型文件的部分数据,能够充分利用集群资源,使得可以处理工业级的超大规模、大尺寸的三维模型文件,具有良好的实际应用场景和可扩展性。
附图说明
图1是本发明提出的四级G-code并行化处理方法的各级流程框图;
图2是本发明提出的四级G-code生成并行化的层级关系图;
图3是本发明中计算节点级并行化任务划分示意图;
图4是本发明中进程级总流程并行示意图;
图5是本发明中多线程划分示意图
图6是本发明中G-code生成和转换线程并行化数据流向示意图;
图7是本发明中线程和GPU对应关系示意图;
图8是本发明中由多节点多进程G-code文件合并的示意图
具体实施方式
现结合实施例、附图对本发明作进一步描述:
图1是本发明的总体流程图。本发明通过多级并行的方式提高对三维模型G-code生成的速度,使其能够处理超大规模的模型,具体包含四个层次的并行化,分别为计算节点级并行、多进程级并行、线程级并行和GPU级并行。
其中,总步骤共分为四步:
步骤一:执行计算节点级切片并行化,在集群内,以面片为基本单元在计算节点间做子模型的任务划分,以模型的Z值为划分依据,根据划分结果分割原始模型文件。
步骤二:分割原模型后,通过集群内的网络通信,将模型数据由主节点传输到各个从节点。
步骤三:主从节点内通过进程级、进程内线程级、进程间GPU级的计算处理,生成子模型的G-code文件。
步骤四:将每个从节点生成的子模型G-code文件通过网络通信传输到主节点,由主节点进行顺序合并,生成最终的模型G-code文件。
图2是节点级、进程级、线程级和GPU级的层级关系图。其中,节点与进程是一对多的关系,一个节点中有多个进程。进程与线程是一对多的关系,一个进程对应多个线程,特殊情况下一个进程至少有一个线程。线程与GPU的关系是一对一的关系,一个线程至多使用一个GPU。其中每个节点内分为主节点和从节点,每个节点的内的所有进程分为主进程和从进程。线程分为生产者线程和消费者线程,生产者线程和消费者线程执行不同的处理操作。
图3是子模型在节点间的划分示意图。设STL文件中总的面片数为T,可以通过计算所有面片的三个点的坐标,求出所有面片的最小Zmin值和最大Zmax值,Zmax-Zmin就是模型的高度H。根据配置参数,可以获得层厚h,层数设为count。集群中计算节点数为N+1,第0个计算节点id为n0,最后一个节点id为nN,除最后一个节点外,每个计算节点处理的层数为H1,最后一个节点处理的层数为H2,每个节点处理的起始高度为S,结束高度为E,则:
Figure BDA0002910214040000073
Figure BDA0002910214040000074
H2=H1+count%(N+1) (3)
S=ni*H1*h(i=0,1,2...N) (4)
E1=S+H1*h (5)
E2=S+H2*h (6)
其中,
Figure BDA0002910214040000071
表示向下取整,
Figure BDA0002910214040000072
表示向上取整,%指求余数。公式4代表所有节点的起点高度,公式5代表除了最后一个节点之外的节点的结束高度,公式6代表最后一个节点的结束高度。根据面片的Zmax和Zmin,按照每个节点的起点高度S和结束高度E,对所有面片进行遍历,将属于该节点的面片划分给该节点,对于划分边缘的面片,同时都划分给两个节点。
所述分割原始模型文件的益处有:
1)减少每个计算节点从硬盘读入内存的数据量,进而减少I/O传输时间;
2)减少每个计算节点的内存使用量,使得在计算节点内存总量固定的情况下,能够实现对大规模模型的处理;
3)各计算节点并行执行计算,带来计算处理时间的有效降低。
图4是单个节点里,多个MPI进程对三维模型进行数据处理,生成G-code的过程,总共分为五大步骤:
(1)步骤一:首先根据MPI进程id,在每个进程内创建子模型G-code临时文件,文件名为进程id号,之后将每个节点获得的面片由MPI主进程进行划分,分配给每个从进程,根据参数设定,计算当前节点Z值起始范围内的层数L,设进程数为P+1,第一个进程的id为p0,最后一个进程的id为pP,除最后一个进程外,每个进程均分到的层数为l1,最后一个进程分配的层数为l2,每个进程开始层的id为s,结束层的id为e,则
Figure BDA0002910214040000082
l2=l1+L%(P+1) (2)
s=p0*l1 (3)
e1=s+l1 (4)
e2=s+l2 (5)
其中,
Figure BDA0002910214040000081
表示向下取整,%指求余数,公式3代表所有进程的起点层数,公式4代表除了最后一个进程之外的所有的进程的终点层数,公式5代表最后一个进程的终点层数。每个进程的分配的层数和起止范围知道了,根据层的厚度,就可以知道起止的Z值范围,就可以将该节点的所有面片,依照面片的最小z值为基准,来将面片进一步划分给每个进程。
(2)步骤二:在每个MPI进程内,用切平面与对应面片进行切割,计算出每层的切线段,并存入当前层的切线段数组中。然后在同一进程内使用OpenMP多线程来进行进一步加速,将每层的切线段连接任务依次顺序划分给每个线程,由线程对层内的切线段进行连接,生成轮廓线。设进程内所要处理的总层数为Sum,线程数为t,线程均分后的余数为nr,每个线程分配到的层数为nf1,每个线程的编号为id,则满足:
nr=sum%t (1)
Figure BDA0002910214040000091
Figure BDA0002910214040000092
其中,
Figure BDA0002910214040000093
表示向下取整,%指求余数。划分的示意图如图5所示。
(3)步骤三:对轮廓线进行划分。在每个MPI进程内,对所要处理的每层轮廓线进行区域划分,通过多边形偏置原理,将轮廓线依照轮廓线的方向向内或向外偏置多次,生成多条墙壁轮廓线,偏置的距离由打印机参数决定。其中轮廓线的方向主要包括顺时针方向和逆时针方向,逆时针方向的轮廓线向内偏置,顺时针方向的轮廓线向外偏置。生成墙壁轮廓线后,再由最内层的墙壁轮廓线偏置生成填充轮廓线,由一条或多条填充轮廓线构成的区域就是填充区域。
(4)步骤四:利用生产者线程和消费者线程,实现Gcode的生成和导出。具体操作是:在当前进程内创建Q个生产者线程,并将进程所需处理的L层数据顺序依次划分给每个线程,设每个线程划分所得的层数为l1,层数均分后的余数为l2,每个线程的编号为id,则满足:
12=L%Q (1)
Figure BDA0002910214040000094
Figure BDA0002910214040000095
其中,
Figure BDA0002910214040000096
表示向下取整,%指求余数。
生产者线程对每层的轮廓线进行路径规划,每个生产者线程去GPU资源池中申请GPU使用权,当分配到GPU后,生产者线程将当前层的轮廓线数据传入GPU内存中,由GPU来计算墙壁轮廓线的起始点位置,即在所有墙壁轮廓线中依次寻找距离(0,0)点最近的线段端点,将结果存入墙壁交点数组。当计算所有墙壁轮廓线的每个起始点后,通过配置参数获得填充所需要的图案,并计算填充图案在填充区域内的起始点,将结果存入填充交点数组中。然后将两个数组从GPU内存中传回线程,由每个线程利用数组中的值计算出墙壁路径和填充路径。最后将路径数据存入进程的共享数据缓冲区中,其中在缓冲区里有一个以层号为下标的数组,每个生产者线程按照层号将数据存入其中,然后继续处理之后的层的数据。
在每个进程内有一个消费者线程,消费者线程只需要执行将缓冲区数组的数据按照下标顺序依次取出,将当前层的路径数据按照G-code标准进行翻译转换,然后将转换后的G-code数据存入每个进程的临时G-code文件中。如果消费者线程要处理的数据不在数组中,则消费者线程处于等待状态,当数组中的数据准备好后,消费者线程才继续进行处理转换。整体过程及数据流向如图6所示。
(5)步骤五:将所有MPI从进程生成的临时G-code文件,通过数据传输的方式传输到主进程中,由主进程通过文件流合并的方式来进行顺序合并,生成当前节点的子模型G-code文件。
图7为生产者线程与GPU的数据交互关系图,其中生产者线程去GPU资源池中的调度单元申请GPU资源,由调度单元来为其分配GPU。获得GPU后,生产者线程将所计算的同层轮廓线数据和配置参数信息传入GPU内存,GPU通过对墙壁轮廓线和填充轮廓线进行相关计算,并将计算结果传回生产者线程,其中GPU可以通过使用CUDA编程模型来对计算进行加速。生产者线程采用独占式GPU的方式,当一个生产者线程获取到GPU资源时,它将对其上锁,当GPU返回计算数据的时候,它对GPU资源进行解锁。
图8为每个节点的每个进程生成G-code临时文件并传输合并的示意图。首先执行节点内多进程之间的文件合并,由于单节点多进程享用同一个内存区域,通过内存拷贝的方式将从进程内的数据传输到主进程,然后主进程将每个从进程的G-code临时文件通过文件流来进行顺序合并,生成子模型的G-code文件,文件名为节点id。在不同节点之间,通过集群内高性能网络和MPI通信函数,来将从节点的主进程中的模型数据传输到主节点的主进程,并由主节点的主进程来将各个子模型数据合并成最终的G-code文件。

Claims (10)

1.一种3D打印模型的G-code并行生成方法,其特征在于步骤如下:
步骤1:计算节点级及进程级数据并行化
在集群内,以面片为基本单元在计算节点间做数据分配,将原有的模型文件切分为多个子模型文件并分配给每个计算节点;每个节点将子模型文件的面片数据按照面片Z值和所需打印层数的对应关系平均划分给每个进程;
步骤2:多进程级的轮廓线生成
在单个节点内,由每个进程对分配到的数据进行STL文件的面片按层切割,并将切割后生成的切线段进行连接,生成轮廓线数据;之后在进程内,按层对横截面内的所有初始轮廓线进行区域划分,在每个初始轮廓线内生成墙壁区域的轮廓线数组和填充区域的轮廓线;
步骤3:多线程G-code路径生成
在单节点中的单个进程内,生成多个生产者线程和一个消费者线程;依照层数,将路径的生成任务平均分发给每个生产者线程,由生产者线程来执行每层轮廓线的路径规划;
步骤4:GPU级的G-code生成并行化
在每个生产者线程计算G-code路径的步骤中,将轮廓线及配置参数导入GPU内存中,由GPU来计算生成打印模型的墙壁和填充的路径规划所需要的值,包括每个墙壁轮廓线的起始点和填充区域内,填充图案与填充轮廓线的交点;并将生成的路径规划所需要的值传回CPU,由线程利用这些结果,生成墙壁和填充的路径;最后将路径数据放入当前进程所设定的数据缓冲区中;
步骤5:在同一进程内,消费者线程执行G-code的数据转换
消费者线程从数据缓冲区按顺序将路径数据依次取出,按照G-code国际标准,将路径数据转换翻译为G-code,并将G-code写入进程所设置的临时文件中;
步骤6:在一个节点内由主进程将每个从进程生成的临时文件按进程顺序依次合并为子模型的G-code文件;之后,在多个节点内将子模型的G-code文件由从节点传到主节点,并由主节点按照节点的id顺序依次合并,生成最终模型的G-code文件。
2.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于步骤1中在计算节点间做数据分配是指,以模型的三角面片为基本单元,以模型的高度和所要切割的层数为划分依据,将每层的切割任务均匀的分配给每个计算节点,将余数层分配给最后一个计算节点,每个计算节点都得到了属于自己层数的Z值范围;然后以面片的最大最小Z值为依据,将属于计算节点Z值范围内的所有面片划分给该计算节点,对于两个节点都属于的面片,同时分配个两个节点;根据划分结果,将原始模型文件分割为若干子模型文件,节点间的顺序和子模型的顺序依次对应。
3.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于步骤1中多进程间做任务划分指,继续将每个计算节点分配到的层数连续均匀划分给每个进程,余数分配给最后一个进程,每个进程可以求得自己所有层的Z值范围;再将节点内属于该范围内的所有面片分配给该进程;对于同时属于两个进程的面片,将数据冗余,即两个进程同时拥有。
4.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于步骤2中所述的切割:对于单节点单进程内的数据,以层为基准,计算出模型每层切平面所在的Z值,然后在进程内寻找与切平面相交的面片,即所找面片的最大Z值和最小Z值包含该切平面的Z值;然后面片与切平面相交,计算出两个交点,生成切线段,存入以层数为下标的二维数组;寻找所有与切平面相交的面片,计算出每层的切线段。
5.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于步骤2中所述的切线段连接:在每一层的切线段数组中,将切线段依次按照右手螺旋的方向顺序连接,生成每层的轮廓线数组。
6.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于步骤2中所述区域划分:利用生成的轮廓线,通过对轮廓线进行偏置操作,按照参数生成所需要的墙壁轮廓线组,并对最内层的墙壁轮廓线进行偏置操作,生成填充区域的填充轮廓线。
7.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于所述步骤4中GPU级的计算是指单节点当前进程内,当生产者线程执行某一层轮廓线的路径规划时,生产者线程从GPU资源池中选取一个GPU,将轮廓线数据和打印配置数据传入GPU内存,由GPU来进行计算所有墙壁轮廓线的起始点,并计算所设定的填充图案与填充轮廓线之间的交点,并将结果分别存入墙壁交点数组和填充交点数组;生产者线程采用独占式GPU的方案,如果资源池中没有GPU,则等待;GPU计算完将生成的墙壁交点数组和填充交点数组传回生产者线程,生产者线程继续执行,依据交点信息生成墙壁轮廓线和填充的路径数据,并将路径数据按照层号存入进程的数据缓冲区的数组中。
8.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于所述步骤5中G-code的转换指的是单节点当前进程内,构造一个消费者线程,消费者线程从数据缓存区的数组中,按照层号依次顺序取出层的路径数据,并按照G-code的标准将路径数据转换为G-code数据,然后将G-code数据存入当前进程所属的临时文件中去,文件名称为节点“id_进程id”;消费者线程依次取出缓冲区数组中的所有路径数据,若数组中没有当前层的数据,消费者线程则进行等待,直至数组中所需层中有数据。
9.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于所述步骤6中节点内的合并是指,在每个节点内设定主从进程,通过数据通信,将从进程的临时文件数据传到主进程,并由主进程将临时文件按照进程编号顺序进行合并,生成当前节点的子模型文件的G-code数据。
10.根据权利要求1所述的一种3D打印模型的G-code并行生成方法,其特征在于所述步骤6中节点间文件合并是指在每个从节点的主进程中,通过集群内的网络进行数据通信传输,将每个从节点的子模型G-code数据收集到主节点内的主进程中,并由主节点内的主进程将不同节点间的文件按照节点顺序合并,生成最终模型的G-code文件。
CN202110083750.XA 2021-01-21 2021-01-21 一种3D打印模型的G-code并行生成方法 Active CN112947870B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110083750.XA CN112947870B (zh) 2021-01-21 2021-01-21 一种3D打印模型的G-code并行生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110083750.XA CN112947870B (zh) 2021-01-21 2021-01-21 一种3D打印模型的G-code并行生成方法

Publications (2)

Publication Number Publication Date
CN112947870A true CN112947870A (zh) 2021-06-11
CN112947870B CN112947870B (zh) 2022-12-30

Family

ID=76235827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110083750.XA Active CN112947870B (zh) 2021-01-21 2021-01-21 一种3D打印模型的G-code并行生成方法

Country Status (1)

Country Link
CN (1) CN112947870B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110956699A (zh) * 2019-11-27 2020-04-03 西安交通大学 一种三角形网格模型gpu并行切片方法
CN116214931A (zh) * 2023-05-05 2023-06-06 季华实验室 3d打印的路径填充方法、装置、设备及可读存储介质
CN117464999A (zh) * 2023-11-01 2024-01-30 深圳市金石三维打印科技有限公司 一种3D打印模型的G-code并行生成方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117764A1 (en) * 2011-11-07 2013-05-09 International Business Machines Corporation Internode Data Communications In A Parallel Computer
CN106846457A (zh) * 2016-11-25 2017-06-13 国家超级计算天津中心 一种ct切片数据可视化重构的八叉树并行构造方法
CN109857543A (zh) * 2018-12-21 2019-06-07 中国地质大学(北京) 一种基于多节点多gpu计算的流线模拟加速方法
US20190197744A1 (en) * 2015-08-07 2019-06-27 Zhejiang University Method for efficient parallel visualizing vector graphic

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130117764A1 (en) * 2011-11-07 2013-05-09 International Business Machines Corporation Internode Data Communications In A Parallel Computer
US20190197744A1 (en) * 2015-08-07 2019-06-27 Zhejiang University Method for efficient parallel visualizing vector graphic
CN106846457A (zh) * 2016-11-25 2017-06-13 国家超级计算天津中心 一种ct切片数据可视化重构的八叉树并行构造方法
CN109857543A (zh) * 2018-12-21 2019-06-07 中国地质大学(北京) 一种基于多节点多gpu计算的流线模拟加速方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110956699A (zh) * 2019-11-27 2020-04-03 西安交通大学 一种三角形网格模型gpu并行切片方法
CN116214931A (zh) * 2023-05-05 2023-06-06 季华实验室 3d打印的路径填充方法、装置、设备及可读存储介质
CN117464999A (zh) * 2023-11-01 2024-01-30 深圳市金石三维打印科技有限公司 一种3D打印模型的G-code并行生成方法

Also Published As

Publication number Publication date
CN112947870B (zh) 2022-12-30

Similar Documents

Publication Publication Date Title
CN112947870B (zh) 一种3D打印模型的G-code并行生成方法
Gueunet et al. Task-based augmented merge trees with fibonacci heaps
Van Luong et al. GPU computing for parallel local search metaheuristic algorithms
Gueunet et al. Task-based augmented contour trees with fibonacci heaps
CN103761215B (zh) 基于图形处理器的矩阵转置优化方法
KR20130016120A (ko) 가속 구조를 구성하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체
Choquette Nvidia hopper h100 gpu: Scaling performance
CN101937425B (zh) 基于gpu众核平台的矩阵并行转置方法
CN110874271A (zh) 一种海量建筑图斑特征快速计算方法及系统
Geng et al. Horizontal or vertical? a hybrid approach to large-scale distributed machine learning
CN106484532B (zh) 面向sph流体模拟的gpgpu并行计算方法
CN101840565B (zh) 一种基于gpu的八叉树并行构建方法
CN109799977B (zh) 指令程序开发调度数据的方法及系统
CN112463739A (zh) 基于海洋模式roms的数据处理方法及系统
Moustafa et al. 3D cartesian transport sweep for massively parallel architectures with PARSEC
CN109522127B (zh) 一种基于gpu的流体机械仿真程序异构加速方法
Moreland et al. Visualization for exascale: Portable performance is critical
CN110543711A (zh) 一种数值堆热工水力子通道模拟的并行实现与优化方法
CN105573834B (zh) 一种基于异构平台的高维词汇树构建方法
Hou et al. An adaptive neighborhood taboo search on GPU for hardware/software co-design
CN101937422B (zh) 基于gpu众核平台的fft并行方法
Yu et al. Accelerated Synchronous Model Parallelism Using Cooperative Process for Training Compute-Intensive Models
Wang et al. An Efficient Method for Training Deep Learning Networks Distributed
CN117311948B (zh) Cpu与gpu异构并行的自动多重子结构数据处理方法
CN114722571B (zh) 一种cpu-gpu协同的增材制造并行扫描线填充方法

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