CN106019334B - 一种基于gpu的导航软件接收机的相关器实现方法 - Google Patents

一种基于gpu的导航软件接收机的相关器实现方法 Download PDF

Info

Publication number
CN106019334B
CN106019334B CN201610519807.5A CN201610519807A CN106019334B CN 106019334 B CN106019334 B CN 106019334B CN 201610519807 A CN201610519807 A CN 201610519807A CN 106019334 B CN106019334 B CN 106019334B
Authority
CN
China
Prior art keywords
thread
data
thread block
input data
implementation method
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
CN201610519807.5A
Other languages
English (en)
Other versions
CN106019334A (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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong 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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN201610519807.5A priority Critical patent/CN106019334B/zh
Publication of CN106019334A publication Critical patent/CN106019334A/zh
Application granted granted Critical
Publication of CN106019334B publication Critical patent/CN106019334B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/01Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/13Receivers
    • G01S19/35Constructional details or hardware or software details of the signal processing chain
    • G01S19/37Hardware or software details of the signal processing chain

Abstract

本发明提供了一种基于GPU的导航软件接收机的相关器实现方法,包括:步骤1,从多个卫星通道接收输入数据,所述输入数据包括通道扩频码和通道载波剥离后的中频数据;步骤2,以二维的线程网格运行相关计算的核函数,进行多通道多时间点的同步相关计算,所述线程网格的X维上的线程块对应处理同一卫星通道的输入数据,且每个所述线程块处理H/M个毫秒的数据,从而实现对同一通道输入数据上M个时间点上数据的同步相关计算,其中,所述H为同一卫星通道的输入数据的毫秒长度,同一X维上所述线程块的个数为所述M,所述Y维上的线程块与不同的卫星通道对应,从而实现对多通道输入数据的同步相关计算;步骤3,获得同步相关计算的结果。

Description

一种基于GPU的导航软件接收机的相关器实现方法
技术领域
本发明涉及卫星导航技术领域,具体地,涉及一种基于GPU的导航软件接收机的相关器实现方法。
背景技术
目前,主流的GNSS接收机用专用集成电路(ASIC,Application SpecificIntegrated Circuit)实现,导航芯片大规模应用于导航终端,但是,随着全球卫星导航系统(GNSS,Global Navigation Satellite System)系统的升级和各种区域导航系统的建设(如QZSS),越来越多的导航信号格式被引入,而这些信号与原有系统不兼容,需要开发新的信号处理算法。而基于ASIC实现的导航接收机灵活性差,旧的接收机无法兼容新的信号,因而,软件接收机被提出。
软件接收机由于其可复用性以及良好的可扩展性,成为导航算法测试和验证的理想平台,成为近年来的研究热点。然而,软件接收机由于只有通用处理器,缺乏硬件接收机中大量的硬件计算单元,因而其计算能力不强,尤其对于采样率高达数十MHz乃至上百MHz的中频数据,其处理速度远远达不到实时处理的要求。
接收机的计算能力的提升是目前亟待解决的问题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于GPU的导航软件接收机的相关器实现方法。
根据本发明提供的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,包括:
步骤1,从多个卫星通道接收输入数据,所述输入数据包括通道扩频码和通道载波剥离后的中频数据;
步骤2,以二维的线程网格运行相关计算的核函数,进行多通道多时间点的同步相关计算,所述线程网格的X维上的线程块对应处理同一卫星通道的输入数据,且每个所述线程块处理H/M个毫秒的数据,从而实现对同一通道输入数据上M个时间点上数据的同步相关计算,其中,所述H为同一卫星通道的输入数据的毫秒长度,同一X维上所述线程块的个数为所述M,所述Y维上的线程块与不同的卫星通道对应,从而实现对多通道输入数据的同步相关计算;
步骤3,获得同步相关计算的结果。
作为一种优化方案,所述线程块进一步包括2n个线程,每个线程处理连续相连的多个数据点。
作为一种优化方案,所述线程块进一步包括2n个线程,每个线程处理固定间隔的多个数据点。
作为一种优化方案,所述线程块配置为处理H/M个毫秒的数据进一步包括:
步骤21,线程块内对待处理的H/M个毫秒内的所述通道扩频码和所述通道载波剥离后的中频数据进行相干积分;
步骤22,线程内对相干积分后的数据进行内部累加,每个线程获得一累加结果;
步骤23,同一线程块所包含的线程之间对所述累加结果进行规约求和获得1个时间点上数据的相关计算结果。
作为一种优化方案,所述步骤23中的规约求和过程进一步包括:
步骤231,对同一线程块中线程的所述累加结果取依次相邻成对,对每一对进行一次求和,
步骤232,对上一次求和的结果再次取依次相邻成对,对每一对再次进行一次求和,
步骤233,若本次求和结果数量大于1,则回到步骤232,若仅得到一个求和结果则作为本线程块的相关计算结果。
作为一种优化方案,所述线程块的个数与同一卫星通道的输入数据的毫秒长度相等,每个所述线程块处理1个毫秒的数据。
作为一种优化方案,所述核函数包括:
其中,Corr(n)表示一个线程块对应的相关计算结果,
N表示1ms内的数据点数,
p(n)表示通道扩频码,
c(*)*d(*)表示通道载波剥离后的中频数据。
与现有技术相比,本发明具有如下的有益效果:
本实施例中,将从多个卫星通道接收的数据进行同时处理,提高了计算能力。通过X维的线程块将每一个通道的数据划分为多个时间点,每个时间点上的数据由一个线程块执行处理,且每个线程块中又包含多个线程,通过多个线程块的同时处理实现多个时间点上数据的同步处理,进一步地提高了计算能力。同时采用“相邻线程计算相邻的点”的线程内部计算,以及线程间累加时采用规约求和策略和共享存储器,再一步提高了计算能力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图中:
图1是可选的一种基于GPU的导航软件接收机的模块原理示意图;
图2是可选的一种基于GPU的导航软件接收机相关器实现方法的建立流程示意图;
图3是可选的一种基于GPU的导航软件接收机相关器的核函数功能示意图;
图4是可选的一种基于GPU的导航软件接收机相关器实现方法的核函数的Grid结构设计图;
图5是可选的一种基于GPU的导航软件接收机相关器实现方法的核函数的thread计算方法示意图;
图6是可选的一种基于GPU的导航软件接收机相关器实现方法的规约求和的计算原理图;
图7是可选的一种基于GPU的导航软件接收机相关器实现方法的每个block内部的计算过程示意图。
具体实施方式
下文结合附图以具体实施例的方式对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,还可以使用其他的实施例,或者对本文列举的实施例进行结构和功能上的修改,而不会脱离本发明的范围和实质。
近年来,图形处理单元(GPU,Graphics Processing Unit)的计算能力不断增强,而接收机中尤其是接收机跟踪模块中又包含大量的相关操作,如图1,GPU适合用于对接收机进行加速。因而本发明考虑用GPU来加速软件接收机的计算,尤其是对相关操作计算的加速。
综上所述,本发明解决的问题是如何对相关操作进行GPU加速,以满足导航软件接收机对中频数据的实时处理能力。
本发明提供一种基于GPU的导航软件接收机相关器实现方法,具体地,是对导航软件接收机中的相关操作进行GPU加速,以满足导航软件接收机对中频数据的实时处理能力。
在本发明提供的一种基于GPU的导航软件接收机的相关器实现方法的实施例中,如图1所示,包括:
步骤1,从多个卫星通道接收输入数据,所述输入数据包括通道扩频码和通道载波剥离后的中频数据;
步骤2,以二维的线程网格运行相关计算的核函数,进行多通道多时间点的同步相关计算,所述线程网格的X维上的线程块对应处理同一卫星通道的输入数据,且每个所述线程块处理H/M个毫秒的数据,从而实现对同一通道输入数据上M个时间点上数据的同步相关计算,其中,所述H为同一卫星通道的输入数据的毫秒长度,同一X维上所述线程块的个数为所述M,所述Y维上的线程块与不同的卫星通道对应,从而实现对多通道输入数据的同步相关计算;
步骤3,获得同步相关计算的结果。
本实施例中,将从多个卫星通道接收的数据进行同时处理,提高了计算能力。通过X维的线程块将每一个通道的数据划分为多个时间点,每个时间点上的数据由一个线程块执行处理,且每个线程块中又包含多个线程,通过多个线程块的同时处理实现多个时间点上数据的同步处理,进一步地提高了计算能力。
通过依次对核函数、线程网格、线程块、线程的定义,完成了对上述相关器软件结构的设置,而上述步骤则是对输入数据进行相关计算的方法步骤,从而实现了软件接收机的相关器。
如果每个线程(thread)只计算一个数据点的相关操作,计算效率低于一个thread计算多个数据点的方式,具体每个thread计算多少个数据点效率最高,依赖于GPU硬件和具体操作类型。对于一个线程块中线程对数据的处理方式,本发明包括以下两种可选实施例:
1、所述线程块进一步包括2n个线程,每个线程处理连续相连的多个数据点。
2、所述线程块进一步包括2n个线程,每个线程处理固定间隔的多个数据点。
所述线程块配置为处理H/M个毫秒的数据进一步包括:
步骤21,线程块内对待处理的H/M个毫秒内的所述通道扩频码和所述通道载波剥离后的中频数据进行相干积分;
步骤22,线程内对相干积分后的数据进行内部累加,每个线程获得一累加结果;
步骤23,同一线程块所包含的线程之间对所述累加结果进行规约求和获得1个时间点上数据的相关计算结果。
所述步骤23中的规约求和过程进一步包括:
步骤231,对同一线程块中线程的所述累加结果取依次相邻成对,对每一对进行一次求和,
步骤232,对上一次求和的结果再次取依次相邻成对,对每一对再次进行一次求和,
步骤233,若本次求和结果数量大于1,则回到步骤232,若仅得到一个求和结果则作为本线程块的相关计算结果。
所述线程块的个数与同一卫星通道的输入数据的毫秒长度相等,每个所述线程块处理1个毫秒的数据。
所述核函数包括:
其中,Corr(n)表示一个线程块对应的相关计算结果,
N表示1ms内的数据点数,
p(n)表示通道扩频码,
c(*)*d(*)表示通道载波剥离后的中频数据。
本专利主要关注的是如何高效实现相关器的计算,因而专利中提到了线程网格(grid)设计,线程块(block)设计,线程(thread)计算策略,相干累加策略、规约求和的实现策略,其目的都是尽可能加大并行度,尽可能提高计算速度。
以下是从相关器的搭建角度对本发明的实现方法进行介绍。
如图2,本发明是一种基于GPU的导航软件接收机相关器实现方法,相关器的搭建过程包括定义一个相关计算的核函数(即kernel函数)、kernel函数的Grid维度设计、block维度设计、thread计算策略设计、block内部相干累加策略设计以及规约求和实现策略设计。
步骤S0:定义一个相关计算的kernel函数;如图3,这里kernel函数的输入为载波剥离后的H毫秒的中频数据和本地生成的多个卫星通道的N毫秒的EPL扩频码,输出为中频数据与多个卫星通道的EPL扩频码的相关结果。
步骤S1:kernel函数的Grid维度设计,为kernel函数分配二维的网格(Grid),以同时计算多个卫星通道的多个毫秒的数据点;如图4,Grid设计为二维,对于Grid的x维的block,x维的多个block对应于多个毫秒数据的计算,同时计算多个毫秒数据的好处是通过增大计算量,摊薄kernel函数的调用开销,以提高GPU的计算效率,同时,Grid的y维的不同block对应于不同的卫星通道,以实现卫星通道之间的并行计算,进一步增大并行度,以提高GPU的计算效率。Grid以及block的设计是本发明的一个发明点。
步骤S2:kernel函数的block维度设计,为kernel函数的每个block分配多个CUDA线程(thread),每个thread负责计算多个数据点的相关操作;每个block分配2的整数次幂个thread,常用的thread数目包括128、256和512。实践表明,如果每个thread只计算一个数据点的相关操作,计算效率低于一个thread计算多个数据点的方式,具体每个thread计算多少个数据点效率最高,依赖于GPU硬件和具体操作类型。
步骤S3:thread计算策略设计,相邻的thread负责计算相邻的数据点;如图5,一个thread负责多个数据点的计算包括多种方式,一种方式是每个thread计算多个连续的数据点,这样做效率不是最高的,还有一种方式是每个线程计算多个点,同一个线程计算的多个点之间的间隔是固定。这个间隔大小与每个block中的thread数目有关,这样从整体上来看,相邻的线程计算相邻的点,满足GPU中显存的合并访问条件,能够加快显存的访问速度。thread计算策略设计为本发明另一个发明点。
步骤S4:block内部相干累加策略设计,相干累加策略采用规约求和方式;如图6,规约求和的具体过程是,第一轮循环,每两个相邻的数为一对,将第二个数累加到第一个数上,第二轮循环,将第一轮循环得到的累加结果,每两个相邻的数一对,将第二个数累加到第一个数上,依次类推,每次循环中,运算的元素个数都减半,最终,每个block得到一个相关结果,这样一来,对于2n个数据的计算,只需要n次(即log2(2n))计算。
步骤S5:规约求和实现策略设计,规约求和采用GPU中的共享内存这种高速显存,同时1个block计算1ms的数据。共享内存是GPU片内一种高速内存,通过采用共享内存能够大大提高访存速度,共享内存只能够供block内部的thread之间共享,而不能够在block之间共享。因而,如果要实现block之间的数据交流,只能在每个block利用共享内存完成最终block内部的计算后,才能进行。
由于1毫秒是一个扩频码周期,且共享内存不能够在block之间进行通信,如果每个block计算的数据不满足1毫秒,还需要进行二次规约求和,会降低计算效率,且需要额外开辟一些GPU空间存储每个block的计算结果,因而采取每个block计算1毫秒数据的策略,如图7。
以上所述仅为本发明的较佳实施例,本领域技术人员知悉,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等同替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明的保护范围。

Claims (7)

1.一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,包括:
步骤1,从多个卫星通道接收输入数据,所述输入数据包括通道扩频码和通道载波剥离后的中频数据;
步骤2,以二维的线程网格运行相关计算的核函数,进行多通道多时间点的同步相关计算,所述线程网格的X维上的线程块对应处理同一卫星通道的输入数据,且每个所述线程块处理H/M个毫秒的数据,从而实现对同一通道输入数据上M个时间点上数据的同步相关计算,其中,所述H为同一卫星通道的输入数据的毫秒长度,同一X维上所述线程块的个数为所述M,所述线程网络的Y维上的线程块与不同的卫星通道对应,从而实现对多通道输入数据的同步相关计算;
步骤3,获得同步相关计算的结果。
2.根据权利要求1所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述线程块进一步包括2n个线程,每个线程处理连续相连的多个数据点。
3.根据权利要求1所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述线程块进一步包括2n个线程,每个线程处理固定间隔的多个数据点。
4.根据权利要求1-3任一所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述线程块配置为处理H/M个毫秒的数据进一步包括:
步骤21,线程块内对待处理的H/M个毫秒内的所述通道扩频码和所述通道载波剥离后的中频数据进行相干积分;
步骤22,线程内对相干积分后的数据进行内部累加,每个线程获得一累加结果;
步骤23,同一线程块所包含的线程之间对所述累加结果进行规约求和获得1个时间点上数据的相关计算结果。
5.根据权利要求4所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述步骤23中的规约求和过程进一步包括:
步骤231,对同一线程块中线程的所述累加结果取依次相邻成对,对每一对进行一次求和,
步骤232,对上一次求和的结果再次取依次相邻成对,对每一对再次进行一次求和,
步骤233,若本次求和结果数量大于1,则回到步骤232,若仅得到一个求和结果则作为本线程块的相关计算结果。
6.根据权利要求1所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述线程块的个数与同一卫星通道的输入数据的毫秒长度相等,每个所述线程块处理1个毫秒的数据。
7.根据权利要求6所述的一种基于GPU的导航软件接收机的相关器实现方法,其特征在于,所述核函数包括:
其中,Corr(n)表示一个线程块对应的相关计算结果,
N表示1ms内的数据点数,
p(n)表示通道扩频码,
c(*)*d(*)表示通道载波剥离后的中频数据,
n表示运算时完整1ms数据的序号,
i表示当前1ms数据内数据点的序号。
CN201610519807.5A 2016-07-05 2016-07-05 一种基于gpu的导航软件接收机的相关器实现方法 Active CN106019334B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610519807.5A CN106019334B (zh) 2016-07-05 2016-07-05 一种基于gpu的导航软件接收机的相关器实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610519807.5A CN106019334B (zh) 2016-07-05 2016-07-05 一种基于gpu的导航软件接收机的相关器实现方法

Publications (2)

Publication Number Publication Date
CN106019334A CN106019334A (zh) 2016-10-12
CN106019334B true CN106019334B (zh) 2019-08-23

Family

ID=57107004

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610519807.5A Active CN106019334B (zh) 2016-07-05 2016-07-05 一种基于gpu的导航软件接收机的相关器实现方法

Country Status (1)

Country Link
CN (1) CN106019334B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106772481B (zh) * 2016-12-14 2019-05-24 中国人民解放军国防科学技术大学 一种基于向量内积的软件并行相关计算方法
CN106772459B (zh) * 2016-12-14 2019-05-24 中国人民解放军国防科学技术大学 一种基于gpu向量运算的多相关器计算方法
CN113253315B (zh) * 2021-07-07 2021-10-22 湖南跨线桥航天科技有限公司 一种基于时分复用技术的导航信号相关峰监测装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176033A (zh) * 2010-12-31 2011-09-07 北京航空航天大学 一种基于通用图形处理器的卫星导航系统比特压缩跟踪方法
CN103278829A (zh) * 2013-05-06 2013-09-04 东南大学 一种基于gpu的并行导航卫星信号跟踪方法及其系统
CN105242287A (zh) * 2015-10-28 2016-01-13 福建星海通信科技有限公司 基于gpu和imu的卫星导航软件接收机及其导航方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4857376B2 (ja) * 2009-12-09 2012-01-18 東芝電波プロダクツ株式会社 レーダビデオ表示装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102176033A (zh) * 2010-12-31 2011-09-07 北京航空航天大学 一种基于通用图形处理器的卫星导航系统比特压缩跟踪方法
CN103278829A (zh) * 2013-05-06 2013-09-04 东南大学 一种基于gpu的并行导航卫星信号跟踪方法及其系统
CN105242287A (zh) * 2015-10-28 2016-01-13 福建星海通信科技有限公司 基于gpu和imu的卫星导航软件接收机及其导航方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
An accelerated signal tracking module using a heterogeneous multi-GPU platform for real-time GNSS software receiver;Kwi Woo Park et al.;《2015 IEEE Global Conference on Signal and Information Processing》;20151231;第1412-1416页
基于GPU的GPS软件接收机设计与实现;武昶;《中国优秀硕士学位论文全文数据库 基础科学辑》;20150415(第4期);正文第27-28页

Also Published As

Publication number Publication date
CN106019334A (zh) 2016-10-12

Similar Documents

Publication Publication Date Title
Das et al. Distributed deep learning using synchronous stochastic gradient descent
CN106019334B (zh) 一种基于gpu的导航软件接收机的相关器实现方法
CN107479083B (zh) 基于卫星导航的转动物体运动速度测量方法以及系统
CN110049440B (zh) 一种水下无线传感网同步与定位方法及系统
CN113900796A (zh) 5g网络中面向多任务联邦学习的资源分配方法及系统
US11397261B2 (en) Image processing apparatus, image processing method, image processing program, and image processing system
CN111624631B (zh) 一种并行化信号质量评估方法
Zhang et al. Dynamic DNN decomposition for lossless synergistic inference
CN115220899A (zh) 模型训练任务的调度方法、装置及电子设备
CN115375887A (zh) 一种移动目标轨迹预测方法、装置、设备及介质
CN117193992B (zh) 模型训练方法、任务调度方法、装置以及计算机存储介质
CN113128681B (zh) 一种多边缘设备辅助的通用cnn推理加速系统
CN113554574A (zh) 一种压缩感知图像恢复方法、装置、设备及介质
CN111581443B (zh) 分布式图计算方法、终端、系统及存储介质
CN102841361B (zh) 一种全球卫星导航定位系统信号普通测距码快速捕获方法
Barhen et al. High performance FFT on multicore processors
CN104572588A (zh) 矩阵求逆处理方法和装置
Shi et al. Geocomputation over the emerging heterogeneous computing infrastructure
Zhang et al. GPU-based parallel back projection algorithm for the translational variant BiSAR imaging
KR20190083497A (ko) 무선 통신 시스템에서 시뮬레이터의 전파환경 분석 방법 및 장치
Le et al. An OpenCL-based SIFT accelerator for image features extraction on FPGA in mobile edge computing environment
Zhang et al. Efficient fpga implementation of a convolutional neural network for radar signal processing
CN105869105A (zh) 一种针对a+超分辨率技术的gpu加速方法
CN113504989A (zh) 一种近底多波束正交解调处理的多核并行处理方法
CN116418381B (zh) 基于gpu计算平台的并行数字多波束合成方法及装置

Legal Events

Date Code Title Description
C06 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