CN104331302B - 一种应用更新方法、移动终端和通信系统 - Google Patents
一种应用更新方法、移动终端和通信系统 Download PDFInfo
- Publication number
- CN104331302B CN104331302B CN201410513946.8A CN201410513946A CN104331302B CN 104331302 B CN104331302 B CN 104331302B CN 201410513946 A CN201410513946 A CN 201410513946A CN 104331302 B CN104331302 B CN 104331302B
- Authority
- CN
- China
- Prior art keywords
- binary code
- mobile terminal
- clouds
- code
- trip information
- 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
Landscapes
- Stored Programmes (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例涉及通信技术领域。本发明实施例提供一种应用更新方法、移动终端和通信系统,该方法包括:移动终端向云端发送请求,用于请求所述云端将存储在所述云端的第二二进制代码发送给所述移动终端;所述移动终端接收所述云端发送的所述第二二进制代码;所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取第二运行参数信息;所述移动终端将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。采用本方案,可以在一定程度上加快应用程序的运行速度。另外,本发明还提供了相应的移动终端和通信系统。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种应用更新方法、移动终端和通信系统。
背景技术
开放运算语言(OpenCL,Open Computing Language)异构系统架构的主流语言标准之一,在移动设备的软件开发中广泛使用,主要用于图像、视频和游戏等数据处理密集型领域。
使用OpenCL编写的应用程序包括应用程序编程接口API函数和核心kernel代码。当前,为了运行移动设备上使用OpenCL编写的应用程序,需要首先使用API函数对移动设备进行OpenCL运行环境的初始化,在初始化的过程中,还需要对kernel代码进行编译以得到与kernel代码相对应的二进制代码。现有技术的缺陷在于:在移动设备侧编译kernel代码,导致应用程序的启动速度较慢。
发明内容
本发明提供一种应用更新方法、移动终端和通信系统,用于在一定程度上提升应用程序的运行速度。
第一方面,本发明提供一种应用更新方法,该方法包括:移动终端向云端发送请求,用于请求所述云端将存储在所述云端的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述移动终端接收所述云端发送的所述第二二进制代码;
所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述移动终端将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第一方面,在第一方面的第一种实施方式下,所述移动终端包括主处理器host和从处理器device,所述方法具体包括:
所述host向所述云端发送请求,用于请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,所述第二二进制代码实现的功能和所述kernel代码实现的功能相同;
所述host接收所述云端发送的所述第二二进制代码,并将所述第二二进制代码传递给所述device,以使所述device执行所述第二二进制代码,从而运行所述数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述device执行所述第二二进制代码;
所述host获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息,并将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第一方面或者第一方面的第一种实施方式,在第一方面的第二种实施方式下,所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
结合第一方面的第一种实施方式,在第一方面的第三种实施方式下,所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述device在执行所述第一二进制代码时,所述device内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第一方面的第三种实施方式,在第一方面的第四种实施方式下,在所述host中存储有所述第一二进制代码时,
所述host向所述云端发送请求,用于请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,具体包括:
所述host向所述云端发送请求,用于请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述host并存储在所述host中的。
结合第一方面的第四种实施方式,在第一方面的第五种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述host向所述云端发送请求,用于请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,具体包括:
所述host向所述云端发送请求,用于请求所述云端在确定所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一标识。
结合第一方面的第一种实施方式至第一方面的第五种实施方式中任一种实施方式,在第一方面的第六种实施方式下,所述host接收所述云端发送的所述第二二进制代码之后,还包括:
所述host存储所述第二二进制代码。
结合第一方面或者第一方面的第一种实施方式至第一方面的第六种实施方式中任一种实施方式,在第一方面的第七种实施方式下,所述第二运行参数信息包括所述host和所述device之间的数据拷贝速度和所述第二二进制代码的数据并行度。
结合第一方面的第七种实施方式,在第一方面的第八种实施方式下,所述host获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息之后,还包括:
所述host根据所述第二二进制代码的数据并行度除以所述device的硬件并发信息的值,设置所述device中每一计算单元需处理的数据量。
第二方面,本发明还提供一种应用更新方法,该方法包括:
接收移动终端发送的请求;
根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息;所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;
接收所述移动终端返回的所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第二方面,在第二方面的第一种实施方式下,所述第二二进制代码是根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
结合第二方面,在第二方面的第二种实施方式下,所述第二二进制代码是根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式下,在所述移动终端中存储有所述第一二进制代码时,
所述接收移动终端发送的请求,包括:
接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;
所述根据所述请求,向所述移动终端发送第二二进制代码,具体包括:
比较所述第二二进制代码和所述第一二进制代码是否相同,在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
结合第二方面的第三种实施方式,在第二方面的第四种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述接收所述移动终端发送的请求,所述请求包括所述第一二进制代码,包括:
接收所述移动终端发送的请求,所述请求包括所述第一标识;
所述比较所述第二二进制代码和所述第一二进制代码是否相同,在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码,具体包括:
比较所述第一标识和所述第二标识是否相同,在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
第三方面,本发明还提供一种应用更新方法,该方法包括:
移动终端向云端发送请求,用于请求所述云端将存储在所述云端内的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述云端接收所述请求,根据所述请求将所述第二二进制代码发送给所述移动终端;
所述移动终端接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述移动终端将所述第二运行参数信息发送给所述云端;
所述云端接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第三方面,在第三方面的第一种实施方式下,所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
结合第三方面,在第三方面的第二种实施方式下,所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第三方面的第二种实施方式,在第三方面的第三种实施方式下,在所述移动终端中存储有所述第一二进制代码时,
所述移动终端向云端发送请求,具体包括:
所述移动终端向所述云端发送请求,所述请求包括所述第一二进制代码;
所述云端接收所述请求,根据所述请求将所述第二二进制代码发送给所述移动终端,具体包括:
所述云端接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同,并在所述第一二进制代码和所述第二二进制代码不相同时,将所述第二二进制代码发送给所述移动终端。
结合第三方面的第三种实施方式,在第三方面的第四种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述移动终端向所述云端发送请求,所述请求包括所述第一二进制代码,具体包括:
所述移动终端向所述云端发送请求,所述请求包括所述第一标识;
所述云端接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同,并在所述第一二进制代码和所述第二二进制代码不相同时,将所述第二二进制代码发送给所述移动终端;具体包括:
所述云端接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述移动终端。
结合第三方面或者第三方面的第一种实施方式至第三方面的第四种实施方式中任一种实施方式,在第三方面的第五种实施方式下,
所述移动终端接收所述第二二进制代码之后,还包括:所述移动终端存储所述第二二进制代码。
结合第三方面或者第三方面的第一种实施方式至第三方面的第五种实施方式中任一种实施方式,在第三方面的第六种实施方式下,
所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。
第四方面,本发明还提供一种移动终端,包括:
收发单元,用于向云端发送请求,以请求所述云端将存储在所述云端的第二二进制代码发送给所述收发单元,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述收发单元还用于接收所述云端发送的所述第二二进制代码;
执行单元,用于执行所述第二二进制代码以运行数据密集型应用程序,并获取所述执行单元在执行所述第二二进制代码时,所述执行单元内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述收发单元,还用于将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第四方面,在第四方面的第一种实施方式下,还包括存储单元:所述存储单元用于存储所述第二二进制代码。
结合第四方面或第四方面的第一种实施方式,在第四方面的第二种实施方式下,所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
结合第四方面或第四方面的第一种实施方式,在第四方面的第三种实施方式下,所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述执行单元在执行所述第一二进制代码时,所述执行单元内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第四方面的第三种实施方式,在第四方面的第四种实施方式下,在所述存储单元内存储有所述第一二进制代码时,
所述收发单元具体用于向所述云端发送请求,以请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述收发单元,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述收发单元并存储在所述存储单元中的。
结合第四方面的第四种实施方式,在第四方面的第五种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述收发单元具体用于向所述云端发送请求,以请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给所述收发单元,所述请求包括所述第一标识。
结合第四方面或第四方面的第一种实施方式至第四方面的第五种实施方式中的任一种实施方式,在第五方面的第六种实施方式下,所述第二运行参数信息包括所述执行单元和所述存储单元之间的数据拷贝速度和所述第二二进制代码的数据并行度。
第五方面,本发明提供一种移动终端,包括:所述移动终端包括主处理器host和从处理器devic,其中,
所述host用于向所述云端发送请求,以请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,所述第二二进制代码实现的功能和所述kernel代码实现的功能相同;
所述host还用于接收所述云端发送的所述第二二进制代码,并将所述第二二进制代码传递给所述device,以使所述device执行所述第二二进制代码,从而运行数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述device用于执行所述第二二进制代码;
所述host还用于获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息,并将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第五方面,在第五方面的第一种实施方式下,所述host还用于存储所述第二二进制代码。
结合第五方面或第五方面的第一种实施方式,在第五方面的第二种实施方式下,所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
结合第五方面或第五方面的第一种实施方式,在第五方面的第二种实施方式下,所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述device在执行所述第一二进制代码时,所述device内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第五方面的第二种实施方式,在第五方面的第三种实施方式下,在所述host中存储有所述第一二进制代码时,所述host具体用于向所述云端发送请求,以请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述host并存储在所述host中的。
结合第五方面的第三种实施方式,在第五方面的第四种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,所述具体用于向所述云端发送请求,以请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一标识。
结合第五方面或第五方面的第一种实施方式至第五方面的第四种实施方式中任一种实施方式,在第五方面的第五种实施方式下,所述第二运行参数信息包括所述host和所述device之间的数据拷贝速度和所述第二二进制代码的数据并行度。
结合第五方面的第五种实施方式,在第五方面的第六种实施方式下,所述host还用于根据所述第二二进制代码的数据并行度除以所述device的硬件并发信息的值,设置所述device中每一计算单元需处理的数据量。
第六方面,本发明提供一种云端,包括接收单元、发送单元和编译单元:
所述接收单元,用于接收移动终端发送的请求;
所述发送单元,用于根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;
所述接收单元还用于接收所述移动终端返回的所述第二运行参数信息;
所述编译单元用于根据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第六方面,在第六方面的第一种实施方式下,所述第二二进制代码是由所述编译单元根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
结合第六方面,在第六方面的第二种实施方式下,所述第二二进制代码是由所述编译单元根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第六方面的第二种实施方式,在第六方面的第三种实施方式下,在所述移动终端内存储有所述第一二进制代码时,
所述接收单元具体用于接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;
所述发送单元具体用于比较所述第二二进制代码和所述第一二进制代码是否相同,并在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
结合第六方面的第三种实施方式,在第六方面的第四种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述接收单元具体用于接收所述移动终端发送的请求,所述请求包括所述第一标识;
所述发送单元具体用于比较所述第一标识和所述第二标识是否相同;并在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
第七方面,本发明还提供一种通信系统,包括移动终端和云端:
所述移动终端用于向所述云端发送请求,以请求所述云端将存储在所述云端内的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述云端用于接收所述请求,并根据所述请求将所述第二二进制代码发送给所述移动终端;
所述移动终端还用于接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述移动终端还用于将所述第二运行参数信息发送给所述云端;
所述云端还用于接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
结合第七方面,在第七方面的第一种实施方式下,所述移动终端还用于存储所述第二二进制代码。
结合第七方面或第七方面的第一种实施方式,在第七方面的第二种实施方式下,所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
结合第七方面或第七方面的第一种实施方式,在第七方面的第三种实施方式下,所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
结合第七方面的第三种实施方式,在第七方面的第四种实施方式下,在所述移动终端中存储有所述第一二进制代码时,
所述移动终端具体用于向所述云端发送请求,所述请求包括所述第一二进制代码;
所述云端具体用于接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同;并在所述第一二进制代码和所述第二二进制代码不相同时,所述云端将所述第二二进制代码发送给所述移动终端。
结合第七方面的第四种实施方式,在第七方面的第五种实施方式下,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述移动终端具体用于向所述云端发送请求,所述请求包括所述第一标识;
所述云端具体用于接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述移动终端。
结合第七方面或第七方面的第一种实施方式至第七方面的第五种实施方式中的任一种实施方式,在第七方面的第六种实施方式下,
所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。
可知,采用本发明实施例提供的应用更新方法,移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从云端处下载第二二进制代码,该第二二进制代码实现的功能和所述kernel代码实现的功能相同。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给所述云端,所述云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是包含主处理器Host和协处理器Device的移动终端运行包含使用OpenCL语言编写的kernal代码的流程图;
图2a是本发明实施例提供的技术方案的应用场景示意图;
图2b为本发明实施例提供的一种应用更新方法的流程示意图;
图3a为本发明实施例提供的移动终端侧执行的一种应用更新方法的流程示意图;
图3b为本发明实施例提供的移动终端侧执行的另一种应用更新方法的流程示意图;
图4为本发明实施例提供的云端侧执行的一种应用更新方法的流程示意图;
图5是本发明实施例提供的一种移动终端的结构示意图;
图6是本发明实施例提供的另一种移动终端的结构示意图;
图7是本发明实施例提供的一种云端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
异构计算(Heterogeneous computing),又译异质运算,主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括主处理器和协处理器,其中主处理器是指中央处理器CPU、协处理器通常指图形处理器(GPU,GraphicProcessing Unit)、数字信号处理器(DSP,digital signal processing等。异构计算近年来得到更多关注,主要是因为通过提升CPU时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。而与此同时,GPU、DSP等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能-芯片面积比和性能-功耗比都很高,却远远没有得到充分利用。异构计算用于将一部分计算转移到GPU、DSP等专用计算单元上(为了描述方便,下面以主处理器CPU和协处理器GPU组成的异构计算平台为例进行说明,应当理解的是,基于异构计算的协处理器还可以是DSP等),从而减小CPU的处理负担。
OpenCL(Open Computing Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器CPU、图形处理器GPU、Cell类型架构以及数字信号处理器DSP等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。开放运算语言(OpenCL,Open ComputingLanguage)是一个为异构平台编写程序的框架。
本发明所述的应用程序运行在基于异构系统架构的移动终端上,该移动终端包括主处理器host和从处理器device,在包含CPU和GPU的移动终端上,主处理器host即为CPU,从处理器device即为GPU;所述应用程序至少包括第一部分和第二部分,第一部分是使用开放运算语言OpenCL编写的,且第一部分包括API(Application Programming Interface,应用程序编程接口)函数和kernel(核心)代码。需要说明的是,所述kernel代码运行在device侧,且所述kernel代码为运算密集型代码。
参阅附图1,为本发明实施例提供的在包括host和device的移动设备上运行使用OpenCL语言编写的应用程序的流程示意图,具体包括下述步骤:host初始化OpenCL的运行环境,该初始化的过程包括获取kernel代码对应的二进制代码;host将该二进制代码传输给device,以使device执行该二进制代码;device执行该二进制代码并将执行结果回传给host,host接收该执行结果并释放OpenCL的运行环境。需要说明的是,本发明的重点在于如何获取kernel代码对应的二进制代码。
实施例一
参阅附图2b,为本发明实施例提供的一种应用更新方法的流程示意图,该方法涉及移动终端和云端之间的交互,该方法可以用在如图2a所示的通信系统中,该通信系统包括移动终端和云端。具体的,该方法包括:
S201、移动终端向云端发送请求,用于请求所述云端将存储在所述云端内的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
值得注意的是,所述移动终端是指可以在移动中使用的计算机设备,广义的讲包括手机、笔记本、平板电脑、POS机甚至包括车载电脑。但是大部分情况下是指手机或者具有多种应用功能的智能手机以及平板电脑。
需要说明的是,如果所述移动终端向云端发送请求之前,从没有运行过包括所述kernel代码的数据密集型应用程序,或者说,如果所述移动终端是第一次运行包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。其中,所谓编译就是将所述kernel代码从原始的语言形式(OpenCL语言)转变成二进制代码的形式,应当理解的是,虽然表达所述kernel代码的语言形式发生了改变,但是改变后的所述第二二进制代码能够实现的功能和所述kernel代码能够实现的功能是一样的。
如果所述移动终端向云端发送请求之前,已经运行过包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一二进制代码是所述移动终端上次运行所述数据密集型应用程序时,从所述云端处下载得到的。其中,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码能够实现的功能和所述kernel代码能够实现的功能是一样。
为便于理解,下面举例说明,假设所述移动终端本次向云端发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在所述移动终端第N-1次运行所述数据密集型应用程序时,所述移动终端从所述云端处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。
可以进一步理解的是,所述移动终端每运行一次包括所述kernel代码的数据密集型应用程序,则所述移动终端会获取参与执行所述kernel代码的硬件的运行参数信息,并将该硬件的运行参数信息发给所述云端,以便于云端对存储在所述云端内的二进制代码进行更新得到更加符合移动终端运行环境的二进制代码。
S203、所述云端接收所述请求,根据所述请求将所述第二二进制代码发送给所述移动终端;
需要说明的是,在所述移动终端不是第一次运行所述数据密集型应用程序时,或者说,在所述移动终端中存储有所述第一二进制代码时,其中,所述第一二进制代码是所述移动终端上次运行所述数据密集型应用程序时从所述云端获取的,步骤S201将被下述内容代替:所述移动终端向所述云端发送请求,所述请求包括所述第一二进制代码;相应的,步骤203具体变为:所述云端接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同,如果所述第一二进制代码和所述第二二进制代码不相同,则所述云端将所述第二二进制代码发送给所述移动终端。
需要说明的是,在实际操作中,在所述移动终端向所述云端发送请求时,所述请求中通常不会携带完整的二进制代码,因为这样会增加信息传递成本,占用比较多的带宽资源。在实际操作中,在所述移动终端向所述云端发送请求时,所述请求中携带的是用于唯一表示所述第一二进制代码的标识。比如,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,步骤S201将被下述内容代替:所述移动终端向所述云端发送请求,所述请求包括所述第一标识;相应的,步骤S203的内容变为:所述云端接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述移动终端。
S205、所述移动终端接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
值得注意的是,所述移动终端接收所述第二二进制代码后,所述移动终端会存储所述第二二进制代码,并用所述第二二进制代码替代所述第一二进制代码,也即在存储所述第二二进制代码的同时或者之后抛弃所述第一二进制代码。
需要说明的是,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。具体的,所述移动终端内部的数据拷贝速度是指位于所述移动终端内的主处理器CPU和协处理器GPU之间的数据拷贝速度,此处以GPU为例进行说明,应当理解的是,协处理器的类型包括但不限于GPU,还可以是DSP等。
S207、所述移动终端将所述第二运行参数信息发送给所述云端;
S209、所述云端接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
通过上述内容可知,所述数据密集型应用程序位于所述移动终端,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码。需要说明的是,在所述移动终端不是第一次运行所述数据密集型应用程序时,不仅所述移动终端内存储有与所述kernel代码相对应的二进制代码,即所述第一二进制代码,所述云端内也存储有与所述kernel代码相对应的二进制代码,即所述第二二进制代码。所述第一二进制代码是所述移动终端上次运行所述数据密集型应用程序时从所述云端下载的,理论上说,所述移动终端内存储的与所述kernel代码相对应的二进制代码和所述云端内存储的与所述kernel代码相对应的二进制代码应当是一样的。但在本发明中,所述移动终端每运行一次所述数据密集型应用程序,会向所述云端反馈所述移动终端运行所述数据密集型应用程序的运行参数信息,所述云端会根据所述运行参数信息对其存储的与所述kernel代码相对应的二进制代码进行更新,从而得到所述第二二进制代码。所以,所述云端内存储的所述第二二进制代码与所述移动终端内存储的所述第一二进制代码可能是不同的。
应当理解的是,在本方案中,存在多个移动终端内均安装有用于实现某种具体功能的应用程序的情况,不妨假设移动终端A和移动终端B内均安装有应用程序a,则对应的,所述云端内存储两个代码区域,其中第一代码区域用于存储二进制代码A,二进制代码A安装在移动终端A内的应用程序a中包含的kernel代码;第二代码区域用于存储二进制代码B,二进制代码B安装在移动终端B内的应用程序a中包含的kernel代码。在云端接收到移动终端A发送的请求时,会将二进制代码A反馈给移动终端A,在云端接收到移动终端A发送的第二运行参数信息时,会根据该第二运行参数信息对二进制代码A进行更新。
可知,采用本发明实施例提供的应用更新方法,移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从云端处下载第二二进制代码,该第二二进制代码实现的功能和所述kernel代码实现的功能相同。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给所述云端,所述云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
实施例二
参见附图3a,为本发明实施例提供的一种应用更新方法的流程示意图,该方法的执行主体为图2a所示的通信系统中包括的移动终端。具体的,所述方法包括下述步骤:
S301、移动终端向云端发送请求,用于请求所述云端将存储在所述云端的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
需要说明的是,如果所述移动终端向云端发送请求之前,从没有运行过包括所述kernel代码的数据密集型应用程序,或者说,如果所述移动终端是第一次运行包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。其中,所谓编译就是将所述kernel代码从原始的语言形式(OpenCL语言)转变成二进制代码的形式,应当理解的是,虽然表达所述kernel代码的语言形式发生了改变,但是改变后的所述第二二进制代码能够实现的功能和所述kernel代码能够实现的功能是一样的。
如果所述移动终端向云端发送请求之前,已经运行过包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的。假设所述移动终端本次向云端发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在所述移动终端第N-1次运行所述数据密集型应用程序时,所述移动终端从所述云端处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。值得注意的是,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码能够实现的功能和所述kernel代码能够实现的功能是一样。
S303、所述移动终端接收所述云端发送的所述第二二进制代码;
S305、所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
S307、所述移动终端将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
作为本发明的另一实施例,参阅附图3b,在所述移动终端包括主处理器host和从处理器device,所述应用更新方法具体包括:
S311、所述host向所述云端发送请求,用于请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,所述第二二进制代码实现的功能和所述kernel代码实现的功能相同;
需要说明的是,在所述host不是第一次向所述云端发送请求时,或者说,在所述host中存储有所述第一二进制代码时,其中,所述第一二进制代码是所述host上次从所述云端获取的,步骤S311将被下述内容替代:所述host向所述云端发送请求,用于请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述host并存储在所述host中的。
需要说明的是,在实际操作中,在所述host向所述云端发送请求时,所述请求中通常不会携带完整的二进制代码,因为这样会增加信息传递成本,占用比较多的带宽资源。在实际操作中,在所述host向所述云端发送请求时,所述请求中携带的是用于唯一表示所述第一二进制代码的标识。比如,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,步骤S311将被下述内容代替:所述host向所述云端发送请求,用于请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一标识。
S313、所述host接收所述云端发送的所述第二二进制代码,并将所述第二二进制代码传递给所述device,以使所述device执行所述第二二进制代码,从而运行所述数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
值得注意的是,所述host接收所述第二二进制代码后,所述host会存储所述第二二进制代码,并用所述第二二进制代码替代所述第一二进制代码,也即在存储所述第二二进制代码的同时或者之后抛弃所述第一二进制代码。
S315、所述device执行所述第二二进制代码;
S317、所述host获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息,并将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
需要说明的是,所述第二运行参数信息包括所述host和所述device之间的数据拷贝速度和所述第二二进制代码的数据并行度。
作为本发明的再一个实施例,在步骤S317之后,所述方法还包括:所述host根据所述第二二进制代码的数据并行度除以所述device的硬件并发信息的结果,设置所述device中每一计算单元需处理的数据量。需要说明的是,所述设置所述device中每一计算单元需处理的数据量的基本原则是负载均衡。
可知,采用本发明实施例提供的应用更新方法,移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从云端处下载第二二进制代码,相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给所述云端,所述云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
实施例三
参见附图4,为本发明实施例提供的一种应用更新方法的流程示意图,该方法的执行主体为图2a所示的通信系统中包括云端。具体的,所述方法包括下述步骤:
S401、接收移动终端发送的请求;
S403、根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息;所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;
需要说明的是,若云端是第一次接收这种请求,则所述第二二进制代码是根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。若云端不是第一次接收这种请求,则所述第二二进制代码是根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同,所述第一二进制代码是所述移动终端上次运行所述数据密集型应用程序时,从所述云端处下载得到的。
为了便于理解,下面举例说明,假设所述移动终端本次向云端发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在所述移动终端第N-1次运行所述数据密集型应用程序时,所述移动终端从所述云端处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。
值得注意的是,若所述移动终端不是第一次运行所述数据密集型应用程序,则所述移动终端中存储有所述第一二进制代码时,则步骤401将被下述内容替代:接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;相应的,步骤403将变化为:比较所述第二二进制代码和所述第一二进制代码是否相同,在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
需要说明的是,在实际操作中,所述移动终端发送的所述请求中不会携带完整的二进制代码,因为这样会增加信息传递成本,占用比较多的带宽资源。在实际操作中,所述移动终端发送的所述请求中通常携带的是用于唯一表示所述第一二进制代码的标识。在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;步骤401将被下述内容代替:接收所述移动终端发送的请求,所述请求包括所述第一标识;相应的,步骤403的内容变为:比较所述第一标识和所述第二标识是否相同,在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
S405、接收所述移动终端返回的所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
具体的,所述云端根据接收到的所述第二运行参数信息对所述第二二进制代码进行更新得到更加适应于所述移动终端的运行环境的二进制代码。
需要说明的是,所述移动终端包括所述数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述移动终端在运行所述数据密集型应用程序时,将会按照图1所示的步骤进行。参见附图1可知,在初始化OpenCL的运行环境时,需要获取与所述kernel代码相对应的最新的二进制代码。
本方案采用下述方法获取与所述kernel代码相对应的最新的二进制代码,应当明确的是,在所述移动终端内存储有所述第一二进制代码时,所述第一二进制代码和所述第二二进制代码的关系为:所述第一二进制代码为所述移动终端上次运行所述数据密集型应用程序时从所述云端下载的,所述移动终端在运行第一二进制代码之后,会将其获取的所述第一二进制代码的运行参数信息反馈给所述云端,所述云端根据所述运行参数信息对其存储的所述第一二进制代码进行更新,从而得到所述第二二进制代码。通过所述第一二进制代码和所述第二二进制代码的关系可知,所述第二二进制代码有可能和所述第一二进制代码相同,也有可能和所述第一二进制代码不相同,也即优于所述第一二进制代码。所以如果所述第二二进制代码和所述第一二进制代码不相同,则所述云端应向所述移动终端发送所述第二二进制代码,因为所述第二二进制代码比所述第一二进制代码更优。
应当理解的是,在本方案中,存在多个移动终端内均安装有用于实现某种具体功能的应用程序的情况,不妨假设移动终端A和移动终端B内均安装有应用程序a,则对应的,所述云端内存储两个代码区域,其中第一代码区域用于存储二进制代码A,二进制代码A安装在移动终端A内的应用程序a中包含的kernel代码;第二代码区域用于存储二进制代码B,二进制代码B安装在移动终端B内的应用程序a中包含的kernel代码。在云端接收到移动终端A发送的请求时,会将二进制代码A反馈给移动终端A,在云端接收到移动终端A发送的第二运行参数信息时,会根据该第二运行参数信息对二进制代码A进行更新。
可知,采用本发明实施例提供的技术方案,云端根据移动终端的请求,将第二二进制代码发送给移动终端,使得所述移动终端可以直接基于所述第二二进制代码运行所述数据密集型应用程序,相对于现有技术来说,基于本方案提供的云端,移动终端不用自己编译kernel代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,所述云端可以根据所述移动终端反馈的所述第二二进制的代码的运行参数信息,对存储在所述云端内的所述第二二进制代码进行更新,从而获得更加适应于所述移动终端运行环境的二进制代码,以使所述移动终端在运行所述数据密集型应用程序时,将获得更快的运行速度、更高的运行效率。
实施例四
参阅附图5,为本发明实施例提供的一种移动终端50的结构示意图,所述移动终端50可执行实施例二所述的应用更新方法,且所述移动终端50可用在附图2a所示的应用场景中。进一步参阅附图5,所述移动终端50包括收发单元51和执行单元53,具体的:
收发单元51,用于向云端发送请求,以请求所述云端将存储在所述云端的第二二进制代码发送给所述收发单元,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
需要说明的是,如果收发单元51是第一次向云端发送这种请求,所谓的这种请求是指请求云端向收发单元51发送存储在所述云端内的且对应于kernel函数的二进制代码,则所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
如果收发单元51不是第一次向云端发送这种请求,则所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是执行单元53在执行所述第一二进制代码时,执行单元53内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。假设收发单元51本次向云端发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在执行单元53第N-1次运行所述数据密集型应用程序时,收发单元51从所述云端处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。
作为本发明的另一个实施例,所述移动终端50还包括存储单元55,值得注意的是,在收发单元51不是第一次向云端发送这种请求时,也即存储单元55内存储有所述第一二进制代码时,收发单元51具体用于向所述云端发送请求,以请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给收发单元51,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给收发单元51并存储在所述存储单元中55的。
应当理解的是,在实际操作中,收发单元51发向所述云端的请求中通常不会携带完整的二进制代码,因为这样会增加信息传递成本,在实践中,收发单元51发向所述云端的请求中携带的是用于唯一表示所述第一二进制代码的标识。在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,收发单元51具体用于向所述云端发送请求,以请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给收发单元51,所述请求包括所述第一标识。
收发单元51还用于接收所述云端发送的所述第二二进制代码;应当理解的是,存储单元55还用于存储所述第二二进制代码,若存储单元55内还存储有所述第一二进制代码,则存储单元55还将删除所述第一二进制代码。
执行单元53用于执行所述第二二进制代码以运行数据密集型应用程序,并获取执行单元53在执行所述第二二进制代码时,执行单元53内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
具体的,所述第二运行参数信息包括执行单元53和收发单元51之间的数据拷贝速度和所述第二二进制代码的数据并行度。
收发单元51还用于将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
可知,采用本发明实施例提供的移动终端,该移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从云端处下载第二二进制代码,该第二二进制代码实现的功能和所述kernel代码实现的功能相同。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给所述云端,所述云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
实施例五
参阅附图6,为本发明实施例提供的另一种移动终端60的结构示意图,所述移动终端60可执行实施例二所述的应用更新方法,且所述移动终端60可用在附图2a所示的应用场景中。如图6所示,该移动终端60可以包括至少一个主处理器host601,例如中央处理器CPU,至少一个协处理器device606,至少一个网络接口604,例如物理网卡,或者其他的用户接口603,以及存储器605和至少一个通信总线602。
其中,通信总线602用于实现这些组件之间的连接通信。
网络接口604用于实现移动终端60和网络之间的连接通信,比如该网络接口604可以用于连接物理网卡和/或物理交换机等设备。
可选的,用户接口603,可以包括显示器,键盘或者其他点击设备,例如,鼠标,轨迹球(trackball),触感板或者触感显示屏等。
存储器605可能包括高速随机存取记忆体(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,该存储器605还可以包括至少一个位于远离前述主处理器host 601的存储装置。
在一些实施方式中,存储器605存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统6051,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
应用模块6052,包含各种应用程序,用于实现各种应用业务。
具体地,主处理器host 601,用于向所述云端发送请求,以请求所述云端将存储在所述云端的所述第二二进制代码发送给host 601,所述第二二进制代码实现的功能和所述kernel代码实现的功能相同;
需要说明的是,如果host 60是第一次向云端发送这种请求,所谓“这种请求”是指请求云端向host 60发送存储在所述云端内的且对应于kernel函数的二进制代码,则所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。如果host 60不是第一次向云端发送这种请求,则所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是device 606在执行所述第一二进制代码时,device606内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。假设host 60本次向云端发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在device 606第N-1次运行所述数据密集型应用程序时,device 606从所述云端处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。
需要说明的是,如果host 60不是第一次向云端发送这种请求,则host60内存储有所述第一二进制代码,相应的,host 60具体用于向所述云端发送请求,以请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给host 60,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给host 60并存储在host 60中的。
值得注意的是,在实际操作中,host 60发向所述云端的请求中通常不会携带完整的二进制代码,因为这样会增加信息传递成本。实践中,host 60发向所述云端的请求中会携带用于唯一表示所述第一二进制代码的标识。在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,host 60具体用于向所述云端发送请求,以请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给host60,所述请求包括所述第一标识。
host 601还用于接收所述云端发送的所述第二二进制代码,并将所述第二二进制代码传递给device 606,以使device 606执行所述第二二进制代码,从而运行数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
作为本发明的一个实施例,在host 601接收所述云端发送的所述第二二进制代码之后,host 601还用于存储所述第二二进制代码。如果host 60不是第一次向云端发送这种请求,则host 60还用于使用所述第二二进制代码替换所述第一二进制代码。
device 606用于执行所述第二二进制代码;
host 601还用于获取device 606在执行所述第二二进制代码时,device606内参与执行所述第二二进制代码的硬件的第二运行参数信息,并将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
其中,所述第二运行参数信息包括所述host和所述device之间的数据拷贝速度和所述第二二进制代码的数据并行度。
需要说明的是,在host 601获取所述第二运行参数信息之后,host 601还用于根据所述第二二进制代码的数据并行度除以device 606的硬件并发信息的值,设置device606中每一计算单元需处理的数据量。
以上各个设备的具体实施可参见前面的实施例,在此不再赘述。
可知,采用本发明实施例所述的移动终端,该移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从云端处下载第二二进制代码,该第二二进制代码实现的功能和所述kernel代码实现的功能相同。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给所述云端,所述云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
实施例六
参阅附图7,为本发明实施例提供的一种云端70的结构示意图,其中云端70可以用在图2a所示的应用场景中,且云端70可执行实施例三所述的应用更新方法。如附图7所示,云端70包括接收单元71、发送单元73和编译单元75,具体的:
接收单元71用于接收移动终端发送的请求;
发送单元73用于根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;
接收单元71还用于接收所述移动终端返回的所述第二运行参数信息;
其中,所述第二运行参数信息包括移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。
编译单元75用于根据所述第二运行参数信息对所述第二二进制代码进行更新。
应当理解的是,编译单元75基于所述第二运行参数信息对所述第二二进制代码进行更新后,得到的最新的与kernel函数相对应的二进制代码,由于更加符合移动终端的硬件环境,所以该最新的二进制代码在移动终端上运行时,将会获得更快地运行速度、更好的运行效果。
需要说明的是,如果接收单元71是第一次接收移动终端发送的这种请求,所谓“这种请求”是指移动终端通过向接收单元71发送请求,以请求发送单元73向移动终端发送第二二进制代码,则所述第二二进制代码是由编译单元75根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。如果接收单元71不是第一次接收移动终端发送的这种请求,则所述第二二进制代码是由编译单元75根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同,所述第一二进制代码是所述移动终端上次运行所述数据密集型应用程序时,发送单元73发送给所述移动终端的。
为了便于理解,下面举例说明,假设所述移动终端本次向接收单元71发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在所述移动终端第N-1次运行所述数据密集型应用程序时,所述移动终端从发送单元73处获取的是第一二进制代码,也即这时所述云端内存储的是第一二进制代码。
在接收单元71不是第一次接收移动终端发送的这种请求时,也即作为本发明的一个实施例,在所述移动终端内存储有所述第一二进制代码时,接收单元71具体用于接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;相应的,发送单元73具体用于比较所述第二二进制代码和所述第一二进制代码是否相同,并在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
需要说明的是,在实际操作中,接收单元71接收的请求中通常不会包括完整的所述第一二进制代码的,因为这样会增加信息传递的负担。实践中,通常使用标识表示某段代码,用在本发明提供的技术方案中就是,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;接收单元71具体用于接收所述移动终端发送的请求,所述请求包括所述第一标识;发送单元73具体用于比较所述第一标识和所述第二标识是否相同;并在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
可知,基于本发明实施例提供的云端,移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,将会从该云端处直接下载第二二进制代码,该第二二进制代码实现的功能和所述kernel代码实现的功能相同。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,基于移动终端每次执行所述数据密集型应用程序时获取的硬件运行参数信息,云端会对存储在云端内的与kernel代码相对应的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的硬件运行环境,在所述移动终端下次再运行所述数据密集型应用程序时,将会基于该更新后二进制代码而获得更快的运行速度。
实施例七
参见附图2a,为本发明实施例提供的通信系统,所述通信系统可用于实现实施例一所述的应用更新方法。具体的,所述通信系统包括移动终端21和云端23,移动终端21为实施例二所述的应用更新方法的执行主体,且移动终端21的具体结构为实施例四或实施例五所述的移动终端;云端23为实施例三所述的应用更新方法的执行主体,且云端23的具体结构为实施例六所述的云端。具体的:
移动终端21用于向云端23发送请求,以请求云端23将存储在云端23内的第二二进制代码发送给移动终端21,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
需要说明的是,如果移动终端21向云端23发送请求之前,从没有运行过包括所述kernel代码的数据密集型应用程序,或者说,如果移动终端21是第一次运行包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是云端23根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
如果移动终端21向云端23发送请求之前,已经运行过包括所述kernel代码的数据密集型应用程序,则所述第二二进制代码是云端23根据第一运行参数信息对存储在云端23的第一二进制代码进行更新得到的,所述第一运行参数信息是移动终端21在执行所述第一二进制代码时,移动终端21内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码能够实现的功能和所述kernel代码能够实现的功能是一样。需要说明的是,移动终端21内也存储有所述第一二进制代码,具体是移动终端21上次运行所述数据密集型应用程序时从云端23处下载得到的,也即若移动终端21向云端23发送请求之前已经运行过所述数据密集型应用程序的,移动终端21内存储有所述第一二进制代码。
为便于理解,下面举例说明,假设移动终端21本次向云端23发送请求是为了获取所述第二二进制代码,以便于第N次运行包括所述kernel代码的数据密集型应用程序,其中N≥2且N为整数,则在移动终端21第N-1次运行所述数据密集型应用程序时,移动终端21从云端23处获取的是第一二进制代码,也即这时云端23内存储的是第一二进制代码。
云端23用于接收所述请求,并根据所述请求将所述第二二进制代码发送给移动终端21;
作为本发明的另一个实施例,移动终端21中存储有所述第一二进制代码时,移动终端21具体用于向云端23发送请求,且所述请求包括所述第一二进制代码;相应的,云端23具体用于接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同;并在所述第一二进制代码和所述第二二进制代码不相同时,云端23将所述第二二进制代码发送给移动终端21。
需要说明的是,在实际操作中,移动终端21向云端23发送的所述请求中通常不会携带完整的二进制代码,因为这样会增加信息传递成本。在实际操作中,移动终端21向云端23发送的所述请求中携带的是用于表示所述第一二进制代码的标识。具体的,在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,移动终端21具体用于向云端23发送请求,所述请求包括所述第一标识;相应的,云端23具体用于接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给移动终端21。
移动终端21还用于接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取移动终端21在执行所述第二二进制代码时,移动终端21内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现移动终端21的至少一项功能;
作为本发明的另一个实施例,移动终端21还用于存储所述第二二进制代码,具体在移动终端21接收所述第二二进制代码之后。应当理解的是,在移动终端21内存储有所述第一二进制代码时,移动终端21还用于使用所述第一二进制代码替换所述第二二进制代码。
需要说明的是,所述第二运行参数信息包括移动终端21内部的数据拷贝速度和所述第二二进制代码的数据并行度。
移动终端21还用于将所述第二运行参数信息发送给云端23;
云端23还用于接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
应当理解的是,在本方案中,存在多个移动终端内均安装有用于实现某种具体功能的应用程序的情况,不妨假设移动终端A和移动终端B内均安装有应用程序a,则对应的,所述云端内存储两个代码区域,其中第一代码区域用于存储二进制代码A,二进制代码A安装在移动终端A内的应用程序a中包含的kernel代码;第二代码区域用于存储二进制代码B,二进制代码B安装在移动终端B内的应用程序a中包含的kernel代码。在云端接收到移动终端A发送的请求时,会将二进制代码A反馈给移动终端A,在云端接收到移动终端A发送的第二运行参数信息时,会根据该第二运行参数信息对二进制代码A进行更新。
可知,采用本发明实施例提供的通信系统,移动终端在运行包括使用OpenCL语言编写的kernel代码的数据密集型应用程序时,会从云端处下载与kernel代码相对应的第二二进制代码。相对于现有技术来说,在本方案中,移动终端不需要自己编译所述kernel代码以得到所述第二二进制代码,从而减轻了移动终端的处理负担,加快了所述移动终端运行所述数据密集型应用程序的速度。
进一步的,在本方案中,移动终端每次执行所述数据密集型应用程序之后,均会将所述数据密集型应用程序的运行环境信息发送给云端,云端基于所述运行环境信息对存储在云端内的二进制代码进行更新,从而使得存储在所述云端内的二进制代码更加适应所述移动终端的运行环境,在移动终端下次再运行所述数据密集型应用程序时,将会由于该更新后二进制代码而获得更快的运行速度。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (40)
1.一种应用更新方法,其特征在于:
移动终端向云端发送请求,用于请求所述云端将存储在所述云端的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述移动终端接收所述云端发送的所述第二二进制代码;
所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
所述移动终端将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
2.根据权利要求1所述的方法,其特征在于,所述移动终端包括主处理器host和从处理器device,所述方法具体包括:
所述host向所述云端发送请求,用于请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,所述第二二进制代码实现的功能和所述kernel代码实现的功能相同;
所述host接收所述云端发送的所述第二二进制代码,并将所述第二二进制代码传递给所述device,以使所述device执行所述第二二进制代码,从而运行所述数据密集型应用程序,所述数据密集型应用程序包括所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;
所述device执行所述第二二进制代码;
所述host获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息,并将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
3.根据权利要求2所述的方法,其特征在于:
所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
4.根据权利要求2所述的方法,其特征在于:
所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述device在执行所述第一二进制代码时,所述device内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
5.根据权利要求4所述的方法,其特征在于,
在所述host中存储有所述第一二进制代码时,
所述host向所述云端发送请求,用于请求所述云端将存储在所述云端的所述第二二进制代码发送给所述host,具体包括:
所述host向所述云端发送请求,用于请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述host并存储在所述host中的。
6.根据权利要求5所述的方法,其特征在于,
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述host向所述云端发送请求,用于请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一二进制代码,具体包括:
所述host向所述云端发送请求,用于请求所述云端在确定所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述host,所述请求包括所述第一标识。
7.根据权利要求2至6任一项所述的方法,其特征在于,所述host接收所述云端发送的所述第二二进制代码之后,还包括:
所述host存储所述第二二进制代码。
8.根据权利要求2至6任一项所述的方法,其特征在于:
所述第二运行参数信息包括所述host和所述device之间的数据拷贝速度和所述第二二进制代码的数据并行度。
9.根据权利要求8所述的方法,其特征在于,所述host获取所述device在执行所述第二二进制代码时,所述device内参与执行所述第二二进制代码的硬件的第二运行参数信息之后,还包括:
所述host根据所述第二二进制代码的数据并行度除以所述device的硬件并发信息的值,设置所述device中每一计算单元需处理的数据量。
10.一种应用更新方法,其特征在于:
接收移动终端发送的请求;
根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息;所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
接收所述移动终端返回的所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
11.根据权利要求10所述的方法,其特征在于:
所述第二二进制代码是根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
12.根据权利要求10所述的方法,其特征在于:
所述第二二进制代码是根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
13.根据权利要求12所述的方法,其特征在于,在所述移动终端中存储有所述第一二进制代码时,
所述接收移动终端发送的请求,包括:
接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;
所述根据所述请求,向所述移动终端发送第二二进制代码,具体包括:
比较所述第二二进制代码和所述第一二进制代码是否相同,在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
14.根据权利要求13所述的方法,其特征在于:
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述接收所述移动终端发送的请求,所述请求包括所述第一二进制代码,包括:
接收所述移动终端发送的请求,所述请求包括所述第一标识;
所述比较所述第二二进制代码和所述第一二进制代码是否相同,在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码,具体包括:
比较所述第一标识和所述第二标识是否相同,在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
15.一种应用更新方法,其特征在于:
移动终端向云端发送请求,用于请求所述云端将存储在所述云端内的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述云端接收所述请求,根据所述请求将所述第二二进制代码发送给所述移动终端;
所述移动终端接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
所述移动终端将所述第二运行参数信息发送给所述云端;
所述云端接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
16.根据权利要求15所述的方法,其特征在于:
所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
17.根据权利要求15所述的方法,其特征在于:
所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
18.根据权利要求17所述的方法,其特征在于,
在所述移动终端中存储有所述第一二进制代码时,
所述移动终端向云端发送请求,具体包括:
所述移动终端向所述云端发送请求,所述请求包括所述第一二进制代码;
所述云端接收所述请求,根据所述请求将所述第二二进制代码发送给所述移动终端,具体包括:
所述云端接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同,并在所述第一二进制代码和所述第二二进制代码不相同时,将所述第二二进制代码发送给所述移动终端。
19.根据权利要求18所述的方法,其特征在于:
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述移动终端向所述云端发送请求,所述请求包括所述第一二进制代码,具体包括:
所述移动终端向所述云端发送请求,所述请求包括所述第一标识;
所述云端接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同,并在所述第一二进制代码和所述第二二进制代码不相同时,将所述第二二进制代码发送给所述移动终端;具体包括:
所述云端接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述移动终端。
20.根据权利要求15至19任一项所述的方法,其特征在于,所述移动终端接收所述第二二进制代码之后,还包括:
所述移动终端存储所述第二二进制代码。
21.根据权利要求15至19任一项所述的方法,其特征在于:
所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。
22.一种移动终端,其特征在于,包括:
收发单元,用于向云端发送请求,以请求所述云端将存储在所述云端的第二二进制代码发送给所述收发单元,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述收发单元还用于接收所述云端发送的所述第二二进制代码;
执行单元,用于执行所述第二二进制代码以运行数据密集型应用程序,并获取所述执行单元在执行所述第二二进制代码时,所述执行单元内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
所述收发单元,还用于将所述第二运行参数信息发送给所述云端,以使所述云端依据所述第二运行参数信息对所述第二二进制代码进行更新。
23.根据权利要求22所述的移动终端,其特征在于,还包括存储单元:
所述存储单元用于存储所述第二二进制代码。
24.根据权利要求22或23所述的移动终端,其特征在于:
所述第二二进制代码是由所述云端根据缺省设置的运行参数信息对存储在所述云端的所述kernel代码进行编译得到的。
25.根据权利要求22或23所述的移动终端,其特征在于:
所述第二二进制代码是由所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述执行单元在执行所述第一二进制代码时,所述执行单元内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
26.根据权利要求25所述的移动终端,其特征在于:
在所述存储单元内存储有所述第一二进制代码时,
所述收发单元具体用于向所述云端发送请求,以请求所述云端在确定所述第二二进制代码和所述第一二进制代码不相同时,将所述第二二进制代码发送给所述收发单元,所述请求包括所述第一二进制代码,其中,所述第一二进制代码是由所述云端发送给所述收发单元并存储在所述存储单元中的。
27.根据权利要求26所述的移动终端,其特征在于:
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述收发单元具体用于向所述云端发送请求,以请求所述云端在确定所述第二标识和所述第一标识不相同时,将所述第二二进制代码发送给所述收发单元,所述请求包括所述第一标识。
28.根据权利要求22或23所述的移动终端,其特征在于:
所述第二运行参数信息包括所述执行单元和所述存储单元之间的数据拷贝速度和所述第二二进制代码的数据并行度。
29.一种云端,其特征在于,包括接收单元、发送单元和编译单元:
所述接收单元,用于接收移动终端发送的请求;
所述发送单元,用于根据所述请求,向所述移动终端发送第二二进制代码,以使所述移动终端执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,所述第二二进制代码实现的功能和kernel代码实现的功能相同,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
所述接收单元还用于接收所述移动终端返回的所述第二运行参数信息;
所述编译单元用于根据所述第二运行参数信息对所述第二二进制代码进行更新。
30.根据权利要求29所述的云端,其特征在于:
所述第二二进制代码是由所述编译单元根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
31.根据权利要求29所述的云端,其特征在于:
所述第二二进制代码是由所述编译单元根据第一运行参数信息对第一二进制代码进行更新得到的,所述第一运行参数是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
32.根据权利要求31所述的云端,其特征在于:
在所述移动终端内存储有所述第一二进制代码时,
所述接收单元具体用于接收所述移动终端发送的请求,所述请求包括所述第一二进制代码;
所述发送单元具体用于比较所述第二二进制代码和所述第一二进制代码是否相同,并在所述第二二进制代码和所述第一二进制代码不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
33.根据权利要求32所述的云端,其特征在于:
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时;
所述接收单元具体用于接收所述移动终端发送的请求,所述请求包括所述第一标识;
所述发送单元具体用于比较所述第一标识和所述第二标识是否相同;并在所述第一标识和所述第二标识不相同时,根据所述请求向所述移动终端发送所述第二二进制代码。
34.一种通信系统,其特征在于,包括移动终端和云端:
所述移动终端用于向所述云端发送请求,以请求所述云端将存储在所述云端内的第二二进制代码发送给所述移动终端,所述第二二进制代码实现的功能和kernel代码实现的功能相同;
所述云端用于接收所述请求,并根据所述请求将所述第二二进制代码发送给所述移动终端;
所述移动终端还用于接收所述第二二进制代码,执行所述第二二进制代码以运行数据密集型应用程序,并获取所述移动终端在执行所述第二二进制代码时,所述移动终端内参与执行所述第二二进制代码的硬件的第二运行参数信息,其中,所述数据密集型应用程序包括使用开放运算语言OpenCL编写的所述kernel代码,所述数据密集型应用程序用于实现所述移动终端的至少一项功能;其中,所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度;
所述移动终端还用于将所述第二运行参数信息发送给所述云端;
所述云端还用于接收所述第二运行参数信息,并根据所述第二运行参数信息对所述第二二进制代码进行更新。
35.根据权利要求34所述的通信系统,其特征在于:
所述移动终端还用于存储所述第二二进制代码。
36.根据权利要求34或35所述的通信系统,其特征在于:
所述第二二进制代码是所述云端根据缺省设置的运行参数信息对所述kernel代码进行编译得到的。
37.根据权利要求34或35所述的通信系统,其特征在于:
所述第二二进制代码是所述云端根据第一运行参数信息对存储在所述云端的第一二进制代码进行更新得到的,所述第一运行参数信息是所述移动终端在执行所述第一二进制代码时,所述移动终端内参与执行所述第一二进制代码的硬件的运行参数信息,所述第一二进制代码实现的功能和所述kernel代码实现的功能相同。
38.根据权利要求37所述的通信系统,其特征在于:
在所述移动终端中存储有所述第一二进制代码时,
所述移动终端具体用于向所述云端发送请求,所述请求包括所述第一二进制代码;
所述云端具体用于接收所述请求,根据所述请求比较所述第一二进制代码和所述第二二进制代码是否相同;并在所述第一二进制代码和所述第二二进制代码不相同时,所述云端将所述第二二进制代码发送给所述移动终端。
39.根据权利要求38所述的通信系统,其特征在于:
在第一标识用于表示所述第一二进制代码,第二标识用于表示所述第二二进制代码时,
所述移动终端具体用于向所述云端发送请求,所述请求包括所述第一标识;
所述云端具体用于接收所述请求,根据所述请求比较所述第一标识和所述第二标识是否相同,并在所述第一标识和所述第二标识不相同时,将所述第二二进制代码发送给所述移动终端。
40.根据权利要求34或35所述的通信系统,其特征在于:
所述第二运行参数信息包括所述移动终端内部的数据拷贝速度和所述第二二进制代码的数据并行度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410513946.8A CN104331302B (zh) | 2014-09-29 | 2014-09-29 | 一种应用更新方法、移动终端和通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410513946.8A CN104331302B (zh) | 2014-09-29 | 2014-09-29 | 一种应用更新方法、移动终端和通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104331302A CN104331302A (zh) | 2015-02-04 |
CN104331302B true CN104331302B (zh) | 2018-10-02 |
Family
ID=52406036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410513946.8A Active CN104331302B (zh) | 2014-09-29 | 2014-09-29 | 一种应用更新方法、移动终端和通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104331302B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628619B (zh) * | 2017-03-21 | 2020-11-06 | 比亚迪股份有限公司 | 程序更新方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576314A (zh) * | 2009-07-27 | 2012-07-11 | 先进微装置公司 | 具有横跨多个处理器的数据并行线程之映射处理逻辑 |
CN104011679A (zh) * | 2011-12-01 | 2014-08-27 | 超威半导体公司 | 异构并行处理平台的软件库 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533697B2 (en) * | 2007-02-14 | 2013-09-10 | The Mathworks, Inc. | Graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
US8762972B2 (en) * | 2011-02-08 | 2014-06-24 | Nokia Corporation | Methods and apparatuses for facilitating execution of applications requiring runtime compilation |
US9019286B2 (en) * | 2012-09-04 | 2015-04-28 | Massimo J. Becker | Remote GPU programming and execution method |
-
2014
- 2014-09-29 CN CN201410513946.8A patent/CN104331302B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576314A (zh) * | 2009-07-27 | 2012-07-11 | 先进微装置公司 | 具有横跨多个处理器的数据并行线程之映射处理逻辑 |
CN104011679A (zh) * | 2011-12-01 | 2014-08-27 | 超威半导体公司 | 异构并行处理平台的软件库 |
Also Published As
Publication number | Publication date |
---|---|
CN104331302A (zh) | 2015-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766148B (zh) | 一种异构集群及任务处理方法和装置 | |
CN111124656B (zh) | 用于向专用计算资源分配任务的方法、设备和计算机可读存储介质 | |
US10942716B1 (en) | Dynamic computational acceleration using a heterogeneous hardware infrastructure | |
Ben-Nun et al. | Groute: An asynchronous multi-GPU programming model for irregular computations | |
Ma et al. | Garaph: Efficient {GPU-accelerated} Graph Processing on a Single Machine with Balanced Replication | |
CN102520922B (zh) | 一种协作环境下的远程开发方法及其系统 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
Dorier et al. | Damaris: Addressing performance variability in data management for post-petascale simulations | |
CN101799760A (zh) | 生成任意目标架构的并行单指令多数据代码的系统和方法 | |
CN109426519A (zh) | 线内数据检查以进行工作量简化 | |
CN104025185A (zh) | 用于使用gpu控制器来预加载缓存的机制 | |
US20220222030A1 (en) | Methods and apparatus to improve screen sharing based on identification of irrelevant video frames from interactive context | |
KR20060053246A (ko) | 컴퓨터 프로세서 시스템 | |
CN106406820B (zh) | 一种网络处理器微引擎的多发射指令并行处理方法及装置 | |
CN104331302B (zh) | 一种应用更新方法、移动终端和通信系统 | |
US20230118303A1 (en) | Asynchronous distributed data flow for machine learning workloads | |
Tariq | An introduction to gpu computing and cuda architecture | |
Li | GPU performance modeling and optimization | |
Reaño et al. | Analyzing the performance/power tradeoff of the rCUDA middleware for future exascale systems | |
Igual et al. | Scheduling algorithms‐by‐blocks on small clusters | |
Ramachandran et al. | A Survey of AI Enabled Edge Computing for Future Networks | |
Faraji | Improving communication performance in GPU-accelerated HPC clusters | |
US9923726B2 (en) | RDMA transfers in mapreduce frameworks | |
Garcia | Refactoring software to heterogeneous parallel platforms | |
US20240103813A1 (en) | Compute engine with transpose circuitry |
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 |