CN110609753B - 用于优化远程调用的方法、设备和计算机程序产品 - Google Patents
用于优化远程调用的方法、设备和计算机程序产品 Download PDFInfo
- Publication number
- CN110609753B CN110609753B CN201810621141.3A CN201810621141A CN110609753B CN 110609753 B CN110609753 B CN 110609753B CN 201810621141 A CN201810621141 A CN 201810621141A CN 110609753 B CN110609753 B CN 110609753B
- Authority
- CN
- China
- Prior art keywords
- command
- type
- optimization condition
- response
- remote
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000004590 computer program Methods 0.000 title abstract description 14
- 238000005457 optimization Methods 0.000 claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000013528 artificial neural network Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 5
- 230000006378 damage Effects 0.000 claims 4
- 238000003860 storage Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 238000007796 conventional method Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
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/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
Abstract
本公开的实施例涉及一种用于优化远程调用的方法、设备和计算机程序产品。该方法包括获得用于调用远程专用处理资源的命令,并且基于命令的类型来确定命令是否满足优化条件。该方法还包括响应于命令满足优化条件而停止向远程专用处理资源发送命令。根据本公开的实施例,在需要调用远程专用处理资源的情况下,通过对远程调用命令进行优化,能够减少向远程专用处理资源发送的远程调用命令的数目,从而有效提高执行效率。
Description
技术领域
本公开的实施例总体上涉及计算机领域,并且更具体地涉及用于优化远程调用的方法、设备以及计算机程序产品。
背景技术
专用处理资源是指一些具有专门用途的处理资源,例如图形处理单元(GPU)。GPU是一种专用于图形或图像的核心处理器,其主要负责的任务是加速图形处理速度。GPU由于其高性能优势(诸如多核且适于矩阵运算),因而广泛用作许多应用的加速器,诸如机器学习应用和深度学习应用。
通常,GPU的价格昂贵,如果用户仅使用本地的GPU资源,则需要较高的成本。因此,可以提供远程GPU资源来降低对于GPU的使用成本,实现GPU即服务(GPUaas)。本地的用户应用对于远程GPU的函数调用将被客户端库截获并且被发送到服务器侧。服务器将调用其GPU硬件上的GPU函数并且将结果发送回客户端。通过使用远程GPU资源,可以降低成本并且提高资源利用率。
发明内容
本公开的实施例提供了一种用于优化远程调用的方法、设备和计算机程序产品。
在本公开的一个方面,提供了一种用于优化远程调用的方法。该方法包括:获得用于调用远程专用处理资源的命令;基于命令的类型,确定命令是否满足优化条件;以及响应于命令满足优化条件,停止向远程专用处理资源发送命令。
在本公开的另一方面,提供了一种用于优化远程调用的设备。该设备包括处理单元以及存储器,其中存储器被耦合至处理单元并且存储有指令。所述指令在由处理单元执行时执行以下动作:获得用于调用远程专用处理资源的命令;基于命令的类型,确定命令是否满足优化条件;以及响应于命令满足优化条件,停止向远程专用处理资源发送命令。
在本公开的又一方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括计算机可执行指令,所述计算机可执行指令在被执行时使得计算机执行根据本公开的实施例的方法或过程。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。本发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的各个实施例的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中在本公开示例性实施例中,相同的附图标记通常代表相同的元素。
图1示出了调用本地专用处理资源的传统环境的示意图;
图2示出了根据本公开的实施例的调用远程专用处理资源的示例环境的示意图;
图3示出了根据本公开的实施例的用于优化远程调用的方法的流程图;
图4A示出了根据本公开的实施例的用于优化第一类型命令的方法的流程图;
图4B示出了根据本公开的实施例的用于优化第二类型命令的方法的流程图;
图4C示出了根据本公开的实施例的用于优化第四类型命令的方法的流程图;
图5A-5J示出了根据本公开的实施例的用于优化远程调用的示例实现的示意图;以及
图6示出了可以用来实施本公开的实施例的设备的示意性块图。
具体实施例
下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的一些具体实施例,然而应该理解,可以以各种形式实现本公开,而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象,除非明确指示不同。
专用计算资源(例如GPU)由于其高性能优势(例如多核且适于矩阵运算),因而广泛用于许多应用的加速器,诸如机器学习应用和深度神经网络(DNN)学习应用。传统的方法可以在本地设置GPU硬件资源,图1示出了调用本地专用处理资源的传统环境的示意图。如图1所示,在客户端100的内部设置有存储器110和GPU 120,当需要使用GPU进行计算时,如箭头113所示,可以将数据从存储器110发送到GPU 120。接下来,在GPU 120上运行内核函数以实现所需的计算。在完成计算之后,可以再将计算结果从GPU 120发送回存储器110,如箭头116所示。
通常,GPU的价格相对昂贵,如果用户仅使用本地的GPU资源,则需要较高的成本。因此,一种改进方法是可以提供远程GPU资源来降低对于GPU的使用成本。然而,使用远程GPU资源需要使用远程调用命令,诸如远程过程调用(RPC),而过多的RPC会导致很大的网络开销和计算开销。因此,这种改进方法需要发送较多的RPC,从而导致较低的执行效率。
为此,本公开的实施例提出了一种用于优化远程调用的新方案。根据本公开的实施例,在需要调用远程专用处理资源的情况下,通过对远程调用命令进行优化,能够减少向远程专用处理资源发送的远程调用命令的数目。此外,本公开的实施例使用写时拷贝(COW)思想来对神经网络层配置进行优化,有效地提高执行效率。COW思想的核心主要在于:如果新的配置在历史记录中存在,则可以重用旧的配置;如果旧的配置需要重用,则旧的配置在被覆盖或被移除之前需要被拷贝。在具有有限数目的配置的神经网络模型中,本公开的实施例能够大幅度地降低远程调用命令的数目。
以下参考图2至图6来说明本公开的基本原理和若干示例实现方式。应当理解,给出这些示例性实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开的实施例,而并非以任何方式限制本公开的范围。
图2示出了根据本公开的实施例的调用远程专用处理资源的示例环境200的示意图。如图2所示,环境200包括客户端210、220、230、240以及服务器260,这些设备通过网络250互相连接,网络250可以为有线网络和/或无线网络。每个客户端包括本地的存储器,例如客户端210包括存储器215,客户端220包括存储器225,客户端230包括存储器235,客户端240包括存储器245,但是这些客户端可以不包括本地的专用计算资源,例如GPU。应当理解,这些客户端也可以包括本地的GPU,也就是说,备选地,这些客户端既可以调用本地的GPU,也可以调用远程GPU。服务器260包括存储器265和GPU268,服务器260中的GPU 268可以为客户端210、220、230、240提供远程处理能力。应当理解,图1中的客户端和服务器还可以包括其他未示出的部件或模块。
环境200所涉及的客户端-服务器架构(例如GPUaas引擎)通常可以被划分成两个部分:客户端侧库以及服务器侧守护进程,当客户端侧应用需要调用远程GPU资源时,在客户端与服务器之间建立信道,该信道用于传送GPU命令列表,每个命令可以表示GPU函数。
继续参考图2,如箭头226所示,当客户端220需要使用远程GPU资源时,其可以将数据发送到服务器260,然后由服务器260中的GPU 268执行专用计算,并且将计算结果发送回客户端220,如箭头228所示。应当理解,虽然本公开的实施例使用GPU作为专用计算资源的一个示例,但是专用计算资源也可以为其他专用的计算资源。根据本公开的实施例,通过对客户端220需要发送给服务器260的远程调用命令(如RPC)进行优化,能够减少从客户端220发送到服务器260的远程调用命令的数目,由此有效提高执行效率。
图3示出了根据本公开的实施例的用于优化远程调用的方法300的流程图。应当理解,方法300可以由以上参考图2所描述的客户端210、220、230或240来执行。
在302,获得用于调用远程专用处理资源的命令。例如,客户端220截获需要调用服务器260中的GPU 268的命令。也就是说,在客户端220向服务器260发送远程调用命令之前,可以对命令进行分析和优化。在一些实施例中,远程调用命令可以为用于创建对象的第一类型命令(例如cudnnCreate***Decriptor)、用于设置配置的第二类型命令(例如cudnnSet***Decriptor)、用于执行前向或反向计算的第三类型命令(例如cudnnPerformLayer***)、以及用于销毁对象的第四类型命令(例如cudnnDestory***Decriptor)。应当理解,虽然本公开的实施例使用以上四种命令作为示例描述,然而,本公开的实施例不限于这四种命令,也就是说,可以包括更多或更少类型的远程调用命令。
在一些实施例中,远程调用命令为远程过程调用(RPC)命令并且从深度神经网络(DNN)库获得。也就是说,远程调用命令可以是来自DNN库的应用程序接口(API)中的一些命令。然而,应当理解,远程调用命令也可以为符合客户端220与服务器260之间的某些协议的其他命令。
在304,基于命令的类型,确定命令是否满足优化条件。例如,客户端220可以针对不同类似的命令,分别分析其是否满足优化条件。在一些实施例中,对于用于执行前向或反向计算的第三类型命令,由于其是执行专用计算的核心命令,其不需要被优化,则认为其不满足优化条件。在一些实施例中,对于用于销毁对象的第四类型命令,由于本公开的实施例不需要释放配置资源,因而其全部被优化,即认为其满足优化条件。以下参考图4A-4C描述了用于优化不同类型的命令的示例实现。
在306,响应于所述命令满足优化条件,停止向远程专用处理资源发送命令。例如,如果客户端220确定某个命令满足优化条件,则可以不向服务器260发送这个命令。相反,如果客户端220确定某个命令不满足优化条件,则可以向服务器260发送这个命令,以由服务器260中的GPU 268进行计算。本公开的实施例通过对远程命令的优化,使得一些远程调用命令不需要发给远程专用计算资源,由此减少了远程调用命令的数目,提高了整个计算系统的执行效率。
例如,可以设置一些集合来确定各种命令是否满足优化条件。在一些实施例中,可以设置未分配集合(例如NOT_ALLOCATED)、未配置集合(例如ALLOCATED_PRE_CONFIG)以及已配置集合(例如ALLOCATED_POST_CONFIG),其中为分配集合包括全新的未被创建的对象,未配置集合包括已被创建但是尚未配置的对象,已配置集合包括已被创建并且已被配置的对象以及相关联的配置信息。以下参考图5A-5J示出了未分配集合、未配置集合以及已配置集合的示例实现,并且参考图4A-4C描述了基于这些集合如何优化各种命令的示例实现。
图4A示出了根据本公开的实施例的用于优化第一类型命令的方法400的流程图。应当理解,方法400可以由以上参考图2所描述的客户端210、220、230或240来执行,并且方法400可以为以上参考图3所描述的方法300中的动作304-306的示例实现。
在402,确定远程调用命令为用于创建对象的第一类型命令。在404,判断未配置集合是否为空。如果未配置集合为空,则说明没有已创建的对象可以复用(即不满足优化条件),在406,需要向服务器发送第一类型命令,以便创建一个新的对象,并且在408,将新创建的对象放到未配置集合中。如果未配置集合不为空,则说明可以复用未配置集合中的已创建的对象(即满足优化条件),则在410,从未配置集合取回或弹出一个对象以进行复用。
图4B示出了根据本公开的实施例的用于优化第二类型命令的方法430的流程图。应当理解,方法430可以由以上参考图2所描述的客户端210、220、230或240来执行,并且方法430可以为以上参考图3所描述的方法300中的动作304-306的示例实现。
在432,确定远程调用命令为用于设置配置的第二类型命令。在434,判断已配置集合中是否存在将要设置的配置。如果已配置集合中存在将要设置的配置,则说明存在已经设置过的配置可以复用(即满足优化条件),在436,将对象指向已配置集合中具有相同配置的对象,并且在438,返回其自身的对象。如果已配置集合中不存在将要设置的配置,则说明没有已经设置的配置可以复用(即不满足优化条件),则在440,向服务器发送第二类型命令,以在服务器处设置新的配置。此外,当需要修改旧的配置时,可以将旧的配置先进行保留,然后再执行修改。
图4C示出了根据本公开的实施例的用于优化第四类型命令的方法460的流程图。应当理解,方法460可以由以上参考图2所描述的客户端210、220、230或240来执行,并且方法460可以为以上参考图3所描述的方法300中的动作304-306的示例实现。
在462,确定命令为用于销毁对象的第四类型命令,第四类型命令涉及销毁对象,不需要发送到服务器,因而全部满足优化条件。在464,判断对象是否已被配置。如果对象尚未配置,则在466将对象放置到未配置集合中。如果对象已被配置,则在468将对象保持在已配置集合中,并且无需执行任何动作。
在一些实施例中,在已配置集合中内容较多的情况下,可以执行高速缓存优化。例如,如果已配置集合的长度超过预定阈值,可以移除未被任何对象使用的配置。在一些实施例中,可以使用计数器来管理配置是否被共享,以便维护多少神经网络描述符共享某个配置。如果配置被一个或多个神经网络描述符共享,则计数器可以存储共享的次数;而如果计数器为零,则说明该配置不被当前任何神经网络描述符共享,因而其在超过缓存上限的情况下可以被移除,以便释放缓缓存资源。
图5A-5J示出了根据本公开的实施例的用于优化远程调用的示例实现的示意图。图5A示出了用于神经网络的示例环境500,其包括全连接(FC)层510、520、530以及540,其中全连接层510和520涉及编码器部分,全连接层530和540涉及解码器部分。在环境500的示例中,全连接层510和540涉及相同的配置,其由例如784个向量组成,而全连接层520和530涉及相同的配置,其由例如10个向量组成。
图5B示出了初始阶段的集合配置,其中未分配集合560中包括初始未分配的对象,未配置集合570和已配置集合580初始分别为空。RPC集合550表示中的需要执行的命令集,而表590用于记录根据本公开的实施例的优化后的需要发送的真实RPC数目,其在初始状态为0。应当理解,虽然图5B中使用CUDNN作为用于训练加速的深度学习应用的示例库,但是其他的神经网络库也是可能的。CUDNN的API通常可以由神经网络描述符序列管理的神经网络层执行来表示,神经网络描述符是用于设置神经网络层的前向/反向的配置等的一种对象,每个描述符可以管理不同种类的神经网络资源,但是可以共享类似的编程接口。通常,神经网络描述符本地执行的开销较小,而在GPUaas环境中,由于存在额外的RPC通信和计算开销,其将极大地影响执行性能。
图5C示出了在全连接层510执行RPC集合550中的第一类型命令的示例,如箭头591所示,正在全连接层510进行前向计算,如箭头592所示,正在执行的命令为用于创建对象的第一类型命令。由于未配置集合570中为空,因而需要执行真实的RPC,并且在未配置集合570创建一个对象,例如对象A。
图5D示出了在全连接层510执行RPC集合550中的第二类型命令的示例。由于已配置集合580为空,其不存在与第二类型命令将要设置的配置(例如配置784)相同的配置,因而需要执行真实的RPC,并且在已配置集合580设置对象A及其对应的配置784,同时移除未配置集合570中的对象A。
图5E示出了在全连接层510执行RPC集合550中的第三类型命令的示例。由于第三类型命令是执行前向计算的核心命令,其不需要被优化,则认为其不满足优化条件。因此,需要执行真实的RPC,并且集合560、570以及580未发生变化。
图5F示出了在全连接层510执行RPC集合550中的第四类型命令的示例。对于用于销毁对象的第四类型命令,由于本公开的实施例不需要释放配置资源,因而其全部被优化,即认为其满足优化条件。因此,不需要执行真实的RPC,表590中真实RPC数保持不变,并且集合560、570以及580未发生变化。例如,如表590所示,当前已经执行的真实PRC数为3,比传统方法的4个RPC减少1个。
图5G示出了在全连接层520执行RPC集合555中的四种类型命令的示例。如箭头591所示,此时正在全连接层520进行前向计算。如箭头593所示,针对第一类型命令,由于未配置集合570中不存在对象,因而需要执行真实的RPC并且在未配置集合中创建对象B。如箭头594所示,针对第二类型命令,由于已配置集合580中不存在配置10,因而需要执行真实的RPC并且在已配置集合580中设置新的配置10,同时移除未配置集合570中的对象B。如箭头595和596所示,第三类型命令始终需要被真实执行,并且第四类型命令始终可以被优化而不需要真实执行。例如,如表590所示,当前已经执行的真实PRC数为6,比传统方法的8个RPC减少2个。
图5H示出了在全连接层530执行RPC集合555中的四种类型命令的示例。如箭头591所示,此时正在全连接层530进行前向计算。如箭头593所示,针对第一类型命令,由于未配置集合570中不存在对象,因而需要执行真实的RPC并且在未配置集合中创建对象C。如箭头594所示,针对第二类型命令,由于已配置集合580中已经存在相同的配置10,因而不需要执行真实的RPC,而仅需将对象C指向对象B并且返回对象C。如箭头595和596所示,第三类型命令始终需要被真实执行,并且第四类型命令始终可以被优化而不需要真实执行。例如,如表590所示,当前已经执行的真实PRC数目为8,比传统方法的12个RPC减少4个。
图5I示出了在全连接层540执行RPC集合550中的四种类型命令的示例。如箭头591所示,此时正在全连接层540进行前向计算。如箭头593所示,针对第一类型命令,由于未配置集合570中存在对象C,因而只需复用对象C,而不需要执行真实的RPC。如箭头594所示,针对第二类型命令,由于已配置集合580中已经存在相同的配置784,因而不需要执行真实的RPC,而仅需将对象C指向对象A并且返回对象C。如箭头595和596所示,第三类型命令始终需要被真实执行,并且第四类型命令始终可以被优化而不需要真实执行。例如,如表590所示,当前已经执行的真实PRC数目为9,比传统方法的16个RPC减少7个。
图5J示出了在全连接层540执行RPC集合558中的四种类型命令的示例。如箭头591所示,此时正在全连接层540执行反向计算。如箭头593所示,针对第一类型命令,由于未配置集合570中存在对象C,因而只需复用对象C,而不需要执行真实的RPC。如箭头594所示,针对第二类型命令,由于已配置集合580中已经存在相同的配置784,因而不需要执行真实的RPC,而仅需将对象C指向对象A并且返回对象C。如箭头595和596所示,第三类型命令始终需要被真实执行,并且第四类型命令始终可以被优化而不需要真实执行。例如,如表590所示,当前已经执行的真实PRC数目为10,比传统方法的20个RPC减少10个。
接下来,在全连接层530、520以及510分别执行反向计算时,由于存在可以复用的对象C和可以复用的配置784或10,因而四种类型的命令仅需要执行一种,即用于执行计算的第三类型命令。因此,在后续的其他轮迭代计算过程中,四分之三的命令将由于被而优化而不需要被发送到服务器以由GPU执行。因此,在多轮多次迭代(数百次、数千字甚至更多)之后,本公开的实施例能够减少大量的远程调用命令,在图5A-5J的示例中,可以减少例如约75%的远程调用命令,由此有效地提高了执行效率。
图6示出了可以用来实施本公开的实施例的设备600的示意性块图,设备600可以为以上参考图2说明书的客户端210、220、230或240。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个方法或过程可由处理单元601执行。例如,在一些实施例中,方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由CPU 601执行时,可以执行上文描述的方法或过程中的一个或多个步骤或动作。
在一些实施例中,以上所描述的方法和过程可以被实现为计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,以及常规的过程式编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或块图中的一个或多个方块中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或块图中的一个或多个方块中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或块图中的一个或多个方块中规定的功能/动作。
附图中的流程图和块图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或块图中的每个方块可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方块中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方块实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,块图和/或流程图中的每个方块、以及块图和/或流程图中的方块的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (17)
1.一种用于优化远程调用的方法,包括:
获得用于调用远程专用处理资源的命令;
基于所述命令的类型,确定所述命令是否满足优化条件;以及
响应于所述命令满足所述优化条件,停止向所述远程专用处理资源发送所述命令,
其中确定所述命令是否满足优化条件包括:
基于未配置集合和已配置集合,确定所述命令是否满足所述优化条件,所述未配置集合包括已被创建并且尚未配置的对象,并且所述已配置集合包括已被创建并且已被配置的另一对象以及相关联的配置信息。
2.根据权利要求1所述的方法,还包括:
响应于所述命令未满足所述优化条件,向所述远程专用处理资源发送所述命令。
3.根据权利要求1所述的方法,其中获得用于调用所述远程专用处理资源的命令包括:
确定所述命令的所述类型,所述类型是以下中的至少一项:用于对象创建的第一类型、用于设置配置的第二类型、用于执行前向或反向计算的第三类型、以及用于对象销毁的第四类型。
4.根据权利要求1所述的方法,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于对象创建的第一类型命令:
响应于所述未配置集合为空,确定所述命令未满足所述优化条件;以及
响应于所述未配置集合不为空,确定所述命令满足所述优化条件。
5.根据权利要求1所述的方法,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于设置配置的第二类型命令:
响应于所述已配置集合中存在所述命令将要设置的配置,确定所述命令满足所述优化条件;以及
响应于所述已配置集合中不存在所述命令将要设置的配置,确定所述命令未满足所述优化条件。
6.根据权利要求5所述的方法,还包括:
响应于所述已配置集合的长度超过预定阈值,移除未被任何对象使用的配置。
7.根据权利要求1所述的方法,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于执行前向或反向计算的第三类型命令,确定所述命令未满足所述优化条件;以及
响应于所述命令为用于对象销毁的第四类型命令,确定所述命令满足所述优化条件。
8.根据权利要求1所述的方法,其中所述命令为远程过程调用(RPC)命令并且从深度神经网络库获得。
9.一种用于优化远程调用的设备,包括:
处理单元;以及
存储器,其耦合至所述处理单元并且存储有指令,所述指令在由所述处理单元执行时执行以下动作:
获得用于调用远程专用处理资源的命令;
基于所述命令的类型,确定所述命令是否满足优化条件;以及
响应于所述命令满足所述优化条件,停止向所述远程专用处理资源发送所述命令,
其中确定所述命令是否满足优化条件包括:
基于未配置集合和已配置集合,确定所述命令是否满足所述优化条件,所述未配置集合包括已被创建并且尚未配置的对象,并且所述已配置集合包括已被创建并且已被配置的另一对象以及相关联的配置信息。
10.根据权利要求9所述的设备,还包括:
响应于所述命令未满足所述优化条件,向所述远程专用处理资源发送所述命令。
11.根据权利要求9所述的设备,其中获得用于调用所述远程专用处理资源的命令包括:
确定所述命令的所述类型,所述类型是以下中的至少一项:用于对象创建的第一类型、用于设置配置的第二类型、用于执行前向或反向计算的第三类型、以及用于对象销毁的第四类型。
12.根据权利要求9所述的设备,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于对象创建的第一类型命令:
响应于所述未配置集合为空,确定所述命令未满足所述优化条件;以及
响应于所述未配置集合不为空,确定所述命令满足所述优化条件。
13.根据权利要求9所述的设备,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于设置配置的第二类型命令:
响应于所述已配置集合中存在所述命令将要设置的配置,确定所述命令满足所述优化条件;以及
响应于所述已配置集合中不存在所述命令将要设置的配置,确定所述命令未满足所述优化条件。
14.根据权利要求13所述的设备,所述动作还包括:
响应于所述已配置集合的长度超过预定阈值,移除未被任何对象使用的配置。
15.根据权利要求9所述的设备,其中确定所述命令是否满足优化条件包括:
响应于所述命令为用于执行前向或反向计算的第三类型命令,确定所述命令未满足所述优化条件;以及
响应于所述命令为用于对象销毁的第四类型命令,确定所述命令满足所述优化条件。
16.根据权利要求9所述的设备,其中所述命令为远程过程调用(RPC)命令并且从深度神经网络库获得。
17.一种非瞬态计算机可读介质,其存储计算机可执行指令,所述计算机可执行指令在被执行时使计算机执行根据权利要求1至8中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810621141.3A CN110609753B (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
CN202310814425.5A CN116860478A (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
US16/402,960 US10783018B2 (en) | 2018-06-15 | 2019-05-03 | Method, device and computer program product for optimizing remote call |
US16/989,539 US11556401B2 (en) | 2018-06-15 | 2020-08-10 | Method, device and computer program product for optimizing remote call |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810621141.3A CN110609753B (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310814425.5A Division CN116860478A (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110609753A CN110609753A (zh) | 2019-12-24 |
CN110609753B true CN110609753B (zh) | 2023-07-28 |
Family
ID=68839967
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310814425.5A Pending CN116860478A (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
CN201810621141.3A Active CN110609753B (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310814425.5A Pending CN116860478A (zh) | 2018-06-15 | 2018-06-15 | 用于优化远程调用的方法、设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10783018B2 (zh) |
CN (2) | CN116860478A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11526759B2 (en) * | 2018-11-05 | 2022-12-13 | International Business Machines Corporation | Large model support in deep learning |
CN111427702A (zh) * | 2020-03-12 | 2020-07-17 | 北京明略软件系统有限公司 | 一种人工智能ai系统及数据处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1869923A (zh) * | 2005-03-10 | 2006-11-29 | 微软公司 | 系统数据接口及相关体系结构 |
CN1900943A (zh) * | 1995-02-13 | 2007-01-24 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
CN107528864A (zh) * | 2016-06-20 | 2017-12-29 | 中国科学院微电子研究所 | 异构网络数据处理方法及系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7499909B2 (en) * | 2006-07-03 | 2009-03-03 | Oracle International Corporation | Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching |
CN101146127B (zh) * | 2007-10-30 | 2010-06-09 | 金蝶软件(中国)有限公司 | 一种分布式系统中客户端缓存更新的方法和装置 |
CN101217449B (zh) * | 2008-01-09 | 2011-01-12 | 金蝶软件(中国)有限公司 | 远程调用管理方法 |
US8555297B1 (en) * | 2008-09-29 | 2013-10-08 | Emc Corporation | Techniques for performing a remote procedure call using remote procedure call configuration information |
CN101958928B (zh) * | 2010-09-17 | 2013-01-02 | 北京大学 | 一种细粒度远程调用在线重构方法 |
US9130864B2 (en) * | 2011-06-27 | 2015-09-08 | Citrix Systems, Inc. | Prioritizing classes of network traffic to provide a predetermined quality of service |
US10360512B2 (en) * | 2015-05-29 | 2019-07-23 | International Business Machines Corporation | Intelligent service request classification and assignment |
US9578362B1 (en) * | 2015-12-17 | 2017-02-21 | At&T Intellectual Property I, L.P. | Channel change server allocation |
US11109437B2 (en) * | 2015-12-22 | 2021-08-31 | Apple Inc. | Method and migration manager component for transferring an application and system for managing terminal device communication connections |
US10614357B2 (en) * | 2017-04-17 | 2020-04-07 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US10445157B2 (en) * | 2017-05-18 | 2019-10-15 | Sap Se | Concurrent services caching |
CA3053604A1 (en) * | 2018-08-31 | 2020-02-29 | Element Ai Inc. | Data point suitability determination from edge device neural networks |
-
2018
- 2018-06-15 CN CN202310814425.5A patent/CN116860478A/zh active Pending
- 2018-06-15 CN CN201810621141.3A patent/CN110609753B/zh active Active
-
2019
- 2019-05-03 US US16/402,960 patent/US10783018B2/en active Active
-
2020
- 2020-08-10 US US16/989,539 patent/US11556401B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1900943A (zh) * | 1995-02-13 | 2007-01-24 | 英特特拉斯特技术公司 | 用于安全交易管理和电子权利保护的系统和方法 |
CN1869923A (zh) * | 2005-03-10 | 2006-11-29 | 微软公司 | 系统数据接口及相关体系结构 |
CN107528864A (zh) * | 2016-06-20 | 2017-12-29 | 中国科学院微电子研究所 | 异构网络数据处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11556401B2 (en) | 2023-01-17 |
US20190384660A1 (en) | 2019-12-19 |
CN110609753A (zh) | 2019-12-24 |
CN116860478A (zh) | 2023-10-10 |
US20200371854A1 (en) | 2020-11-26 |
US10783018B2 (en) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032706B (zh) | 智能合约执行方法、装置、设备和存储介质 | |
US11029866B2 (en) | Methods, devices, and computer program products for processing data | |
US20160156732A1 (en) | Web Page Pre-loading Optimization | |
US11249811B2 (en) | Method, apparatus, and computer program product for processing computing task | |
CN110392025B (zh) | 管理分布式系统的方法、设备和计算机可读介质 | |
US10838873B2 (en) | Method, apparatus, and computer program product for managing addresses in distributed system | |
US11086668B2 (en) | Method, electronic device and computer program product for processing task | |
CN109697121B (zh) | 用于向应用分配处理资源的方法、设备和计算机可读介质 | |
US11316530B2 (en) | Adaptive compression for data services | |
CN110609753B (zh) | 用于优化远程调用的方法、设备和计算机程序产品 | |
US11934287B2 (en) | Method, electronic device and computer program product for processing data | |
WO2018236691A1 (en) | SYSTEMS AND METHODS FOR PERFORMING SOFTWARE APPLICATIONS ON DISTRIBUTED APPLICATION DEVELOPMENT ENVIRONMENTS | |
US10897514B2 (en) | Methods, devices, and computer program products for processing target data | |
EP4060496A2 (en) | Method, apparatus, device and storage medium for running inference service platform | |
US11651221B2 (en) | Method, device, and computer program product for deep learning | |
CN111435315A (zh) | 分配资源的方法、装置、设备和计算机可读介质 | |
US11599519B2 (en) | Method, electronic device and computer program product for data management | |
CN110795328A (zh) | 一种接口测试方法和装置 | |
US11048555B2 (en) | Method, apparatus, and computer program product for optimizing execution of commands in a distributed system | |
CN112398669A (zh) | 一种Hadoop部署方法和装置 | |
US20230135884A1 (en) | Propagating application properties to multiple instances | |
CN114003342A (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
CN109213815B (zh) | 控制执行次数的方法、装置、服务器终端以及可读介质 | |
CN115914380A (zh) | 基于Zlib压缩算法的云计算资源管理器通信延迟优化方法 | |
US11106500B2 (en) | Managing memories of computing resources based on data access speeds |
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 |