CN106462542A - 通过向云计算基础设施的细粒度卸载进行的移动应用加速 - Google Patents

通过向云计算基础设施的细粒度卸载进行的移动应用加速 Download PDF

Info

Publication number
CN106462542A
CN106462542A CN201580008023.XA CN201580008023A CN106462542A CN 106462542 A CN106462542 A CN 106462542A CN 201580008023 A CN201580008023 A CN 201580008023A CN 106462542 A CN106462542 A CN 106462542A
Authority
CN
China
Prior art keywords
memory block
object method
cloud server
coding
calling
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
Application number
CN201580008023.XA
Other languages
English (en)
Other versions
CN106462542B (zh
Inventor
C·K·林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN106462542A publication Critical patent/CN106462542A/zh
Application granted granted Critical
Publication of CN106462542B publication Critical patent/CN106462542B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

公开了与对移动装置的处理的卸载方面相关联的设备、方法和存储介质。在实施例中,移动计算装置可以包括:一个或多个处理器;与所述一个或多个处理器相耦合的存储器;以及中介层,所述中介层用于将所述存储器的存储器块压缩复制至云服务器、将驻存在所述存储器的存储器块中的对象的对象方法调用压缩卸载至所述云服务器、并且用于接收所述调用的对象方法的执行结果。可描述和/或要求保护其他实施例。

Description

通过向云计算基础设施的细粒度卸载进行的移动应用加速
相关申请
本申请要求保护于2014年3月10日提交的标题为“通过向云的细粒度卸载进行的移动应用加速”的第61/950,758号美国临时专利申请的优先权。
技术领域
本披露总体上涉及计算领域,更确切地涉及与移动装置向云计算基础设施卸载处理方面相关联的设备、方法和存储介质。
背景技术
移动装置硬件的限制会显著地局限移动应用可以做什么。尽管在智能电话、平板计算机和其他用户设备上出现了多核处理器,移动应用的日渐增加的复杂度常规地向着现代移动装置的处理器和电池的极限推进。一些专用系统(如像Siri和谷歌即时(GoogleNow)等网络服务)已经开始通过将一些计算结果卸载至云来减轻这些约束。然而,这些网络服务通常阻止将任意的工作负载转移至云。目前,现在不存在使得应用开发人员具有可以在装置和云两者上运行的统一应用代码库的原理性方式。正如在Siri中一样,可能需要应用开发人员将他们的应用静态分区到装置相关的部件和云相关的部件中。一经实现,这种分区就不可能轻易地或动态地改变,从而使得运行时间不可能最优化。
附图说明
并入本说明书中并构成本说明书的一部分的附图示出了在本文中所公开的主题的某些方面,并且与说明一起帮助解释与在本文中所公开的主题相关联的一些原理。在附图中:
图1描绘了根据一些示例实施例与本公开的移动装置卸载技术相结合的示例系统;并且
图2和图3示出了示例结果。
图4展示了根据示例实施例的压缩复制编码。
图5更详细地展示了根据示例实施例的图1的移动装置和云服务器。
图6展示了根据示例实施例的示例客户端复制进程。
图7展示了根据示例实施例的示例客户端卸载进程。
图8展示了根据示例实施例的示例服务器端复制进程。
图9展示了根据示例实施例的示例服务进程。
在附图中使用类似的标号来指代相同或相似的项。
具体实施方式
在本文中公开了与移动装置向云卸载处理方面相关联的设备、方法和存储介质。一种用于去除移动装置的硬件约束的策略可以是伺机将计算卸载至云中的一个或多个服务器,其中更有能力的硬件可以做与计算等相关联的重提升。在本文中公开的主题涉及一种平台,所述平台用于动态地且透明地将任意的细粒度工作负载从移动装置转移直至云计算基础设施。所述平台可以通过压缩卸载(其总体上基于压缩传感)来完成这种转移。由本文中公开的平台所提供的卸载在一些示例实现方式中可以为包括移动应用(例如手写识别应用等等)的终端用户设备(例如智能电话、平板计算机和任何其他的以处理器为基础的装置)提供一定数量级的加速和60%更长的电池寿命。卸载可能不仅有益于终端用户设备,而且还有益于云供应商——前者可以经历性能提升,并且后者可以接收小计算的稳定流以灵活地填充利用不足的时间。
本文中所公开的主题可以提供用于移动装置的一般可重复使用的框架,用于在运行时间将任意细粒度工作负载动态转移直至云。精细的粒度可以为移动中的移动用户提供高系统响应性。精细的工作分区(例如在对象方法调用水平上)可以在装置与云断开连接以及需要对任务本地重启的事件中为用户设备引入更少的干扰。细粒度工作负载还可以通过提供稳定的小工作流为云服务供应商提供最大化利用其云基础设施的一种方式,所述小工作流可以被灵活地用以填充利用时的低谷。双方由于在各自需求的硬件资源方面的不一致而可以显著地得益于这种类型的工作负载——终端用户设备/用户可能将该工作视为计算复杂的并且非常乐意由他人令其加速,同时云供应商感觉该工作计算简单但可用于使利用平稳。
为了获取这些收益,本公开的实施例需要移动装置和云表现为单个紧密耦合的系统,即,本公开的实施例将所述移动装置和所述云视为分布式共享存储器(DSM)系统,其中在本地移动装置上的存储器被连续地复制到远程云服务器上。在本地存储器中驻存的任何对象因此可以在云基服务器上具有副本,并且在本地对象上调用的任何方法可以被透明地重定向至远程副本以用于在更有能力的云硬件上更快地执行,在下文中将对此进行更加全面的描述。
在以下详细说明中,将参考形成本说明的一部分的附图来描述移动装置卸载技术,在附图中,类似的标号通篇表示类似的部件,并且在附图中通过展示的方式示出了可以实施的实施例。应当理解,可以在不脱离本公开的范围的情况下利用其他实施例并且可以进行结构或逻辑上的改变。因此,以下详细说明不应被认为具有限制意义,并且实施例的范围由所附权利要求书及其等效物限定。
在所附的说明中公开了本公开的多个方面。可以在不脱离本公开的精神或范围的情况下设计本公开的替代实施例及其等效物。应注意的是,在附图中由类似的参考数字来表示在下文中公开的类似元件。
可以以对理解要求保护的主题最有帮助的方式将各种操作依次描述为多个分立动作或操作。然而,描述的顺序不应被解释为暗示这些操作一定是顺序相关的。具体地,可以不按所呈现的顺序来执行这些操作。可以按与所描述的实施例不同的顺序来执行所描述的操作。可以执行各种附加的操作和/或可以在附加实施例中省略所描述的操作。
为了本公开的目的,短语“A和/或B”是指(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”是指(A)、(B)、(C)、(A和B)、(A和C)、(B和C),或(A、B和C)。
本说明可能使用短语“在实施例中(in an embodiment)”或“在多个实施例中(inembodiments)”,这些短语可以各自是指相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例使用的术语“包括(comprising)”、“包括(including)”、“具有(having)”等是同义的。
本文所使用的术语“模块”可以指的是包括运行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享、专用或编组)和/或存储器(共享、专用或编组)、组合逻辑电路和/或提供所述功能性的其他适当组件或者作为其中一部分。
现参见图1,其中示出了根据各种实施例的与本公开的移动装置卸载技术结合的系统。如所展示的,在图1的示例系统100中,压缩卸载使用压缩传感来将(移动应用104的)存储器块106及其驻存的对象108从移动装置102紧密复制到云服务器112,结果是在云守护进程(daemon)114的存储器116中创建了对象副本118。每个对象108及其副本可以包括对象的变量和方法。因此,本地方法调用因此可以被透明地重定向至(例如云服务器112的云守护进程114的)远程存储器116中的远程对象副本118,以用于由更有能力的云基础硬件、软件和/或两者的组合更快速地执行。在某种意义上,可以认为存储器106和存储器116是一个DSM。因此,从这个DSM分配对象变成使应用开发人员以轻量级的方式对云进行编程的原则性方式。然而,由于移动装置所强加的时延、网络带宽、功率和计算开销方面的约束,实现这样一种DSM是非比寻常的。这进一步地由于以下事实而复杂化:直接并随机存取的存储器输入/输出(I/O)通常不自然而然地服从于标准有效事务日志技术。(例如,取决于将无用信息通信和对比于识别增量偏置并且用于生成增量编码的)现有的复制方法可能具有高的计算和网络开销并且因此不符合以上列出的资源约束。
本文中所公开的主题可以因此提供一种平台,所述平台使用压缩传感以实现对于将任意细粒度工作负载从移动装置动态转移至云所必需的紧密耦合。以下进一步描述的是核心压缩卸载机制的示例实现方式、在操作系统(例如iOS等)上的原型实现方式、以及所述系统的初始性能评估。
在实施例中,压缩卸载122可以总体上基于压缩传感。压缩传感是一种亚奈奎斯特随机采样技术,其中通过M×N线性算子Φ(被称为采样矩阵)对具有信号稀疏比k/N的信号s∈RN(即,在s中只有k系数非零)进行采样或编码,从而产生采样y∈RM。当Φ是随机矩阵并且M=O(k log(N/k))(即,M<<N)时,可以通过使用凸优化来精确地恢复或解码s,以解决最小化问题
或通过使用其他方法,包括所谓的贪心法。
因此,在本公开下,可以经由压缩传感来实现快速和网络有效的存储器复制。同样参见图4,其中示出了压缩复制编码。如所展示的,可以通过应用矩阵Φ202(例如对存储器块s 204的局部离散余弦变换)将存储器块s 204编码成编码y 206。存储器I/O(即,对存储器的增量)通常构成了可以压缩采样的稀疏信号。这种方法(在本文中被称为压缩复制)在一些实现方式中可以具有一种或多种优点。例如,压缩复制可以不需要网络开销来确定增量及其偏置,因为这些在解码过程中是自动恢复的。此外,压缩复制可以是资源相当的,因为在移动装置上的编码器具有低计算复杂度,而在云服务器上的解码器具有较高的复杂度。
在系统启动时,本地和远程终端(移动装置102和云服务器112)二者可以被配置成已知采样矩阵Φ、稀疏比设定值k/N,并且已经同步了长度为N的存储器块(其字节值由s0来表示);本地和远程二者因此可以计算y0=Φs0。在某个稍后的时间点上,移动装置上的进程可以修改本地存储器块的内容。当已经改变了k个元件时,我们将块的状态标记为s1并且通过计算y1=Φs1来对其进行编码。这个编码然后在网络上传输至云服务器。一经接收,云服务器计算y’=y0-y1,其满足方程
y′y0-y1
=Φs0-Φs1
=Φ(s0-s1) (2)
其中未知量S0–S1是所寻求恢复的增量编码。可以使用凸优化、基于匹配追踪的贪心迭代算法、消息传递算法、迭代硬阈值方法等来找到对于此式的解。一经求解,可以由S0减去S0–S1来获得S1。引申开来,对本地块的k个新更新的后续集i将生成新的压缩采样yi。一经接收到这项,远程终端就计算yi-1–yi,并且应用与以上相同的解码方案来恢复si
对于所公开的系统,将复制时延最小化可以是目标,因为时延指定了可以卸载的工作粒度。例如,如果占用了5秒来完成复制,则在用户设备(例如平板计算机、智能电话等)上小于5s完成的所有工作将不从卸载中受益(或受益很少)。复制时延可以包括三种延迟:编码时间、网络传输时间和/或解码时间。
对采样矩阵Φ的选择可能影响编码时间,尤其是在资源约束的用户设备上(例如移动装置硬件)。实际上,具有随机采样矩阵(例如从高斯分布或伯努利分布中随机抽取的系数)的编码可能需要矩阵乘法,这对于在移动装置硬件上使用而言太慢。M×N的局部离散余弦变换(pDCT)(即,删除了N-M行的N×N的II型DCT矩阵)在一些实现方式中可以进行得比其他方法更佳,因为其后台使用快速傅里叶变换并且因此基本上比直接的矩阵乘法更快。在一些实现方式中,直接使用FFT来代替DCT可能导致甚至更快的编码操作。
可以通过使移动装置进一步压缩pDCT编码来使网络传输时间最小化,所提供的是压缩和解压缩所占用的时间不明显增加总体复制时延。在一些实现方式中,可以使用snappy算法来实现对pDCT编码的最快压缩和解压缩。
在云服务器端,使用加速迭代硬阈值(AIHT)解码算法可以提供短的解码时间,主要因为AITH在每次迭代时避免了奢侈的矩阵求逆,不像追踪算法(例如l1-最小)或匹配追踪算法。为了获取甚至更大的解码速度,所公开的系统可以在CUDA或OpenCL中实现AIHT以利用GPU硬件加速。这可以提供额外的有吸引力的细粒度计算策略,云供应商可以使用其来改善对它们的更加昂贵的GPU硬件的利用。
在一些实现方式中,使用pDCT编码、snappy压缩/解压和/或AIHT解码的特定组合可以将从用户设备到云的复制时延减少至在移动装置硬件上实现压缩复制易处理的点。
在所公开的系统中,本地移动装置终端可以同时管理多个存储器块并且将每个存储器块单独地复制到远程终端。这些存储器块可以具有相同或不同的大小N、并且各自可以具有不同的采样矩阵Φ和稀疏比设定值k/N。每个存储器块可以被表征成存储具有在不同范围内的大小的对象。例如,可以单独地复制大小为N=64Kb的三个存储器块:块1可以用于分配1Kb或更小的对象,块2对应于大于1Kb但小于4Kb的对象,并且块3对应于大于4Kb但小于64Kb的对象。
现参见图5,其中更详细地展示了根据多个示例实施例的图1的云服务器和移动装置。在多个实施例中,可以在后台连续地和/或周期性地进行压缩复制,并且可以通过两个系统部件来控制和管理计算卸载。在移动装置502上,中介层(shim layer)506可以被引入到在运行时间环境514的顶部上运作的移动应用进程(虚拟存储器地址空间)504中,所述运行环境(1)管理对象从所复制的存储器块508的分配和解除分配;(2)用作复制代理(编码器)510并且(3)用作对象方法卸载器(offloader)512以拦截和管理对象方法调用对云服务器522的重定向。如之前描述的,在复制的存储器块508中的复制对象可以包括对象的变量和方法。在云服务器522上,守护进程524(1)可以包括复制代理(解码器)530来解码并将更新应用于其一个或多个复本存储器块528以及(2)对象方法服务程序(servicer)532来为已卸载的对象方法调用进行服务。在这个系统的支持双向复制的一些实施例中,可以使用强一致性语义。在一些其他的实施例中,可以通过限制从移动装置到云服务器的单向复制来避免数据一致性的问题。这可以允许对每个存储器块进行简单的版本控制(编码块增量版本),尽管还可以使用其他的版本控制方法。在移动装置/用户设备上,中介层506在调用的时候为对象方法调用标记以版本。在守护进程524处,卸载的方法调用和副本更新可以通过版本的顺序来排队和服务。
除了移动应用进程504、系统运行时间514和操作系统516之外,移动装置502可以包括现有技术中已知的一个或多个单核或多核处理器、易失性和/或非易失性存储器、大容量/永久性存储器、输入/输出装置(例如键盘、光标控制装置、显示器(例如触敏显示器))、和/或有线或无线网络/通信接口。易失性和/或非易失性存储器以及大容量/永久性存储器可以被称为计算机可读存储介质。类似地,除了云守护进程524之外,云服务器522可以包括现有技术中已知的一个或多个单核或多核处理器、易失性和/或非易失性存储器、大容量/永久性存储器、输入/输出装置(例如键盘、光标控制装置、显示器(例如触敏显示器))、和/或有线或无线网络/通信接口。这些元件可以取决于它们是否被用在移动装置502或云服务器522上而在大小/容量/能力方面改变和不同。换言之,除了本公开的压缩卸载技术,移动装置502和服务器522另外可以是现有技术中已知的多种移动装置/服务器中的任何一种。移动装置的示例可以包括但不限于可穿戴装置、移动电话、电子阅读器、平板计算机、膝上计算机等等。服务器的示例可以包括但不局限于独立服务器或刀片式服务器。进一步的,虽然为了易于理解,中介层506已经被描述为具有复制代理(编码器)510和对象方法卸载器512并且云守护进程524被描述为具有复制代理(解码器)530和对象方法服务程序532,但在实施例中,复制代理(编码器)510和对象方法卸载器512可以共享一些其共同的功能、或者利用操纵系统516的服务。类似地,复制代理(解码器)530和对象方法服务程序532可以共享一些其共同的功能、或者利用云服务器522的操作系统(未示出)的服务。
现参见图6,其中示出了根据多个示例实施例的流程图,展示了示例客户端复制进程。如所展示的,用于存储器块的复制的进程600可以包括在块602-606处进行的多个操作。可以例如通过移动装置的中介层的之前描述的复制代理(编码器)来进行进程600。在替代实施例中,可以用更多或更少的操作、或组合的一些操作来进行进程600。
如所示出的,进程600可以开始于块602。在块602处,可以如之前描述的对存储器块进行压缩编码。在块604处,可以将编码发送至云服务器。在块606处,进程600可以暂停t毫秒(其可以是配置参数)。一旦暂停/等待时间确定/期满,则进程600可以返回至块602并且从那里继续,如之前描述的。进程600可以如所描述那样的连续运行,直到禁止卸载或主机移动装置进入睡眠状态或关机状态。
图7展示了根据多个示例实施例的示例卸载进程。如所展示的,用于对方法进行卸载的进程700可以包括在块702-714处进行的多个操作。可以例如通过移动装置的中介层的之前描述的卸载器来进行进程700。在替代实施例中,可以用更多或更少的操作、或组合的一些操作来进行进程700。
如所示出的,进程700可以开始于块702。在块702处,可以检测对象方法调用。接下来,在块704处,可以对所述对象是否是从复制的存储器块分配的进行判定。如果判定的结果表明对象不是从复制的存储器块分配的,则进程700可以行进至块706。在块706处,可以在装置上执行对象方法。之后,进程700可以结束。
另一方面,如果判定的结果表明对象是从复制的存储器块分配的,则进程700可以行进至块708。在块708处,可以对存储器块进行编码。接下来在块710处,可以将编码发送至云服务器。然后在块712处,可以将对象方法重定向至云服务器。在块714处,可以接收来自对象方法调用的云服务器包含结果的响应。之后,进程700可以结束。
图8展示了根据多个示例实施例的图5的云服务器的复制代理(解码器)的示例复制进程。如所展示的,用于存储器块的复制的进程800可以包括在块802-810处进行的多个操作。可以例如通过云服务器的守护进程的之前描述的复制代理(解码器)来进行进程802。在替代实施例中,可以用更多或更少的操作、或组合的一些操作来进行进程800。
进程800可以开始于块802。在块802处,可以接收编码yi。接下来在块804处,可以对复本存储器块进行编码以获得编码yi-1。在块806处,可以通过计算yi-1-yi的差值来计算y’。
在块808处,可以对y’进行解码以获得等于Si-1-Si的差值的Δs。接下来在块810处,可以将更新Δs应用于复本存储器块。
图9展示了根据多个示例实施例的示例服务进程。如所展示的,用于服务重定向对象方法调用的进程900可以包括在块902-910处进行的多个操作。可以例如通过云服务器的守护进程的之前描述的对象方法服务器来进行进程902。在替代实施例中,可以用更多或更少的操作、或组合的一些操作来进行进程900。
进程900可以开始于块902。在块902处,可以从移动装置接收对象方法重定向。接下来在块904处,可以将对象指针的地址从装置地址空间转换至服务器地址空间。在块906处,可以执行经重定向的对象方法。
一旦执行了重定向对象方法,就可以在块908处对执行的结果进行串行化。在块910处,可以将经串行化的结果发送至移动装置,其中已经初始地(在重定向之前)调用了所述对象方法。之后,进程900可以结束。
卸载机制与传统的RPC系统共享相似性,但是具有的不同之处在于,支持对象调度(通常缓慢并且因此消极地影响所感知的系统响应性)而不是将方法和方法参数传递至远端的主要方式。相反,因为已经在后台中复制了存储器中的对象并且因为所公开的系统部件可以在本地和远程端点处控制整个复制和卸载进程,所公开的系统可以能够在适当的情况下传递指针并且进行地址转换。这意味着所公开的系统在一些实现方式中可以仅处理纯粹的堆分配对象。在一些其他的实现方式中,其可以处理纯粹的或复合的栈分配对象和堆分配对象。
所公开的系统可以被配置成:如果终端用户设备/用户已经经由在移动装置/用户设备上的系统优选设定值给予许可,则只进行压缩卸载。但是一旦给予许可,则所述系统可以判定何时进行卸载。在基本水平上,仅当存在正常网络条件时,所述系统才会这样做。所述系统可以包括用于判定所述网络条件是否正常的方法。除此之外,用于卸载的判定还可以考虑其他因素。例如,在所述系统的数据中心严重负载时,可以优选卸载所述系统以便延长装置的电池预算、或者云供应商可以发送背压信号以限制卸载。
下文提供了与上文一致的示例实现方式,尽管可以实现与本文中所公开的主题一致的其他实现方式。
上述公开的系统架构可以被认为与装置无关,并且可以应用于支持诸如JavaScript等解释语言或诸如Objective-C等编译语言的平台。在示例实现方式中,系统包括iOS生态系统,将运行iOS 6.1.3的iPad 3用作为移动装置/用户设备,并且将在美国东洛杉矶的运行Ubuntu 12.04LTS的亚马逊EC2g2.2xlarge实例作为云服务器,尽管还可以使用其他硬件和/或软件。此外,尽管本文中描述的一些示例涉及移动装置,这些装置还可以是固定的。
将目标定为iOS生态系统可以提供一些技术优点,因为它使用Objective-C,其为C的超集。所公开的系统因此可以具有足够低以进行其自身的存储器管理的访问级别。中介层可以被实现为iOS应用所链接的软件库(libupshift)。中介可以实现存储器管理器,所述存储器管理器将从app的进程堆中进行初始块分配,并且然后专门管理这个块以用于对象分配和解除分配。复制这个存储器是可能的,因为(1)现代ARM处理器(例如iPad 3的Cortex-A9)是双端的并且因此与x86亚马逊服务器字节顺序兼容,并且(2)所公开的系统可以管理其自身的存储器,所以在字节对齐与填充上存在一些控制。目前,所公开的系统可以使用纯粹的Objective-C对象,通过使用upshift_alloc对象方法而不是Objective-C根对象的alloc方法将其分配出所述存储器,尽管可以使用其他方法。而alloc方法分配来自应用进程堆存储器的对象,upshift_alloc对象方法将对象分配出由中介层专门管理的存储器。可以通过使用替换Objective-C分类法来推翻默认的alloc。在运行时间经由可以方法重排通过libupshift来处理重定向方法调用:Objective-C是后期绑定的,所以可以在运行时间用将网络上的调用卸载到云守护进程上的libupshift方法来替换多个方法实现方式。
在编译iOS app时,也对于亚马逊EC2环境交叉编译了分配有upshift_alloc的任何对象。在所公开的系统中,我们将需要这种交叉编译的app代码提取到分开的模块中并且进行交叉编译。所得到的库可以被守护进程动态下载并且将为在所公开的系统服务器的复本存储器中的对象提供分类定义。因为Objective-C本质上就是C结构,它们可以在地址转换和指针投掷之后访问守护进程。
移动装置和云服务器可以使用定制应用层网络协议(UpShift协议)来通信,所述定制应用层网络协议使用传输控制协议(TCP)和诸如基于用户数据报协议(UDP)的数据报协议的其他可靠传输协议作为其底层传输协议。传送层可以加密(例如通过TLS或SSL),并且因此可以为应用层UpShift协议提供密码安全。UpShift协议标题可以包括指定唯一协议标识符、协议版本号、消息类型和/或消息长度的字段。最低限度地,UpShift协议可以支持以下消息类型中的一种或多种:
·认证请求:这是从中介发送至云守护进程的,并且将可以将认证凭证传输至云基础结构。
·认证响应:这是响应于来自中介的认证请求从云守护进程发送的。它可以通知中介目前的认证凭证是否是有效的。
·初始化:这是从中介发送至云守护进程的。它可以指定中介的唯一标识符、待复制的每个存储器块的数量和大小、每个存储器块的采样矩阵Φ和稀疏比k/N、以及应用可能实体化的对象类型列表。在由守护进程接收时,守护进程可以(1)分配并初始化复本存储器块,并且(2)通过下载限定所列出的对象类型的动态链接库来初始化其卸载环境。
·关断:这是从中介发送至云守护进程的。它可以指定中介层的唯一标识符并且可以使守护进程(1)转存其在初始化时下载的任何动态链接库并且(2)对其在初始化时分配的存储器块进行解除分配。
·复制更新:这是从中介发送至云守护进程的。它可以指定存储器块(例如经由其起始地址的标识符)以及其当前版本号,并且包含当前存储器块的压缩采样(编码)。
·方法重定向:这是从中介发送至云守护进程的。它可以包含卸载的对象方法的名称或标识符以及多个对象方法参数(例如指向中介管理存储器块中驻存的其他对象的指针地址)。
·方法响应:这是响应于方法重定向消息从云守护进程发送的。它可以包含由守护进程执行的卸载方法的返回值或错误值。
以下提供了一些示例执行结果和/或折衷,但是同样还可以实现其他结果。
复制时延限制了可以被卸载至云的工作负载的大小范围;我们使时延越低,范围就越宽并且系统将更响应。然而,使复制时延最小化并不简单,因为其构成部分——编码时间、网络传输时间和解码时间——并不独立。例如,实现快速编码时间将会给出较坏的压缩比,这可能使得提高网络带宽使用。以下描述了可以提供合理性能的资源折衷。
因为压缩(pDCT)编码不可能引发网络开销,可以通过zlib或snappy对整个存储器块的盲目压缩进行公平的对比。经压缩的块在网络上传输至云服务器,其中对所述块进行解压缩并且将所述块用于改写其副本。作为对比的另一点,进行pDCT编码,并且然后使用snappy(pDCT+snappy)对所得到的编码进行进一步压缩。
图2示出了在iPad的每种候选编码方法(zlib、snappy、pDCT、和pDCT+snappy)上跨不同存储器块大小N(标记为输入大小)的平均编码时间,其中k/N=0.01。对于pDCT方法,我们采用M=7k个样本,这是非常保守的采样率;snappy编码是最快的,并且zlib是最慢的,其中pDCT和pDCT+snappy落于中间。例如,当N=64Kb时,snappy需要4ms,zlib需要487ms,并且pDCT和pDCT+snappy约需要53ms。我们贯穿这个评估的其余部分使用N=64KB,因为它可以代表合理的存储器块大小并且对于所有方法给出公平的编码和解码时间。
接下来考虑解码时间。这里,回想起压缩复制以低复杂度编码器交换高复杂度解码器。而zlib和snappy在亚马逊服务器上具有可以忽略的解码时间,压缩解码平均占用70ms来对N=64KB进行解码。下面的表1总结了当我们假设54Mbps的802.11g上行传输比并且估算从iPad到我们的亚马逊服务器具有每1500字节10ms的单向互联网布线延迟时对于snappy、zlib、和pDCT+snappy的总体时延估算。只看总体等待时间,容易推断出snappy超过所有其他方法。然而,当我们还考虑压缩比时,出现了不同的结论。在此,pDCT+snappy明显胜过snappy,减少了52%带宽使用而仅放弃了116ms的时延,并且在时延与压缩比之间为我们提供了比其他方法更好的折衷。
表1
Enc Tx Dec Tot CR 大小
snappy 4 15 - 19 3.8:1 17.2
zlib 487 13 - 500 6.0:1 10.9
pDCT+snappy 53 12 70 135 7.3:1 9.0
表1:在崩溃的最坏情况下,使用snappy、zlib、或pDCT+snappy的存储器块同步更新的总时延。所示出的所有等待时间是以毫秒为单位的。我们假设54Mbp的上行传输速率和10ms的单向路由延迟。我们还分别示出了对于每种方案的所实现的压缩比(CR)和以KB为单位的单个编码更新的大小。
为了论证我们的原型系统可以产生实际的性能增益,使用了例如进行汉字字符的手写识别的示例iOS应用,尽管还可以使用其他应用。在这个示例中,选择汉字手写识别主要是因为书写的每个字符具有规定数量的笔划;因此,笔划数为识别任务的计算复杂度提供了可量化的测量。
可以基于开放源Zinnia和Tegaki项目来实现移动应用,其为识别传统的汉字字符提供了训练支持矢量机器模型。用户在平板计算机屏幕上手写汉字字符,并且app将这些笔划捕捉为存储器中对象中的一系列笔划。这个笔划矢量对象然后被馈送到模型评估对象方法中,产生分类和因此的Unicode字符。当笔划矢量对象upshift_alloc时,复制这些数据并且将模型评估方法卸载至云服务器。
在性能试验中,对于在iPad上本地与卸载至云服务器来识别增加复杂度的手写字符所需时间进行了对比。如在图3a中示出的,当将装置上(302)与卸载(304)识别时间进行对比时,压缩卸载实际上增加了最低复杂度(3划)字符的识别时间(装置上平均922ms,卸载平均1165ms)。由于卸载开销,这是预料之中的。然而,该图还示出了装置上计算时间与复杂度呈不良比例,随着字符复杂度增加10倍(笔划数从3到30),平均装置上识别时间增大了13.62倍。当卸载时,增大仅为1.65倍。压缩卸载的这种低增长性能可能大部分归功于亚马逊EC2服务器的原始计算容量,但是在此强调的重点是仅有效地利用了这种计算能力,因为压缩复制具有低开销。
压缩复制可以提供明显的性能加速。即便对于适度复杂的20划字符,装置上识别时间平均为7,249ms;压缩卸载平均仅为1,687ms,这实质上是4.2倍加速。更好地是,加速(306)随着复杂度的增加而增加,如在图3b中示出的。对于高复杂度的30划字符,由于卸载而产生的加速多于6.5倍。尤其是在必须同时识别多于一个字符时(例如,在一片手写文本中),对app用户设备的差别可能是惊人的。
虽然实质上可以认为可通过压缩负载实现加速,实际上,它可能不是更大电池利用的结果。因此,我们考虑压缩卸载的电池效率并且将用于计算编码和用Wi-Fi传输其所取用的功率纳入考虑。图3c将当这个试验运行在装置上(308)和卸载(310)时对电池利用进行了对比。通过压缩卸载,大幅地减少了电池耗尽速率。实际上,如线性回归线示出的,通过相同的电池预算,压缩卸载允许用户进行60%更多的识别任务。合起来,这些结果示出了压缩卸载对于终端用户而言是双赢的:其可以在速度和电池效率二者方面为现实世界移动app提供显著优点。
例如占用iPad难以忍受地长达10秒的计算对云供应商仅仅占用几百毫秒。规模地,这些小工作负载可以负载平衡以填充数据中心中无处不在的松弛。
示例1可以是一种移动计算装置,所述移动计算装置包括:一个或多个处理器;以及与所述一个或多个处理器相耦合的存储器。所述移动处理装置可以进一步包括中介层,所述中介层用于将所述存储器的存储器块压缩复制至云服务器、将驻存在所述存储器的存储器块中的对象的对象方法调用压缩卸载至所述云服务器、并且用于接收所述调用的对象方法的执行结果。
示例2可以是示例1,其中所述中介层可以包括复制代理,所述复制代理用于每t个时间单位连续地将所述存储器的存储器块压缩复制至所述云服务器。
示例3可以是示例2,其中所述复制代理可以将采样矩阵Φ应用于存储器块s以生成所述存储器块s的编码y。
示例4可以是示例3,其中所述复制代理可以将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的编码y。
示例5可以是示例3,其中所述复制代理可以进一步将编码传输至所述云服务器。
示例6可以是示例5,其中所述复制代理可以在将编码y传输至所述云服务器之前进一步压缩编码y以减小其大小。
示例7可以是示例1-6中任一项,其中所述中介层可以包括对象方法卸载器,所述对象方法卸载器用于将对象方法调用重定向至所述云服务器、并且用于接收所述调用的对象方法的执行结果。
示例8可以是示例7,其中所述对象方法卸载器可以判定正被调用的对象方法的对象是否是从复制的存储器块分配的。
示例9可以是示例8,其中所述对象方法卸载器可以:在确定正被调用的所述对象方法的所述对象不是从复制的存储器块分配的时,使所述对象方法在所述移动计算装置上被调用和执行。
示例10可以是示例8,其中所述对象方法卸载器可以:在确定正被调用的所述对象方法的所述对象是从复制的存储器块分配的时,对与正被调用的对象方法相关联的存储器块进行压缩编码、将经压缩编码的所述存储器块发送至云服务器、并且对所述对象方法进行重定向以在所述云服务器上被调用和执行。
示例11可以是示例10,其中所述对象方法卸载器可以将采样矩阵Φ应用于存储器块s以生成所述存储器块s的压缩编码y。
示例12可以是示例11,其中所述对象方法卸载器可以将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述压缩编码y。
示例13可以是示例11,其中所述对象方法卸载器可以进一步将所述压缩编码y传输至所述云服务器。
示例14可以是示例13,其中所述对象方法卸载器可以在将编码y传输至所述云服务器之前进一步对所述压缩编码y进行压缩以减小其大小。
示例15可以是一种用于移动计算的方法,所述方法包括:通过移动计算装置将所述移动计算装置的存储器的存储器块压缩复制至云服务器;并且通过所述移动计算装置监测对象方法调用。所述方法可以进一步包括:在检测到对象方法调用时,通过所述计算装置选择性地将所述对象方法的所述调用重定向至所述云服务器,从而使所述对象方法在所述云服务器上被调用和执行;并且通过所述计算装置接收其调用被重定向至所述云服务器的所述对象方法的执行结果。
示例16可以是示例15,其中压缩复制可以包括每t个时间单位连续地将所述存储器的存储器块压缩复制至所述云服务器。
示例17可以是示例16,其中压缩复制可以包括将采样矩阵Φ应用于存储器块s以生成所述存储器块s的编码y。
示例18可以是示例17,其中压缩复制可以包括将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述编码y。
示例19可以是示例17,其中压缩复制可以进一步包括将编码y传输至所述云服务器。
示例20可以是示例19,其中压缩复制可以进一步包括在将编码y传输至所述云服务器之前对所述编码y进行压缩以减小其大小。
示例21可以是示例15-20中任一项,其中选择性地重定向可以包括判定正被调用的对象方法的对象是否是从复制的存储器块分配的。
示例22可以是示例21,其中选择性地重定向可以包括:在确定正被调用的所述对象方法的所述对象不是从复制的存储器块分配的时,使所述对象方法在所述移动计算装置上被调用和执行。
示例23可以是示例21,其中选择性地重定向可以包括:在确定正被调用的所述对象方法的所述对象是从复制的存储器块分配的时,对与正被调用的所述对象方法相关联的存储器块进行压缩编码、将所述存储器块的所述编码发送至所述云服务器、并且对所述对象方法进行重定向以在所述云服务器上被调用和执行。
示例24可以是示例23,其中压缩编码可以包括将采样矩阵Φ应用于存储器块s以生成所述存储器块s的压缩编码y。
示例25可以是示例24,其中压缩编码可以包括将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述压缩编码y。
示例26可以是示例24,其中选择性地重定向可以进一步包括将所述压缩编码y传输至所述云服务器。
示例27可以是示例26,其中选择性地重定向可以进一步包括在将编码传输至所述云服务器之前对所述压缩编码y进行压缩以减小其大小。
示例28可以是一种或多种其上存储有指令的计算机可读介质,所述指令响应于由移动计算装置执行而使所述移动计算装置用于:将所述移动计算装置的存储器的存储器块压缩复制至云服务器;将对象方法调用选择性地重定向至所述云服务器;并且接收其调用被重定向至所述云服务器的所述调用的对象方法的执行结果。
示例29可以是示例28,其中用于压缩复制可以包括用于:每t个时间单位连续地将所述存储器的存储器块压缩复制至所述云服务器。
示例30可以是示例29,其中用于压缩复制可以包括用于:将采样矩阵Φ应用于存储器块s以生成所述存储器块s的编码y。
示例31可以是示例30,其中用于应用可以包括用于:将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述编码y。
示例32可以是示例30,其中用于压缩复制可以进一步包括用于:将编码y传输至所述云服务器。
示例33可以是示例32,其中用于压缩复制可以进一步包括用于:在将编码y传输至所述云服务器之前对编码y进行压缩以减小其大小。
示例30可以是示例28-33中任一项,其中用于选择性地重定向可以包括:用于判定正被调用的对象方法的对象是否是从复制的存储器块分配的。
示例35可以是示例34,其中用于选择性地重定向可以包括用于:在确定正被调用的对象方法的对象不是从复制的存储器块分配的时,使所述对象方法在所述移动计算装置上被调用和执行。
示例36可以是示例34,其中用于选择性地重定向可以包括用于:在确定正被调用的所述对象方法的所述对象是从复制的存储器块分配的时,对与正被调用的所述对象方法相关联的存储器块进行压缩编码、将经压缩编码的存储器块发送至云服务器、并且对所述对象方法进行重定向以在所述云服务器上被调用和执行。
示例37可以是示例36,其中用于压缩编码可以包括用于:将采样矩阵Φ应用于存储器块s以生成所述存储器块s的压缩编码y。
示例38可以是示例37,其中用于应用可以包括用于:将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述压缩编码y。
示例39可以是示例37,其中用于选择性地重定向可以进一步包括用于:将所述压缩编码y传输至所述云服务器。
示例40可以是示例39,其中用于选择性地重定向可以进一步包括用于:在将编码传输至所述云服务器之前对所述压缩编码y进行压缩以减小其大小。
示例41可以是用于移动计算的设备,所述设备包括:一个或多个处理器;与所述一个或多个处理器相耦合的存储器;用于将所述存储器的存储页面压缩复制至云服务器的装置;用于监测对象方法调用的装置;用于在检测到对象方法调用时将所述对象方法的所述调用选择性地重定向至所述云服务器从而使所述对象方法在所述云服务器上被调用和执行的装置;以及用于接收其调用被重定向至所述云服务器的所述对象方法的执行结果的装置。
示例42可以是示例41,其中用于压缩复制的装置可以包括:用于每t个时间单位连续地将所述存储器的存储器块压缩复制至所述云服务器的装置。
示例43可以是示例42,其中用于压缩复制的装置可以包括:用于将采样矩阵Φ应用于存储器块s以生成所述存储器块s的编码y的装置。
示例44可以是示例43,其中用于压缩复制的装置可以包括:用于将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述编码y的装置。
示例45可以是示例43,其中用于压缩复制的装置可以进一步包括:用于将编码y传输至所述云服务器的装置。
示例46可以是示例45,其中用于压缩复制的装置可以进一步包括:用于在将编码y传输至所述云服务器之前对编码y进行压缩以减小其大小的装置。
示例47可以是示例41-46中任一项,其中用于选择性地重定向的装置可以包括:用于判定正被调用的对象方法的对象是否是从复制的存储器块分配的装置。
示例48可以是示例47,其中用于选择性地重定向的装置可以包括:用于在确定正被调用的所述对象方法的所述对象不是从复制的存储器块分配的时使所述对象方法在所述移动计算装置上被调用和执行的装置。
示例49可以是示例47,其中用于选择性地重定向的装置可以包括:用于对与正被调用的所述对象方法相关联的存储器块进行压缩编码、将所述存储器块的所述编码发送至所述云服务器的装置;以及用于在确定正被调用的所述对象方法的所述对象是从复制的存储器块分配的时对所述对象方法进行重定向以在所述云服务器上被调用和执行的装置。
示例50可以是示例49,其中用于压缩编码的装置可以包括:用于将采样矩阵Φ应用于存储器块s以生成所述存储器块s的压缩编码y的装置。
示例51可以是示例50,其中用于压缩编码的装置可以包括:用于将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述压缩编码y的装置。
示例52可以是示例50,其中用于选择性重定向的装置可以进一步包括:用于将所述压缩编码y传输至所述云服务器的装置。
示例53可以是示例52,其中用于选择性重定向的装置可以进一步包括:用于在将编码y传输至所述云服务器之前对所述压缩编码y进行压缩以减小其大小的装置。
示例54可以是云服务器,所述云服务器包括:一个或多个处理器;与所述一个或多个处理器相耦合的存储器;以及云守护进程,所述云守护进程用于接收存储器的从一个或多个移动装置压缩复制的存储器块的编码以及从所述一个或多个移动装置重定向的对象方法调用、用于对所述编码进行解码并且对所述云服务器上的多个相应存储器块进行更新、并且用于在所述云服务器上调用和执行所述对象方法并将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
示例55可以是示例54,其中所述云守护进程可以包括复制代理,所述复制代理用于接收存储器的来自一个或多个移动装置的经压缩编码的存储器块、对在所述云服务器上的相应复本存储器块进行编码、确定并解码以恢复对所述复制存储器块的更新、并且每t个时间单位连续地将所述恢复的更新应用于在所述云服务器上的所述复本存储器块。
示例56可以是示例55,其中所述复制代理可以将采样矩阵Φ应用于复本存储器块,从而生成所述复本存储器块的编码yi-1
示例57可以是示例56,其中所述复制代理可以将局部离散余弦变换矩阵Φ应用于所述复本存储器块,从而生成所述复本存储器块的所述编码yi-1
示例58可以是示例56,其中所述复制代理可以进一步接收所述复制的存储器块的压缩编码yi、并且计算对所述复本存储器块的经压缩编码的更新y’=yi-1-yi
示例59可以是示例58,其中所述复制代理可以进一步对所述经压缩编码的更新y’进行解码以恢复对所述复本存储器块的更新Δs、并且用于将所述更新Δs应用于所述复本存储器块。
示例60可以是示例59,其中所述压缩编码yi被压缩以减小其大小,并且所述复制代理可以进一步在计算所述经压缩码的更新yi’之前对经压缩的所述压缩编码yi进行解压缩。
示例61可以是示例54-60中任一项,其中所述云守护进程包括对象方法服务程序,所述对象方法服务器用于接收从所述一个或多个移动装置重定向的对象方法调用;并且用于调用和执行所述对象方法,并将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
示例62可以是示例61,其中所述对象方法服务程序可以将指向在移动装置的地址空间中的位置的对象指针转换成指向在所述云服务器的地址空间中的位置的对象指针。
示例63可以是示例61,其中所述对象方法服务程序可以对所述调用的对象方法的所述执行结果进行串行化并且将所述经串行化的执行结果返回至所述一个或多个移动装置。
示例64可以是用于云计算的方法,所述方法包括:通过云服务器接收存储器的从一个或多个移动装置压缩复制的存储器块的编码;通过所述云服务器对所述编码进行解码并且更新所述云服务器的相应复本存储器块;通过所述云服务器接收从所述一个或多个移动装置重定向的对象方法调用;通过所述云服务器调用和执行所述对象方法;并且通过所述云服务器将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
示例65可以是示例64,其中接收编码可以包括:接收存储器的来自一个或多个移动装置的经压缩编码的存储器块;对在所述云服务器上的相应复本存储器块进行编码;确定并解码以恢复对所述复制存储器块的更新;并且每t个时间单位连续地将所述恢复的更新应用于在所述云服务器上的所述复本存储器块。
示例66可以是示例65,其中对相应的复本存储器块进行编码可以包括:将采样矩阵Φ应用于复本存储器块,从而生成所述复本存储器块的编码yi-1
示例67可以是示例66,其中应用可以包括:将局部离散余弦变换矩阵Φ应用于所述复本存储器块,从而生成所述复本存储器块的所述编码yi-1
示例68可以是示例66,其中确定更新可以包括:接收所述复本存储器块的压缩编码yi、并且计算对所述复本存储器块的经压缩编码的更新y’=yi-1-yi
示例69可以是示例68,其中解码可以包括:对所述经压缩编码的更新y’进行解码以恢复对所述复本存储器块的更新Δs。
示例70可以是示例69,其中所述压缩编码yi被压缩以减小其大小,并且解码可以进一步包括:在计算所述经压缩编码的更新y’之前对经压缩的所述压缩编码yi进行解压缩。
示例71可以是示例64,其中调用可以包括:将指向在移动装置的地址空间中的位置的对象指针转换成指向在所述云服务器的地址空间中的位置的对象指针。
示例72可以是示例64-71中任一项,其中返回可以包括:对所述调用的对象方法的所述执行结果进行串行化并且将所述经串行化的执行结果返回至所述一个或多个移动装置。
示例73可以是一种或多种其上存储有指令的计算机可读介质,所述指令响应于由移动计算装置执行而使所述移动计算装置用于:接收存储器的从一个或多个移动装置压缩复制的存储器块的编码;对所述编码进行解码并且更新在所述云服务器上的相应复本存储器块;接收从所述一个或多个移动装置卸载的对象方法调用;并且调用和执行所述对象方法,并且将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
示例74可以是示例73,其中用于接收编码、用于解码和用于更新可以包括:用于接收存储器的来自一个或多个移动装置的经压缩编码的存储器块;用于对在所述云服务器上的相应复本存储器块进行编码;用于确定并解码以恢复对所述复制存储器块的更新;并且用于每t个时间单位连续地将所述恢复的更新应用于在所述云服务器上的所述复本存储器块。
示例75可以是示例74,其中用于应用可以包括:用于将采样矩阵Φ应用于复本存储器块,从而生成所述复本存储器块的编码yi-1
示例76可以是示例75,其中用于应用可以包括:用于将局部离散余弦变换矩阵Φ应用于所述复本存储器块,从而生成所述复本存储器块的所述编码yi-1
示例77可以是示例75,其中用于确定可以包括:用于进一步接收所述复本存储器块的压缩编码yi、并且计算对所述复本存储器块的经压缩编码的更新y’=yi-1-yi
示例78可以是示例77,其中用于判定可以包括:用于对所述经压缩编码的更新y’进行解码以恢复对所述复本存储器块的更新Δs。
示例79可以是示例78,其中所述压缩编码yi被压缩以减小其大小,并且用于解码进一步包括:用于在计算所述经压缩编码的更新y’之前对经压缩的所述压缩编码yi进行解压缩。
示例80可以是示例73,其中用于接收调用和用于调用和执行可以包括:用于将指向在移动装置的地址空间中的位置的对象指针转换成指向在所述云服务器的地址空间中的位置的对象指针。
示例81可以是示例73-80中任一项,其中用于返回可以包括:用于对所述调用的对象方法的所述执行结果进行串行化并且将所述经串行化的执行结果传输至所述一个或多个移动装置。
示例82可以是云服务器,所述云服务器包括:一个或多个处理器;与所述一个或多个处理器相耦合的存储器;以及用于接收存储器的从一个或多个移动装置压缩复制的存储器块的编码的装置;通过所述云服务器对所述编码进行解码并且更新所述存储器的相应复本存储器块的装置;用于接收从所述一个或多个移动装置重定向的对象方法调用的装置;用于通过所述云服务器来调用和执行所述对象方法的装置;以及用于将所述调用的对象方法的执行结果返回至所述一个或多个移动装置的装置。
示例83可以是示例82,其中用于接收编码的装置可以包括:用于接收存储器的来自一个或多个移动装置的经压缩编码的存储器块的装置;用于对在所述云服务器上的相应复本存储器块进行编码的装置;用于确定并解码以恢复对所述复制存储器块的更新的装置;以及用于每t个时间单位连续地将所恢复的更新应用于在所述云服务器上的所述复本存储器块的装置。
示例83可以是示例83,其中用于对相应的复本存储器块进行编码的装置可以包括:用于将采样矩阵Φ应用于复本存储器块从而生成所述复本存储器块的编码yi-1的装置。
示例85可以是示例84,其中用于应用的装置可以包括:用于将局部离散余弦变换矩阵Φ应用于所述复本存储器块从而生成所述复本存储器块的所述编码yi-1的装置。
示例86可以是示例84,其中用于确定更新的装置可以包括:用于接收所述复本存储器块的压缩编码yi、并且计算对所述复本存储器块的经压缩编码的更新y’=yi-1–yi的装置。
示例87可以是示例86,其中用于解码的装置可以包括:用于对所述经压缩编码的更新y’进行解码以恢复对所述复本存储器块的更新Δs的装置。
示例88可以是示例87,其中所述压缩编码yi被压缩以减小其大小,并且用于解码的装置可以进一步包括:用于在计算所述经压缩编码的更新y’之前对经压缩的所述压缩编码yi进行解压缩的装置。
示例89可以是示例82,其中用于调用的装置可以包括:用于将指向在移动装置的地址空间中的位置的对象指针转换成指向在所述云服务器的地址空间中的位置的对象指针的装置。
示例90可以是示例82-89中任一项,其中用于返回的装置可以包括:用于对所述调用的对象方法的所述执行结果进行串行化并且将所述经串行化的执行结果返回至所述一个或多个移动装置的装置。
可以在数字电子电路、集成电路、特别设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)计算机硬件、固件、软件、和/或其组合中实现本文所描述的主题的一个或多个方面或特征。这些不同的方面或特征可以包括在可编程系统上可执行和/或可翻译的一个或多个计算机程序中的实现方式,所述可编程系统包括至少一个可编程处理器,该至少一个可编程处理器可以是专用或通用目的、被耦合用于从存储系统、至少一个输入装置和至少一个输出装置接收数据和指令并且向其传输数据和指令。可编程系统或计算系统可以包括客户端和服务器。客户端和服务器通常远离彼此并且通常通过通信网络交互。客户端与服务器的关系借助于在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生。
这些计算机程序(还可以被称为程序、软件、软件应用、应用、组件、或代码)包括用于可编程处理器的机器指令,并且可以通过高级程序语言和/或面对对象的编程语言和/或通过汇编/机器语言来实现。如在本文中所使用的,术语“机器可读介质”指的是用于将机器指令和/或数据提供给可编程处理器(包括将机器指令接收作为机器可读信号的机器可读介质)的任何计算机程序产品、设备和/或装置,如例如磁盘、光盘、存储器、和可编程逻辑装置(PLD)。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。机器可读介质可以非瞬态地存储这种机器指令,如例如非瞬态固态存储器或磁性硬盘驱动器或任何等效存储介质那样。机器可读介质可以替代地或附加地以瞬态方式存储这种机器指令,如例如,如与一个或多个物理处理器核关联的处理器缓存或其他随机存取存储器那样。
为了提供与用户的交互,在本文中描述的主题的一个或多个方面或特征可以在计算机上实现,所述计算机具有用于为用户显示信息的显示装置(例如阴极射线管(CRT)或液晶显示器(LCD)或发光二极管(LED)监视器)以及用户可以用以将输入提供至计算机的键盘和指点装置(例如鼠标或跟踪球)。还可以使用其他种类的装置来提供与用户的交互。例如,被提供给用户的反馈可以是任何形式的传感反馈(例如视觉反馈、听觉反馈、或触觉反馈);并且可以通过任何形式接收来自用户的输入,包括但不局限于声学输入、语音输入或触觉输入。其他可能的输入装置包括但不局限于触摸屏或其他触摸敏感装置(例如单点或多点电阻性或电容性触控板)、语音识别硬件和软件、光学扫描仪、光学指示器、数字图像捕获装置和相关联的解读软件等等。
取决于所希望的配置,本文中所描述的主题可以在系统、设备、方法和/或物品中具体化。在前述说明书中阐述的实现方式不代表与本文描述主题一致的所有实现方式。相反,它们仅是与涉及所描述的主题的多个方面一致的一些示例。尽管以上已经详细描述了一些变体,其他的修改或添加是可能的。具体地,除了本文中阐述的那些之外,可以提供进一步的特征和/或变体。例如,以上描述的实现方式可以引导至所公开的特征的各种组合和子组合和/或以上公开的若干进一步的特征的组合和子组合。此外,在附图中描绘的和/或在本文中描述的逻辑流程不一定需要所示出的特定顺序或相继顺序来实现所希望的结果。其他实现方式可以在以下权利要求书的范围内。
尽管以上已经详细描述了一些变体,其他的修改或添加是可能的。具体地,除了本文中阐述的那些之外,可以提供进一步的特征和/或变体。此外,以上描述的实现方式可以引导至所公开的特征的各种组合和子组合和/或以上公开的若干进一步的特征的组合和子组合。此外,在附图中描绘的和/或在本文中描述的逻辑流程不需要所示出的特定顺序或相继顺序来实现所希望的结果。其他实现方式可以在以下权利要求书的范围内。此外,上述中提供的具体值仅是示例的并且在一些实现方式中可以变化。
尽管在权利要求书中陈列了本发明的各个不同的方面,本发明的其他方面包括来自具有权利要求书的特征的所描述的实现方式的特征的其他组合,而不仅是在权利要求书中明确陈列的组合。
在本文中还注意的是,以上描述了本发明的多个示例实现方式,这些说明不应被视为具有限制意义。而是,可以进行多种变体和修改而不脱离如在所附权利要求书中所限定的本发明的范围。

Claims (25)

1.一种移动计算装置,包括:
一个或多个处理器;
与所述一个或多个处理器相耦合的存储器;
中介层,所述中介层用于将所述存储器的存储器块压缩复制至云服务器,将驻存在所述存储器的存储器块中的对象的对象方法的调用压缩卸载至所述云服务器,并且用于接收所述调用的对象方法的执行结果。
2.如权利要求1所述的移动计算装置,其中所述中介层包括复制代理,所述复制代理用于每t个时间单位连续地将所述存储器的存储器块压缩复制至所述云服务器。
3.如权利要求2所述的移动计算装置,其中所述复制代理用于将采样矩阵Φ应用于存储器块s以生成所述存储器块s的编码y、并且用于将编码y传输至所述云服务器。
4.如权利要求3所述的移动计算装置,其中所述复制代理用于将局部离散余弦变换矩阵Φ应用于所述存储器块s以生成所述存储器块s的所述编码y。
5.如权利要求1-4中任一项所述的移动计算装置,其中所述中介层包括对象方法卸载器,所述对象方法卸载器用于将对象方法的调用重定向至所述云服务器、并且用于接收所述调用的对象方法的执行结果。
6.如权利要求5所述的移动计算装置,其中所述对象方法卸载器用于确定正被调用的对象方法的对象是否是从复制的存储器块分配的。
7.如权利要求6所述的移动计算装置,其中所述对象方法卸载器用于:在确定正被调用的所述对象方法的所述对象不是从复制的存储器块分配的时,使所述对象方法在所述移动计算装置上被调用和执行。
8.如权利要求6所述的移动计算装置,其中所述对象方法卸载器用于:在确定正被调用的所述对象方法的所述对象是从复制的存储器块分配的时,对与正被调用的所述对象方法相关联的存储器块进行压缩编码,将经压缩编码的所述存储器块发送至云服务器,并且对所述对象方法进行重定向以在所述云服务器上被调用和执行。
9.一种用于移动计算的方法,包括:
通过移动计算装置将所述移动计算装置的存储器的存储器块压缩复制至云服务器;
通过所述移动计算装置监测对象方法调用;
在检测到对象方法调用时,通过所述计算装置选择性地将所述对象方法的所述调用重定向至所述云服务器从而使所述对象方法在所述云服务器上被调用和执行;以及
通过所述计算装置接收其调用被重定向至所述云服务器的所述对象方法的执行结果。
10.如权利要求9所述的方法,其中选择性地重定向包括确定正被调用的对象方法的对象是否是从复制的存储器块分配的。
11.一种或多种其上存储有指令的计算机可读介质,所述指令响应于由移动计算装置执行而使所述移动计算装置:
将所述移动计算装置的存储器的存储器块压缩复制至云服务器;
将对象方法的调用选择性地重定向至所述云服务器;并且
接收其调用被重定向至所述云服务器的所述调用的对象方法的执行结果。
12.如权利要求11所述的计算机可读介质,其中选择性地重定向包括确定正被调用的对象方法的对象是否是从复制的存储器块分配的。
13.一种用于移动计算的设备,包括:
一个或多个处理器;
与所述一个或多个处理器相耦合的存储器;
用于将所述存储器的存储页面压缩复制至云服务器的装置;
用于监测对象方法调用的装置;
用于在检测到对象方法调用时选择性地将所述对象方法的所述调用重定向至所述云服务器从而使所述对象方法在所述云服务器上被调用和执行的装置;以及
用于接收其调用被重定向至所述云服务器的所述对象方法的执行结果的装置。
14.如权利要求14所述的设备,其中用于选择性地重定向的装置包括用于确定正被调用的对象方法的对象是否是从复制的存储器块分配的装置。
15.一种云服务器,包括:
一个或多个处理器;
与所述一个或多个处理器相耦合的存储器;以及
云守护进程,所述云守护进程用于接收存储器的从一个或多个移动装置压缩复制的存储器块的编码,以及从所述一个或多个移动装置重定向的对象方法的调用;用于对所述编码进行解码并且对所述云服务器上的相应存储器块进行更新;并且用于在所述云服务器上调用和执行所述对象方法,并且将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
16.如权利要求15所述的云服务器,其中所述云守护进程包括复制代理,所述复制代理用于接收存储器的来自一个或多个移动装置的经压缩编码的存储器块,对在所述云服务器上的相应复本存储器块进行编码,确定并解码以恢复对所述复制存储器块的更新,并且每t个时间单位连续地将所述恢复的更新应用于在所述云服务器上的所述复本存储器块。
17.如权利要求16所述的云服务器,其中所述复制代理用于将采样矩阵Φ应用于复本存储器块,从而生成所述复本存储器块的编码yi-1
18.如权利要求17所述的云服务器,其中所述复制代理用于将局部离散余弦变换矩阵Φ应用于所述复本存储器块,从而生成所述复本存储器块的编码yi-1
19.如权利要求17所述的云服务器,其中所述复制代理用于进一步接收所述复制的存储器块的压缩编码yi、并且计算对所述复本存储器块的经压缩编码的更新y’=yi-1-yi
20.如权利要求19所述的云服务器,其中所述复制代理用于进一步对所述经压缩编码的更新y’进行解码以恢复对所述复本存储器块的更新Δs、并且用于将所述更新Δs应用于所述复本存储器块。
21.如权利要求15-20中任一项所述的云服务器,其中所述云守护进程包括对象方法服务程序,所述对象方法服务器用于接收从所述一个或多个移动装置重定向的对象方法的调用;并且用于调用和执行所述对象方法,并且将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
22.如权利要求21所述的云服务器,其中所述对象方法服务程序用于将指向在移动装置的地址空间中的位置的对象指针转换成指向在所述云服务器的地址空间中的位置的对象指针;并且用于对所述调用的对象方法的所述执行结果进行串行化,并且将所述经串行化的执行结果返回至所述一个或多个移动装置。
23.一种用于云计算的方法,包括:
通过云服务器接收存储器的从一个或多个移动装置压缩复制的存储器块的编码;
通过所述云服务器对所述编码进行解码并且更新所述云服务器的相应复本存储器块;
通过所述云服务器接收从所述一个或多个移动装置重定向的对象方法的调用;
通过所述云服务器调用和执行所述对象方法;以及
通过所述云服务器将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
24.一种或多种其上存储有指令的计算机可读介质,所述指令响应于由云服务器执行而使所述云服务器:
接收存储器的从一个或多个移动装置压缩复制的存储器块的编码;
对所述编码进行解码并且更新在所述云服务器上的相应复本存储器块;
接收从所述一个或多个移动装置卸载的对象方法的调用;并且
调用和执行所述对象方法,并且将所述调用的对象方法的执行结果返回至所述一个或多个移动装置。
25.一种云服务器,包括:
一个或多个处理器;
与所述一个或多个处理器相耦合的存储器;以及
用于接收存储器的从一个或多个移动装置压缩复制的存储器块的编码的装置;
用于通过所述云服务器对所述编码进行解码并且更新在所述存储器中的相应复本存储器块的装置;
用于接收从所述一个或多个移动装置重定向的对象方法的调用的装置;
用于通过所述云服务器调用和执行所述对象方法的装置;以及
用于将所述调用的对象方法的执行结果返回至所述一个或多个移动装置的装置。
CN201580008023.XA 2014-03-10 2015-03-10 通过向云计算基础设施的细粒度卸载进行的移动应用加速 Active CN106462542B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461950758P 2014-03-10 2014-03-10
US61/950,758 2014-03-10
PCT/US2015/019776 WO2015138504A1 (en) 2014-03-10 2015-03-10 Mobile application acceleration via fine-grain offloading to cloud computing infrastructures

Publications (2)

Publication Number Publication Date
CN106462542A true CN106462542A (zh) 2017-02-22
CN106462542B CN106462542B (zh) 2020-03-17

Family

ID=54072343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580008023.XA Active CN106462542B (zh) 2014-03-10 2015-03-10 通过向云计算基础设施的细粒度卸载进行的移动应用加速

Country Status (4)

Country Link
US (1) US10447813B2 (zh)
CN (1) CN106462542B (zh)
CA (1) CA2938697A1 (zh)
WO (1) WO2015138504A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106507131A (zh) * 2016-12-07 2017-03-15 清华大学深圳研究生院 一种超高清视频编码的自适应云卸载方法
CN110377352A (zh) * 2019-05-20 2019-10-25 中国人民解放军军事科学院战争研究院 基于移动设备云系统的任务处理方法和装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3394751A1 (en) * 2015-12-23 2018-10-31 IDAC Holdings, Inc. Methods of offloading computation from mobile device to cloud
US11204808B2 (en) * 2016-12-12 2021-12-21 Intel Corporation Offload computing protocol
US10440096B2 (en) * 2016-12-28 2019-10-08 Intel IP Corporation Application computation offloading for mobile edge computing
US11468542B2 (en) * 2019-01-18 2022-10-11 Arizona Board Of Regents On Behalf Of Arizona State University LAPRAN: a scalable Laplacian pyramid reconstructive adversarial network for flexible compressive sensing reconstruction
US11119803B2 (en) * 2019-05-01 2021-09-14 EMC IP Holding Company LLC Method and system for offloading parity processing
US11294702B2 (en) 2019-05-01 2022-04-05 EMC IP Holding Company LLC Method and system for processing data using a processing pipeline and processing units
US20220405104A1 (en) * 2021-06-22 2022-12-22 Vmware, Inc. Cross platform and platform agnostic accelerator remoting service

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030084435A1 (en) * 2001-10-31 2003-05-01 Alan Messer Method and system for offloading execution and resources for resource-constrained networked devices
CN1461438A (zh) * 2000-04-26 2003-12-10 计算机合作者思维公司 在分布计算机系统中保持数据完整性的方法与设备
CN1601510A (zh) * 2003-03-06 2005-03-30 微软公司 分布式计算系统的架构和分布式应用程序的自动设计,部署及管理
CN102629198A (zh) * 2012-02-29 2012-08-08 北京大学 软件应用中计算逻辑的按需远程执行方法
US20130238690A1 (en) * 2011-10-03 2013-09-12 International Business Machines Corporation Processing of application peak load

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1577574A (zh) * 1967-10-30 1969-08-08
US7409709B2 (en) * 2005-02-14 2008-08-05 Etsec, Inc. Systems and methods for automatically reconfiguring a network device
US8059700B2 (en) * 2006-03-03 2011-11-15 Agence Spatiale Europeenne Method of processing positioning signals, in particular for indoor applications
US8194088B1 (en) * 2006-08-03 2012-06-05 Apple Inc. Selective composite rendering
US20080219579A1 (en) * 2007-03-05 2008-09-11 Aksyuk Vladimir A Methods and Apparatus for Compressed Imaging Using Modulation in Pupil Plane
US8074014B2 (en) * 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US20110117956A1 (en) * 2009-11-17 2011-05-19 Yosi Levi Industrial radio device with unified programming interface and methods
US8352776B2 (en) * 2010-04-02 2013-01-08 Cisco Technology, Inc. Facilitating persistence of routing states
CA2737822C (en) * 2010-08-31 2019-02-19 Mirza F. Beg System and method for rapid oct image acquisition using compressive sampling
US8489760B2 (en) * 2011-03-31 2013-07-16 Juniper Networks, Inc. Media file storage format and adaptive delivery system
US9084036B2 (en) * 2011-05-17 2015-07-14 Alcatel Lucent Signal source localization using compressive measurements
US8831121B1 (en) * 2012-06-08 2014-09-09 Vt Idirect, Inc. Multicarrier channelization and demodulation apparatus and method
US20140337408A1 (en) * 2013-05-10 2014-11-13 Appsense Limited Systems, methods and media for minimizing data downloads

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1461438A (zh) * 2000-04-26 2003-12-10 计算机合作者思维公司 在分布计算机系统中保持数据完整性的方法与设备
US20030084435A1 (en) * 2001-10-31 2003-05-01 Alan Messer Method and system for offloading execution and resources for resource-constrained networked devices
CN1601510A (zh) * 2003-03-06 2005-03-30 微软公司 分布式计算系统的架构和分布式应用程序的自动设计,部署及管理
US20130238690A1 (en) * 2011-10-03 2013-09-12 International Business Machines Corporation Processing of application peak load
CN102629198A (zh) * 2012-02-29 2012-08-08 北京大学 软件应用中计算逻辑的按需远程执行方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周健: "基于云计算的资源受限环境应用加速框架研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
欧庆波 等: "无线传感网中基于压缩感知的高效数据传输方案", 《南京邮电大学学报(自然科学版)》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106507131A (zh) * 2016-12-07 2017-03-15 清华大学深圳研究生院 一种超高清视频编码的自适应云卸载方法
CN106507131B (zh) * 2016-12-07 2019-04-30 清华大学深圳研究生院 一种超高清视频编码的自适应云卸载方法
CN110377352A (zh) * 2019-05-20 2019-10-25 中国人民解放军军事科学院战争研究院 基于移动设备云系统的任务处理方法和装置
CN110377352B (zh) * 2019-05-20 2022-06-14 中国人民解放军军事科学院战争研究院 基于移动设备云系统的任务处理方法和装置

Also Published As

Publication number Publication date
US10447813B2 (en) 2019-10-15
WO2015138504A9 (en) 2016-07-07
WO2015138504A1 (en) 2015-09-17
CN106462542B (zh) 2020-03-17
CA2938697A1 (en) 2015-09-17
US20160344844A1 (en) 2016-11-24

Similar Documents

Publication Publication Date Title
CN106462542A (zh) 通过向云计算基础设施的细粒度卸载进行的移动应用加速
US20220147833A1 (en) Dynamic sequencing of data partitions for optimizing memory utilization and performance of neural networks
Kosaian et al. Parity models: erasure-coded resilience for prediction serving systems
CN111652380B (zh) 针对机器学习算法进行算法参数调优的方法及系统
US10185590B2 (en) Mobile and remote runtime integration
CN106415494B (zh) 数字内容的增强更新
CN105208135B (zh) 一种文件传输方法和设备
CN105765534A (zh) 虚拟计算系统和方法
CN103793257A (zh) 一种Android程序的流式执行方法
US11442835B1 (en) Mobile and remote runtime integration
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
CN108810132B (zh) 动画显示方法、装置、终端、服务器及存储介质
CN113411404A (zh) 一种文件下载方法、装置、服务器及存储介质
CN109196476A (zh) 共享垃圾收集器的不同类型图之间的无缝高性能互操作性
Jain et al. The ooo vliw jit compiler for gpu inference
Kosaian et al. Parity models: A general framework for coding-based resilience in ML inference
CN111158887A (zh) 一种集中式数据分布式处理方法及装置
CN113709185B (zh) 一种实现Android云串流的方法和系统
CN104408178A (zh) Web控件加载装置和方法
Jeong et al. Dynamic offloading of web application execution using snapshot
CN106796587A (zh) 验证分析结果
CN109634758A (zh) 基于json文件控制事件和行为的方法及中间件平台
CN111177600B (zh) 一种基于移动应用的内置网页加载方法及装置
CN103745399A (zh) 拍卖处理系统及方法
WO2020183136A1 (en) Methods of deploying machine learning models

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant