CN105700854B - 运行应用任务的方法及装置 - Google Patents
运行应用任务的方法及装置 Download PDFInfo
- Publication number
- CN105700854B CN105700854B CN201410686611.6A CN201410686611A CN105700854B CN 105700854 B CN105700854 B CN 105700854B CN 201410686611 A CN201410686611 A CN 201410686611A CN 105700854 B CN105700854 B CN 105700854B
- Authority
- CN
- China
- Prior art keywords
- code
- program
- arm
- machine
- instruction set
- 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
Abstract
本发明公开了运行应用任务的方法及装置,其中,该方法包括:读取x86机器上的高速并行计算mapreduce程序;从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。本发明方案能够实现在ARM平台上基于mapreduce程序运行应用任务。
Description
技术领域
本发明涉及信息处理技术,尤其涉及运行应用任务的方法及装置。
背景技术
高速并行计算(MapReduce)程序,是一种编程模型,用于大规模数据集的并行计算。这个模型非常方便使用,它具有并行计算、错误容灾、本地优化以及负载均衡等优点;该模型允许开发人员使用自己熟悉的语言进行调用,如Java、C#、C++等。例如,Goole使用MapReduce程序提供网页搜索服务、排序、数据挖掘、机器学习等应用任务。
MapReduce程序例如Phoenix程序等,斯坦福大学开发的Phoenix程序是一种轻量级的MapReduce程序,使用C/C++语言开发,它的内核只有不到500K。
通常地,在x86机器上基于MapReduce程序运行应用任务,以实现多个应用任务并行运行。
发明人在实践中发现,对于ARM平台,目前还没有在ARM平台上运行MapReduce程序的技术,只能对应用任务单行执行,效率较低。ARM处理器,是面向低端市场的基于精简指令集计算机(RISC,Reduced Instruction Set Computer)的微处理器,它具有体积小、低功耗、低成本、高性能等优点。基于ARM平台的设备例如机、平板电脑等等手持设备,其使用越来越广泛。如果能够实现在ARM平台上基于mapreduce程序运行应用任务,将进一步满足需求。
发明内容
本发明提供了一种运行应用任务的方法,该方法能够实现在ARM平台上基于mapreduce程序运行应用任务。
本发明提供了一种运行应用任务的装置,该装置能够实现在ARM平台上基于mapreduce程序运行应用任务。
一种运行应用任务的方法,该方法包括:
读取x86机器上的高速并行计算mapreduce程序;
从mapreduce程序中提取x86指令集的机器代码;
将提取的x86指令集的机器代码转换为ARM指令集的机器代码;
从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;
将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。
一种运行应用任务的装置,该装置包括程序获取模块、转换模块和移植模块;
所述程序获取模块,读取x86机器上的高速并行计算mapreduce程序,发送给所述转换模块;
所述转换模块,从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;得到修改后的mapreduce程序,发送给所述移植模块;
所述移植模块,将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。
从上述方案可以看出,本发明中,读取x86机器上的mapreduce程序;从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。采用本发明方案,使mapreduce程序在ARM平台上能够正常运行,实现在ARM平台上基于mapreduce程序运行应用任务,从而,在ARM平台上并行运行应用任务,提高了性能和效率,进一步满足了需求。
附图说明
图1为本发明运行应用任务的方法示意性流程图;
图2为本发明运行应用任务的方法流程图实例;
图3为本发明运行应用任务的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
现有方案中,只能在x86机器上基于MapReduce程序运行应用任务,而对于ARM平台,还没有运行MapReduce程序的技术。采用MapReduce框架运行应用任务可以有利于并行计算、任务的容错等,同时,越来越多的应用场景需要在手持设备(如手机、平板电脑等)等ARM平台上运行应用任务,而ARM平台无法运行需要大量资源调度的程序,急需一种基于MapReduce模型的消耗资源较小的框架用来在ARM平台上运行应用任务,所述应用任务例如智能分析任务,包括人脸检测、车牌检测等。
针对该情形,对x86机器上的MapReduce程序和ARM平台进行分析后,本发明提出图1所示的运行应用任务的方法,以使mapreduce程序在ARM平台上能够正常运行,实现在ARM平台上基于mapreduce程序运行应用任务。
图1的流程包括以下步骤:
步骤101,读取x86机器上的mapreduce程序。
通过分析发现,x86机器上的mapreduce程序包含x86指令集的机器代码和x86汇编代码,针对这两部分,分别进行转换。
步骤102,从mapreduce程序中提取x86指令集的机器代码。
x86指令集的机器代码例如C语言实现的代码。
步骤103,将提取的x86指令集的机器代码转换为ARM指令集的机器代码。
x86指令集的机器代码运行在x86平台上,若需正常运行在ARM平台,则需进行转换。
本步骤可采用多种方式实例,例如,将x86指令集的每一条机器代码逐条改写为ARM指令集的机器代码;或者,采用编译器对所有机器代码进行一次性转换,具体地:
设置生成ARM架构机器代码的编译器,将提取的x86指令集的机器代码输入该编译器,进行交叉编译,转换得到ARM指令集的机器代码。生成ARM构架机器代码的编译器,具有将x86指令集的机器代码转换为ARM指令集的机器代码的功能。
步骤104,从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码。
本步骤可采用多种方式实现,可直接将x86汇编代码改写为对应的ARM汇编代码;还可以,采用如下方式:
将提取的x86汇编代码修改为对应ARM平台的机器代码;
将改写得到的ARM平台机器代码修改为ARM汇编代码。
步骤102和104可同时执行。
步骤105,将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。
将修改得到的mapreduce程序移植到ARM机器上,便可基于MapReduce程序运行应用任务,以实现多个应用任务并行运行。
所述mapreduce程序具体如Phoenix程序等,斯坦福大学开发的Phoenix程序是一种轻量级的MapReduce程序,使用C/C++语言开发,它的内核只有不到500K。在x86机器上的实验效果中,显示运行时对内存、CPU的消耗量很小,能够支持大于500个线程并行计算,整体运算时间也较少。将MapReduce程序移植到ARM平台后,将大大提高性能和效率。
进一步地,为了对移植到ARM平台上的MapReduce程序进行测试,提高其准确度,本发明还包括以下测试方案:
将x86机器上的mapreduce程序表示为第一版程序,基于第一版程序运行应用任务集,得到输出结果,表示为第一输出结果;
将移植到ARM机器上的mapreduce程序表示为第二版程序;所述将修改得到的mapreduce程序移植到ARM机器上之后,在ARM平台上运行测试用例,基于第二版程序运行应用任务集,得到输出结果,表示为第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则对第二版程序进行修改,直至结果一致为止。
上述应用任务集用于对第一版程序和第二版程序进行调测比较,包含至少两个应用任务;该应用任务集例如为同时在20遍文章中搜索指定文字。上述测试用例用于执行测试,启动第二版程序运行应用任务集,得到第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则提示对第二版程序进行修改,而后继续下一次测试,直至结果一致为止。如果结果不一致,表明第二版程序运行过程出现错误,调用运行记录,可获知其中的某一条代码出错,与第一版程序的相应代码进行比较,对其进行修改;而后,继续调试,对后续各条出错的代码逐一进行修改,直至结果一致为止。
采用本发明方案,使mapreduce程序在ARM平台上能够正常运行,实现在ARM平台上基于mapreduce程序运行应用任务,从而,实现在ARM平台上并行运行应用任务,提高了性能和效率,进一步满足了需求。
下面通过图2的流程,对本发明运行应用任务的方法进行实例说明,其包括以下步骤:
步骤201,读取x86机器上的高速并行计算mapreduce程序,将x86机器上的mapreduce程序表示为第一版程序,基于第一版程序运行应用任务集,得到输出结果,表示为第一输出结果。
本实例是基于Linux系统进行开发和测试的,mapreduce程序具体为Phoenix程序,先在x86机器的Linux环境上运行Phoenix程序的完整源码,运行应用任务集,完全成功并保存输出结果,标注该版本为v1.0版本。
步骤202,从mapreduce程序中提取x86指令集的机器代码。
步骤203,设置生成ARM架构机器代码的编译器,将提取的x86指令集的机器代码输入该编译器,进行交叉编译,转换得到ARM指令集的机器代码。
步骤204,从mapreduce程序中提取x86汇编代码。
步骤205,将提取的x86汇编代码修改为对应ARM平台的机器代码。
具体地,将提取的x86汇编代码用C语言改写为ARM平台上对应的代码,例如将atomic.h源码文件中的test_and_set函数,使用C语言实现。首先分析X86每一条汇编指令实现的具体功能,然后将每一个函数采用C语言实现。
下面是对X86汇编代码的举例:
对该函数进行分析,发现该操作是原子交换操作,采用C语言实现原子交换的功能,修改后的函数如下:
以上是对原子交换操作的相应代码进行修改的实例,其他汇编代码也类似逐一改写为C语言。
所要改写的汇编代码主要集中在源码文件atomic.h,该文件针对X86和CPU_V9定义编写了针对内存和寄存器的一些操作,实际应用时,源文件msc.c和tpool.c引用该文件相关操作。下面再例举一些需要修改的汇编函数:
Static inline uintptr_t atomic_xchg(uintptr_t n,uintptr_t*v)
//该汇编函数的功能是:数据交换原子操作。
Static inline void flush(void*addr)
//该汇编函数的功能是:缓冲区刷新。
Static inline uintptr_t atomic_read(void*addr)
//该汇编函数的功能是:数据读取原子操作。
Static inline int test_and_set(uintptr_t*n)
//该汇编函数的功能是:首先判断输入值是否为1,如果是1,则返回0,否则返回1。
Static inline unsigned int fetch_and_inc(unsigned int*n)
//该汇编函数的功能是:先获取某内存地址值并在该内存地址值上加1操作。
Static inline int cmp_and_swp(uintptr_t v,uintptr_t*cmper,uintptr_tmatcher))
//该汇编函数的功能是:数据比较和交换操作。
步骤206,将改写得到的ARM平台机器代码修改为ARM汇编代码。
步骤207,将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。
步骤208,将移植到ARM机器上的mapreduce程序表示为第二版程序;所述将修改得到的mapreduce程序移植到ARM机器上之后,在ARM平台上运行测试用例,基于第二版程序运行应用任务集,得到输出结果,表示为第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则对第二版程序进行修改,直至结果一致为止。
将移植到ARM平台的mapreduce程序命名为V2.0版本。对x86机器上运行v1.0和ARM平台上运行v2.0进行对比测试。具体实现时,可建立大量测试用例,在x86机器上和ARM平台上分别反复对应各版本进行应用任务的执行,将x86机器上运行v1.0和ARM平台上运行v2.0的输出结果进行对比,保证这两个版本输出结果是一致。根据对比测试结果反馈修改ARM移植过程中的bug,并生成一个最终版本V3.0,保证可以在ARM平台上有效使用。
智能分析任务传统上都是在基于x86的集群服务器内进行,采用MapReduce框架运行可以有利于并行计算、任务的容错等,同时,越来越多的应用场景需要在手持设备(如手机、平板电脑等)上运行智能分析任务,手持设备基于ARM的较多,无法运行需要大量资源调度的程序,急需一种基于MapReduce模型的消耗资源较小的框架用来在ARM平台上运行智能分析任务,如人脸检测、车牌检测等。斯坦福大学开发的Phoenix程序的内核只有不到500K,在x86机器上的实验效果显示运行时对内存、CPU的消耗量很小,整体运算时间也较少。但是Phoenix程序不支持ARM指令集,本实施例针对Phoenix作相应处理,而后移植到ARM平台。通过本实施例,有助于实现在基于ARM处理器的手持设备上使用Phoenix技术进行高速并发计算。
参见图3,为本发明运行应用任务的装置结构示意图,该装置包括程序获取模块、转换模块和移植模块;
所述程序获取模块,读取x86机器上的高速并行计算mapreduce程序,发送给所述转换模块;
所述转换模块,从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;得到修改后的mapreduce程序,发送给所述移植模块;
所述移植模块,将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务。
较佳地,所述转换模块包括机器代码转换子模块和汇编代码转换子模块;
所述机器代码转换子模块,从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;
所述汇编代码转换子模块,从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码。
较佳地,所述机器代码转换子模块,从mapreduce程序中提取x86指令集的机器代码,设置生成ARM架构机器代码的编译器,将提取的x86指令集的机器代码输入该编译器,进行交叉编译,转换得到ARM指令集的机器代码。
较佳地,所述汇编代码转换子模块,从mapreduce程序中提取x86汇编代码,将提取的x86汇编代码修改为对应ARM平台的机器代码;将改写得到的ARM平台机器代码修改为ARM汇编代码。
进一步地,为了对移植到ARM平台上的mapReduce程序进行测试,提高其准确度,该装置还包括调试模块,将x86机器上的mapreduce程序表示为第一版程序,将移植到ARM机器上的mapreduce程序表示为第二版程序;所述程序获取模块,还基于第一版程序运行应用任务集,得到输出结果,表示为第一输出结果,将第一输出结果发送给所述调试模块;
所述调试模块,在ARM平台上运行测试用例,基于第二版程序运行应用任务集,得到输出结果,表示为第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则对第二版程序进行修改,直至结果一致为止。
上述应用任务集用于对第一版程序和第二版程序进行调测比较,包含至少两个应用任务;该应用任务集例如为同时在20遍文章中搜索指定文字。上述测试用例用于执行测试,启动第二版程序运行应用任务集,得到第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则提示对第二版程序进行修改,而后继续下一次测试,直至结果一致为止。如果结果不一致,表明第二版程序运行过程出现错误,调用运行记录,可获知其中的某一条代码出错,比较第一版程序的相应代码,对其进行修改;而后,继续调试,已对后续的各条代码进行修改,直至结果一致为止。
具体实现时,本发明提供的该装置可与x86机器和ARM平台机器都建立连接,以根据需要对两者进行访问,完成mapreduce程序的移植。例如,该装置通过互联网对两者建立连接访问。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种运行应用任务的方法,其特征在于,该方法包括:
读取x86机器上的高速并行计算mapreduce程序;
从mapreduce程序中提取x86指令集的机器代码;
将提取的x86指令集的机器代码转换为ARM指令集的机器代码;
从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;所述将其修改为ARM汇编代码的方式包括:将提取的x86汇编代码修改为对应ARM平台的机器代码;将改写得到的ARM平台机器代码修改为ARM汇编代码;其中,所述将提取的x86汇编代码修改为对应ARM平台的机器代码包括:分析x86每一条汇编指令实现的具体功能,并将所述x86汇编代码中每一个函数采用C语言实现;
将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务;
将x86机器上的mapreduce程序表示为第一版程序,基于第一版程序运行应用任务集,得到输出结果,表示为第一输出结果;
将移植到ARM机器上的mapreduce程序表示为第二版程序;所述将修改得到的mapreduce程序移植到ARM机器上之后,在ARM平台上运行测试用例,基于第二版程序运行应用任务集,得到输出结果,表示为第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则对第二版程序进行修改,直至结果一致为止;其中,所述对第二版程序进行修改的方法包括:调用运行记录,以获知其中出错的代码,将该出错的代码与所述第一版程序的相应代码进行比较,以便对出错的代码进行修改。
2.如权利要求1所述的方法,其特征在于,所述将提取的x86指令集的机器代码转换为ARM指令集的机器代码包括:
设置生成ARM架构机器代码的编译器,将提取的x86指令集的机器代码输入该编译器,进行交叉编译,转换得到ARM指令集的机器代码。
3.如权利要求1所述的方法,其特征在于,所述x86指令集的机器代码使用高级语言编写,所述mapreduce程序包含Phoenix程序。
4.一种运行应用任务的装置,其特征在于,该装置包括程序获取模块、转换模块、移植模块和调试模块;
所述程序获取模块,读取x86机器上的高速并行计算mapreduce程序,发送给所述转换模块;
所述转换模块,从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码;从mapreduce程序中提取x86汇编代码,将其修改为ARM汇编代码;得到修改后的mapreduce程序,发送给所述移植模块;其中,所述转换模块包括汇编代码转换子模块,用于从mapreduce程序中提取x86汇编代码,分析x86每一条汇编指令实现的具体功能,并将所述x86汇编代码中每一个函数采用C语言实现以得到ARM平台机器代码;将得到的ARM平台机器代码修改为ARM汇编代码;
所述移植模块,将修改得到的mapreduce程序移植到ARM机器上,用以在ARM平台上基于mapreduce程序运行应用任务;
所述调试模块,将x86机器上的mapreduce程序表示为第一版程序,将移植到ARM机器上的mapreduce程序表示为第二版程序;所述程序获取模块,还基于第一版程序运行应用任务集,得到输出结果,表示为第一输出结果,将第一输出结果发送给所述调试模块;
其中,所述调试模块,在ARM平台上运行测试用例,基于第二版程序运行应用任务集,得到输出结果,表示为第二输出结果,比较第一输出结果和第二输出结果是否一致,如果不是,则对第二版程序进行修改,直至结果一致为止;其中,所述调试模块根据下述方式对第二版程序进行修改:调用运行记录,以获知其中出错的代码,将该出错的代码与所述第一版程序的相应代码进行比较,以便对出错的代码进行修改。
5.如权利要求4所述的装置,其特征在于,所述转换模块包括机器代码转换子模块;
所述机器代码转换子模块,从mapreduce程序中提取x86指令集的机器代码;将提取的x86指令集的机器代码转换为ARM指令集的机器代码。
6.如权利要求5所述的装置,其特征在于,所述机器代码转换子模块,从mapreduce程序中提取x86指令集的机器代码,设置生成ARM架构机器代码的编译器,将提取的x86指令集的机器代码输入该编译器,进行交叉编译,转换得到ARM指令集的机器代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410686611.6A CN105700854B (zh) | 2014-11-25 | 2014-11-25 | 运行应用任务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410686611.6A CN105700854B (zh) | 2014-11-25 | 2014-11-25 | 运行应用任务的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105700854A CN105700854A (zh) | 2016-06-22 |
CN105700854B true CN105700854B (zh) | 2019-05-28 |
Family
ID=56941644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410686611.6A Active CN105700854B (zh) | 2014-11-25 | 2014-11-25 | 运行应用任务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105700854B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111240987B (zh) * | 2020-01-16 | 2024-03-08 | 北京奇艺世纪科技有限公司 | 移植程序检测方法、装置、电子设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364442A (zh) * | 2011-06-24 | 2012-02-29 | 浙大网新科技股份有限公司 | 将Wine从x86移植到ARM平台的方法 |
CN103838614A (zh) * | 2014-02-19 | 2014-06-04 | 华为技术有限公司 | 一种数据处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080250231A1 (en) * | 2007-04-03 | 2008-10-09 | Kabushiki Kaisha Toshiba | Program code conversion apparatus, program code conversion method and recording medium |
-
2014
- 2014-11-25 CN CN201410686611.6A patent/CN105700854B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364442A (zh) * | 2011-06-24 | 2012-02-29 | 浙大网新科技股份有限公司 | 将Wine从x86移植到ARM平台的方法 |
CN103838614A (zh) * | 2014-02-19 | 2014-06-04 | 华为技术有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105700854A (zh) | 2016-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ben-Nun et al. | A modular benchmarking infrastructure for high-performance and reproducible deep learning | |
EP2368189B1 (en) | Debugging pipeline | |
JP2017520842A (ja) | ソフトウェア分析のためのシステムおよび方法 | |
Viñas et al. | Exploiting heterogeneous parallelism with the Heterogeneous Programming Library | |
US11789913B2 (en) | Integration of model execution engine containers with a model development environment | |
CN104115120A (zh) | 将程序执行从编译代码变换到解释代码 | |
US11327722B1 (en) | Programming language corpus generation | |
Langhammer et al. | Automated extraction of rich software models from limited system information | |
US20160371175A1 (en) | Computing platform and method thereof for searching, executing, and evaluating computational algorithms | |
Häfner et al. | Veros v0. 1–A fast and versatile ocean simulator in pure Python | |
Larsen et al. | Tensorflow graph optimizations | |
CN105700854B (zh) | 运行应用任务的方法及装置 | |
US11740875B2 (en) | Type inference in dynamic languages | |
Acosta et al. | Performance analysis of paralldroid generated programs | |
Chen et al. | Instant bug testing service for linux kernel | |
Song et al. | Reusing metadata across components, applications, and languages | |
Aumüller et al. | Running experiments with confidence and sanity | |
Singh | An Empirical Study of Programming Languages from the Point of View of Scientific Computing | |
Sim et al. | Cslim: automated extraction of iot functionalities from legacy c codebases | |
CN117075907B (zh) | 应用程序编译方法、系统、编译器及存储介质 | |
Gibson | Deep learning on a low power gpu | |
Zhao et al. | A review on refactoring sequential program to parallel code in multicore era | |
Ko et al. | Hardware-in-the-loop simulation of Android GPGPU applications | |
Shaw | Towards evaluating Python as a suitable data science programming language for modern computing architecture | |
Skantz | Performance Evaluation of Kotlin Multiplatform Mobile and Native iOS Development in Swift |
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 |