CN106055311B - 基于流水线多线程的MapReduce任务并行化方法 - Google Patents

基于流水线多线程的MapReduce任务并行化方法 Download PDF

Info

Publication number
CN106055311B
CN106055311B CN201610357853.XA CN201610357853A CN106055311B CN 106055311 B CN106055311 B CN 106055311B CN 201610357853 A CN201610357853 A CN 201610357853A CN 106055311 B CN106055311 B CN 106055311B
Authority
CN
China
Prior art keywords
node
subtask
data
data block
mapreduce
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
CN201610357853.XA
Other languages
English (en)
Other versions
CN106055311A (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.)
Zhejiang University of Technology ZJUT
Original Assignee
Zhejiang University of Technology ZJUT
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 Zhejiang University of Technology ZJUT filed Critical Zhejiang University of Technology ZJUT
Priority to CN201610357853.XA priority Critical patent/CN106055311B/zh
Publication of CN106055311A publication Critical patent/CN106055311A/zh
Application granted granted Critical
Publication of CN106055311B publication Critical patent/CN106055311B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

本发明提出了一种基于流水线多线程的MapReduce任务并行化方法,将MapReduce任务的计算过程划分为具有一定依赖关系的子任务,以此能够将节点内串行的MapReduce任务并行化为流水线多线程MapReduce任务,从而充分利用多核节点丰富的硬件资源提高大数据处理性能。

Description

基于流水线多线程的MapReduce任务并行化方法
技术领域
本发明专利涉及一种基于流水线多线程的MapReduce任务并行化方法。首先,将MapReduce任务的计算过程划分为具有一定依赖关系的子任务,建立包括控制依赖与数据依赖的子任务依赖图;其次,将子任务依赖图转换为子任务有向无环图;再次,将子任务有向无环图转换为基于流水线多线程的MapReduce任务;最后,构建面向多核机群的MapReduce多粒度混合并行处理模型,该方法的优势是能够充分利用多核机群节点内节点间的丰富硬件资源提高大数据处理性能。
背景技术
MapReduce是2004年由Google公司提出的一种基于普通机群的并行编程模型,能够实现对大规模数据集进行并行处理,由于其丰富的表达能力、高扩展性等特性在过去的十年中得到了迅速的发展和广泛应用,被广泛应用于数据挖掘,科学计算等。
MapReduce的基本思想是将原始输入数据分成大小相同的数据块,并均匀分配到机群中不同的节点上,每个节点启动相应的进程对这些数据块进行并行处理,分布式存储在机群各个节点的数据块。MapReduce模型主要提供了两个功能函数Map和Reduce,在计算过程中以键值对作为函数的输入和输出,Map函数负责把原始数据转化为键值对,并生成一系列的中间键值对,然后通过合并中间键值对并发给Reduce函数进行处理。
MapReduce主要是面向普通机群的,机群节点是单CPU处理器,通过在机群节点启动独立的进程完成计算任务,称为“进程级并行机制”。然而,近年来随着多核处理器技术的成熟,越来越多的机群采用多核处理器,构建性能更高的多核机群。硬件层面的变化必然会影响到软件层面,多核机群这一新的计算平台为传统MapReduce并行编程模型带来巨大挑战:
首先,传统MapReduce利用多核机群硬件资源的效率不高。一般地,节点对数据块的处理过程包括一系列子过程,如数据读取、数据序列化、数据计算、数据合并、数据写入等,传统MapReduce对这些子过程是串行执行的,使得I/O资源与CPU资源等的利用率不高。
其次,传统MapReduce无法充分利用线程级并行机制。传统MapReduce主要采用进程级并行机制,而多核处理器的优势在于能够采用线程级并行机制加速程序的性能,传统MapReduce的这一局限性制约了在多核处理器上进一步提高大数据处理的性能。
另外,传统MapReduce在多核机群环境下将产生过多的进程管理开销。传统MapReduce为每个任务启动一个进程,当多个进程同时处理被分割后的数据块时,将会反复启动和销毁较多的进程,在处理超大规模(TB级)数据集时将导致大量的进程管理开销[21]。
因此,仅仅采用进程级并行机制的传统MapReduce在多核机群环境下表现出较大的局限性,难以充分利用多核机群丰富的硬件资源进一步提高大数据处理性能。为此,本发明专利提出一种基于流水线多线程的Map/Reduce任务并行化方法,一方面能够充分利用多核节点硬件资源,另一方面也能够提高单个任务的计算性能。
MapReduce研究涉及并行化算法、任务调度、资源分配、I/O优化等多方面的内容。下面只对面向不同硬件环境的MapReduce相关研究进行简要的分析:
(1)面向共享内存处理器:Ranger(Proceedings of the IEEE 13thInternational Symposium on High Performance Computer Architecture,2007)和Talbot等(Proceedings of the 2th International Workshop on MapReduce and ItsApplications,2011)借鉴MapReduce并行编程思想提出并实现了并行编程语言Phoenix(C版本)和Phoenix++(C++版本),这些语言提供了线程管理、动态任务调度、数据分片和线程容错的方法,用于编写MapReduce并行化程序,实验结果表明在多核、多处理器环境下能够获得较高的数据处理速度。Chen等(ACM Transactions on Architecture&CodeOptimization,2013)提出了Tiled-MapReduce,它在Phoenix基础上通过把一个较大的任务划分为比较小的子任务进行迭代处理,进一步提高了Phoenix的数据处理性能,此外还通过对显存、缓存等的优化提高了数据传输性能。
(2)面向在Cell处理器:Rafique等(Proceedings of the International IEEEParallel and Distributed Processing Symposium,2009)采用一种Stream机制实现了MapReduce模型,并增加了自适应资源调度机制,此外CellRM还通过双缓存技术、异步I/O技术等提升了I/O性能。
(3)面向GPU处理器:Fang等(IEEE Transactions on Parallel and DistributedSystems,2011)提出了Mars方法,利用GPU处理器上的丰富处理单元加速数据处理性能,设计了适用于GPU处理器的API库,能够在GPU环境下编写MapReduce程序。
(5)面向多核机群:肖之慰等(复旦大学硕士论文,2012)开发了Azwraith原型系统,它融合了一个面向多核处理器的Ostrich系统和一个面向普通机群环境的Hadoop系统,可以将数据加载和数据处理并行处理,并基于共享内存的高速缓存模型,避免相同数据的重复加载。
以上面向共享内存处理器、Cell处理器、GPU处理器的研究属于在单个超级节点环境下研究,这些方法能够获得的性能受限于单个节点的计算能力,不适合处理较大的数据集(如TB级);而关于面向多核机群的研究主要侧重于数据局部性及其缓存方面的研究,尚未从较深层次的并行机制角度给出系统的并行处理方法。
为了充分利用多核机群中丰富的硬件资源提高MapReduce的处理大数据的性能,本发明专利提出了一种基于流水线多线程的并行化方法,将MapReduce任务并行化为多线程任务,以充分利用单个节点内部的硬件资源提高大数据处理性能。
发明内容
本发明要克服现有技术的上述缺点,为了在多核机群环境下进一步提高MapReduce的处理性能,提出了一种基于流水线多线程的MapReduce任务并行化方法,该方法能够将节点内串行的MapReduce任务并行化为流水线多线程MapReduce任务,从而充分利用多核节点丰富的硬件资源提高大数据处理性能。
本发明所述的一种基于流水线多线程的MapReduce任务并行化方法,包括以下步骤:
(1)将节点内数据块细分为粒度更小的数据块;
根据MapReduce处理机制,数据块(Chunk)是机群节点处理的基本单位,处理的数据集体量越大,被划分的数据块一般也会越大,如数据块大小一般为128M或256M。为了实现节点内对数据块的流水处理,需将数据块进一步细分为粒度更细的数据块,这样被细分的数据块能够在节点内以流水线方式并行处理;
细分数据块的数量可以根据细分前数据块(chunk)大小和细分数据的粒度计算得到,其计算公式如下:
N=S/G (1)
其中,S为细分前数据块的大小,G为细分数据块粒度,N为细分后数据块数量。根据公式(1)计算得到的细分数据块是节点内流水先处理的基本单位;
(2)将节点内串行的MapReduce任务划分为若干子任务;
(2.1)将节点内串行的MapReduce任务划分为若干个子任务,如将节点的Map任务或Reduce任务划分为数据读取、数据序列化、数据计算、数据合并、数据写入等子任务;
(2.2)根据子任务之间的数据依赖和控制依赖,建立子任务之间的依赖关系,构建子任务依赖图;
(3)将子任务依赖图转换为子任务有向无环图;
并行化后的子任务有向无环图的节点表示子任务,节点之间的有向边表示子任务的数据依赖和控制依赖关系。将子任务依赖图转换为子任务有向无环图的算法如下:
输入:V[]、E[]分别表示节点以及有向边的集合
输出:子任务有向无环图
步骤:
31.访问顶点v//v表示节点集合V中的顶点
32.trace.add(v)//trace保存遍历路径
33.visited[v]=-1//visited表示节点访问标记,初始值为0。其值为0表示该节点未被访问过,其值为-1表示该节点已经被访问过一次,其值为1表示该节点所有后继节点都已经被访问
34.w=v的第一个邻接节点
35.while(w存在)
if(visited[w]=-1)
读出trace中从w节点(包括)至trace中最后一个节点(包括)间的所有节点,这些节点组成了一个环,在原有向图中将该环合并为新节点
if(visited[w]=0)
从顶点w开始递归执行该算法
w=v的下一个邻接节点
visited[v]=1
trace.remove(v)
(4)根据子任务有向无环图,将串行的MapReduce任务并行化为流水线多线程MapReduce任务;
(4.1)将子任务有向无环图的每个节点对应转换为一个独立的线程;
(4.2)将子任务有向无环图的每个有向边转换为一对读写操作,有向边的出边为读操作,有向边的入边为写操作;
(4.3)将读写操作实现为基于共享内存的队列函数,当队列为空或满时线程等待,否则线程执行读写操作;
(4.4)基于得到的线程及与其相关的读写操作集合构建一个流水线线程,这些线程在通信队列的支持下以流水线的方式并行执行;
(5)构建多核机群环境下MapReduce多粒度混合并行处理机制;
(5.1)每个流水线多线程MapReduce任务通过利用多核节点内的硬件资源并行执行,加速节点内的数据块并行处理性能;
(5.2)多个流水线多线程MapReduce任务通过利用多核机群节点间的硬件资源并行执行,加速节点间的数据块分布式处理能力;
本发明的优点是:本发明提出了一种基于流水线多线程的MapReduce并行化方法,其有点在于能够充分利用多核机群内节点内和节点间丰富的硬件资源,基于进程级和线程级两种并行机制加速大数据的处理性能,在多核机群已经是当前及今后主要的高性能计算平台的背景下具有重要的意义。
附图说明
图1本发明的应用例的wordcount程序子任务依赖图
图2本发明的应用例的wordcount程序子任务有向无环图
图3本发明的应用例的wordcount程序子任务线程分配图
图4本发明的应用例的流水线多线程MapReduce任务并行处理时空图
图5本发明的应用例的多核机群环境下MapReduce多粒度混合并行处理模型
具体实施方式
下面结合附图对本发明做进一步说明。
WordCount单词计数程序是大数据处理的经典例子,结合该程序对本发明专利的实施方式进行说明,步骤如下:
(1)将节点内数据块细分为粒度更小的数据块;
设数据块大小为128M,细分后数据块的大小为8M,根据计算公式N=S/G,可以计算得到细分后数据块的数量为16,这是节点内流水线处理的任务数量;
(2)将节点内串行的MapReduce任务划分为若干子任务;
(2.1)将节点内串行的MapReduce任务划分为若干个子任务。将Map阶段划分为反序列化、数据读取、获取Tokens、写入context、数据收集、序列化、缓存溢写、溢写合并8个子任务;将Shuffle阶段划分为数据传输、shuffle文件合并2个子任务;将Reduce阶段划分为中间数据合并、反序列化、获取数值、次数累加、数据写出5个子任务;
(2.2)根据子任务之间的数据依赖和控制依赖,建立子任务之间的依赖关系,构建子任务依赖图,如图1所示;
(3)将子任务依赖图转换为子任务有向无环图;
根据算法将图1所示的子任务依赖图转换为子任务有向无环图,如图2所示。
(4)根据子任务有向无环图,将串行的MapReduce任务并行化为流水线多线程MapReduce任务;
(4.1)将子任务有向无环图的每个节点对应转换为一个独立的线程,根据图2的子任务有向无环图,将其中的每个节点分别转换为一个线程,即Map阶段包括7个线程,分别执行反序列化、数据读取、单词分离、数据收集、序列化、缓存溢写、溢写合并,Shuffle阶段包括2个线程,分别执行中间数据传输、shuffle文件合并,Reduce阶段包括4个线程,分别执行中间数据合并、反序列化、词频统计、数据写出的功能,如图3所示;
(4.2)子任务的每个有向边转换为一对数据读写操作,有向边的出边为读操作,有向边的入边为写操作,使数据在有向图中流动。基于得到的线程及与其相关的读写操作集合构建一个流水线线程,这些线程在通信队列的支持下以流水的方式并行执行;
(4.3)将读写操作实现为基于共享内存的队列函数,当队列为空或满时线程等待,否则线程执行读写操作;
(4.4)基于得到的线程及与其相关的读写操作集合构建一个流水线线程,,这些线程在通信队列的支持下以流水的方式并行执行,其执行的时空图如图4所示;
(5)构建多核机群环境下MapReduce多粒度混合并行处理机制;
(5.1)每个流水线多线程MapReduce任务通过利用多核节点内丰富的硬件资源并行执行,加速节点内的数据块并行处理性能。如图5所示,节点内Map阶段、Shuffle、Reduce阶段分别在节点内以流水线多线程方式并行执行。
(5.2)多个流水线多线程MapReduce任务通过利用多核机群节点间的硬件资源并行执行,加速节点间的数据块分布式处理能力,如图5所示,节点间的Map阶段、Shuffle、Reduce阶段分别在节点间以进程级并行方式并行执行。
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

Claims (1)

1.一种基于流水线多线程的MapReduce任务并行化方法,包括以下步骤:
(1)将节点内数据块细分为粒度更小的数据块;
根据MapReduce处理机制,数据块(Chunk)是机群节点处理的基本单位;为了实现节点内对数据块的流水处理,需将数据块进一步细分为粒度更细的数据块,这样被细分的数据块能够在节点内以流水线方式并行处理;
细分数据块的数量可以根据细分前数据块(chunk)大小和细分数据的粒度计算得到,其计算公式如下:
N=S/G (1)
其中,S为细分前数据块的大小,G为细分数据块粒度,N为细分后数据块数量;根据公式(1)计算得到的细分数据块是节点内流水线处理的基本单位;
(2)将节点内串行的MapReduce任务划分为若干子任务;
(2.1)将节点内串行的MapReduce任务划分为若干个子任务,如将节点的Map任务或Reduce任务划分为数据读取、数据序列化、数据计算、数据合并、数据写入的子任务;
(2.2)根据子任务之间的数据依赖和控制依赖,建立子任务之间的依赖关系,构建子任务依赖图;
(3)将子任务依赖图转换为子任务有向无环图;
并行化后的子任务有向无环图的节点表示子任务,节点之间的有向边表示子任务的数据依赖和控制依赖关系;将子任务依赖图转换为子任务有向无环图的算法如下:
输入:V[]、E[]分别表示节点以及有向边的集合
输出:子任务有向无环图
步骤:
31.访问顶点v//v表示节点集合V中的顶点
32.trace.add(v)//trace保存遍历路径
33.visited[v]=-1//visited表示节点访问标记,初始值为0;其值为0表示该节点未被访问过,其值为-1表示该节点已经被访问过一次,
其值为1表示该节点所有后继节点都已经被访问
34.w=v的第一个邻接节点
35.while(w存在)
if(visited[w]=-1)
读出trace中的w节点以及从w节点至trace中最后一个节点间的所有节点,这些节点组成了一个环,在原有向图中将该环合并为新节点
if(visited[w]=0)
从顶点w开始递归执行该算法
w=v的下一个邻接节点
visited[v]=1
trace.remove(v)
(4)根据子任务有向无环图,将串行的MapReduce任务并行化为流水线多线程MapReduce任务;
(4.1)将子任务有向无环图的每个节点对应转换为一个独立的线程;
(4.2)将子任务有向无环图的每个有向边转换为一对读写操作,有向边的出边为读操作,有向边的入边为写操作;
(4.3)将读写操作实现为基于共享内存的队列函数,当队列为空或满时线程等待,否则线程执行读写操作;
(4.4)基于得到的线程及与其相关的读写操作集合构建一个流水线线程,这些线程在通信队列的支持下以流水线的方式并行执行;
(5)构建多核机群环境下MapReduce多粒度混合并行处理机制;
(5.1)每个流水线多线程MapReduce任务通过利用多核节点内的硬件资源并行执行,加速节点内的数据块并行处理性能;
(5.2)多个流水线多线程MapReduce任务通过利用多核机群节点间的硬件资源并行执行,加速节点间的数据块分布式处理能力。
CN201610357853.XA 2016-05-26 2016-05-26 基于流水线多线程的MapReduce任务并行化方法 Active CN106055311B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610357853.XA CN106055311B (zh) 2016-05-26 2016-05-26 基于流水线多线程的MapReduce任务并行化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610357853.XA CN106055311B (zh) 2016-05-26 2016-05-26 基于流水线多线程的MapReduce任务并行化方法

Publications (2)

Publication Number Publication Date
CN106055311A CN106055311A (zh) 2016-10-26
CN106055311B true CN106055311B (zh) 2018-06-26

Family

ID=57175404

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610357853.XA Active CN106055311B (zh) 2016-05-26 2016-05-26 基于流水线多线程的MapReduce任务并行化方法

Country Status (1)

Country Link
CN (1) CN106055311B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402952A (zh) * 2016-05-20 2017-11-28 伟萨科技有限公司 大数据处理加速器及大数据处理系统
CN107092778A (zh) * 2017-03-30 2017-08-25 江苏骏龙光电科技股份有限公司 一种基于多核cpu的光纤测量并行计算方法
CN107220111B (zh) * 2017-04-28 2019-08-09 华中科技大学 一种基于任务窃取的任务调度方法及系统
CN107391250B (zh) * 2017-08-11 2021-02-05 成都优易数据有限公司 一种提高Mapreduce任务Shuffle性能的控制器调度方法
CN107908471B (zh) * 2017-09-26 2021-06-08 聚好看科技股份有限公司 一种任务并行处理方法和处理系统
CN110659070B (zh) * 2018-06-29 2022-04-08 赛灵思公司 高并行度计算系统及其指令调度方法
CN109213587B (zh) * 2018-09-12 2021-11-09 中国人民解放军战略支援部队信息工程大学 GPU平台下的多Stream并行DAG图任务映射策略
CN109558376A (zh) * 2018-11-09 2019-04-02 浙江工业大学 一种面向MapReduce框架的有效计算与数据传输重叠执行方法
CN109684089B (zh) * 2018-12-18 2020-08-18 创新奇智(广州)科技有限公司 一种基于预测模型的任务调度方法、系统及电子设备
CN110533183B (zh) * 2019-08-30 2021-08-20 东南大学 流水线分布式深度学习中异构网络感知的任务放置方法
CN113760524A (zh) * 2020-11-17 2021-12-07 北京沃东天骏信息技术有限公司 任务执行方法和装置
CN112667719A (zh) * 2020-12-27 2021-04-16 武汉达梦数据库股份有限公司 一种hadoop集群运行ETL的流程分解方法与装置
CN113076198A (zh) * 2021-04-27 2021-07-06 上海商汤临港智能科技有限公司 数据处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN103870338A (zh) * 2014-03-05 2014-06-18 国家电网公司 一种基于cpu核管理的分布式并行计算平台及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710535B2 (en) * 2011-08-12 2017-07-18 Nexenta Systems, Inc. Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN103870338A (zh) * 2014-03-05 2014-06-18 国家电网公司 一种基于cpu核管理的分布式并行计算平台及方法

Also Published As

Publication number Publication date
CN106055311A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
CN106055311B (zh) 基于流水线多线程的MapReduce任务并行化方法
Jiang et al. Scaling up MapReduce-based big data processing on multi-GPU systems
CN110704360B (zh) 一种基于异构fpga数据流的图计算优化方法
US9053067B2 (en) Distributed data scalable adaptive map-reduce framework
US9152601B2 (en) Power-efficient nested map-reduce execution on a cloud of heterogeneous accelerated processing units
Xie et al. CuMF_SGD: Parallelized stochastic gradient descent for matrix factorization on GPUs
De Kruijf et al. Mapreduce for the cell broadband engine architecture
Canny et al. Machine learning at the limit
Chen et al. Pipelined multi-gpu mapreduce for big-data processing
CN110413776A (zh) 一种基于cpu-gpu协同并行的文本主题模型lda高性能计算方法
Jiang et al. A parallel fp-growth algorithm based on gpu
Chen et al. HiClus: Highly scalable density-based clustering with heterogeneous cloud
Sun et al. GraphMP: An efficient semi-external-memory big graph processing system on a single machine
Vijayalakshmi et al. The survey on MapReduce
Xie et al. Adaptive preshuffling in Hadoop clusters
Zhao et al. Gpu-accelerated cloud computing for data-intensive applications
Saravanan et al. Big data in massive parallel processing: A multi-core processors perspective
Wickramasinghe et al. High‐performance iterative dataflow abstractions in Twister2: TSet
Rao et al. A critical performance study of memory mapping on multi-core processors: An experiment with k-means algorithm with large data mining data sets
Xu et al. Evaluation and trade-offs of graph processing for cloud services
Chong et al. A Multi-GPU framework for in-memory text data analytics
Wang et al. Spark-based Parallelization of Basic Local Alignment Search Tool.
Lai et al. A BSP model graph processing system on many cores
Koike et al. A novel computational model for GPUs with application to I/O optimal sorting algorithms
Monica et al. Shuffle phase optimization in spark

Legal Events

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