CN111045800A - 一种基于短作业优先的优化gpu性能的方法及*** - Google Patents

一种基于短作业优先的优化gpu性能的方法及*** Download PDF

Info

Publication number
CN111045800A
CN111045800A CN201911110570.5A CN201911110570A CN111045800A CN 111045800 A CN111045800 A CN 111045800A CN 201911110570 A CN201911110570 A CN 201911110570A CN 111045800 A CN111045800 A CN 111045800A
Authority
CN
China
Prior art keywords
threads
queue
thread
executed
execution time
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.)
Pending
Application number
CN201911110570.5A
Other languages
English (en)
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.)
Wuhan Textile University
Original Assignee
Wuhan Textile 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 Wuhan Textile University filed Critical Wuhan Textile University
Priority to CN201911110570.5A priority Critical patent/CN111045800A/zh
Publication of CN111045800A publication Critical patent/CN111045800A/zh
Pending legal-status Critical Current

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本发明涉及一种基于短作业优先的优化GPU性能的方法及***,本发明通过首先对与要执行的函数,通过预处理,获取它们的执行时间,按照预执行时间递增对这些线程进行排序,提高***响应时间。同时在线程队列中加入算子,在有新线程加入时,利用算子对线程队列进行重新排序,避免出现预执行时间长线程长期得不到响应问题。本发明的目的是使得在相同时间内,完成的作业次数最多,从而优化***性能。与其他的GPU优化性能方法相比,本发明在提高***吞吐量方面有明显的优势,本发明避免了长作业长时间得不到响应的问题,通过设置算子,可以提升长作业执行的顺序位置。

Description

一种基于短作业优先的优化GPU性能的方法及***
技术领域
本发明属于GPU线程调度领域,特别涉及一种基于短作业优先的优化GPU性能的方法及***。
背景技术
随着科技的进步,技术的发展,CPU作为计算机的处理核心,其主要功能在于控制逻辑运算、任务调度,而非大量数据的处理,而GPU最开始作为图形处理程序,功能单一,控制逻辑简单,芯片资源主要用于提升计算能力。近几年逐步发展,GPU在其他非图形处理方面显示出惊人的能力,例如人工智能,大数据分析等等,计算能力被不断地挖掘,也在不断的提升。GPU以其强大的计算能力和日益完善的软件环境吸引了众多来自非图形计算领域的学者的关注,在高性能计算、桌面计算甚至嵌入式计算领域都得到了广泛的应用。
随着GPU越来越通用,越来越多的应用程序需要GPU提供计算能力。然而,非图形应用程序对GPU的优化程度较低,从而导致芯片内资源的利用不足。新一代GPU体系架构表明,其集成的计算资源越来越多,遗憾的是,由于资源的利用率较低,GPU强大的计算能力并没有完全显现出来,同时由于GPU缺乏适当的体系架构来支持共享,需要软件或者硬件或者软硬件结合的方法,来使用其计算资源,由于当中的复杂性,目前的一些方法还是不能显示出GPU强大的能力。因此有关GPU性能优化的研究也得到了学术界和业界的持续关注。
大数据时代的到来使得计算任务加重,面对不同应用的不同资源需求,GPU的资源单核未充分利用。目前主要的调度算法有先到先服务(FCFS)算法、轮询(RR)算法、优先级调度(PSA)算法和最短作业优先(SJF)算法。为了解决GPU资源利用率不足的问题,提出了并发内核执行(CKE)来支持在GPU上并发运行多个内核。线程级并行性是一个很好的解决方向,但是大量并发线程会导致严重的带宽问题,甚至导致内存争用以及堵塞,而无法及时处理的内存请求有可能会导致流水线暂停,以致降低整体性能。多道程序设计也是为了让更多的应用在GPU内核上执行,提高作业处理速度以及效率,从而提高性能,但是多个应用在GPU中同一个SM上执行,有可能会进入死锁的状态,降低性能。针对GPU优化性能的方法可以分为以下几种:(1)通过对GPU片上资源的管理提高性能;(2)GPU多道程序设计;(3)缓存调度。
1.对GPU片上资源的管理
在CPU中,通过控制每个线程的空中指令数,可以很容易地调整物理寄存器和缓存的比例。然而,在GPU中,这种动态控制不可用,因为每个CTA一次获取其所有资源。一旦将CTA分配给SM,则必须静态分配寄存器文件和共享内存,并且在完成CTA之前不能释放。
在GPU的每个SM中,计算资源包括ALU(算术逻辑单元)、SFU(特殊函数单元)以及寄存器,片上内存资源包括只读纹理缓存和常量缓存、L1数据缓存(D-cache)和共享内存。因此,在GPU中,分配时间资源调度更为重要,更关注的是寄存器文件和共享内存分区,而不是缓存。通过对GPU片上资源的管理,更好的为所执行的kernel分配合理的资源。此外,由于GPU的一级缓存由数千个线程共享,因此GPU具有更小的一级缓存,命中率更低。
2.GPU上的多道程序设计
近年来,一些研究显示了硬件支持多道程序设计的新趋势。HSA基金会规范了硬件和软件,以在异构***体系结构上运行多个应用程序。在规范中,它们还包括在同一个GPU中执行多个应用程序,该GPU使用多个同时应用程序队列,这些队列类似于Nvidia的Hyper-Q。以软件为中心的多道程序设计方法通过重构内核和重写应用程序代码可以显著提高了并发性和性能。但在许多情况下,修改每个应用程序以提高并发性可能是不可行的。而且,一旦内核被切片,切片后的内核的大小就不能在运行时进行调整,这可能会导致另一个效率低下的问题。
在GPU中,多线程被用来隐藏长时间的延迟并实现高吞吐量。在出现内存延迟的时候,尽可能完成计算指令,以计算操作掩盖内存的延迟,同时提高***的吞吐量。在出现长作业时,从另一方面说,尽可能的提高作业的完成次数,也可提高***的吞吐量。因此,对作业进行预处理,预估短作业的完成时间变得极为重要。另一方面,由于短作业优先调度算法本身的缺陷,会导致长作业长时间得不到响应,出现线程饿死的状态。线程饿死的出现会降低***吞吐量,降低整体性能。
3.缓存调度
由于GPU复杂的存储层次结构导致的高访存请求延迟和低带宽问题显著地损害了应用程序的性能。为了缓解高访存请求延迟和低带宽问题,GPU引进了L1数据(L1 Data,L1D)缓存。L1D是非常重要的资源,目的是减少GPU复杂的存储层次结构导致的性能损失。
缓存调度策略通过分析缓存请求的数据访存行为问题,提出优化策略,从而提高GPU缓存的性能。GPU SIMT的执行模式倾向于运行尽可能多的线程以保证充分利用GPU的并行资源,然而,大量的线程并行执行导致的缓存竞争问题往往会降低性能提升。缓存竞争问题在内存访问模式不规则的应用程序上影响较大。近年来的研究缓存绕过方法是解决缓存竞争问题的有效方法。
衡量调度算法的准则包括多个方面,第一是公平性,调度算法在选择下一个运行的线程时,要考虑到同等地位的线程必须有相同的机会获得处理器执行权;第二是有效利用时间,只要有进程或线程还在等待执行,就不能让计算核处于空闲状态。另外,不同类型的操作***对于调度算法会有不同的需求。
发明内容
本发明的所要解决的技术问题是提供一种基于短作业优先的优化GPU性能的方法及***,本发明以线程调度为核心,提高线程调度次数,提升***吞吐量来优化GPU性能。基于SJF算法,对kernel预执行,再通过设置算子,提升等待时间长的线程位置。
本发明解决上述技术问题的技术方案如下:
基于短作业优先的优化GPU性能的方法,包括以下步骤:
步骤1、对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为ti,得到所有共M个待执行线程的执行时间t1-tM
步骤2、按从小到大的顺序对t1-tM进行排序,并根据t1-tM的顺序将t1-tM对应的线程进行排序,得到队列Q;
步骤3、按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
进一步的,所述步骤3中,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间tM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个Tp待执行线程的新的执行时间为执行时间为tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和TM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
进一步的,所述k小于1。
基于短作业优先的优化GPU性能的***,用于对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为Ti,得到所有共M个待执行线程的执行时间t1-tM
并按从小到大的顺序对t1-tM进行排序,并根据t1-tM的顺序将t1-tM对应的线程进行排序,得到队列Q;
再按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
进一步的,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间tM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个tp待执行线程的新的执行时间为执行时间为tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和tM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
进一步的,所述k小于1。
本发明的有益效果为:1、本发明在提高***吞吐量方面有明显的优势;2、本发明避免了长作业长时间得不到调度的情况,通过设置算子,可以提升长作业执行的顺序位置。
附图说明
图1为本发明的方法流程示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,一种基于短作业优先的优化GPU性能的方法,包括以下步骤:
步骤1、对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为ti,得到所有共M个待执行线程的执行时间t1-tM
步骤2、按从小到大的顺序对t1-tM进行排序,并根据t1-tM的顺序将t1-tM对应的线程进行排序,得到队列Q;
步骤3、按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
所述步骤3中,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间tM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个tp待执行线程的新的执行时间为执行时间为Tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和tM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
实际操作中,k可以按经验设定,所述k小于1,本实施例中,k=0.75。
一种基于短作业优先的优化GPU性能的***,用于对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为ti,得到所有共M个待执行线程的执行时间t1-tM
并按从小到大的顺序对t1-tM进行排序,并根据t1-tM的顺序将t1-tM对应的线程进行排序,得到队列Q;
再按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
所述的基于短作业优先的优化GPU性能的***,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间TM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个tp待执行线程的新的执行时间为执行时间为tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和tM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于短作业优先的优化GPU性能的方法,其特征在于,包括以下步骤:
步骤1、对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为Ti
步骤2、按执行时间从小到大的顺序对线程进行排序,并根据执行时间长短对线程进行排序,得到队列Q;
步骤3、按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
2.根据权利要求1所述的基于短作业优先的优化GPU性能的方法,其特征在于,所述步骤3中,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间tM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个tp待执行线程的新的执行时间为执行时间为tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和tM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
3.根据权利要求1所述的基于短作业优先的优化GPU性能的方法,其特征在于,所述k小于1。
4.一种基于短作业优先的优化GPU性能的***,其特征在于,用于对于所有待执行的线程进行预处理,获得每个待执行线程的执行时间,设第i个待执行线程的执行时间为ti,得到所有共M个待执行线程的执行时间t1-tM
并按从小到大的顺序对t1-tM进行排序,并根据t1-tM的顺序将t1-tM对应的线程进行排序,得到队列Q;
再按顺序执行队列Q中的线程,直至队列Q中所有线程执行完毕;
在执行过程中,执行每一个线程之前,均需判断是否有新线程进入,若判断结果为是,则对根据新线程对队列Q中剩余未执行的线程进行更新,若判断结果为否,则保持队列Q中线程的顺序。
5.根据权利要求4所述的基于短作业优先的优化GPU性能的***,其特征在于,根据新线程对队列Q进行更新的方法为:计算得到新线程的执行时间tM+1,将队列Q中剩余未执行线程的执行时间乘以算子k,得到新的执行时间,即第p个tp待执行线程的新的执行时间为执行时间为tp’=tp*k,所述k为预先设定的算子,设队列Q中剩余未执行的线程为第p-第M个,则按从小到大的顺序对tp’-tM’和tM+1进行排序,并根据tp’-tM’和tM+1的顺序将tp’-tM’和tM+1对应的线程进行排序,将新线程加入队列Q中剩余未执行的线程中,按照tp’-tM’和tM+1的顺序对队列Q中剩余未执行的线程顺序进行更新,按顺序继续执行队列Q中剩余未执行的线程。
6.根据权利要求4所述的基于短作业优先的优化GPU性能的***,其特征在于,所述k小于1。
CN201911110570.5A 2019-11-14 2019-11-14 一种基于短作业优先的优化gpu性能的方法及*** Pending CN111045800A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911110570.5A CN111045800A (zh) 2019-11-14 2019-11-14 一种基于短作业优先的优化gpu性能的方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911110570.5A CN111045800A (zh) 2019-11-14 2019-11-14 一种基于短作业优先的优化gpu性能的方法及***

Publications (1)

Publication Number Publication Date
CN111045800A true CN111045800A (zh) 2020-04-21

Family

ID=70231882

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911110570.5A Pending CN111045800A (zh) 2019-11-14 2019-11-14 一种基于短作业优先的优化gpu性能的方法及***

Country Status (1)

Country Link
CN (1) CN111045800A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782379A (zh) * 2020-08-01 2020-10-16 中国人民解放军国防科技大学 基于完成效率的数据中心作业调度方法及***
CN113448705A (zh) * 2021-06-25 2021-09-28 皖西学院 一种不平衡作业调度算法
CN114463159A (zh) * 2022-01-06 2022-05-10 江苏电力信息技术有限公司 一种gpu资源共享方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609312A (zh) * 2012-01-10 2012-07-25 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法
CN102662636A (zh) * 2012-03-27 2012-09-12 北京华如科技股份有限公司 一种基于两层虚拟机的并行作业调度的方法
US9135741B2 (en) * 2012-01-23 2015-09-15 Nec Laboratories America, Inc. Interference-driven resource management for GPU-based heterogeneous clusters
CN109643291A (zh) * 2016-09-29 2019-04-16 英特尔公司 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609312A (zh) * 2012-01-10 2012-07-25 中国科学技术大学苏州研究院 基于公平性考虑的短作业优先内存请求调度方法
US9135741B2 (en) * 2012-01-23 2015-09-15 Nec Laboratories America, Inc. Interference-driven resource management for GPU-based heterogeneous clusters
CN102662636A (zh) * 2012-03-27 2012-09-12 北京华如科技股份有限公司 一种基于两层虚拟机的并行作业调度的方法
CN109643291A (zh) * 2016-09-29 2019-04-16 英特尔公司 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郑鹏等 编著: "《计算机操作*** 第2版》", 31 July 2014 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782379A (zh) * 2020-08-01 2020-10-16 中国人民解放军国防科技大学 基于完成效率的数据中心作业调度方法及***
CN111782379B (zh) * 2020-08-01 2023-01-31 中国人民解放军国防科技大学 基于完成效率的数据中心作业调度方法及***
CN113448705A (zh) * 2021-06-25 2021-09-28 皖西学院 一种不平衡作业调度算法
CN114463159A (zh) * 2022-01-06 2022-05-10 江苏电力信息技术有限公司 一种gpu资源共享方法
CN114463159B (zh) * 2022-01-06 2024-02-23 江苏电力信息技术有限公司 一种gpu资源共享方法

Similar Documents

Publication Publication Date Title
Zhou et al. S^ 3dnn: Supervised streaming and scheduling for gpu-accelerated real-time dnn workloads
Wang et al. Simultaneous multikernel GPU: Multi-tasking throughput processors via fine-grained sharing
US9804666B2 (en) Warp clustering
US8219993B2 (en) Frequency scaling of processing unit based on aggregate thread CPI metric
Sethia et al. Mascar: Speeding up GPU warps by reducing memory pitstops
US9086925B2 (en) Methods of processing core selection for applications on manycore processors
CN112463709A (zh) 可配置的异构人工智能处理器
KR20120058605A (ko) Gpu 워크의 하드웨어 기반 스케쥴링
CN111045800A (zh) 一种基于短作业优先的优化gpu性能的方法及***
CN108595258A (zh) 一种gpgpu寄存器文件动态扩展方法
CN109445565B (zh) 一种基于流多处理器内核独占和预留的gpu服务质量保障方法
US8180998B1 (en) System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
Li et al. Efficient algorithms for task mapping on heterogeneous CPU/GPU platforms for fast completion time
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
US10152329B2 (en) Pre-scheduled replays of divergent operations
TWI768649B (zh) 執行緒束排程方法及使用該方法的串流多處理器
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
KR20140004654A (ko) 처리 디바이스의 동기 동작을 위한 방법 및 시스템
US11875425B2 (en) Implementing heterogeneous wavefronts on a graphics processing unit (GPU)
Garcia et al. Dynamic Percolation: A case of study on the shortcomings of traditional optimization in Many-core Architectures
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法
CN117501254A (zh) 使用近存储器计算为复杂操作提供原子性
CN114003359A (zh) 基于弹性持久的线程块的任务调度方法、***及gpu
Singh Toward predictable execution of real-time workloads on modern GPUs
Weng et al. Raise: Efficient gpu resource management via hybrid scheduling

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200421