CN112948070A - 用于由数据处理加速器处理数据的方法及数据处理加速器 - Google Patents
用于由数据处理加速器处理数据的方法及数据处理加速器 Download PDFInfo
- Publication number
- CN112948070A CN112948070A CN202011455568.4A CN202011455568A CN112948070A CN 112948070 A CN112948070 A CN 112948070A CN 202011455568 A CN202011455568 A CN 202011455568A CN 112948070 A CN112948070 A CN 112948070A
- Authority
- CN
- China
- Prior art keywords
- data processing
- accelerator
- host
- operating system
- commands
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 148
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000003860 storage Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 29
- 238000004891 communication Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000013473 artificial intelligence Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000012549 training Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 5
- 238000009434 installation Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- JEIPFZHSYJVQDO-UHFFFAOYSA-N iron(III) oxide Inorganic materials O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013175 transesophageal echocardiography Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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/509—Offload
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)
- Advance Control (AREA)
Abstract
本公开涉及一种用于由数据处理(DP)加速器处理数据的方法、数据处理加速器以及非暂时性机器可读介质。所述方法包括:由数据处理加速器从主机接收请求,所述主机具有对请求执行数据处理任务的应用进行托管的第一操作系统;由数据处理加速器的操作系统模块基于一个或多个内核调度用于完成所述数据处理任务的一个或多个命令,其中所述操作系统模块对所述数据处理加速器内的第二操作系统进行托管,以调用所述一个或多个内核执行所述数据处理任务;在完成所述一个或多个经调度命令时,由所述数据处理加速器的所述操作系统模块生成完成信号;以及将结果发送回所述应用,以基于所述完成信号确认用于所述数据处理任务的一个或多个经调度命令的完成。
Description
技术领域
本发明的实施例一般涉及机器学习模型训练和推断。更具体地,本发明的实施例涉及用于由数据处理(DP)加速器(DPA)处理数据的方法、数据处理加速器以及非暂时性机器可读介质。
背景技术
大多数DPA需要特定于供应商的专用程序和内核。结果,DPA通常被配置为与主机计算设备(例如,CPU系统)通信,用于主机计算设备为DPA管理资源和调度作业。随着数据处理加速器(DPA)继续演进为高性能加速的计算设备,越来越多的应用被编写以使用类似于通用计算设备的DPA执行数据并行计算。
发明内容
本公开旨在提供一种用于由数据处理(DP)加速器处理数据的方法、数据处理加速器以及非暂时性机器可读介质。
根据本公开的一个方面,提供了一种用于由数据处理加速器处理数据的方法,所述方法包括:由数据处理加速器从主机接收请求,所述主机具有对请求执行数据处理任务的应用进行托管的第一操作系统;由所述数据处理加速器的操作系统模块基于一个或多个内核调度用于完成所述数据处理任务的一个或多个命令,其中所述操作系统模块对所述数据处理加速器内的第二操作系统进行托管,以调用所述一个或多个内核执行所述数据处理任务;在完成所述一个或多个经调度命令时,由所述数据处理加速器的所述操作系统模块生成完成信号;以及将结果发送回所述应用,以基于所述完成信号确认用于所述数据处理任务的所述一个或多个经调度命令的完成。
根据本公开的另一个方面,提供了一种数据处理(DP)加速器,包括:主机接口,耦接到主机,所述主机执行在其中对应用进行托管的第一操作系统,其中所述主机接口接收来自所述主机的、并且由所述应用发起的请求执行数据处理任务的请求;一个或多个内核;以及操作系统模块,具有在其中执行的第二操作系统,所述操作系统模块被配置为执行操作,所述操作包括基于所述一个或多个内核调度用于执行所述数据处理任务的一个或多个命令;在完成所述一个或多个经调度命令时,生成完成信号,以及经由所述主机接口将结果发送回所述应用,以基于所述完成信号确认用于所述数据处理任务的所述一个或多个经调度命令的完成。
根据本公开的又一个方面,提供了一种非暂时性机器可读介质,具有存储在其中的指令,所述指令在由处理器执行时使得所述处理器执行如上文或下文所述所述的用于由数据处理加速器处理数据的方法。
附图说明
本发明的实施例通过示例的方式示出并且不限于附图中的图,在附图中相同的附图标记表示相似的元件。
图1是示出根据一个实施例的用于主机与数据处理(DP)加速器之间的通信的系统配置的示例的框图。
图2是示出根据一个实施例的与数据处理(DP)加速器通信的主机服务器的示例的框图。
图3A是示出根据一个实施例的与数据处理加速器通信的主机的框图。
图3B是示出根据一个实施例的操作系统模块的框图。
图4是示出根据一个实施例的操作系统模块的示例操作的框图。
图5是示出根据一个实施例的内核型命令的示例的框图。
图6是示出根据一个实施例的任务型命令的示例的框图。
图7是示出根据一个实施例的由DP加速器执行的方法的流程图。
具体实施方式
将参考以下讨论的细节描述本公开的各个实施例和方面,并且附图将示出各个实施例。以下描述和附图是本公开的说明并且不应被解释为限制本公开。描述了许多具体细节以提供对本公开的各种实施例的全面理解。然而,在某些情况下,为了提供对本公开的实施例的简要讨论,没有描述公知或常规的细节。
说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特别特征、结构或特性可包括在本公开的至少一个实施例中。在说明书中的各个地方出现的短语“在一个实施例中”不一定都指同一实施例。
以下实施例涉及使用数据处理(DP)加速器以增加可从主机设备减负(或委托)到DP加速器的某些类型的操作的处理吞吐量。DP加速器可以是图形处理单元(GPU)、人工智能(AI)加速器、数学协处理器、数字信号处理器(DSP)或其它类型的处理器。DP加速器可以是专有设计,诸如百度AI加速器、GPU等。尽管使用安全地耦接到一个或多个DP加速器的主机设备示出和描述了实施例,但本文所述的概念可更一般地实现为分布式处理系统。
主机设备和DP加速器可以经由诸如外围组件快速互连(PCIe)的高速总线,或诸如以太网的其他高速总线互连。主机设备和DP加速器可以在执行以下描述的本发明的各方面的操作之前交换密钥,并在PCIe总线上发起安全信道。操作中的一些包括DP加速器使用人工智能(AI)模型(或机器学习模型),以使用由主机设备提供的数据来执行推断。
实施例公开了用于数据处理加速器(DPA)的操作系统模块的系统和方法。操作系统模块可以对操作系统(OS)(例如,嵌入式或实时OS)进行托管,所述操作系统能够为DPA调度作业和管理资源(例如,计算单元、存储器、IO带宽)用于DPA的。对于一个实施例,系统通过DPA接收由主机执行的应用发送的用于执行或进行数据处理任务的请求。主机包括在其中执行的主机OS,而DP加速器具有在其中执行的其自己的OS(在此称为加速器OS或客户OS)。系统通过DPA的操作系统模块,基于一个或多个内核调度用于完成数据处理任务的一个或多个命令。在所述一个或多个经调度命令完成时,系统通过DPA的操作系统模块生成完成信号。系统基于完成信号将结果发送回应用,以确认用于数据处理任务的一个或多个命令的完成。
上述功能中的任一个可以作为可执行指令被编程到一个或多个非暂时性计算机可读介质上。当所述可执行指令由具有至少一个硬件处理器(例如,GPU、ASIC、FPGA)的处理系统执行时,处理系统致使所述功能得以实现。上述功能中的任一个可以由具有至少一个硬件处理器的处理系统实现,硬件处理器耦接到使用可执行指令编程的存储器,当所述可执行指令被执行时,致使处理系统实现所述功能。
关于以上方面中的任一个,在一些实施例中,主机处理器可以是中央处理单元(CPU),DP加速器可以是通过总线或互连耦接到CPU的通用处理单元(GPU)。DP加速器可以以专用集成电路(ASIC)、现场可编程门阵列(FPGA)设备或其他形式的集成电路(IC)的形式实现。可替换地,主机处理器可以是主数据处理系统的部分,而DP加速器可以是作为辅助系统的许多分布式系统中的一个,主系统可经由链路或网络(例如,诸如软件即服务或SaaS系统、或平台即服务或PaaS系统的云计算系统),将其数据处理任务远程减负。主机处理器和DP加速器之间的链路可以是外围组件快速互连(PCIe)链路或诸如以太网连接的网络连接。
图1是示出根据一个实施例的用于主机与数据处理(DP)加速器之间的通信的系统配置的示例的框图。参考图1,系统配置100包括但不限于经由网络103通信地耦接到数据处理服务器(例如,主机)104的一个或多个客户端设备101-102。客户端设备101-102可以是任何类型的客户端设备,诸如个人计算机(例如,台式机、笔记本电脑和平板计算机)、“瘦”客户端、个人数字助理(PDA)、具有Web能力的电器、智能手表或移动电话(例如,智能手机)等。可替换地,客户端设备101-102可以是其他服务器。网络103可以是任何类型的网络,诸如局域网(LAN)、诸如因特网的广域网(WAN)或其组合,有线或无线的。客户端设备101-102和数据处理服务器104之间经由网络103的通信可以例如通过TLS/SSL来保护。
数据处理服务器(例如,主机)104可以是任何种类的服务器或服务器集群,诸如Web或云服务器、应用服务器、后端服务器或其组合。服务器104可包括允许诸如客户端设备101-102的客户端访问由服务器104提供的资源或服务的接口。例如,服务器104可以是云服务器或数据中心的服务器,向客户端提供各种云服务,诸如例如云存储、云计算服务、大数据服务、建模服务、机器学习训练服务、数据挖掘服务等。服务器104可被配置为云上的软件即服务(SaaS)或平台即服务(PaaS)系统的部分,云可以是私有云、公共云或混合云。接口可包括Web接口、应用编程接口(API)和/或命令行接口(CLI)。
例如,客户端,在该示例中为客户端设备101的用户应用(例如,web浏览器、应用)可向服务器104发送或发射用于执行的指令(例如,人工智能(AI)训练、推断指令等),并且该指令由服务器104经由网络103上的接口接收。响应于指令,服务器104与DP加速器105-107通信以完成指令的执行。在另一实施例中,客户端可以从服务器104远程地运行应用(经由web浏览器或web应用),以及客户端可以远程地请求应用执行指令。在一些实施例中,指令是机器学习类型的指令,其中作为专用机器或处理器的DP加速器可以比服务器104的执行快许多倍地执行指令。因此,服务器104可以以分布式方式控制/管理用于一个或多个DP加速器的执行作业。然后,服务器104将执行结果返回给客户端设备101-102。DP加速器或AI加速器可包括一个或多个专用处理器,诸如可从获得的人工智能(AI)芯片组,或者可替换地,DP加速器可以是来自或一些其他AI芯片组供应商的AI芯片组。
根据一个实施例,可对访问DP加速器105-107中的任一个、并且由也称为主机的DP服务器104托管的应用中的每一个进行核实:该应用是由可信的源或供应商提供的。应用中的每一个可以在由主机104的中央处理单元(CPU)具体配置和执行的可信执行环境(TEE)中启动和执行。当应用被配置为访问DP加速器105-107中的任一个时,将在主机104与DP加速器105-107中的对应一个DP加速器之间建立安全连接,从而保护在主机104与DP加速器105-107中的每一个DP加速器之间交换的数据免受恶意软件的攻击。
图2是示出根据一个实施例的与数据处理(DP)加速器通信的主机的示例的框图。系统200可在对DP加速器进行硬件修改或不进行硬件修改的情况下提供主机与DP加速器之间的通信方案。参考图2,主机机器或服务器104可以被描绘为具有一个或多个层以免受入侵的系统,诸如用户应用203、运行时库205、驱动程序209、操作系统211和硬件213(例如,安全模块(可信平台模块(TPM))/中央处理单元(CPU))。主机机器104通常是可以控制和管理主机系统或DP加速器105-107上的执行作业的CPU系统。为了保护DP加速器与主机机器之间的通信信道,可能需要不同的组件来保护主机系统中的易于受到数据入侵或攻击的不同的层。例如,可信执行环境(TEE)可以保护用户应用层和运行时库层免受数据入侵。
参考图2,在一个实施例中,主机系统104包括具有一个或多个CPU、且配备有在主机机器104内的安全模块(诸如可信平台模块(TPM))的硬件213。TPM是端点设备上的专用芯片,用于存储特定于主机系统的用于硬件认证的加密密钥(例如RSA加密密钥)。每个TPM芯片可包括一个或多个RSA密钥对(例如,公共和私有密钥对),称为签注密钥(EK)或签注证书(EC),即,根密钥。密钥对被维护在TPM芯片内部,并且不能被软件访问。然后,固件和软件的关键部分在被执行之前,可通过EK或EC对该关键部分进行散列,以保护系统免受未经授权的固件和软件修改的影响。因此主机机器上的TPM芯片可以用作用于安全引导(boot)的可信根。
TPM芯片还保护工作内核空间中的驱动程序209和操作系统(OS)211以与DP加速器通信。这里,驱动程序209由DP加速器供应商提供,并可用作用于用户应用的一个或多个驱动程序,以控制主机与DP加速器之间的通信信道。因为TPM芯片和安全引导保护它们的内核空间中的OS和驱动程序,所以TPM也有效地保护驱动程序209和操作系统211。
由于用于DP加速器105-107的通信信道可由OS和驱动程序独占,因此,通信信道也通过TPM芯片保护。
在一个实施例中,主机机器104包括被强制为由TPM/CPU213保护的可信执行环境(TEE)201。TEE是安全环境。TEE可以保证加载到TEE内部的代码和数据在保密性和完整性方面受到保护。TEE的示例可以是Intel软件保护扩展(SGX)或AMD安全加密虚拟化(SEV)。Intel SGX和/或AMD SEV可包括中央处理单元(CPU)指令代码的集合,其允许用户级代码分配CPU的存储器的私有区域,该私有区域被保护以免受在较高特权级别上运行的进程的影响。这里,TEE 201可以保护用户应用203和运行时库205,其中用户应用203和运行时库205可分别由最终用户(end user)和DP加速器供应商提供。这里,运行时库205可将API调用转换为用于DP加速器的执行、配置和/或控制的命令。在一个实施例中,运行时库205提供预定的(例如,预定义的)内核的集合以供用户应用执行。
在另一实施例中,主机机器104包括使用诸如Rust和Golang等使用存储器安全语言实现的存储器安全应用207。这些在诸如MesaLock Linux等存储器安全Linux版本上运行的存储器安全应用可以进一步保护系统200免受数据保密性和完整性攻击。然而,操作系统可以是任何Linux发行版、UNIX、Windows OS或Mac OS。
在一个实施例中,系统可以如下建立:将存储器安全Linux发行版安装到配备有TPM安全引导的系统(诸如图2的主机系统104)上。该安装可以在制造或准备阶段期间离线执行。该安装还可以确保使用存储器安全编程语言对主机系统的用户空间的应用进行编程。确保在主机系统104上运行的其它应用是存储器安全应用可进一步减轻对于主机系统104的潜在保密性和完整性攻击。
在安装之后,系统随后可以通过基于TPM的安全引导来启动。TPM安全引导确保仅仅经签名/经认证的操作系统和加速器驱动程序在提供加速器服务的内核空间中启动。在一个实施例中,可以通过虚拟机监视器(hypervisor)加载操作系统。注意,虚拟机监视器或虚拟机管理器是创建和运行虚拟机的计算机软件、固件或硬件。注意,内核空间是在其中识别内核(即,用于执行的(例如,预定义的)功能的预先确定的集合)以向用户应用提供功能和服务的声明性区域(declarative region)或作用域(scope)。在系统完整性被破坏的情况下,TPM安全引导可能无法启动,而是关闭系统。
在安全引导之后,运行时库205运行并创建TEE 201,TEE 201将运行时库205放置在与CPU 213相关联的可信存储空间中。接下来,在TEE 201中启动用户应用203。在一个实施例中,用户应用203和运行时库205被静态链接,并一起启动。在另一实施例中,首先在TEE中启动运行时库205,然后在TEE 201中动态加载用户应用203。在另一实施例中,首先在TEE中启动用户应用203,然后在TEE 201中动态加载运行时库205。注意,静态链接库是在编译时间链接到应用的库。动态加载可以由动态链接器执行。动态链接器加载并链接共享库,用于在运行时间运行用户应用。这里,TEE 201内的用户应用203和运行时库205在运行时是彼此可见的,例如,所有过程数据都是彼此可见的。然而,对TEE的外部访问被拒绝。
在另一实施例中,用户应用仅可从由运行时库205预先确定的内核的集合中调用内核。在另一实施例中,使用无侧信道算法(side channel free algorithm)对用户应用203和运行时库205进行加固,以防御诸如基于高速缓存的侧信道攻击之类的侧信道攻击。侧信道攻击是基于从计算机系统的实现中获得的信息的任何攻击,而不是基于所实现的算法本身中的弱点(例如,密码分析和软件错误)。侧信道攻击的示例包括高速缓存攻击,高速缓存攻击是基于攻击者对虚拟化环境或云环境中的共享物理系统的高速缓存进行监视的能力的攻击。加固可包括高速缓存的屏蔽、由算法生成的待放置在高速缓存上的输出。接着,当用户应用完成执行时,用户应用终止其执行并从TEE退出。
总之,系统200为DP加速器提供了多层保护(比如,诸如机器学习模型、训练数据和推断输出等数据的通信,),以防止丢失数据保密性和完整性。系统200可包括基于TPM的安全引导保护层、TEE保护层和内核验证/核实层。另外,系统200可以通过确保使用存储器安全编程语言实现主机机器上的其他应用来提供存储器安全用户空间,这可以通过消除潜在的存储器损坏/漏洞(memory corruptions/vulnerabilities)进一步消除攻击。另外,系统200可包括使用无侧信道算法的应用,以防御侧信道攻击,诸如基于高速缓存的侧信道攻击。
图3A是示出根据一个实施例的与数据处理加速器通信的主机的框图。系统300可以是用于图2的系统200的部分的详细视图。参考图3,在一个实施例中,主机系统104包括运行时库205,运行时库205包括主机信道管理器(HCM)259。在一个实施例中,HCM 259包括认证模块251、终止模块252、密钥管理器253、密钥存储254以及加密引擎255。认证模块251可对主机服务器104上运行的用户应用进行认证,以获得访问或使用DP加速器的资源的许可。终止模块252可以终止连接(例如,与该连接相关联的信道将被终止)。密钥管理器253可以对非对称密钥对或对称密钥进行管理(例如,创建或销毁),所述非对称密钥对或对称密钥用于对用于不同的安全数据交换信道的一个或多个数据分组进行加密/解密。这里,每个用户应用(作为图2的用户应用203的一部分)可以按照一对多的关系,对应于或映射到不同的安全数据交换信道,并且每个数据交换信道可以对应于DP加速器。密钥存储254可以存储加密非对称密钥对或对称密钥。加密引擎255可以对经由安全信道中的任一个交换的数据的数据分组进行加密或解密。
参考图3A,在一个实施例中,DP加速器105包括ACM 270(类似地,DP加速器107包括290)和安全单元(SU)275。安全单元275可包括密钥管理器271、密钥存储272、真随机数生成器273、以及加密引擎274。密钥管理器271可以管理(例如,生成、安全保持和/或销毁)非对称密钥对或对称密钥。密钥存储272可以存储加密非对称密钥对或对称密钥。真随机数生成器273可以生成用于加密的真随机数。加密引擎274可以对用于数据交换的密钥信息或数据分组进行加密或解密。安全单元275可包含一个或多个RSA密钥对(例如,公共和私有密钥对),称为签注密钥(EK)或签注凭证(EC),即根密钥。密钥对被维护在安全单元275内部,并且不能被软件访问。然后,安全单元可以使用EK或EC加密数据或生成其它安全密钥(这些安全密钥又进而可以用于加密数据)。基本上,为了加密目的,根证书(EK/EC)被加固到安全单元275上。在一些实施例中,ACM 270和SU 275是集成模块。
在一个实施例中,DP加速器(DPA)105包括操作系统模块282。操作系统模块282可包括操作系统。操作系统可以是嵌入式操作系统或实时操作系统。操作系统可以为DPA调度任务/命令和管理资源(计算单元、存储器)。在一个实施例中,操作系统模块282可以基于FPGA、ASIC和/或微控制器单元被实现为基于软件的模块或基于硬件的模块。
如前所述,参考图3A,运行时库205可以提供用于由用户应用执行的预先确定的(例如,预定义的)内核的集合。运行时库205可以将API调用转换为内核执行,并且将内核执行转换为用于由DPA执行的数据、配置和/或控制命令。然后,DPA可以接收命令(例如,数据、控制和配置命令),并且启动用于由DPA执行的命令。典型的任务/作业可能需要从主机104传送到DPA 105的数百个命令,在这种情况下,用于在通信信道215上传送命令的成本很高。
虽然主机104的运行时库205和驱动程序209包括加速器105的硬件资源的信息,然而,加速器105可包括实时操作系统,以提供内核集合、驱动程序、资源管理和/或任务调度器,以调度用于执行的任务,类似于由主机104的运行时库205执行的调度。在这种情况下,修改运行时库205和驱动程序209,并且将先前由运行时库205和驱动程序209执行的任务委托给DPA 105的操作系统模块282。例如,DPA 105的操作系统模块282可以将任务(诸如推断或训练任务)分解为许多子任务(例如,内核),并且进一步将子任务分解为待由DPA执行的原子命令(例如,数据、控制和配置命令)。因此,任务的复杂性从主机的运行时库中抽象出来,或者由主机104启动的命令的粒度处于高抽象级别。
图3B是示出根据一个实施例的操作系统模块的框图。操作系统模块282可包括接收器单元301、会话创建器303、任务调度器305、资源分配器307、内核执行器309、命令执行器311、发送器单元313和驱动程序315。这些组件代表操作系统的至少一部分,即加速器或访客OS,诸如通常具有适合集成电路(IC)器件的操作环境中的较小存储器占用的嵌入式或实时OS。接收器单元301可以从主机服务器接收数据。该数据可包括用于DPA的驱动程序文件、内核数据、AI模型数据等。
会话创建器303可以创建用于数据处理任务的会话上下文。会话上下文或上下文可以访问/读取/写入请求应用的用于会话的命令和任务的资源或数据。任务调度器305可以调度用于由DPA执行的一个或多个任务。任务调度器305可确定待执行用于完成任务的多个内核,并调度用于执行的多个内核。资源分配器307可以对DPA的计算资源和存储资源进行分配/解除分配,以执行多个内核。内核执行器309可以启动和执行内核。内核的示例可包括对数据对象进行预处理或将函数应用于数据对象的内核。
命令执行器311可以启动和执行数据、控制、内核和配置命令,以完成用于多个内核的执行。控制命令包括控制DPA的哪些硬件资源用于执行内核的命令。数据命令可包括操纵数据的命令,例如,将数据放置到特定的存储器位置上或对数据应用算术运算。配置命令可包括用于配置要在其中执行数据命令的上下文(或设置/环境)的命令。发送器单元313可向主机发送完成确认和/或执行结果。驱动程序315包括一个或多个驱动程序文件,用于使得操作系统模块282能够访问、使用和管理DPA 105的硬件资源。
图4是示出根据一个实施例的操作系统模块的示例操作的框图。参考图4,在一个实施例中,在操作S401中,用户应用经由主服务器104和DPA 105之间的通信,请求由DPA执行的资源和任务。可以由操作系统模块282响应于该请求来执行操作S402-S406。OS模块282可包括负责管理资源和执行数据处理任务(例如,AI建模或AI推断)的任务的诸如加速器或访客OS等典型OS的至少一部分。OS模块282被配置为确定执行主机请求的任务所需的处理资源(例如,处理内核、存储器),在适当的存储器位置中加载处理内核和待处理的数据,并且执行某些命令或指令以执行所请求的任务。
在一个实施例中,应用请求包括对高级任务/操作(例如,将要基于AI算法/模型应用于一些输入数据的训练或推断操作)的请求。在这种情况下,不是通过主机104的运行时库来确定和调度内核或单个原子命令以完成所请求的操作,而是主机104直接将该请求发送/转发到DPA 105以进行由DPA执行的高级操作。在一个实施例中,该请求包括经由如图6所示的高级命令格式发送到DPA的高级操作。
参考图6,在一个实施例中,命令格式可包括格式化字段,诸如命令的类型、AI算法/模型标识符(名称/版本)、输入参数和/或输出参数(输出参数是可选的)。在没有操作系统模块的情况下,主机通常经由如图5所示的低级命令格式请求子命令/粒度任务,以完成所请求的操作。例如,在没有加速器OS的情况下,主机OS必须维护已经由加速器分配了哪些资源、何处的资源以及多少资源的资源使用(例如,存储器使用)。
对于加速器OS,加速器OS负责加速器的大部分或全部资源管理。加速器OS负责分配处理资源(例如,内核的数量、为任务分配的存储量),包括内核应当被加载到存储器中的何处(例如,特定的存储器位置或存储器区域)、以及输入和输出数据应当被加载和存储到的数据区域,以及在处理数据时执行指令的定时等。这样,主机OS无需跟踪利用什么资源以及如何利用该处理资源等。主机OS需要做的仅是向加速器OS发送简单指令,并且加速器OS将接管并做它需要做的任何事情以完成所请求的任务,而不与主机OS交互或仅与主机OS进行最少交互。
参考图5,在一个实施例中,命令格式可包括格式化字段,诸如命令的类型(例如,数据、控制或配置)、命令/内核名称/标识符、输入参数和/或输出参数(输出参数是可选的)。
在操作S402中,DPA 105的操作系统模块282接收请求并解析请求以确定操作类型、输入数据以及待执行的一个或多个算法/模型。在接收到请求时,在操作S403中,模块282创建会话(作为会话411的部分)以提供用于执行所请求的操作的上下文/环境。在一个实施例中,会话通过与请求应用相关联的会话标识符来标识。在一个实施例中,会话可以创建沙盒环境以将会话执行与其他会话隔离。在一个实施例中,所创建的会话可以是虚拟环境的虚拟会话,以虚拟化DPA的一个或多个数据处理资源。
在操作S404中,模块282分配资源413以执行请求的操作。资源的示例包括与DPA相关联的处理/计算单元和存储器。模块282可以确定可用资源的部分作为总的可用资源的部分。在一个实施例中,模块282可以基于所确定的可用资源以及完成所请求操作所需的资源,来分配资源。
在操作S405中,模块282可以调度待执行的多个内核/原子命令(作为数据处理任务415的部分),以完成所请求的操作。在一个实施例中,模块282基于处理任务415,确定并实例化一个或多个内核执行器。内核执行器指定待由DPA 105执行的一个或多个命令。在一个实施例中,模块282确定和调度用于待由DPA 105执行的内核执行器中的每一个的一个或多个命令。
在操作S406中,模块282获得指示由用户应用请求的操作已完成的完成确认。在操作S407中,模块282经由主机104向请求用户应用发送完成确认和任何数据处理结果。
图7是示出根据一个实施例的由DP加速器执行的方法的流程图。过程700可以通过可包括软件、硬件或其组合的处理逻辑来执行。例如,过程700可由诸如图3A的DP加速器105等DP加速器执行。参考图7,在框701处,处理逻辑接收数据处理加速器的请求,该请求由应用发送以执行数据处理任务。在框702处,处理逻辑通过数据处理加速器的操作系统模块基于一个或多个内核来调度用于完成数据处理任务的一个或多个命令。在框703处,在完成一个或多个经调度命令时,处理逻辑通过数据处理加速器的操作系统模块生成完成信号。在框704处,处理逻辑基于完成信号将结果发送回应用,以确认用于数据处理任务的一个或多个经调度命令的完成。
在一个实施例中,处理逻辑进一步创建用于数据处理任务的应用会话上下文,其中该应用会话上下文与数据处理加速器的其它数据处理任务的应用会话的上下文隔离。在另一实施例中,该隔离将用于数据处理任务的资源与用于数据处理加速器的其他数据处理任务的资源隔离。在一个实施例中,处理逻辑进一步通过数据处理加速器的操作系统模块分配用于数据处理任务的资源,其中所述资源包括计算资源和存储资源。
在一个实施例中,请求由应用通过主机发送,其中主机将一个或多个数据处理任务分配给一个或多个数据处理加速器。在另一实施例中,主机被解除对完成数据处理任务所需的一个或多个命令的调度和管理。在一个实施例中,处理逻辑进一步从主机接收一个或多个内核,该一个或多个内核包括用于执行用于完成数据处理任务的一个或多个命令的指令。
注意,如上所示和所述的一些或所有组件可以用软件、硬件或其组合实现。例如,这些组件可以被实现为安装并存储在永久存储设备中的软件,软件可以由处理器(未示出)加载并执行在存储器中以执行贯穿本申请所述的过程或操作。可替换地,这些组件可被实现为编程或嵌入到专用硬件中的可执行代码,专用硬件诸如集成电路(例如,专用IC或ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA),可执行代码可经由对应的驱动程序和/或来自应用的操作系统访问。此外,这些组件可以被实现为处理器或处理器内核中的特定硬件逻辑,作为软件组件经由一个或多个特定指令可访问的指令集的一部分。
已经在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了前述详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用来最有效地将他们的工作实质传达给本领域的其他技术人员的方式。算法在这里并且通常被认为是导致期望结果的自相容操作序列。这些操作是需要对物理量进行物理操纵的那些操作。
然而,应当记住的是,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便的标记。除非特别声明,否则从以上讨论中显而易见的是,应当理解的是,在整个说明书中,使用诸如所附权利要求书中所阐述的术语的讨论指的是计算机系统或类似电子计算设备的动作和处理,所述计算机系统或类似电子计算设备将计算机系统的寄存器和存储器内表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其它这样的信息存储、传输或显示设备内的类似地表示为物理量的其它数据。
图中所示的技术可以使用在一个或多个电子设备上存储和执行的代码和数据实现。这样的电子设备使用计算机可读介质(诸如非暂时性计算机可读存储介质(例如,磁盘、光盘、随机存取存储器、只读存储器、闪存设备、相变存储器))和暂时性计算机可读传输介质(例如,电、光、声或其他形式的传播信号-诸如载波、红外信号、数字信号)存储和通信(内部地和/或通过网络与其他电子设备通信)代码和数据。
在前述附图中描绘的过程或方法可以由处理逻辑执行,处理逻辑包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,体现在非暂时性计算机可读介质上)或两者的组合。尽管以上根据一些顺序操作描述了过程或方法,但是应当理解的是,可以以不同的顺序执行所述的一些操作。此外,一些操作可以并行地而不是顺序地执行。
在前述说明书中,已经参考本公开的具体示例性实施例描述了本公开的实施例。显然,在不背离如所附权利要求书中所阐述的本公开的更宽的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。
Claims (15)
1.一种用于由数据处理加速器处理数据的方法,所述方法包括:
由数据处理加速器从主机接收请求,所述主机具有对请求执行数据处理任务的应用进行托管的第一操作系统;
由所述数据处理加速器的操作系统模块基于一个或多个内核调度用于完成所述数据处理任务的一个或多个命令,其中所述操作系统模块对所述数据处理加速器内的第二操作系统进行托管,以调用所述一个或多个内核执行所述数据处理任务;
在完成所述一个或多个经调度命令时,由所述数据处理加速器的所述操作系统模块生成完成信号;以及
将结果发送回所述应用,以基于所述完成信号确认用于所述数据处理任务的所述一个或多个经调度命令的完成。
2.如权利要求1所述的方法,还包括创建用于所述数据处理任务的应用会话上下文,其中所述应用会话上下文与所述数据处理加速器的其他数据处理任务的应用会话上下文隔离。
3.如权利要求2所述的方法,其中所述隔离是将用于所述数据处理任务的资源与用于所述数据处理加速器的所述其他数据处理任务的资源隔离。
4.如权利要求1所述的方法,还包括由所述数据处理加速器的所述操作系统模块分配用于所述数据处理任务的资源,其中所述资源包括计算资源和存储资源。
5.如权利要求1所述的方法,其中所述请求由所述应用经由所述主机发送,其中所述主机将一个或多个数据处理任务分配给一个或多个数据处理加速器。
6.如权利要求5所述的方法,其中所述主机被解除对完成数据处理任务所需的所述一个或多个命令的调度和管理。
7.如权利要求1所述的方法,还包括从所述主机接收所述一或多个内核,所述一或多个内核包括用于执行用于完成数据处理任务的一或多个命令的指令。
8.一种数据处理(DP)加速器,包括:
主机接口,耦接到主机,所述主机执行在其中对应用进行托管的第一操作系统,其中所述主机接口接收来自所述主机的、并且由所述应用发起的请求执行数据处理任务的请求;
一个或多个内核;以及
操作系统模块,具有在其中执行的第二操作系统,所述操作系统模块被配置为执行操作,所述操作包括
基于所述一个或多个内核调度用于执行所述数据处理任务的一个或多个命令;
在完成所述一个或多个经调度命令时,生成完成信号,以及
经由所述主机接口将结果发送回所述应用,以基于所述完成信号确认用于所述数据处理任务的所述一个或多个经调度命令的完成。
9.如权利要求8所述的DP加速器,其中所述操作系统模块还用于创建用于所述数据处理任务的应用会话上下文,其中所述应用会话上下文与所述数据处理加速器的其他数据处理任务的应用会话上下文隔离。
10.如权利要求9所述的DP加速器,其中所述隔离将用于所述数据处理任务的资源与用于所述数据处理加速器的所述其他数据处理任务的资源隔离。
11.如权利要求8所述的DP加速器,其中所述操作系统模块还用于分配用于所述数据处理任务的资源,其中所述资源包括计算资源和存储资源。
12.如权利要求8所述的DP加速器,其中所述请求由所述应用经由所述主机发送,其中所述主机将一个或多个数据处理任务分配给一个或多个数据处理加速器。
13.如权利要求12所述的DP加速器,其中所述主机被解除对完成数据处理任务所需的所述一个或多个命令的调度和管理。
14.如权利要求8所述的DP加速器,其中所述操作系统模块还用于从所述主机接收所述一或多个内核,所述一或多个内核包括用于执行用于完成数据处理任务的一或多个命令的指令。
15.一种非暂时性机器可读介质,具有存储在其中的指令,所述指令在由处理器执行时使得所述处理器执行如权利要求1-7中任一项所述的用于由数据处理加速器处理数据的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/709,468 | 2019-12-10 | ||
US16/709,468 US11210136B2 (en) | 2019-12-10 | 2019-12-10 | Systems and methods for an operating system module for a data processing accelerator |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112948070A true CN112948070A (zh) | 2021-06-11 |
Family
ID=76208973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011455568.4A Pending CN112948070A (zh) | 2019-12-10 | 2020-12-10 | 用于由数据处理加速器处理数据的方法及数据处理加速器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11210136B2 (zh) |
CN (1) | CN112948070A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821323A (zh) * | 2021-09-16 | 2021-12-21 | 中山大学 | 一种面向混合部署数据中心场景的离线作业任务调度算法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692171B (zh) * | 2022-05-27 | 2022-10-14 | 睿思芯科(深圳)技术有限公司 | 基于risc-v的tee构建方法、系统及相关设备 |
US11775669B1 (en) * | 2022-06-13 | 2023-10-03 | Snowflake Inc. | Secure shared data application access |
US12010147B2 (en) | 2022-06-13 | 2024-06-11 | Snowflake Inc. | Data platform with unified privileges |
EP4391496A1 (en) * | 2022-12-23 | 2024-06-26 | INTEL Corporation | Networking control engine embedded in a platform |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140007098A1 (en) * | 2011-12-28 | 2014-01-02 | Paul M. Stillwell, Jr. | Processor accelerator interface virtualization |
US20150293774A1 (en) * | 2014-04-09 | 2015-10-15 | Arm Limited | Data processing systems |
US20170060637A1 (en) * | 2015-08-26 | 2017-03-02 | Arm Limited | Data processing systems |
CN109460369A (zh) * | 2017-09-06 | 2019-03-12 | 忆锐公司 | 基于闪存的加速器及包括该加速器的计算设备 |
CN110032453A (zh) * | 2019-04-19 | 2019-07-19 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
CN110058987A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于对计算系统进行追踪的方法、设备和计算机可读介质 |
US20190306269A1 (en) * | 2018-04-03 | 2019-10-03 | International Business Machines Corporation | Optimized network traffic patterns for co-located heterogeneous network attached accelerators |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US642945A (en) | 1899-06-29 | 1900-02-06 | Ellery C Wright | Last. |
US7099912B2 (en) * | 2001-04-24 | 2006-08-29 | Hitachi, Ltd. | Integrated service management system |
US8423763B2 (en) | 2002-03-20 | 2013-04-16 | Research In Motion Limited | System and method for supporting multiple certificate status providers on a mobile communication device |
US7206807B2 (en) * | 2003-01-21 | 2007-04-17 | Bea Systems, Inc. | Asynchronous invoking a remote web service on a server by a client who passes on a received invoke request from application code residing on the client |
US9166964B2 (en) | 2014-01-08 | 2015-10-20 | Google Inc. | Secure challenge system for verifying access rights to media content |
EP3491801B1 (en) | 2016-07-28 | 2021-01-13 | Koninklijke Philips N.V. | Identifying a network node to which data will be replicated |
US10659468B2 (en) | 2017-05-24 | 2020-05-19 | Micro Focus Llc | Access control values |
US20200389322A1 (en) | 2017-12-07 | 2020-12-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Security for group communication |
CN113411755B (zh) | 2017-12-28 | 2022-10-04 | 华为技术有限公司 | 一种通信方法、及相关产品 |
US10813001B1 (en) | 2018-06-19 | 2020-10-20 | Synapse Wireless, Inc. | Multicast messaging based on distance estimation of network devices |
-
2019
- 2019-12-10 US US16/709,468 patent/US11210136B2/en active Active
-
2020
- 2020-12-10 CN CN202011455568.4A patent/CN112948070A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140007098A1 (en) * | 2011-12-28 | 2014-01-02 | Paul M. Stillwell, Jr. | Processor accelerator interface virtualization |
US20150293774A1 (en) * | 2014-04-09 | 2015-10-15 | Arm Limited | Data processing systems |
US20170060637A1 (en) * | 2015-08-26 | 2017-03-02 | Arm Limited | Data processing systems |
CN109460369A (zh) * | 2017-09-06 | 2019-03-12 | 忆锐公司 | 基于闪存的加速器及包括该加速器的计算设备 |
CN110058987A (zh) * | 2018-01-18 | 2019-07-26 | 伊姆西Ip控股有限责任公司 | 用于对计算系统进行追踪的方法、设备和计算机可读介质 |
US20190306269A1 (en) * | 2018-04-03 | 2019-10-03 | International Business Machines Corporation | Optimized network traffic patterns for co-located heterogeneous network attached accelerators |
CN110032453A (zh) * | 2019-04-19 | 2019-07-19 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理系统及其加速方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113821323A (zh) * | 2021-09-16 | 2021-12-21 | 中山大学 | 一种面向混合部署数据中心场景的离线作业任务调度算法 |
CN113821323B (zh) * | 2021-09-16 | 2023-09-19 | 中山大学 | 一种面向混合部署数据中心场景的离线作业任务调度算法 |
Also Published As
Publication number | Publication date |
---|---|
US11210136B2 (en) | 2021-12-28 |
US20210173701A1 (en) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7196132B2 (ja) | データプロセッシング(dp)アクセラレータのための難読化を用いたデータ伝送 | |
CN107851167B (zh) | 在计算环境中保护计算数据的技术 | |
CN112948070A (zh) | 用于由数据处理加速器处理数据的方法及数据处理加速器 | |
JP7331080B2 (ja) | 仮想化環境でのチェックポイント認証による仮想マシン移行の方法 | |
EP3923535B1 (en) | Method for data protection in a data processing cluster with policy-based partition | |
CN112948139A (zh) | 使用交换机向加速器安全地广播消息的系统和方法 | |
US20230297406A1 (en) | Confidential computing using multi-instancing of parallel processors | |
WO2023041025A1 (zh) | 基于云技术的计算节点及基于云技术的实例管理方法 | |
EP4002114B1 (en) | Method for virtual machine migration with artificial intelligence accelerator status validation in virtualization environment | |
EP3920501B1 (en) | Data protection with static resource partition for data processing accelerators | |
JP2021043432A (ja) | データプロセッシング(dp)アクセラレータのための難読化ユニットにより難読化を行うデータ伝送 | |
US11687629B2 (en) | Method for data protection in a data processing cluster with authentication | |
US11847501B2 (en) | Method for data protection in a data processing cluster with partition | |
US11687376B2 (en) | Method for data protection in a data processing cluster with dynamic partition | |
US12032980B2 (en) | Data protection with dynamic resource isolation for data processing accelerators | |
WO2023041037A1 (zh) | 基于云技术的计算节点及基于云技术的实例管理方法 | |
CN112838924B (zh) | 虚拟信道中加速器之间的密钥共享方法 | |
US20230297696A1 (en) | Confidential computing using parallel processors with code and data protection | |
US20210382737A1 (en) | Data protection with dynamic resource isolation for data processing accelerators | |
US20240220639A1 (en) | Secure data offload in a disaggregated and heterogenous orchestration environment |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211011 Address after: 1195 Bordeaux Road, California, USA Applicant after: Baidu (USA) Co.,Ltd. Applicant after: Kunlun core (Beijing) Technology Co.,Ltd. Address before: 1195 Bordeaux Road, Sunnyvale, California Applicant before: Baidu (USA) Co.,Ltd. |