CN110780991A - 一种基于优先级的深度学习任务调度方法及装置 - Google Patents
一种基于优先级的深度学习任务调度方法及装置 Download PDFInfo
- Publication number
- CN110780991A CN110780991A CN201910866036.0A CN201910866036A CN110780991A CN 110780991 A CN110780991 A CN 110780991A CN 201910866036 A CN201910866036 A CN 201910866036A CN 110780991 A CN110780991 A CN 110780991A
- Authority
- CN
- China
- Prior art keywords
- priority
- jobs
- job
- share
- cluster
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明为了解决现有技术中存在的问题,创新提出了一种基于优先级的深度学习任务调度方法,包括:根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度,本发明还提出了一种基于优先级的深度学习任务调度装置,通过对深度学习训练任务根据优先级进行排队,使高优先级的任务优先运行,合理利用计算资源,提高了深度学习训练任务的效率。
Description
技术领域
本发明涉及深度学习任务调度领域,尤其是涉及一种基于优先级的深度学习任务调度方法及装置。
背景技术
深度学习是机器学习的一种,而机器学习是实现人工智能的必经路径。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。研究深度学习的动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本等。
而在深度学习领域,调度算法是深度学习系统的核心,对于深度学习任务是否可以快速高效完成,以及计算资源的是否合理利用起着决定性因素。
目前深度学习调度中,并没有统一的调度方法,调度比较混乱,缺乏根据任务优先级来确定统一的资源调度,计算资源的利用不够合理,深度学习训练任务效率较低。
发明内容
本发明为了解决现有技术中存在的问题,创新提出了一种基于优先级的深度学习任务调度方法及装置,有效解决由于缺乏根据任务优先级来确定统一的资源调度造成计算资源的利用不够合理的问题,有效的提高的深度学习训练任务效率。
本发明第一方面提供了一种基于优先级的深度学习任务调度方法,包括:
根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
结合第一方面,在第一方面第一种可能的实现方式中,还包括:如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
结合第一方面,在第一方面第二种可能的实现方式中,job处于ready状态的判断方法具体是:
通过调用gang插件,统计job内处于allocated状态以及succeeded状态的task的数量之和,当job内处于allocated状态以及succeeded状态的task的数量之和大于等于第一阈值时,即为job处于ready状态。
进一步地,所述第一阈值为job的运行最小task数量。
结合第一方面,在第一方面第三种可能的实现方式中,所述通过调用job的优先级函数,计算job的share值并进行比较具体包括:
计算集群中所有主机的可分配资源,其公式如下:
其中,ClusterGPUallocatable表示集群中GPU的可分配资源,表示对集群中所有主机上GPU的可分配资源进行求和计算;ClusterMemoryallocatable表示集群中Memory的可分配资源,,表示对集群中所有主机上Memory的可分配资源进行求和计算;ClusterCPUallocatable表示集群中CPU的可分配资源,表示对集群中所有主机上CPU的可分配资源进行求和计算;
计算每个job中的所有task请求的资源,其公式如下:
其中,jobGPUrequest表示job中请求的GPU资源,表示job中所有task请求的GPU资源进行求和;jobMemoryrequest表示job中请求的Memory资源,表示job中所有task请求的Memory资源进行求和;jobCPUrequest表示job中请求的CPU资源,表示job中所有task请求的CPU资源进行求和;
分别计算GPU、Memory、CPU的share值,从中选取最大值作为job的share值,并对job的share值进行比较,其公式如下:
其中,GPUshare表示GPU的share值,具体是job中请求的GPU资源和集群中GPU的可分配资源的比值;Memoryshare表示Memory的share值,具体是job中请求的Memory资源和集群中Memory的可分配资源的比值;CPUshare表示GPU的share值,具体是job中请求的CPU资源和集群中CPU的可分配资源的比值。
结合第一方面,在第一方面第四种可能的实现方式中,所述job的优先级函数具体是通过drf函数定义获得。
本发明第二方面提供了一种基于优先级的深度学习任务调度装置,包括:
job优先级确定模块,根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
job状态获取模块,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
比较模块,如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
结合第二方面,在第二方面第一种可能的实现方式中,还包括:创建时间获取模块,如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
本发明采用的技术方案包括以下技术效果:
本发明通过对深度学习训练任务根据优先级进行排队,使高优先级的任务优先运行,合理利用计算资源,提高了深度学习训练任务的效率。
应当理解的是以上的一般描述以及后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
为了更清楚说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见的,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方案中实施例一方法的流程示意图;
图2为本发明方案中实施例一方法步骤S3的流程示意图;
图3为本发明方案中实施例二方法的流程示意图;
图4为本发明方案中实施例三装置的结构示意图;
图5为本发明方案中实施例四装置的结构示意图。
具体实施方式
为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
实施例一
如图1所示,本发明提供了一种基于优先级的深度学习任务调度方法,包括:
S1,根据用户的优先级确定job(作业)的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
S2,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
S3,如果job均处于ready状态,通过调用job的优先级函数计算job的share(变量)值并进行比较,share值最小的job优先被调度。
在步骤S1中,根据用户的优先级来确定job的优先级,其中用户为提交job的用户,系统创建用户时,根据用户的优先级指定该用户创建job的优先级,优先级可以分为高、中、低三个级别。用户创建job后将job的优先级传递给调度器。优先级别高的用户提交的job能够优先被调度。其中,用户优先级具体是由系统管理员创建普通用户时定义,目前系统管理员在页面上创建普通用户时存在一设置选项,可以设置用户高、中、低优先级,可以根据用户的类型、级别等因素,进行设置优先级。
举例说明:指定用户A为高优先级的用户,用户C为低优先级用户,用户A提交jobA,用户C提交jobC,那么在同一个Queue(队列)中jobA排在jobC前面,优先被调度。
在步骤S2中,如果job的优先级相同,获取job的状态,job可以处于ready状态以及非ready状态,处于ready状态的job优先被调度,其中,job处于ready状态的判断方法具体是:
通过调用gang插件,统计job内处于allocated状态以及succeeded状态的task(任务进程)的数量之和,当job内处于allocated状态以及succeeded状态的task的数量之和大于等于第一阈值时,即为job处于ready状态。其中,succeeded状态是已经运行完成的,allocated状态是已经分配好资源的,因为一个job对应多个task,当已经分配了资源(allocated)和已经运行完(successed),job是ready状态了。第一阈值为job的运行最小task数量,job的运行最小task数量是job能够正常运行的最小task数量(副本数量不计算在内,副本是用户提交任务时可以设置的值,可以理解为备用),这个数量跟用户提交的训练任务有关,需要结合实际使用情况进行设定或调整,本发明在此不做限制。
举例说明:jobC和jobD都处于低优先级时,假设jobC为ready状态,jobD非ready状态,那么在同一个Queue中jobC排在jobD前面,优先被调度。
如图2所示,在步骤S3中,通过调用job的优先级函数,计算job的share值并进行比较具体包括:
S31,计算集群中所有主机的可分配资源,其公式如下:
其中,ClusterGPUallocatable表示集群中GPU的可分配资源,表示对集群中所有主机上GPU的可分配资源进行求和计算;ClusterMemoryallocatable表示集群中Memory的可分配资源,,表示对集群中所有主机上Memory的可分配资源进行求和计算;ClusterCPUallocatable表示集群中CPU的可分配资源,表示对集群中所有主机上CPU的可分配资源进行求和计算;
S32,计算每个job中的所有task请求的资源(训练任务运行需要使用计算资源),其公式如下:
其中,jobGPUrequest表示job中请求的GPU资源,表示job中所有task请求的GPU资源进行求和;jobMemoryrequest表示job中请求的Memory资源,表示job中所有task请求的Memory资源进行求和;jobCPUrequest表示job中请求的CPU资源,表示job中所有task请求的CPU资源进行求和;
S33,分别计算GPU、Memory、CPU的share值,从中选取最大值作为job的share值,并对job的share值进行比较,其公式如下:
其中,GPUshare表示GPU的share值,具体是job中请求的GPU资源和集群中GPU的可分配资源的比值;Memoryshare表示Memory的share值,具体是job中请求的Memory资源和集群中Memory的可分配资源的比值;CPUshare表示GPU的share值,具体是job中请求的CPU资源和集群中CPU的可分配资源的比值。
其中job的优先级函数具体是通过drf函数定义获得。
举例说明:jobC和jobE都处于低优先级时,且都为ready状态,假设jobC的share值小于jobE的share值,那么在同一个Queue中jobC排在jobE前面,优先被调度。
本发明通过对深度学习训练任务根据优先级进行排队,使高优先级的任务优先运行,合理利用计算资源,提高了深度学习训练任务的效率。
实施例二
如图3所示,本发明技术方案还提供了一种一种基于优先级的深度学习任务调度方法,包括:
S1,根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
S2,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
S3,如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
S4,如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
其中,在步骤S4中,当job的share值相同时,获取job的创建时间,创建时间早的job会优先被调度,其中job的创建时间获取方式可以为:用户提交一个深度学习任务后,系统会记录一个创建时间create_date。
jobE和jobF都处于低优先级,且都为ready状态,且share值相同。假设jobE创建时间早于jobF的创建时间,那么在同一个Queue中jobE排在jobF前面,优先被调度。
实施例三
如图4所示,本发明技术方案还提供了一种基于优先级的深度学习任务调度装置,包括:
job优先级确定模块101,根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
job状态获取模块102,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
比较模块103,如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
本发明通过对深度学习训练任务根据优先级进行排队,使高优先级的任务优先运行,合理利用计算资源,提高了深度学习训练任务的效率。
实施例四
如图5所示,本发明技术方案还提供了一种基于优先级的深度学习任务调度装置,包括:
job优先级确定模块101,根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
job状态获取模块102,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
比较模块103,如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度;
创建时间获取模块,如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
本发明技术方案主要是对单个Queue中job排序,对多个Queue中job排序也有一定的借鉴意义。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (8)
1.一种基于优先级的深度学习任务调度方法,其特征是,包括:
根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
2.根据权利要求1所述的基于优先级的深度学习任务调度方法,其特征是,还包括:如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
3.根据权利要求1所述的基于优先级的深度学习任务调度方法,其特征是,job处于ready状态的判断方法具体是:
通过调用gang插件,统计job内处于allocated状态以及succeeded状态的task的数量之和,当job内处于allocated状态以及succeeded状态的task的数量之和大于等于第一阈值时,即为job处于ready状态。
4.根据权利要求3所述的基于优先级的深度学习任务调度方法,其特征是,所述第一阈值为job的运行最小task数量。
5.根据权利要求1所述的基于优先级的深度学习任务调度方法,其特征是,所述通过调用job的优先级函数,计算job的share值并进行比较具体包括:
计算集群中所有主机的可分配资源,其公式如下:
其中,ClusterGPUallocatable表示集群中GPU的可分配资源,表示对集群中所有主机上GPU的可分配资源进行求和计算;ClusterMemoryallocatable表示集群中Memory的可分配资源,,表示对集群中所有主机上Memory的可分配资源进行求和计算;ClusterCPUallocatable表示集群中CPU的可分配资源,表示对集群中所有主机上CPU的可分配资源进行求和计算;
计算每个job中的所有task请求的资源,其公式如下:
其中,jobGPUrequest表示job中请求的GPU资源,表示job中所有task请求的GPU资源进行求和;jobMemoryrequest表示job中请求的Memory资源,表示job中所有task请求的Memory资源进行求和;jobCPUrequest表示job中请求的CPU资源,表示job中所有task请求的CPU资源进行求和;
分别计算GPU、Memory、CPU的share值,从中选取最大值作为job的share值,并对job的share值进行比较,其公式如下:
其中,GPUshare表示GPU的share值,具体是job中请求的GPU资源和集群中GPU的可分配资源的比值;Memoryshare表示Memory的share值,具体是job中请求的Memory资源和集群中Memory的可分配资源的比值;CPUshare表示GPU的share值,具体是job中请求的CPU资源和集群中CPU的可分配资源的比值。
6.根据权利要求1或5所述的基于优先级的深度学习任务调度方法,其特征是,所述job的优先级函数具体是通过drf函数定义获得。
7.一种基于优先级的深度学习任务调度装置,其特征是,包括:
job优先级确定模块,根据用户的优先级确定job的优先级,job优先级高的优先被调度,其中用户优先级与其提交的job优先级对应相同;
job状态获取模块,如果job的优先级相同,获取job的状态,处于ready状态的job优先被调度;
比较模块,如果job均处于ready状态,通过调用job的优先级函数计算job的share值并进行比较,share值最小的job优先被调度。
8.根据权利要求7所述的基于优先级的深度学习任务调度装置,其特征是,还包括:创建时间获取模块,如果job的share值相同,获取job的创建时间,创建时间早的job优先被调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866036.0A CN110780991B (zh) | 2019-09-12 | 2019-09-12 | 一种基于优先级的深度学习任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866036.0A CN110780991B (zh) | 2019-09-12 | 2019-09-12 | 一种基于优先级的深度学习任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110780991A true CN110780991A (zh) | 2020-02-11 |
CN110780991B CN110780991B (zh) | 2023-01-06 |
Family
ID=69384166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910866036.0A Active CN110780991B (zh) | 2019-09-12 | 2019-09-12 | 一种基于优先级的深度学习任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110780991B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116220A (zh) * | 2021-11-29 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种gpu共享控制方法、gpu共享控制装置及存储介质 |
CN116643860A (zh) * | 2023-04-26 | 2023-08-25 | 国家气象信息中心(中国气象局气象数据中心) | 针对气象机器学习算法运行的优先级调度方法、系统、电子设备和计算机程序产品 |
US11954527B2 (en) | 2020-12-09 | 2024-04-09 | Industrial Technology Research Institute | Machine learning system and resource allocation method thereof |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634748A (zh) * | 2018-12-12 | 2019-04-16 | 深圳前海微众银行股份有限公司 | 集群资源调度方法、装置、设备及计算机可读存储介质 |
CN109885389A (zh) * | 2019-02-19 | 2019-06-14 | 山东浪潮云信息技术有限公司 | 一种基于容器的并行深度学习调度训练方法及系统 |
-
2019
- 2019-09-12 CN CN201910866036.0A patent/CN110780991B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109634748A (zh) * | 2018-12-12 | 2019-04-16 | 深圳前海微众银行股份有限公司 | 集群资源调度方法、装置、设备及计算机可读存储介质 |
CN109885389A (zh) * | 2019-02-19 | 2019-06-14 | 山东浪潮云信息技术有限公司 | 一种基于容器的并行深度学习调度训练方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11954527B2 (en) | 2020-12-09 | 2024-04-09 | Industrial Technology Research Institute | Machine learning system and resource allocation method thereof |
CN114116220A (zh) * | 2021-11-29 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种gpu共享控制方法、gpu共享控制装置及存储介质 |
CN116643860A (zh) * | 2023-04-26 | 2023-08-25 | 国家气象信息中心(中国气象局气象数据中心) | 针对气象机器学习算法运行的优先级调度方法、系统、电子设备和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN110780991B (zh) | 2023-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111176852B (zh) | 资源分配方法、装置、芯片及计算机可读存储介质 | |
WO2022262167A1 (zh) | 集群资源调度方法及装置、电子设备和存储介质 | |
CN110780991B (zh) | 一种基于优先级的深度学习任务调度方法及装置 | |
KR20180077218A (ko) | 계산 그래프들 프로세싱 | |
Junaid et al. | Modeling an optimized approach for load balancing in cloud | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
WO2017127976A1 (zh) | 一种用于增量式学习云系统的训练、调度方法及相关设备 | |
WO2022095815A1 (zh) | 显存管理方法、装置、设备及系统 | |
US20230012487A1 (en) | Machine learning workload orchestration in heterogeneous clusters | |
CN113946431B (zh) | 一种资源调度方法、系统、介质及计算设备 | |
CN114610474B (zh) | 一种异构超算环境下多策略的作业调度方法及系统 | |
EP3989067A1 (en) | Data processing method and apparatus for dynamic runtime selection of a kernel candidate implementing a layer of a neural network | |
Muthusamy et al. | Cluster-based task scheduling using K-means clustering for load balancing in cloud datacenters | |
CN115586961A (zh) | 一种ai平台计算资源任务调度方法、装置及介质 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN116069500A (zh) | 一种模型训练任务处理方法、装置、电子设备及可读介质 | |
CN114721818A (zh) | 一种基于Kubernetes集群的GPU分时共享方法和系统 | |
CN111193802A (zh) | 基于用户组的资源动态分配方法、系统、终端及存储介质 | |
CN111930485B (zh) | 一种基于性能表现的作业调度方法 | |
CN106844024B (zh) | 一种自学习运行时间预测模型的gpu/cpu调度方法及系统 | |
CN116915869A (zh) | 基于云边协同的时延敏感型智能服务快速响应方法 | |
CN113645324B (zh) | 一种基于队列的ip分配方法及系统 | |
CN117178257A (zh) | 任务调度架构和方法 | |
CN118409870B (zh) | 一种用于gpu的用户仲裁系统 | |
CN117149440B (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 |