CN117236423A - 核函数调用方法、装置、设备、存储介质和程序产品 - Google Patents
核函数调用方法、装置、设备、存储介质和程序产品 Download PDFInfo
- Publication number
- CN117236423A CN117236423A CN202311269515.7A CN202311269515A CN117236423A CN 117236423 A CN117236423 A CN 117236423A CN 202311269515 A CN202311269515 A CN 202311269515A CN 117236423 A CN117236423 A CN 117236423A
- Authority
- CN
- China
- Prior art keywords
- function
- kernel function
- description information
- kernel
- problem description
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 77
- 230000008689 nuclear function Effects 0.000 title claims description 3
- 238000012360 testing method Methods 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims description 815
- 238000013507 mapping Methods 0.000 claims description 45
- 238000004590 computer program Methods 0.000 claims description 37
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 description 30
- 238000011161 development Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 7
- 238000013135 deep learning Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种核函数调用方法、装置、设备、存储介质和程序产品。所述方法包括:获取问题描述信息,所述问题描述信息包括测试问题描述信息;根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。采用本方法能够提升核函数测试效率,改善异构并行库的长尾问题。
Description
技术领域
本申请涉及高性能计算机技术领域,特别是涉及一种核函数调用方法、装置、设备、存储介质和程序产品。
背景技术
GPU(graphics processing unit,图形处理器)是最早的异构并行协处理器,Nvidia公司为GPU定制了一整套软硬件生态,包括cuda编程平台以及基于cuda的各种基础设施库,如进行线性代数运算的cublas、进行深度学习加速的cudnn等。AMD公司也几乎一一对应复刻了Nvidia的生态,如对标cuda编程平台的hip编程平台、对标cublas的roblas、对标cudnn的miopen等。
然而,上述异构并行库都存在开发长尾的问题。以miopen库为例,如果要测试某个即将加入miopen库的核函数kernel的性能和正确性,传统技术需要对整个miopen库进行大范围的入侵式修改,将kernel内嵌到miopen库中,然后重新编译miopen库,再使用miopen性能和正确性测试工具测试该核函数。
但是,上述方式存在核函数测试效率低的问题。如何提升核函数测试效率,改善异构并行库的长尾问题,具有重要意义。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升核函数测试效率、改善异构并行库的长尾问题的核函数调用方法、装置、设备、存储介质和程序产品。
第一方面,本申请提供了一种核函数调用方法。所述方法包括:
获取问题描述信息,所述问题描述信息包括测试问题描述信息;
根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
本实施例目标核函数包括主机端管理接口函数,结合该主机端管理接口函数即可实现目标核函数的调用,从而响应测试问题描述信息以实现目标核函数的测试过程,而不必将目标核函数内嵌到异构并行库(例如miopen库)再重新编译整个miopen库进行核函数测试,本申请实施例目标核函数类似于一个个插件,只不过其实际的业务逻辑代码运行于GPU,该目标核函数调用测试的过程中可以不用修改任何异构并行库的代码,节省了大量的代码修改耗时,提升了目标核函数的测试效率,有利于改善异构并行库的长尾问题。
另外,由于将CPU端代码(主机端管理接口函数)和GPU端代码(GPU业务逻辑函数体)进行隔离,且不是采用模板化编程,无论是调试CPU端代码还是GPU端代码,调试复杂度都比较低。
本申请实施例编写的各个核函数(如目标核函数)不必内嵌在异构并行库(例如miopen库)进行核函数测试,可以保留逐个核函数调优的能力,本申请由于对核函数的管理和调用流程更加先进,因此能够达到与miopen或cudnn等重型库同样优秀的性能,甚至超越这些库。
在其中一个实施例中,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,所述根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,包括:
根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
本实施例计算机设备基于各个核函数的功能类别接口函数实现多个核函数的多类别管理,可以实现核函数的快速检索,且可以辅助开发者开核函数开发I阶段定义其所开发的核函数所属的类别。
在其中一个实施例中,所述根据所述需求功能类别获取所述目标核函数,包括:
根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;
根据所述至少一个候选核函数,获取所述目标核函数。
本实施例计算机设备对加载的各个核函数按照功能类别进行分类,并将分类结果存储为映射表的形式,这样,对于一个需求功能类别,计算机设备可以以O(1)复杂度的方式迅速查询到对应问题域下的所有可用的核函数。而传统技术中,只能在异构并行库中逐个查询哪个核函数在当前问题域下可用,效率较为低下,本申请实施例极大提升了核函数的查询效率,有利于提升核函数的测试效率以及响应及时性。
在其中一个实施例中,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,所述根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,包括:
根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
本实施例在对各个核函数进行分类缓存和映射之前,首先根据各个核函数的GPU特性接口函数对各个核函数进行筛选和判断,只有在核函数所支持的GPU特性与计算机设备中当前配置的GPU的GPU特性匹配一致时,才保留该核函数,提升了分类缓存和映射的准确性,提升了核函数调用成功率。
在其中一个实施例中,所述主机端管理接口函数包括实参计算接口函数,所述根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,包括:
利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;
根据所述核函数实参获取所述目标核函数对应的可执行文件;
根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
本实施例计算机设备根据核函数实参获取目标核函数对应的可执行文件的过程中,对于某些不依赖具体问题域进行编译的核函数,可以在初始化过程中提前编译好,计算机设备直接根据相关信息查询该目标核函数对应的可执行文件即可,而对于编译过程必须依赖问题描述信息的情况,计算机设备才调用对应的编译指令,对获取的目标核函数的源码进行编译以获得其可执行的二进制代码,使得目标核函数对应的可执行文件的获取过程更加灵活,基于核函数实参以及可执行文件,即可实现目标核函数的快速调用,即本申请实施例,开发者开发的核函数,可以快速进行上线验证,开发者无需了解异构并行库的其它代码细节,一旦通过验证,该核函数可以快速上线应用。
在其中一个实施例中,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,所述根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数,包括:
根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
本实施例通过上述统一化接口,将CPU端代码(主机端管理接口函数)和GPU端代码(GPU业务逻辑函数体)进行隔离,实现了CPU端代码和GPU端代码的解耦合,使核函数的快速开发和迭代成为可能。
另外,本申请还利于进行错误规避和恢复,例如,如果测试不充分,某些核函数的漏洞在测试阶段未被发现,核函数上线后,如果运行过程中出现漏洞,由于核函数是通过上述统一化接口实现的类似于插件的形式,计算机设备可以在不停机的情况下,卸载该核函数,或在某个特定问题域下禁用该核函数,并进行漏洞报告,用户也可以选择性地将该核函数移除。
第二方面,本申请还提供了一种核函数调用装置。所述装置包括:
第一获取模块,用于获取问题描述信息,所述问题描述信息包括测试问题描述信息;
第二获取模块,用于根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
调用模块,用于根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上述第一方面所述的方法的步骤。
上述核函数调用方法、装置、设备、存储介质和程序产品,通过获取问题描述信息,该问题描述信息包括测试问题描述信息,而后,根据问题描述信息,获取问题描述信息对应的目标核函数,其中,该目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的,再根据问题描述信息以及主机端管理接口函数,即可调用目标核函数,以响应问题描述信息,这样,本申请实施例目标核函数包括主机端管理接口函数,结合该主机端管理接口函数即可实现目标核函数的调用,从而响应测试问题描述信息以实现目标核函数的测试过程,而不必将目标核函数内嵌到异构并行库(例如miopen库)再重新编译整个miopen库进行核函数测试,本申请实施例目标核函数类似于一个个插件,该目标核函数调用测试的过程中可以不用修改任何异构并行库的代码,节省了大量的代码修改耗时,提升了目标核函数的测试效率,有利于改善异构并行库的长尾问题。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中核函数调用方法的应用环境图;
图2为一个实施例中核函数调用方法的流程示意图;
图3为另一个实施例中步骤202的流程示意图;
图4为另一个实施例中一种示例性地核函数功能类别的划分示意图;
图5为另一个实施例中步骤302的流程示意图;
图6为另一个实施例中步骤203的流程示意图;
图7为一个实施例中核函数调用装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
GPU(graphics processing unit,图形处理器)是最早的异构并行协处理器,为图像显示与处理行业带来了巨大的变革,并为后来的深度学习产业浪潮奠定了基础。
Nvidia公司为GPU定制了一整套软硬件生态,包括cuda编程平台以及基于cuda的各种基础设施库,如进行线性代数运算的cublas、进行深度学习加速的cudnn等。AMD公司也几乎一一对应复刻了Nvidia的生态,如对标cuda编程平台的hip编程平台、对标cublas的roblas、对标cudnn的miopen等。
AMD和Nvidia不同,它的整套生态都是完全开源的,本申请的发明人在研发过程中通过对其开源生态进行研究,发现这些异构并行库都存在一个同样的问题:开发的长尾问题。
以miopen库为例,如果要测试某个即将加入miopen库的核函数kernel的性能和正确性,传统技术通常有两种选择:1)需要对整个miopen库进行大范围的入侵式修改,将核函数内嵌到miopen库中,然后重新编译miopen库(单线程编译通常在一个半小时左右),再使用miopen性能和正确性测试工具测试该核函数;2)人工针对该核函数编写一个简单的测试用例,测试用例测试通过后,再使用1)所述方法将测试用例内嵌到miopen库中,使用MIOpenDriver(即miopen性能和正确性测试工具)对该核函数进行二次复测。
但是,无论使用上述哪种方式,对于核函数开发者来说,都是非常耗时费力的,有时为了测试一个核函数,需要对miopen库的代码反复进行修改才能成功,目前,为了测试一个核函数,需要进行好几周甚至一个月的调试,存在严重的核函数测试效率低的问题。
鉴于此,本申请实施例提供的核函数调用方法,通过获取问题描述信息,该问题描述信息包括测试问题描述信息,而后,根据问题描述信息,获取问题描述信息对应的目标核函数,其中,该目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的,再根据问题描述信息以及主机端管理接口函数,即可调用目标核函数,以响应问题描述信息,这样,本申请实施例目标核函数包括主机端管理接口函数,结合该主机端管理接口函数即可实现目标核函数的调用,从而响应测试问题描述信息以实现目标核函数的测试过程,而不必将目标核函数内嵌到异构并行库(例如miopen库)再重新编译整个miopen库进行核函数测试,本申请实施例目标核函数类似于一个个插件,该目标核函数调用测试的过程中可以不用修改任何异构并行库的代码,节省了大量的代码修改耗时,提升了目标核函数的测试效率,有利于改善异构并行库的长尾问题。
本申请实施例提供的核函数调用方法,可以应用于如图1所示的实施环境中,该实施环境包括计算机设备,计算机设备可以获取问题描述信息,问题描述信息包括测试问题描述信息,计算机设备根据问题描述信息,获取问题描述信息对应的目标核函数,其中,目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的,计算机设备根据问题描述信息以及主机端管理接口函数,调用目标核函数,以响应问题描述信息。
本申请实施例中,计算机设备可以是服务器,当然也可以是其他设置有主机端和GPU的高性能设备。示例性地,主机端可以是计算机设备设置的CPU(Central ProcessingUnit,中央处理器),计算机设备中GPU的数量可以是一个或者多个(图1仅示例性地示出了一个GPU)。示例性地,以下均以主机端是CPU为例对本申请实施例核函数调用方法进行介绍,本申请实施例中,计算机设备中的CPU可以获取问题描述信息,问题描述信息包括测试问题描述信息,CPU根据问题描述信息,获取问题描述信息对应的目标核函数,其中,目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的,CPU根据问题描述信息以及主机端管理接口函数,通过GPU调用目标核函数,以响应问题描述信息。
在一个示例性的实施例中,如图2所示,提供了一种核函数调用方法,以该方法应用于图1中的计算机设备为例进行说明,包括以下步骤201-步骤203:
步骤201,计算机设备获取问题描述信息。
其中,问题描述信息包括测试问题描述信息。
核函数开发完成后,在上线前需要经过测试。以miopen库为例,针对miopen库编写的核函数目的是用于实现深度学习加速,为了测试核函数的性能和正确性,测试过程需要模拟真实的使用过程,首先用户需要输入对特定问题域的描述,即问题描述信息。
在核函数测试的场景下,该问题描述信息可以包括测试问题描述信息,当然,本申请实施例也可以用于核函数上线后的使用场景,那么,该问题描述信息还可以包括使用场景中用户对特定问题域输入的描述信息。
本申请实施例中,问题描述信息是用户输入的针对特定问题域的描述,问题描述信息可以理解为是用户想要通过调用核函数进行数据处理的数据基础。
例如,问题描述信息可以表征需要计算矩阵的卷积,或者,问题描述信息可以表征需要计算矩阵的卷积,且具体是计算前向传播卷积,等等。
步骤202,计算机设备根据问题描述信息,获取问题描述信息对应的目标核函数。
其中,目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的。
本申请实施例中,在核函数的开发阶段,由开发者对核函数进行接口抽象,将核函数分为主机端管理接口函数及GPU业务逻辑函数体。
其中,主机端管理接口函数用于计算机设备通过CPU对核函数进行管理调用,例如,主机端管理接口函数用于对核函数所支持的GPU特性(例如所支持GPU的型号)、核函数对应的功能类别、核函数的实参计算、核函数被执行时的数据显存地址中的一种或者多种进行管理。
示例性地,基于主机端管理接口函数,还可以实现对核函数的编译、查找、寻优以及调用逻辑的管理,等等。
GPU业务逻辑函数体即核函数中用于实现业务逻辑的函数体,核函数的执行通常由GPU实现。
这样,开发者在编写核函数时,除了需要编写GPU业务逻辑函数体,还需要编写主机端管理接口函数。
通过上述方式,可以将核函数的业务逻辑部分和其它复杂的管理调用逻辑隔离,这样,开发者在核函数开发过程中,无需了解异构并行库的任何代码细节,只需要专注于核函数逻辑代码的开发,就可以将自己编写的核函数集成到异构并行库中。
本申请实施例中,计算机设备在异构并行库(如miopen库)初始化的过程中,可以加载所有实现了上述主机端管理接口函数的核函数,这样,计算机设备通过步骤201获取到问题描述信息后,在步骤202中,则可以根据问题描述信息,在已经加载的上述所有实现了主机端管理接口函数的核函数中,利用各个核函数的主机端管理接口函数,从各个核函数中确定问题描述信息对应的目标核函数。
可以理解的是,该目标核函数同样包括主机端管理接口函数,且目标核函数的确定结合了其主机端管理接口函数实现。
示例性地,计算机设备获取到问题描述信息后,可以根据各个核函数的主机端管理接口函数,为该问题描述信息匹配具有其所需功能类别的核函数作为目标核函数;示例性地,还可以为问题描述信息匹配支持当前计算机设备中GPU的GPU特性的核函数作为目标核函数,等等。
步骤203,计算机设备根据问题描述信息以及主机端管理接口函数,调用目标核函数,以响应问题描述信息。
计算机设备为问题描述信息选取到合适的目标核函数后,则可以调用该目标核函数。
示例性地,如上文所述,计算机可以基于目标核函数的主机端管理接口函数和问题描述信息,获取目标核函数的核函数实参、可执行文件等信息,并利用获取的这些信息在GPU上执行目标核函数,以实现目标核函数的调用。
上述实施例通过获取问题描述信息,该问题描述信息包括测试问题描述信息,而后,根据问题描述信息,获取问题描述信息对应的目标核函数,其中,该目标核函数包括主机端管理接口函数,目标核函数是根据主机端管理接口函数确定的,再根据问题描述信息以及主机端管理接口函数,即可调用目标核函数,以响应问题描述信息,这样,本申请实施例目标核函数包括主机端管理接口函数,结合该主机端管理接口函数即可实现目标核函数的调用,从而响应测试问题描述信息以实现目标核函数的测试过程,而不必将目标核函数内嵌到异构并行库(例如miopen库)再重新编译整个miopen库进行核函数测试,本申请实施例目标核函数类似于一个个插件,只不过其实际的业务逻辑代码运行于GPU,该目标核函数调用测试的过程中可以不用修改任何异构并行库的代码,节省了大量的代码修改耗时,提升了目标核函数的测试效率,有利于改善异构并行库的长尾问题。
以下,对本申请实施例核函数调用方法能够达到的其他有益效果进行说明。
传统技术中,针对异构并行库cudnn/miopen的开发长尾问题,Nvidia和AMD也进行了尝试和努力:Nvidia公司开发了一个新的名为cutlass的库,该库充分利用c++泛型编程的特性,使用全模板化的方式编写,将一个Gemm(通用矩阵乘法)操作拆解成一系列更小的操作,然后为这些操作编写模板化代码,后续通过这些模板函数的分层调用,来组合完成Gemm操作。AMD公司则利用相同原理开发了一个名为composable_kernel的库来完成相同功能。
上述的cutlass库和composable_kernel库从一定程度上解决了开发的长尾问题,但是至少还存在如下缺点:
1)调试困难。由于采用的是全模板化代码会导致调试困难,这是c++泛型代码的固有问题,并且核函数都是运行在GPU硬件上,因此cutlass和composable_kernel调试起来更加困难。
2)性能问题。这两个高度抽象的模板库主要对Gemm操作进行了抽象和实现,对于深度学习中的各种操作,如卷积,反卷积等操作,都必须先转化为Gemm操作,然后使用该库来完成,因此性能损失的只会更多。
由于存在上述问题,因此cutlass和composable_kernel这两个库目前最多应用在算子融合等领域,作为对cudnn、miopen库的短板的补充。
本申请实施例中,由于将CPU端代码(主机端管理接口函数)和GPU端代码(GPU业务逻辑函数体)进行隔离,且不是采用模板化编程,无论是调试CPU端代码还是GPU端代码,都比调试cutlass和composal_kernel等库要简单的多,即本实施例调试复杂度低。
另外,本申请实施例编写的各个核函数(如目标核函数)不必内嵌在异构并行库(例如miopen库)进行核函数测试,可以保留逐个核函数调优的能力,本申请由于对核函数的管理和调用流程更加先进,因此能够达到与miopen或cudnn等重型库同样优秀的性能,甚至超越这些库。
在一个实施例中,基于图2所示的实施例,参见图3,本实施例涉及的是计算机设备如何根据问题描述信息,获取问题描述信息对应的目标核函数的过程。如图3所示,本实施例中,步骤202包括图3所示的步骤301和步骤302:
步骤301,计算机设备根据问题描述信息,确定问题描述信息对应的需求功能类别。
计算机设备将用户输入的问题描述信息转换为特定标签的类别,即需求功能类别,该需求功能类别是指用户需要核函数实现的功能类别,例如,问题描述信息可以表征需要计算矩阵的卷积,且具体是计算具有预设超参数的前向传播卷积,该需求功能类别则可以是将卷积运算下的前向传播卷积。
作为一种实施方式,计算机设备可以对问题描述信息进行字符识别、关键字提取等处理,得到问题描述信息对应的需求功能类别。
步骤302,计算机设备根据需求功能类别获取目标核函数。
其中,需求功能类别与目标功能类别相同。
本实施例主机端管理接口函数包括功能类别接口函数,功能类别接口函数用于指示目标核函数对应的目标功能类别。
如上文所述,计算机设备在异构并行库(如miopen库)初始化的过程中,可以加载所有实现了上述主机端管理接口函数的核函数,各个核函数的主机端管理接口函数都包括功能类别接口函数,功能类别接口函数用于指示核函数对应的功能类别。
功能类别接口函数,主要用于帮助计算机设备对核函数按功能类别进行分类缓存和调度。例如:某个核函数的功能类别是用于计算矩阵的卷积,并只能计算超参数填充pad=0x0、步幅stride=1x1的前向传播卷积,另一个核函数的功能类别是用于执行Gemm操作,因此,开发者在核函数开发过程中,通过功能类别接口函数在编写的核函数中指明该核函数所属的功能类别。
本申请实施例中,核函数的功能类别接口函数,所指示的核函数的功能类别可以包括大类别以及该大类别下所属的小类别,例如,某个核函数的功能类别是用于计算矩阵的卷积,并只能计算超参数填充pad=0x0、步幅stride=1x1的前向传播卷积,则其大类别为计算矩阵的卷积,小类别为计算超参数填充pad=0x0、步幅stride=1x1的前向传播卷积。
这样,对于不同的核函数,计算机设备可以将具有相同大类别且具有相同小类别的核函数归类在同一个功能类别下。本申请实施例功能类别接口函数本质上是定义了一个多标签类别系统,对于不同的核函数而言,只有所有功能类别标签都相同,才会别归为同一类。
示例性地,参见图4,图4为一种示例性地核函数功能类别的划分示意图。
如图4所示,计算机设备加载的各个核函数的功能类别中,大类别包括A、B、C、D、E、F,其中,对于大类别A,所属的小类别包括A1-A8,对于大类别B,所属的小类别包括B1和B2。如果某个核函数被划分指大类别A下的小类别A1中,则表示该核函数的功能类别为A1.
需要说明的是,对于一个核函数而言,其所属的功能类别可能有多个,例如,核函数A所属的功能类别包括(A2、B1、D1、E5),核函数B所属的功能类别包括(A2、B2、C4、D1、E5),等等。
计算机设备按照上述方式对加载的各个核函数按照功能类别进行分类。
这样,在后续的核函数测试场景,以及核函数上线后的使用场景中,计算机设备则可以根据需求功能类别在上述分类得到的结果中获取目标核函数,其中,需求功能类别与目标功能类别相同,例如,请结合图4,需求功能类别为A1,则目标核函数为A大类别下所属的A1小类别下的核函数。
本实施例计算机设备基于各个核函数的功能类别接口函数实现多个核函数的多类别管理,可以实现核函数的快速检索,且可以辅助开发者开核函数开发I阶段定义其所开发的核函数所属的类别。
在步骤302一种可能的实施方式中,参见图5,步骤302包括图5所示的步骤501和步骤502:
步骤501,计算机设备根据需求功能类别,在预设的映射表中查找出需求功能类别对应的至少一个候选核函数。
候选核函数的功能类别与需求功能类别相同,映射表中包括各功能类别与各功能类别对应的各个核函数之间的映射关系。
本实施例中,计算机设备按照上述方式对加载的各个核函数按照功能类别进行分类后,可以将分类结果存储为映射表的形式,该映射表中可以按照各功能类别对各个核函数进行分类,如上文所述,计算机设备可以将具有相同大类别且具有相同小类别的核函数归类在同一个功能类别下。
可以理解的是,对于一个固定的核函数而言,其只在初始化的过程中调用该功能类别接口函数,进行映射表的建立,不必再二次调用本接口。
这样,计算机设备根据该需求功能类别,直接在映射表中查找出需求功能类别对应的至少一个候选核函数,例如,结合图4,需求功能类别为A大类别下的小类别A1,映射表中被归类在A1下的所有核函数即为候选核函数。
步骤502,计算机设备根据至少一个候选核函数,获取目标核函数。
候选核函数的数量可以是一个,也可以是多个,在候选核函数的数量是一个的情况下,直接将候选核函数作为目标核函数。
候选核函数的数量是多个的情况下,计算机设备可以根据预设的寻优逻辑,快速查找到这些多个候选核函数中哪个候选核函数性能最好,将性能最好的候选核函数作为目标核函数。
本实施例计算机设备按照上述方式对加载的各个核函数按照功能类别进行分类,并将分类结果存储为映射表的形式,这样,对于一个需求功能类别,计算机设备可以以O(1)复杂度的方式迅速查询到对应问题域下的所有可用的核函数。而传统技术中,只能在异构并行库中逐个查询哪个核函数在当前问题域下可用,效率较为低下,本申请实施例极大提升了核函数的查询效率,有利于提升核函数的测试效率以及响应及时性。
在一个实施例中,基于图5所示的实施例,本实施例主机端管理接口函数还包括GPU特性接口函数,GPU特性接口函数用于指示目标核函数所支持的目标GPU特性,本实施例中,步骤203可以包括如下步骤A1:
步骤A1,计算机设备根据问题描述信息以及主机端管理接口函数,通过GPU调用目标核函数,其中,目标核函数所支持的目标GPU特性与GPU的GPU特性匹配,且映射表中各个核函数的GPU特性均与GPU的GPU特性匹配。
本实施例中,开发者在核函数开发的过程中,还需要编写GPU特性接口函数,该GPU特性接口函数表征的是核函数所支持的GPU特性,例如,某个核函数可能只支持MI100(AMDGPU的一种型号),就需要在该核函数的GPU特性接口函数中进行说明。
这样,计算机设备初始化过程中,加载了所有实现了上述主机端管理接口函数的核函数之后,可以首先通过各个核函数的GPU特性接口函数,对各个核函数进行筛选和判断,检测各个核函数是否支持计算机设备中当前配置的GPU,保留所支持的GPU特性与计算机设备中当前配置的GPU的GPU特性匹配一致的核函数。
接着,对于通过确认的核函数,计算机设备再进一步调用其功能类别接口函数进行映射表的建立。
本实施例在对各个核函数进行分类缓存和映射之前,首先根据各个核函数的GPU特性接口函数对各个核函数进行筛选和判断,只有在核函数所支持的GPU特性与计算机设备中当前配置的GPU的GPU特性匹配一致时,才保留该核函数,提升了分类缓存和映射的准确性,提升了核函数调用成功率。
在一个实施例中,在图2所示实施例的基础上,参见图6,本实施例主机端管理接口函数包括实参计算接口函数,本实施例涉及的计算机设备根据问题描述信息以及主机端管理接口函数调用目标核函数的过程。如图6所示,步骤203可以包括图6所示的步骤601-步骤603:
步骤601,计算机设备利用实参计算接口函数计算问题描述信息对应的核函数实参。
本实施例中,开发者在核函数开发的过程中,还需要编写实参计算接口函数,实参计算接口函数用于根据问题描述信息计算对应的核函数实参。
可以理解的是,用户输入的问题描述信息需要转化为核函数能够识别的参数,该参数称之为核函数实参,计算机设备可以调用目标核函数的实参计算接口函数,计算问题描述信息对应的核函数实参。
步骤602,计算机设备根据核函数实参获取目标核函数对应的可执行文件。
计算机设备获取到核函数实参后,可以根据核函数实参、目标核函数的函数名等信查询该目标核函数对应的可执行文件。即对于某些不依赖具体问题域进行编译的核函数,可以在上述初始化过程中提前编译好,这里计算机设备直接根据相关信息查询该目标核函数对应的可执行文件。
在其他可能的实施方式中,若目标核函数的编译过程必须依赖问题描述信息,计算机设备则获取目标核函数的源码,并调用对应的编译指令,对获取的目标核函数的源码进行编译以获得其可执行的二进制代码,即得到可执行文件进行缓存,避免后续再次编译。
需要说明的是,对于相同的问题描述信息,该实参计算接口函数仅调用一次。
步骤603,计算机设备根据核函数实参、可执行文件以及主机端管理接口函数,调用目标核函数。
计算机设备可以将核函数实参、可执行文件加载到GPU上为后续的目标核函数调用做好准备。
本实施例计算机设备根据核函数实参获取目标核函数对应的可执行文件的过程中,对于某些不依赖具体问题域进行编译的核函数,可以在初始化过程中提前编译好,计算机设备直接根据相关信息查询该目标核函数对应的可执行文件即可,而对于编译过程必须依赖问题描述信息的情况,计算机设备才调用对应的编译指令,对获取的目标核函数的源码进行编译以获得其可执行的二进制代码,使得目标核函数对应的可执行文件的获取过程更加灵活,基于核函数实参以及可执行文件,即可实现目标核函数的快速调用,即本申请实施例,开发者开发的核函数,可以快速进行上线验证,开发者无需了解异构并行库的其它代码细节,一旦通过验证,该核函数可以快速上线应用。
在一个实施例中,基于图6所示的实施例,本实施例主机端管理接口函数还包括核函数调用接口函数,核函数调用接口函数用于指示目标核函数对应的数据显存地址。
计算机设备可以根据核函数实参、可执行文件以及数据显存地址,通过GPU调用目标核函数,以实现步骤603的过程。
本实施例中,开发者在核函数开发的过程中,还需要编写核函数调用接口函数,核函数调用接口函数用于指示核函数对应的数据显存地址,数据显存地址是实际参与运算的数据显存地址,这样,计算机设备将核函数实参、可执行文件以及数据显存地址加载至GPU后,GPU则根据核函数实参、可执行文件以及数据显存地址执行目标核函数,实现目标核函数的调用。
本实施例通过上述统一化接口,将CPU端代码(主机端管理接口函数)和GPU端代码(GPU业务逻辑函数体)进行隔离,实现了CPU端代码和GPU端代码的解耦合,使核函数的快速开发和迭代成为可能。
另外,本申请还利于进行错误规避和恢复,例如,如果测试不充分,某些核函数的漏洞在测试阶段未被发现,核函数上线后,如果运行过程中出现漏洞,由于核函数是通过上述统一化接口实现的类似于插件的形式,计算机设备可以在不停机的情况下,卸载该核函数,或在某个特定问题域下禁用该核函数,并进行漏洞报告,用户也可以选择性地将该核函数移除。
在一个实施例中,提供了一种核函数调用方法,用于计算机设备,该方法包括:
步骤a,获取问题描述信息,问题描述信息包括测试问题描述信息。
步骤b,根据问题描述信息,确定问题描述信息对应的需求功能类别。
步骤c,根据需求功能类别,在预设的映射表中查找出需求功能类别对应的至少一个候选核函数。
其中,映射表中包括各功能类别与各功能类别对应的各个核函数之间的映射关系。
在映射表的建立阶段,即异构并行库的初始化过程中,计算机设备获取所有编写了主机端管理接口函数的核函数,主机端管理接口函数包括功能类别接口函数、GPU特性接口函数、实参计算接口函数、核函数调用接口函数,功能类别接口函数用于指示核函数对应的功能类别,GPU特性接口函数用于指示核函数所支持的GPU特性,核函数调用接口函数用于指示核函数对应的数据显存地址。
计算机设备根据GPU特性接口函数,对各个核函数进行筛选,保留所支持的GPU特性与计算机设备中GPU的GPU特性匹配的核函数建立映射表。
其中,映射表中的上述候选核函数的功能类别与需求功能类别相同。
步骤d,根据至少一个候选核函数,获取目标核函数。
步骤e,利用目标核函数的实参计算接口函数计算问题描述信息对应的核函数实参。
步骤f,根据核函数实参获取目标核函数对应的可执行文件。
步骤g,根据核函数实参、可执行文件以及数据显存地址,通过GPU调用目标核函数。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的核函数调用方法的核函数调用装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个核函数调用装置实施例中的具体限定可以参见上文中对于核函数调用方法的限定,在此不再赘述。
在一个示例性的实施例中,如图7所示,提供了一种核函数调用装置,包括:
第一获取模块701,用于获取问题描述信息,所述问题描述信息包括测试问题描述信息;
第二获取模块702,用于根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
调用模块703,用于根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
在其中一个实施例中,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,所述第二获取模块702,包括:
确定单元,用于根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
获取单元,用于根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
在其中一个实施例中,所述获取单元具体用于根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;根据所述至少一个候选核函数,获取所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,所述调用模块703具体用于根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
在其中一个实施例中,所述主机端管理接口函数包括实参计算接口函数,所述调用模块703具体用于利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;根据所述核函数实参获取所述目标核函数对应的可执行文;根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,所述调用模块703具体用于根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
上述核函数调用装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储核函数调用数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种核函数调用方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个示例性的实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取问题描述信息,所述问题描述信息包括测试问题描述信息;
根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
在其中一个实施例中,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,该处理器执行计算机程序时具体实现以下步骤:
根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
在其中一个实施例中,该处理器执行计算机程序时具体实现以下步骤:
根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;
根据所述至少一个候选核函数,获取所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,该处理器执行计算机程序时具体实现以下步骤:
根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
在其中一个实施例中,所述主机端管理接口函数包括实参计算接口函数,该处理器执行计算机程序时具体实现以下步骤:
利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;
根据所述核函数实参获取所述目标核函数对应的可执行文件;
根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,该处理器执行计算机程序时具体实现以下步骤:
根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取问题描述信息,所述问题描述信息包括测试问题描述信息;
根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
在其中一个实施例中,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,该计算机程序被处理器执行时具体实现以下步骤:
根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
在其中一个实施例中,该计算机程序被处理器执行时具体实现以下步骤:
根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;
根据所述至少一个候选核函数,获取所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,该计算机程序被处理器执行时具体实现以下步骤:
根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
在其中一个实施例中,所述主机端管理接口函数包括实参计算接口函数,该计算机程序被处理器执行时具体实现以下步骤:
利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;
根据所述核函数实参获取所述目标核函数对应的可执行文件;
根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,该计算机程序被处理器执行时具体实现以下步骤:
根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取问题描述信息,所述问题描述信息包括测试问题描述信息;
根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
在其中一个实施例中,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,该计算机程序被处理器执行时具体实现以下步骤:
根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
在其中一个实施例中,该计算机程序被处理器执行时具体实现以下步骤:
根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;
根据所述至少一个候选核函数,获取所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,该计算机程序被处理器执行时具体实现以下步骤:
根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
在其中一个实施例中,所述主机端管理接口函数包括实参计算接口函数,该计算机程序被处理器执行时具体实现以下步骤:
利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;
根据所述核函数实参获取所述目标核函数对应的可执行文件;
根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
在其中一个实施例中,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,该计算机程序被处理器执行时具体实现以下步骤:
根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种核函数调用方法,其特征在于,所述方法包括:
获取问题描述信息,所述问题描述信息包括测试问题描述信息;
根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
2.根据权利要求1所述的方法,其特征在于,所述主机端管理接口函数包括功能类别接口函数,所述功能类别接口函数用于指示所述目标核函数对应的目标功能类别,所述根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,包括:
根据所述问题描述信息,确定所述问题描述信息对应的需求功能类别;
根据所述需求功能类别获取所述目标核函数,其中,所述需求功能类别与所述目标功能类别相同。
3.根据权利要求2所述的方法,其特征在于,所述根据所述需求功能类别获取所述目标核函数,包括:
根据所述需求功能类别,在预设的映射表中查找出所述需求功能类别对应的至少一个候选核函数,所述候选核函数的功能类别与所述需求功能类别相同,所述映射表中包括各功能类别与各所述功能类别对应的各个核函数之间的映射关系;
根据所述至少一个候选核函数,获取所述目标核函数。
4.根据权利要求3所述的方法,其特征在于,所述主机端管理接口函数还包括GPU特性接口函数,所述GPU特性接口函数用于指示所述目标核函数所支持的目标GPU特性,所述根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,包括:
根据所述问题描述信息以及所述主机端管理接口函数,通过GPU调用所述目标核函数,其中,所述目标核函数所支持的所述目标GPU特性与所述GPU的GPU特性匹配,且所述映射表中各个核函数的GPU特性均与所述GPU的GPU特性匹配。
5.根据权利要求1所述的方法,其特征在于,所述主机端管理接口函数包括实参计算接口函数,所述根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,包括:
利用所述实参计算接口函数计算所述问题描述信息对应的核函数实参;
根据所述核函数实参获取所述目标核函数对应的可执行文件;
根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数。
6.根据权利要求5所述的方法,其特征在于,所述主机端管理接口函数还包括核函数调用接口函数,所述核函数调用接口函数用于指示所述目标核函数对应的数据显存地址,所述根据所述核函数实参、所述可执行文件以及所述主机端管理接口函数,调用所述目标核函数,包括:
根据所述核函数实参、所述可执行文件以及所述数据显存地址,通过GPU调用所述目标核函数。
7.一种核函数调用装置,其特征在于,所述装置包括:
第一获取模块,用于获取问题描述信息,所述问题描述信息包括测试问题描述信息;
第二获取模块,用于根据所述问题描述信息,获取所述问题描述信息对应的目标核函数,其中,所述目标核函数包括主机端管理接口函数,所述目标核函数是根据所述主机端管理接口函数确定的;
调用模块,用于根据所述问题描述信息以及所述主机端管理接口函数,调用所述目标核函数,以响应所述问题描述信息。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311269515.7A CN117236423A (zh) | 2023-09-27 | 2023-09-27 | 核函数调用方法、装置、设备、存储介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311269515.7A CN117236423A (zh) | 2023-09-27 | 2023-09-27 | 核函数调用方法、装置、设备、存储介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117236423A true CN117236423A (zh) | 2023-12-15 |
Family
ID=89090925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311269515.7A Pending CN117236423A (zh) | 2023-09-27 | 2023-09-27 | 核函数调用方法、装置、设备、存储介质和程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117236423A (zh) |
-
2023
- 2023-09-27 CN CN202311269515.7A patent/CN117236423A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gao et al. | Estimating GPU memory consumption of deep learning models | |
US9594754B2 (en) | Purity analysis using white list/black list analysis | |
US20180246803A1 (en) | Targeted software testing | |
US7318215B1 (en) | Stored procedure interface language and tools | |
US7853930B2 (en) | Annotating graphs to allow quick loading and analysis of very large graphs | |
US7500149B2 (en) | Generating finite state machines for software systems with asynchronous callbacks | |
US20190220387A1 (en) | Unexplored branch search in hybrid fuzz testing of software binaries | |
CN108459962A (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
JP7076208B2 (ja) | アプリケーション・テスト | |
US20210103514A1 (en) | Reusable test cases for identifiable patterns | |
CN105302717A (zh) | 一种大数据平台的检测方法及装置 | |
US11550553B2 (en) | Usage-based software library decomposition | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
US20230289187A1 (en) | Method and apparatus for rectifying weak memory ordering problem | |
US20130019225A1 (en) | Incremental Inferences for Developing Data Models | |
CN105765561A (zh) | 根据跟踪数据的生产对比开发使用的确定 | |
JP2017174418A (ja) | モデルチェックのためのデータ構造抽象化 | |
Koop et al. | The provenance of workflow upgrades | |
CN115033434B (zh) | 一种内核性能理论值计算方法、装置及存储介质 | |
CN116893960A (zh) | 代码质量检测方法、装置、计算机设备和存储介质 | |
US20220326915A1 (en) | Method for generating program for use in accelerator for deep learning | |
CN117236423A (zh) | 核函数调用方法、装置、设备、存储介质和程序产品 | |
US11914993B1 (en) | Example-based synthesis of rules for detecting violations of software coding practices | |
US11449317B2 (en) | Detection of semantic equivalence of program source codes | |
CN118113486B (zh) | 一种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 |