CN115391066A - 用于芯片的数据交互方法、装置和人工智能芯片 - Google Patents
用于芯片的数据交互方法、装置和人工智能芯片 Download PDFInfo
- Publication number
- CN115391066A CN115391066A CN202211071044.4A CN202211071044A CN115391066A CN 115391066 A CN115391066 A CN 115391066A CN 202211071044 A CN202211071044 A CN 202211071044A CN 115391066 A CN115391066 A CN 115391066A
- Authority
- CN
- China
- Prior art keywords
- model
- kernel
- user
- pool
- thread
- 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/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开提供一种用于芯片的数据交互方法、装置、人工智能芯片、电子设备和介质。芯片的驱动软件架构包括用户层和内核层,用户层包括用户态驱动,并且内核层包括内核态驱动。该方法包括:执行模型启动进程和执行用户程序进程,用户程序进程包括针对模型的访问请求;响应于模型启动进程从用户态驱动进入内核态驱动,在内核层中建立交互池,以使内核态驱动能够通过交互池与模型交互;响应于用户程序进程从用户态驱动进入内核态驱动,由内核态驱动根据访问请求,通过交互池访问模型,以获取模型针对访问请求的运算结果;以及将运算结果提供给用户程序进程。
Description
技术领域
本公开涉及计算机技术领域,具体涉及用于芯片的数据交互方法、装置、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
在芯片的驱动管理中,既包括用户态驱动,也包括内核态驱动。其中,用户态驱动可以实现应用程序界面(Application Program Interface,API);内核态驱动可以实现硬件设备的电源管理、内存管理,以及各单元的任务调度等。用户态驱动和内核态驱动彼此配合,从而可以实现用户应用在硬件上的完整控制和访问。在芯片的开发设计流程中,需要用一些编程语言对芯片的行为进行建模,以从功能上定义芯片的输入输出行为。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种用于芯片的数据交互方法、装置、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种用于芯片的数据交互方法。芯片的驱动软件架构包括用户层和内核层,用户层包括用户态驱动,并且内核层包括内核态驱动。该方法包括:执行模型启动进程和执行用户程序进程,用户程序进程包括针对模型的访问请求;响应于模型启动进程从用户态驱动进入内核态驱动,在内核层中建立交互池,以使内核态驱动能够通过交互池与模型交互;响应于用户程序进程从用户态驱动进入内核态驱动,由内核态驱动根据访问请求,通过交互池访问模型,以获取模型针对访问请求的运算结果;以及将运算结果提供给用户程序进程。
根据本公开的另一方面,提供了一种用于芯片的数据交互装置。芯片的驱动软件架构包括用户层和内核层,用户层包括用户态驱动,并且内核层包括内核态驱动。该装置包括:进程执行模块,被配置为执行模型启动进程和执行用户程序进程,用户程序进程包括针对模型的访问请求;交互池建立模块,被配置为响应于模型启动进程从用户态驱动进入内核态驱动,在内核层中建立交互池,以使内核态驱动能够通过交互池与模型交互;以及交互模块,被配置为响应于用户程序进程从用户态驱动进入内核态驱动,使内核态驱动根据访问请求,通过交互池访问模型,以获取模型针对访问请求的运算结果;并且交互模块还被配置为将运算结果提供给用户程序进程。
根据本公开的又另一方面,提供了一种人工智能芯片。该人工智能芯片包括上述的装置。
根据本公开的再另一方面,提供了一种电子设备,包括上述的人工智能芯片。
根据本公开的再另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行上述的数据交互方法。
根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,使处理器执行上述的数据交互方法。
根据本公开的一个或多个实施例,可以在无需大规模改变驱动软件架构的前提下,实现内核态驱动对无法直接在内核层运行的模型的访问。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1是示出了根据本公开示例性实施例的用于芯片的数据交互方法的流程图;
图2是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法的部分过程的流程图;
图3A是示出了根据本公开示例性实施例的用于芯片的数据交互方法中模型启动进程的示意图;
图3B是示出了根据本公开示例性实施例的用于芯片的数据交互方法中模型启动进程的流程图;
图4是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法的部分过程的流程图;
图5是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法的部分过程的流程图;
图6是示出了根据本公开示例性实施例的用于芯片的数据交互方法的示例场景图;
图7是示出了根据本公开示例性实施例的用于芯片的数据交互方法的另一示例场景图;
图8是示出了根据本公开示例性实施例的用于芯片的数据交互方法的另一流程图;
图9是示出了根据本公开示例性实施例的用于芯片的数据交互方法中内核态驱动初始化的流程图。
图10是示出了根据本公开示例性实施例的用于芯片的数据交互装置的结构框图;以及
图11是示出能够应用于示例性实施例的示例性电子设备的框图。
具体实施方式
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
如上文所述,在芯片的开发设计流程中,需要用一些编程语言对芯片的行为进行建模,以从功能上定义芯片的输入输出行为。例如,在图形处理器(Graphics ProcessingUnit,GPU)芯片的开发设计流程中,可以采用一些高级编程语言(例如C++语言)对芯片的行为进行建模(modeling)。采用高级编程语言对芯片进行建模可以更好地利用高级编程语言的特性来加快模型的开发和验证速度。
然而,芯片(例如GPU芯片)的软件架构可能无法支持建模所采用的编程语言。例如,对于通常所采用的Linux架构而言,Linux的内核态空间只有标准的C语言函数库,而不支持C++语言的高级语言特性,这导致内核态的驱动无法与C++模型进行直接的交互。
在相关技术中,可以单独开发一套精简的纯用户态驱动,用纯用户态驱动实现基本的芯片任务调度。例如,对于应用在大型游戏或者大计算量等用户程序场景中的GPU芯片,可以通过设置抓取工具来抓取部分任务片段,再将任务片段转换成适应于C++模型驱动的激励文件,从而在C++模型上进行重放运行。但是这需要对驱动软件架构进行较大规模的改动,不仅增加了额外的冗余软件工作量,并且不同的驱动和冗长的抓取和回放流程还会给C++模型的验证带来不确定的风险。此外,传统的C++驱动模型一般与用户程序放置于同一进程,无法验证芯片在真实使用场景中的多用户程序运行的行为,也无法实现在C++模型的虚拟化支持。
鉴于此,本公开提出一种用于芯片的数据交互方法、装置、人工智能芯片、电子设备、计算机可读存储介质和计算机程序产品。
下面结合附图详细描述本公开的示例性实施例。
首先参考图1,图1是示出了根据本公开示例性实施例的用于芯片的数据交互方法100的流程图。芯片的驱动软件架构包括用户层和内核层,用户层包括用户态驱动,并且内核层包括内核态驱动。
如图1所示,数据交互方法100包括:
步骤S110、执行模型启动进程和执行用户程序进程,用户程序进程包括针对模型的访问请求;
步骤S120、响应于模型启动进程从用户态驱动进入内核态驱动,在内核层中建立交互池,以使内核态驱动能够通过交互池与所述模型交互;
步骤S130、响应于用户程序进程从用户态驱动进入内核态驱动,由内核态驱动根据访问请求,通过交互池访问所述模型,以获取所述模型针对访问请求的运算结果;以及
步骤S140、将运算结果提供给用户程序进程。
芯片的驱动软件架构包括用户层和内核层(例如Linux中的用户层和内核层),内核层对应于内核空间。内核层可以负责一些系统级操作,例如内存管理、电源管理、IO操作、进程管理、文件系统等等。用户层对应于用户空间,可供各种用户应用程序使用。用户层包括用户态驱动,并且内核层包括内核态驱动。在Linux的众多版本(例如Ubuntu、CentOS、Fedora等等)中,内核层通常基于一套内核代码,该代码通常基于一种编程语言(例如C语言)。因此,内核层可能无法支持一些其他编程语言(例如C++语言)的特性,相应地,基于这些其他编程语言编写的模型(程序)可能无法直接在内核层运行。在步骤S110中,模型启动进程可以在用户层中加载那些无法直接在内核层中运行的模型(例如C++模型)。
通过在内核层中建立的交互池可以使内核态驱动能够通过交互池与模型(例如C++模型)交互。当用户程序进程(例如在用户层中的大型程序中的进程)对模型(例如C++模型)存在访问请求时,内核态驱动根据访问请求,可以通过交互池访问所述模型,获取所述模型的相应运算结果。最终,运算结果可以被提供给用户程序进程。由此,通过模型启动进程与用户程序进程的进程间访问,可以在无需大规模改变驱动软件架构的前提下,实现内核态驱动对无法直接在内核层运行的模型的访问。
根据一些实施例,芯片的驱动软件架构还可以包括与内核层交互的硬件层,并且交互池可以是硬件层中的存储区域在内核层中的映射。在一些示例中,交互池的形式可以是一个或多个数组。通过对数组进行读写操作,可以在交互池中读取或写入与交互相关的信息(例如访问请求信息),从而实现内核态驱动与模型之间的交互。
图2是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法100的部分过程的流程图。
根据一些实施例,模型启动进程可以包括第一子线程,并且上述步骤S110可以包括:在第一子线程期间查询来自内核态驱动的访问请求。
并且如图2所示,上述步骤S130可以包括:
步骤S210、响应于用户程序进程从用户态驱动进入内核态驱动,由内核态驱动将访问请求写入交互池;
步骤S220、将交互池中的访问请求提供给第一子线程;以及
步骤S230、响应于查询到来自内核态驱动的访问请求,第一子线程从模型获取运算结果。
由此,通过在模型启动进程中设置第一子线程,由该第一子线程负责用户态驱动与内核态驱动之间的信息传输。在一些示例中,在第一子线程期间可以轮询地查询来自内核态驱动的访问请求。关于第一子线程的详细说明将在下文中参照图3A和图3B进一步描述。
在步骤S210中,用户程序进程从用户态驱动进入内核态驱动时,内核态驱动可以根据用户程序进程所包括的标识(ID),将用户程序进程中的访问请求写入与标识对应的交互池(或交互池中的对应部分)中。当存在多个用户程序进程并行执行时,内核态驱动也可以并行地将每个用户程序进程的访问请求写入相应的交互池中。
在步骤S220和步骤S230中,内核态驱动可以直接将访问请求提供给用户层中的第一子线程,当在第一子线程的期间内查询到来自内核态驱动的访问请求,可以从模型处获取与该访问请求对应的运算结果。
下面,将参照图3A和图3B,对模型启动进程进行进一步说明。其中,图3A是示出了根据本公开示例性实施例的用于芯片的数据交互方法中模型启动进程310的示意图;并且图3B是示出了根据本公开示例性实施例的用于芯片的数据交互方法中模型启动进程310的流程图。
参考图3A和图3B,模型启动进程310包括上文中所描述的第一子线程312,第一子线程312可以(轮询地)查询来自内核态驱动的访问请求。此外,将理解的是,第一子线程312可以在获取到内核态驱动的退出请求时退出。
根据一些实施例,继续参考图3B,模型启动进程310可以进一步包括主线程311,并且上述步骤S110可以包括执行主线程311中的以下操作:
加载模型;以及
建立用户态驱动与内核态驱动之间的连接。其中,模型启动进程通过所述用户态驱动与内核态驱动之间的连接从用户态驱动进入内核态驱动。
在一些示例中,所述用户态驱动与内核态驱动之间的连接可以是根据进程310(或主线程311)所具有的标识,在用户态驱动与内核态驱动之间建立的与该进程310(或主线程311)相对应的握手信号。
通过采用多线程技术,由主线程负责加载那些无法直接在内核层中运行的模型;由第一子线程负责用户态驱动与内核态驱动之间的信息传输,从而提升内核态驱动访问模型的效率。
根据一些实施例,继续参考图3B,上述步骤S110可以进一步包括执行主线程中的以下操作:
建立至少一个子线程,其中,至少一个子线程包括上文中描述的第一子线程312;以及
响应于至少一个子线程中的任意一个子线程退出,退出主线程。
根据一些实施例,继续参考图3A和图3B,上述建立至少一个子线程的步骤包括建立第二子线程313,并且上述步骤S110可以进一步包括执行第二子线程313中的以下操作:响应于获取到用户输入的主动退出请求和/或响应于第一子线程312退出,退出第二子线程313。
类似地,通过采用多线程技术,第二子线程313可以用于负责模型启动进程310的退出机制。在一个示例中,用户可以通过用户界面输入退出模型启动进程310的退出请求,响应于获取到用户输入的主动退出请求,第二子线程313可以退出,从而使主线程311退出。在一个示例中,响应于第一子线程312退出,第二子线程313可以退出,从而使主线程311退出。在一个示例中,在获取到用户输入的主动退出请求并且第一子线程312退出后,第二子线程313才退出。
下面,将继续结合图4至图6,对数据交互方法100中的部分过程进行详细说明。
图4是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法100的部分过程的流程图。
根据一些实施例,上述步骤S210可以包括:由内核态驱动将访问请求写入交互池中与用户程序进程相对应的请求池。
并且如图4所示,上述步骤S220可以包括:
步骤S421、响应于访问请求已被写入请求池,产生请求满足信号;
步骤S422、根据请求满足信号,从请求池中获取访问请求;以及
步骤S423、将所获取的访问请求提供给第一子线程。
在一些示例中,请求池的形式可以是交互池中的一个或多个数组。将理解的是,用户程序进程从用户态驱动进入内核态驱动时,内核态驱动可以根据用户程序进程所包括的标识(ID),将用户程序进程中的访问请求写入与标识对应的请求池(或请求池中的对应部分)中。
图6是示出了根据本公开示例性实施例的用于芯片的数据交互方法100的示例场景图。在图6中,以横向虚线隔开了芯片软件架构中的用户层和内核层。在用户层一侧,模型启动进程610包括主线程611、第一子线程612和第二子线程613。模型启动进程610、主线程611、第一子线程612和第二子线程613分别与上文中关于图3A所描述的模型启动进程310、主线程311、第一子线程312和第二子线程313类似,为了简洁起见,在此不再赘述。此外,在用户层一侧,还包括用户程序进程620和用户态驱动630,用户程序进程620例如可以是对模型存在访问请求的进程。在内核层一侧,包括内核态驱动640和交互池650,其中,交互池650可以是通过如上文所描述的步骤S120那样,响应于模型启动进程从用户态驱动进入内核态驱动而在内核层中建立的。内核态驱动640能够通过交互池650与用户层一侧的模型交互。
从图6中可以看出,在步骤1中,用户程序进程620开始执行后,从用户态驱动630进入内核态驱动640;在步骤2中,内核态驱动640将用户程序进程620中的针对模型的访问请求写入交互池650中归属于当前用户进程620的请求池中;在步骤3中,当上述访问请求在请求池中写入完毕后,交互池650产生请求满足信号,将该请求满足信号通知内核层的交互模块服务端670;在步骤4中,当交互模块服务端670获取到请求满足信号后,将请求池中所写入的访问请求数据取出,经由用户层的交互模块用户端660,将访问请求数据提供给模型启动进程610的第一子线程612。
如上文所描述的,第一子线程612可以(轮询地)查询来自内核层的访问请求,响应于查询到访问请求(图6的步骤4中所提供的访问请求),第一子线程612可以向已被主线程611加载的模型发出请求,请求获取与该访问请求相对应的运算结果(即图6中的步骤5)。在一个示例中,第一子线程612可以将访问请求转译为模型请求(例如C++模型请求),将模型请求发送给模型。进一步地,主线程611可以将运算结果提供给第一子线程612(即图6中的步骤6)。
参考图5,图5是示出了根据本公开示例性实施例的图1中用于芯片的数据交互方法100的部分过程的流程图。根据一些实施例,上述步骤S140可以包括:
步骤S541、第一子线程将运算结果写入交互池中与用户程序进程相对应的响应池;
步骤S542、响应于运算结果已被写入响应池,产生响应满足信号;
步骤S543、根据响应满足信号,从响应池中获取运算结果;以及
步骤S544、将运算结果提供给用户程序进程。
在一些示例中,响应池的形式可以是交互池中的一个或多个数组。
继续参考图6,在步骤7中,第一子线程612在收到运算结果后,将运算结果经由用户层的交互模块用户端660和内核层的交互模块服务端670,将运算结果写入交互池650中归属于当前用户进程620的响应池中;在步骤8中,当上述运算结果在响应池中写入完毕后,交互池650产生响应满足信号,将该响应满足信号通知内核态驱动640(在一个示例中,交互池650将该响应满足信号通知内核态驱动640中服务于用户程序进程620的内核线程中);在步骤9中,内核态驱动640在收到响应满足信号后,可以将响应池中所写入的运算结果取出,经由用户态驱动630将运算结果提供给用户程序进程620。至此,用户程序进程620请求访问模型的周期完成。
将理解的是,图6所描述的场景仅作为示例,其并不旨在对本公开的保护范围进行限制。例如图6的示例中的交互模块用户端660和交互模块服务端670可以用于数据的中继、转发或格式转换,对于交互模块用户端660和交互模块服务端670的修改也是可能的。
上文中描述了用户程序进程对模型进行访问的场景。下面将结合图7说明适于中断处理场景的内核态驱动与模型的交互方式。
图7是示出了根据本公开示例性实施例的用于芯片的数据交互方法的另一示例场景图。在图7中,以横向虚线隔开了芯片软件架构中的用户层和内核层。在用户层一侧,模型启动进程710包括主线程711、第一子线程712和第二子线程713。模型启动进程710、主线程711、第一子线程712和第二子线程713分别与上文中关于图3A所描述的模型启动进程310、主线程311、第一子线程312和第二子线程313类似;此外,用户态驱动730、交互模块用户端760分别与上文中关于图6所描述的用户态驱动630、交互模块用户端660类似,为了简洁起见,在此不再赘述。
根据一些实施例,如图7所示,用于芯片的数据交互方法还可以包括:
获取模型产生的中断信号;以及
经由内核层中的模型中断子线程将中断信号提供给内核态驱动中的中断处理程序,并且同时向模型启动进程反馈指示中断已处理的信号。
具体地,在步骤11中,模型产生中断信号,并将中断信号提供给第一子线程312;在步骤12中,中断信号经由交互模块用户端760被提供给交互模块服务端770;内核层中包括中断子线程780(中断子线程780在交互模块服务端770内),在步骤13中,中断子线程780将获取到的中断信号发送至内核态驱动740的中断处理程序中,并且,如步骤14所示,中断子线程780同时向模型启动进程710反馈指示中断已处理的信号;在步骤15中,第一子线程312将指示中断已处理的信号提供给模型。
由此,在无需大规模改变驱动软件架构的前提下,可以实现无法直接在内核层运行的模型的中断处理过程。
将理解的是,图7所描述的场景仅作为示例,其并不旨在对本公开的保护范围进行限制。例如图7的示例中的交互模块用户端760和交互模块服务端770可以用于数据的中继、转发或格式转换,对于交互模块用户端760和交互模块服务端770的修改也是可能的。
图8是示出了根据本公开示例性实施例的用于芯片的数据交互方法800的流程图。
如图8所示,数据交互方法800还可以包括在执行用户程序进程之前的以下步骤:
步骤S810、判断模型是否已完成加载;
步骤S820、响应于判定模型已完成加载,判断模型是否已完成初始化;以及
步骤S830、响应于判定模型已完成初始化,完成内核态驱动的初始化。
由此,在模型已加载并已完成初始化后,才完成内核态驱动的初始化,保证了内核态在需要与模型进行交互时,模型已处于初始化后的“可用”状态,从而更加高效地进行内核态驱动与模型的交互。
图9是示出了根据本公开示例性实施例的用于芯片的数据交互方法中内核态驱动初始化的流程图。
如图9所示,内核态驱动开始初始化后,首先可以建立交互池。随后,判断用户进程是否来自模型,来自模型的用户进程例如是上文中所描述的模型启动进程610;不来自模型的用户进程例如是上文中所描述的用户程序进程620。当判断用户进程来自模型(即是模型启动进程)时,进一步判断模型是否已加载。响应于判定模型已完成加载,判断模型是否已完成初始化。响应于判定模型已完成初始化,完成内核态驱动的初始化。
如果判定模型没有完成加载,则暂不完成内核态驱动的初始化,内核态驱动初始化处于等待状态。如果判定模型没有完成初始化,则暂不完成内核态驱动的初始化,并等待模型初始化后才完成内核态驱动的初始化。
如果判定用户进程不来自模型(即是用户程序进程),则可以直接判断模型是否已完成初始化,响应于判定模型已完成初始化,才完成内核态驱动的初始化。
由此,对于各种用户进程(包括模型启动进程和用户程序进程),均在模型已完成初始化的条件下才完成内核态驱动的初始化,进一步保证了内核态在需要与模型进行交互时,模型已处于初始化后的“可用”状态,从而更加高效地进行内核态驱动与模型的交互。
根据一些实施例,根据本公开实施例的用于芯片的数据交互方法可以用于验证芯片,并且模型可以是C++模型或寄存器传输级(Register-Transfer Level,RTL)仿真模型。
根据本公开的另一方面,提供了一种用于芯片的数据交互装置。所述芯片的驱动软件架构包括用户层和内核层,用户层包括用户态驱动,并且内核层包括内核态驱动。图10是示出了根据本公开示例性实施例的用于芯片的数据交互装置1000的结构框图。如图10所示,数据交互装置1000包括:
进程执行模块1010,被配置为执行模型启动进程和执行用户程序进程,用户程序进程包括针对模型的访问请求;
交互池建立模块1020,被配置为响应于模型启动进程从用户态驱动进入内核态驱动,在内核层中建立交互池,以使内核态驱动能够通过交互池与所述模型交互;以及
交互模块1030,被配置为响应于用户程序进程从用户态驱动进入内核态驱动,使内核态驱动根据访问请求,通过交互池访问模型,以获取模型针对访问请求的运算结果;
并且交互模块1030还被配置为将运算结果提供给用户程序进程。
根据一些实施例,模型启动进程可以包括第一子线程,并且进程执行模块1010被进一步配置为在第一子线程期间查询来自内核态驱动的所述访问请求;并且交互模块1030被进一步配置为:响应于用户程序进程从用户态驱动进入内核态驱动,使内核态驱动将访问请求写入交互池;将交互池中的访问请求提供给第一子线程;以及响应于查询到来自内核态驱动的访问请求,第一子线程从模型获取运算结果。
根据一些实施例,交互模块1030可以被进一步配置为:使内核态驱动将访问请求写入交互池中与用户程序进程相对应的请求池;响应于访问请求已被写入请求池,产生请求满足信号;根据请求满足信号,从请求池中获取访问请求;以及将所获取的访问请求提供给第一子线程。
根据一些实施例,交互模块1030可以被进一步配置为:使第一子线程将运算结果写入交互池中与用户程序进程相对应的响应池;响应于运算结果已被写入响应池,产生响应满足信号;根据响应满足信号,从响应池中获取运算结果;以及将运算结果提供给用户程序进程。
根据一些实施例,模型启动进程可以进一步包括主线程,并且进程执行模块1010可以被进一步配置为执行主线程中的以下操作:加载模型;以及建立用户态驱动与内核态驱动之间的连接,其中,模型启动进程通过所述连接从用户态驱动进入内核态驱动。
根据一些实施例,进程执行模块1010可以被进一步配置为执行主线程中的以下操作:建立至少一个子线程,其中,所述至少一个子线程包括所述第一子线程;以及响应于所述至少一个子线程中的任意一个子线程退出,退出主线程。
根据一些实施例,进程执行模块1010可以被进一步配置为建立第二子线程,并且进程执行模块1010可以被进一步配置为执行第二子线程中的以下操作:响应于获取到用户输入的主动退出请求和/或响应于所述第一子线程退出,退出第二子线程。
根据一些实施例,数据交互装置1000还可以包括内核态驱动初始化模块(图中未示出),被配置为在执行用户程序进程之前:判断模型是否已完成加载;响应于判定模型已完成加载,判断模型是否已完成初始化;以及响应于判定模型已完成初始化,完成内核态驱动的初始化。
根据一些实施例,数据交互装置1000还可以包括:中断获取模块(图中未示出),被配置为获取模型产生的中断信号;以及中断处理模块(图中未示出),被配置为经由内核层中的模型中断子线程将中断信号提供给内核态驱动中的中断处理程序,并且同时向模型启动进程反馈指示中断已处理的信号。
根据一些实施例,芯片的驱动软件架构还可以包括与内核层交互的硬件层,并且交互池是硬件层中的存储区域在内核层中的映射。
根据一些实施例,数据交互装置1000可以用于验证芯片,并且模型是C++模型或寄存器传输级RTL仿真模型。
可以理解的是,根据本公开实施例的数据交互装置1000的操作和技术效果与图1至图9中描述的方法中的相应操作和技术效果类似,为了简洁起见,在此不做赘述。
根据本公开的另一方面,提供了一种人工智能芯片。该人工智能芯片包括根据本公开实施例的数据交互装置1000。
根据本公开的又另一方面,提供了一种电子设备,包括根据本公开实施例的人工智能芯片。
根据本公开的又另一方面,提供了一种计算机可读存储介质,其上存储有计算机指令,计算机指令被处理器执行时,使处理器执行根据本公开实施例的数据交互方法。
根据本公开的又另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本公开实施例的数据交互方法。
图11是示出根据本公开的示例性实施例的电子设备1100的示例的框图。需要说明的,图11所示出的结构仅是一个示例,根据具体的实现方式,本公开的电子设备可以仅包括图11所示出的组成部分中的一种或多个。
电子设备1100例如可以是通用计算机(例如膝上型计算机、平板计算机等等各种计算机)、移动电话、个人数字助理。根据一些实施例,电子设备1100可以是云计算设备和智能设备。
根据一些实施例,电子设备1100可被配置为对图像、文本和音频中的至少一者进行处理,并且将所述处理结果传输至输出设备而提供给用户。输出设备例如可以为显示屏、包括显示屏的设备,也可以为耳机、扬声器、或振荡器等声音输出设备。例如,电子设备1100可被配置为对图像进行目标检测,将目标检测结果传输至显示设备以显示,电子设备1100还可被配置为对图像进行增强处理,并将增强结果传输至显示设备以显示。电子设1100还可被配置为对图像中的文本进行识别,并将识别结果传输至显示设备以显示和/或将识别结果转换成声音数据并传输至声音输出设备进行播放。电子设备1100还可被配置为对音频进行识别和处理,并将识别结果传输至显示设备以显示和/或将处理结果转换成声音数据并传输至声音输出设备进行播放。
电子设备1100可以包括图像处理电路1103,图像处理电路1103可以被配置为对图像进行各种图像处理。图像处理电路1103例如可以被配置为对图像进行以下图像处理中的至少一项:对图像进行降噪、对图像进行几何矫正、对图像进行特征提取、对图像中的对象进行检测和/或识别、对图像进行增强处理、以及对图像中包含的文字进行检测和/或识别等等。
电子设备1100还可以包括文字识别电路1104,所述文字识别电路1104被配置为对图像中的文字区域进行文字检测和/或识别(例如OCR处理),从而获得文字数据。所述文字识别电路1104例如可以通过专用芯片实现。电子设备1100还可以包括声音转换电路1105,所述声音转换电路1105被配置为将所述文字数据转换成声音数据。所述声音转换电路1105例如可以通过专用芯片实现。
电子设备1100还可以包括音频处理电路1106,所述音频处理电路1106被配置为将音频转换为文字,从而获得音频相应的文字数据。所述音频处理电路1106还可被配置为对音频相应的文字数据进行处理,例如可以包括关键字提取、意图识别、智能推荐和智能问答等等。所述音频处理电路1106例如可以通过专用芯片实现。所述声音转换电路1105还可被配置为将音频处理结果转换为声音数据,以适用于语音助手或虚拟客服等应用场景。
上述的各种电路(例如图像处理电路1103、文字识别电路1104、声音转换电路1105、音频处理电路1106中的一个或多个可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现。例如,上述的各种电路中的一个或多个可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
根据一些实施方式,电子设备1100还可以包括输出设备1107,所述输出设备1107可以是用于呈现信息的任何类型的设备,可以包括但不限于显示屏、具有显示功能的终端、耳机、扬声器、振动器和/或打印机等。
根据一些实施方式,电子设备1100还可以包括输入设备1108,所述输入设备1108可以是用于向电子设备1100输入信息的任何类型的设备,可以包括但不限于各种传感器、鼠标、键盘、触摸屏、按钮、控制杆、麦克风和/或遥控器等等。
根据一些实施方式,电子设备1100还可以包括通信设备1109,所述通信设备1109可以是使得能够与外部设备和/或与网络通信的任何类型的设备或系统,可以包括但不限于调制解调器、网卡、红外通信设备、无线通信设备和/或芯片组,例如蓝牙设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
根据一些实施方式,电子设备1100还可以包括处理器1101。所述处理器1101可以是任何类型的处理器,并且可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。处理器1101例如可以是但不限于中央处理单元CPU、图形处理器GPU、或各种专用的人工智能(AI)计算芯片等等。
电子设备1100还可以包括工作存储器1102和存储设备1111。处理器1101可以被配置为能够获取并且执行存储在工作存储器1102、存储设备1111或者其他计算机可读介质中的计算机可读指令,诸如操作系统1102a的程序代码、应用程序1102b的程序代码等。工作存储器1102和存储设备1111是用于存储指令的计算机可读存储介质的示例,所存储的指令能够由处理器1101执行来实施前面所描述的各种功能。工作存储器1102可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。存储设备1111可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器1102和存储设备1111在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器1101作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
根据一些实施方式,处理器1101可以对图像处理电路1103、文字识别电路1104、声音转换电路1105、音频处理电路1106以及电子设备1100包括的其他各种装置和电路中的至少一个进行控制和调度。根据一些实施方式,图11中所述的各个组成部分中的至少一些可通过总线1110而相互连接和/或通信。
软件要素(程序)可以位于所述工作存储器1102中,包括但不限于操作系统1102a、一个或多个应用程序1102b、驱动程序和/或其他数据和代码。
根据一些实施方式,用于进行前述的控制和调度的指令可以被包括在操作系统1102a或者一个或多个应用程序1102b中。
根据一些实施方式,执行本公开所述的方法步骤的指令可以被包括在一个或多个应用程序1102b中,并且上述电子设备1100的各个模块可以通过由处理器1101读取和执行一个或多个应用程序1102b的指令来实现。换言之,电子设备1100可以包括处理器1101以及存储程序的存储器(例如工作存储器1102和/或存储设备1111),所述程序包括指令,所述指令在由所述处理器1101执行时使所述处理器1101执行如本公开各种实施例所述的方法。
根据一些实施方式,图像处理电路1103、文字识别电路1104、声音转换电路1105、音频处理电路1107中的至少一个所执行的操作中的一部分或者全部可以由处理器1101读取和执行一个或多个应用程序1102b的指令来实现。
软件要素(程序)的指令的可执行代码或源代码可以存储在非暂时性计算机可读存储介质(例如所述存储设备1111)中,并且在执行时可以被存入工作存储器1102中(可能被编译和/或安装)。因此,本公开提供存储程序的计算机可读存储介质,所述程序包括指令,所述指令在由电子设备的处理器执行时,致使所述电子设备执行如本公开各种实施例所述的方法。根据另一种实施方式,软件要素(程序)的指令的可执行代码或源代码也可以从远程位置下载。
还应该理解,可以根据具体要求而进行各种变型。例如,也可以使用定制硬件,和/或可以用硬件、软件、固件、中间件、微代码,硬件描述语言或其任何组合来实现各个电路、单元、模块或者元件。例如,所公开的方法和设备所包含的电路、单元、模块或者元件中的一些或全部可以通过使用根据本公开的逻辑和算法,用汇编语言或硬件编程语言(诸如VERILOG,VHDL,C++)对硬件(例如,包括现场可编程门阵列(FPGA)和/或可编程逻辑阵列(PLA)的可编程逻辑电路)进行编程来实现。
根据一些实施方式,电子设备1100中的处理器1101可以分布在网络上。例如,可以使用一个处理器执行一些处理,而同时可以由远离该一个处理器的另一个处理器执行其他处理。电子设备1100的其他模块也可以类似地分布。这样,电子设备1100可以被解释为在多个位置执行处理的分布式计算系统。电子设备1100的处理器1101也可以是云计算系统的处理器,或者是结合了区块链的处理器。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (26)
1.一种用于芯片的数据交互方法,所述芯片的驱动软件架构包括用户层和内核层,所述用户层包括用户态驱动,并且所述内核层包括内核态驱动,所述方法包括:
执行模型启动进程和执行用户程序进程,所述用户程序进程包括针对模型的访问请求;
响应于所述模型启动进程从所述用户态驱动进入所述内核态驱动,在所述内核层中建立交互池,以使所述内核态驱动能够通过所述交互池与所述模型交互;
响应于所述用户程序进程从所述用户态驱动进入所述内核态驱动,由所述内核态驱动根据所述访问请求,通过所述交互池访问所述模型,以获取所述模型针对所述访问请求的运算结果;以及
将所述运算结果提供给所述用户程序进程。
2.根据权利要求1所述的方法,其中,所述模型启动进程包括第一子线程,并且所述执行模型启动进程包括在所述第一子线程期间查询来自所述内核态驱动的所述访问请求;
并且其中,响应于所述用户程序进程从所述用户态驱动进入所述内核态驱动,由所述内核态驱动根据所述访问请求,通过所述交互池访问所述模型,以获取所述模型针对所述访问请求的运算结果包括:
响应于所述用户程序进程从所述用户态驱动进入所述内核态驱动,由所述内核态驱动将所述访问请求写入所述交互池;
将所述交互池中的所述访问请求提供给所述第一子线程;以及
响应于查询到来自所述内核态驱动的所述访问请求,所述第一子线程从所述模型获取所述运算结果。
3.根据权利要求2所述的方法,其中,由所述内核态驱动将所述访问请求写入所述交互池包括:
由所述内核态驱动将所述访问请求写入所述交互池中与所述用户程序进程相对应的请求池,
并且其中,将所述交互池中的所述访问请求提供给所述第一子线程包括:
响应于所述访问请求已被写入所述请求池,产生请求满足信号;
根据所述请求满足信号,从所述请求池中获取所述访问请求;以及
将所获取的所述访问请求提供给所述第一子线程。
4.根据权利要求2所述的方法,其中,将所述运算结果提供给所述用户程序进程包括:
所述第一子线程将所述运算结果写入所述交互池中与所述用户程序进程相对应的响应池;
响应于所述运算结果已被写入所述响应池,产生响应满足信号;
根据所述响应满足信号,从所述响应池中获取所述运算结果;以及
将所述运算结果提供给所述用户程序进程。
5.根据权利要求2所述的方法,其中,所述模型启动进程进一步包括主线程,并且执行模型启动进程包括执行所述主线程中的以下操作:
加载所述模型;以及
建立所述用户态驱动与所述内核态驱动之间的连接,其中,所述模型启动进程通过所述连接从所述用户态驱动进入所述内核态驱动。
6.根据权利要求5所述的方法,其中,执行模型启动进程进一步包括执行所述主线程中的以下操作:
建立至少一个子线程,其中,所述至少一个子线程包括所述第一子线程;以及
响应于所述至少一个子线程中的任意一个子线程退出,退出所述主线程。
7.根据权利要求6所述的方法,其中,建立至少一个子线程包括建立第二子线程,并且执行模型启动进程进一步包括执行所述第二子线程中的以下操作:
响应于获取到用户输入的主动退出请求和/或响应于所述第一子线程退出,退出所述第二子线程。
8.根据权利要求5所述的方法,还包括在所述执行用户程序进程之前:
判断所述模型是否已完成加载;
响应于判定所述模型已完成加载,判断所述模型是否已完成初始化;以及
响应于判定所述模型已完成初始化,完成所述内核态驱动的初始化。
9.根据权利要求1至8中任一项所述的方法,还包括:
获取所述模型产生的中断信号;以及
经由所述内核层中的模型中断子线程将所述中断信号提供给所述内核态驱动中的中断处理程序,并且同时向所述模型启动进程反馈指示中断已处理的信号。
10.根据权利要求1至8中任一项所述的方法,其中,所述芯片的驱动软件架构还包括与所述内核层交互的硬件层,并且所述交互池是所述硬件层中的存储区域在所述内核层中的映射。
11.根据权利要求1至8中任一项所述的方法,其中,所述方法用于验证芯片,并且所述模型是C++模型或寄存器传输级RTL仿真模型。
12.一种用于芯片的数据交互装置,所述芯片的驱动软件架构包括用户层和内核层,所述用户层包括用户态驱动,并且所述内核层包括内核态驱动,所述装置包括:
进程执行模块,被配置为执行模型启动进程和执行用户程序进程,所述用户程序进程包括针对模型的访问请求;
交互池建立模块,被配置为响应于所述模型启动进程从所述用户态驱动进入所述内核态驱动,在所述内核层中建立交互池,以使所述内核态驱动能够通过所述交互池与所述模型交互;以及
交互模块,被配置为响应于所述用户程序进程从所述用户态驱动进入所述内核态驱动,使所述内核态驱动根据所述访问请求,通过所述交互池访问所述模型,以获取所述模型针对所述访问请求的运算结果;
并且所述交互模块还被配置为将所述运算结果提供给所述用户程序进程。
13.根据权利要求12所述的装置,其中,所述模型启动进程包括第一子线程,并且所述进程执行模块被进一步配置为在所述第一子线程期间查询来自所述内核态驱动的所述访问请求;
并且其中,所述交互模块被进一步配置为:
响应于所述用户程序进程从所述用户态驱动进入所述内核态驱动,使所述内核态驱动将所述访问请求写入所述交互池;
将所述交互池中的所述访问请求提供给所述第一子线程;以及
响应于查询到来自所述内核态驱动的所述访问请求,所述第一子线程从所述模型获取所述运算结果。
14.根据权利要求13所述的装置,其中,所述交互模块被进一步配置为:
使所述内核态驱动将所述访问请求写入所述交互池中与所述用户程序进程相对应的请求池;
响应于所述访问请求已被写入所述请求池,产生请求满足信号;
根据所述请求满足信号,从所述请求池中获取所述访问请求;以及
将所获取的所述访问请求提供给所述第一子线程。
15.根据权利要求13所述的装置,其中,所述交互模块被进一步配置为:
使所述第一子线程将所述运算结果写入所述交互池中与所述用户程序进程相对应的响应池;
响应于所述运算结果已被写入所述响应池,产生响应满足信号;
根据所述响应满足信号,从所述响应池中获取所述运算结果;以及
将所述运算结果提供给所述用户程序进程。
16.根据权利要求13所述的装置,其中,所述模型启动进程进一步包括主线程,并且所述进程执行模块被进一步配置为执行所述主线程中的以下操作:
加载所述模型;以及
建立所述用户态驱动与所述内核态驱动之间的连接,其中,所述模型启动进程通过所述连接从所述用户态驱动进入所述内核态驱动。
17.根据权利要求16所述的装置,其中,所述进程执行模块被进一步配置为执行所述主线程中的以下操作:
建立至少一个子线程,其中,所述至少一个子线程包括所述第一子线程;以及
响应于所述至少一个子线程中的任意一个子线程退出,退出所述主线程。
18.根据权利要求17所述的装置,其中,所述进程执行模块被进一步配置为建立第二子线程,并且所述进程执行模块被进一步配置为执行所述第二子线程中的以下操作:
响应于获取到用户输入的主动退出请求和/或响应于所述第一子线程退出,退出所述第二子线程。
19.根据权利要求16所述的装置,还包括内核态驱动初始化模块,被配置为在所述执行用户程序进程之前:
判断所述模型是否已完成加载;
响应于判定所述模型已完成加载,判断所述模型是否已完成初始化;以及
响应于判定所述模型已完成初始化,完成所述内核态驱动的初始化。
20.根据权利要求12至19中任一项所述的装置,还包括:
中断获取模块,被配置为获取所述模型产生的中断信号;以及
中断处理模块,被配置为经由所述内核层中的模型中断子线程将所述中断信号提供给所述内核态驱动中的中断处理程序,并且同时向所述模型启动进程反馈指示中断已处理的信号。
21.根据权利要求12至19中任一项所述的装置,其中,所述芯片的驱动软件架构还包括与所述内核层交互的硬件层,并且所述交互池是所述硬件层中的存储区域在所述内核层中的映射。
22.根据权利要求12至19中任一项所述的装置,其中,所述装置用于验证芯片,并且所述模型是C++模型或寄存器传输级RTL仿真模型。
23.一种人工智能芯片,包括根据权利要求12至22中任一项所述的装置。
24.一种电子设备,包括根据权利要求23所述的人工智能芯片。
25.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1至11中任一项所述的方法。
26.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现权利要求1至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071044.4A CN115391066B (zh) | 2022-08-31 | 2022-08-31 | 用于芯片的数据交互方法、装置和人工智能芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211071044.4A CN115391066B (zh) | 2022-08-31 | 2022-08-31 | 用于芯片的数据交互方法、装置和人工智能芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115391066A true CN115391066A (zh) | 2022-11-25 |
CN115391066B CN115391066B (zh) | 2023-06-30 |
Family
ID=84125545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211071044.4A Active CN115391066B (zh) | 2022-08-31 | 2022-08-31 | 用于芯片的数据交互方法、装置和人工智能芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391066B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107764A (zh) * | 2023-04-03 | 2023-05-12 | 阿里云计算有限公司 | 数据处理方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130305259A1 (en) * | 2012-05-09 | 2013-11-14 | Mstar Semiconductor, Inc. | Hardware control method and apparatus |
US20180095750A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Hardware accelerators and methods for offload operations |
CN109960582A (zh) * | 2018-06-19 | 2019-07-02 | 华为技术有限公司 | 在tee侧实现多核并行的方法、装置及系统 |
US20190286598A1 (en) * | 2018-03-16 | 2019-09-19 | Apple Inc. | Remote service discovery and inter-process communication |
CN112231007A (zh) * | 2020-11-06 | 2021-01-15 | 中国人民解放军国防科技大学 | 基于用户态与内核态驱动协同处理框架的设备驱动方法 |
CN112732344A (zh) * | 2020-12-31 | 2021-04-30 | 普华基础软件股份有限公司 | 一种用户态驱动与内核态驱动的协同工作系统及方法 |
CN114116171A (zh) * | 2021-11-30 | 2022-03-01 | 新华三半导体技术有限公司 | 一种数据处理方法、装置及系统 |
-
2022
- 2022-08-31 CN CN202211071044.4A patent/CN115391066B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130305259A1 (en) * | 2012-05-09 | 2013-11-14 | Mstar Semiconductor, Inc. | Hardware control method and apparatus |
US20180095750A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Hardware accelerators and methods for offload operations |
US20190286598A1 (en) * | 2018-03-16 | 2019-09-19 | Apple Inc. | Remote service discovery and inter-process communication |
CN109960582A (zh) * | 2018-06-19 | 2019-07-02 | 华为技术有限公司 | 在tee侧实现多核并行的方法、装置及系统 |
CN112231007A (zh) * | 2020-11-06 | 2021-01-15 | 中国人民解放军国防科技大学 | 基于用户态与内核态驱动协同处理框架的设备驱动方法 |
CN112732344A (zh) * | 2020-12-31 | 2021-04-30 | 普华基础软件股份有限公司 | 一种用户态驱动与内核态驱动的协同工作系统及方法 |
CN114116171A (zh) * | 2021-11-30 | 2022-03-01 | 新华三半导体技术有限公司 | 一种数据处理方法、装置及系统 |
Non-Patent Citations (2)
Title |
---|
M. ASTRAIN: ""A methodology to standardize the development of FPGA-based high-performance DAQ and processing systems using OpenCL"" * |
郑飞: ""用于移动终端的GPU用户态驱动设计方法"" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116107764A (zh) * | 2023-04-03 | 2023-05-12 | 阿里云计算有限公司 | 数据处理方法及系统 |
CN116107764B (zh) * | 2023-04-03 | 2023-09-26 | 阿里云计算有限公司 | 数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115391066B (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11099918B2 (en) | Accelerating algorithms and applications on FPGAs | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
US11003429B1 (en) | Compile-time scheduling | |
US11422785B2 (en) | Container orchestration framework | |
US10761822B1 (en) | Synchronization of computation engines with non-blocking instructions | |
US11435985B2 (en) | Electronic device and operation method thereof | |
US9003363B2 (en) | Device flags | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
CN104536788B (zh) | 使应用的安装自动化的系统和方法 | |
US11562554B1 (en) | Workload reduction for non-maximum suppression operation | |
US11610128B2 (en) | Neural network training under memory restraint | |
US9325576B2 (en) | Dynamic server to server configuration and initialization | |
CN115391066B (zh) | 用于芯片的数据交互方法、装置和人工智能芯片 | |
US10467023B2 (en) | System and method of interactive splash screen in embedded environments | |
US11467946B1 (en) | Breakpoints in neural network accelerator | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
CN113742224A (zh) | 测试系统、方法、装置、计算机设备和存储介质 | |
US11372677B1 (en) | Efficient scheduling of load instructions | |
US11354130B1 (en) | Efficient race-condition detection | |
US11468304B1 (en) | Synchronizing operations in hardware accelerator | |
US10503518B2 (en) | Initializing hardware components using parallel driver loading and serial access granting | |
US11182314B1 (en) | Low latency neural network model loading | |
CN111858016A (zh) | 计算作业处理方法、系统、移动设备及加速设备 | |
CN115220978B (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 |