CN112106023A - 卸载服务器和卸载程序 - Google Patents
卸载服务器和卸载程序 Download PDFInfo
- Publication number
- CN112106023A CN112106023A CN201980031664.5A CN201980031664A CN112106023A CN 112106023 A CN112106023 A CN 112106023A CN 201980031664 A CN201980031664 A CN 201980031664A CN 112106023 A CN112106023 A CN 112106023A
- Authority
- CN
- China
- Prior art keywords
- parallel processing
- performance
- processing
- unit
- performance measurement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 323
- 238000005259 measurement Methods 0.000 claims abstract description 109
- 108090000623 proteins and genes Proteins 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 62
- 230000006870 function Effects 0.000 claims description 38
- 238000012360 testing method Methods 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 33
- 238000011056 performance test Methods 0.000 claims description 29
- 238000000605 extraction Methods 0.000 claims description 28
- 238000012795 verification Methods 0.000 claims description 25
- 239000000284 extract Substances 0.000 claims description 18
- 238000004458 analytical method Methods 0.000 claims description 17
- 230000035772 mutation Effects 0.000 claims description 16
- 230000001133 acceleration Effects 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 11
- 230000002068 genetic effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 14
- 238000010191 image analysis Methods 0.000 description 9
- 238000009434 installation Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 6
- 230000018109 developmental process Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000006866 deterioration Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 241001564520 Myzostoma miki Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000010429 evolutionary process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3404—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
卸载服务器(1)具有:并行处理指定部(113),其确定应用程序的循环语句,且对各循环语句指定加速器中的并行处理指定语句进行编译;并行处理模式制作部(114),其制作并行处理模式,该并行处理模式指定是否对没有出现编译错误的循环语句进行并行处理;性能测定部(115),其编译并行处理模式的应用程序且配置在验证设备(14)中,执行性能测定处理;和可执行文件制作部(116),其编译最高处理性能的并行处理模式来制作可执行文件。
Description
技术领域
本发明涉及一种将功能处理自动卸载(分流)到GPU(Graphics Processing Unit:图形处理器)等加速器(accelerator)的卸载服务器(offload server:分流服务器)和卸载程序(offload program:分流程序)。
背景技术
近年来,IoT(Internet of Things:物联网)技术正在发展,接连出现通过网络使用云技术来分析在设备侧收集到的数据且使其可视化的应用程序。
现有IoT的服务大多为从设备到网络、应用程序一体化架构的封闭型(silos type)。但是,为了进一步降低成本而提供各种各样的服务,OpenIoT(开放式物联网)的概念引起瞩目,该OpenIoT是指多个应用程序共享设备,使云、网络、设备的资源动态合作来提供服务。
在OpenIoT中,期望共享城市中的多个团体所持有的监视摄像头,用于寻找迷路的孩子、发现恐怖分子等多种用途。但是,在该例子中,不管是在设备侧还是在云侧进行分析,将摄像头影像的图像处理用于多种用途都会使CPU计算资源庞大。
另一方面,近年来,为了应对IoT等各种各样的领域,使用CPU以外的异构的计算资源的情况正在增加。例如,开始由强化了GPU(Graphics Processing Unit)(加速器)的服务器进行图像处理,或者由FPGA(Field Programmable Gate Array:现场可编程门阵列)(加速器)来加速信号处理。在Amazon Web Services(亚马逊网络服务:AWS)(注册商标)中,提供了GPU实例、FPGA实例,还能按需使用这些资源。Microsoft(注册商标)使用FPGA来使检索高效化。
在OpenIoT环境中,期待使用服务协作技术等来创造出各种各样的应用程序,并且通过进一步有效使用高端硬件,能够期待运行的应用程序的高性能化。但是,为此需要与运行的硬件对应进行编程、设定。例如,要求有CUDA(Compute Unified DeviceArchitecture:统一计算设备架构)、OpenCL(Open Computing Language:开放计算语言)等大量的技术知识,难度较大。
为了在用户的IoT应用程序中能够易于使用GPU或FPGA而有以下要求。即,当在OpenIoT环境中部署所运行的图像处理、加密处理等的通用应用程序时,期望由OpenIoT的平台对应用逻辑进行分析,且自动将处理(任务)向GPU、FPGA卸载。
(Tacit Computing技术)
向面向OpenIoT的平台,作为用于在服务中自由使用设备的机制,而提出了TacitComputing技术(参照非专利文献1)。Tacit Computing是能够根据设备在该时间点保持的实时数据,按需发现保持用户所需的数据的设备并使用的技术。
图6是用于说明Tacit Computing的概要的图。
在Tacit Computing中,例如通过从具有DC(Data Center:数据中心)30的云层50、网络层60、设备层70这3层中发现适合向用户提供的服务的资源并使其协作,满足该用户的需要使服务继续(图6的附图标记a)。另外,为了应对3层的结构中的时时刻刻变化的状况,尽可能在接近产生数据的现场的设备层中进行处理(图6的附图标记b)。通过在更低的层中进行处理,能够削减网络流量(图6的附图标记c)、抑制隐私性高的数据的流出(图6的附图标记d)。
在该Tacit Computing中,作为其要素技术,使用实时数据检索技术和设备虚拟化技术。
实时数据检索技术是用于检索提供用户所需数据的设备的技术。作为IoT服务的例子,有在桥等设施上设置多个传感器来监视劣化状况等的服务。在该情况下,由于劣化状况不太可能急剧发展,因此,可以按数小时等的周期将多个点的传感器数据上传到云上,通过统计软件或机械学习来分析劣化状况的变化。与此相对,在向定点摄像头拍摄到的人物进行信息引导、警告警报等的服务的例子中,人物在摄像头中仅出现几秒左右,另外,可以说只有拍摄到该人物的摄像头的影像对该人物来说才是有意义的数据。这样,将在设备层产生且时时刻刻变化的数据称作实时数据。
为了检索用户所需的该实时数据,在Tacit Computing中,无需等待将数据上传到云层,而在下位层中配置进行分析的功能,在该下位层中检索实时数据。
例如,朋友参加了公路接力赛跑预选赛,想要自动连接拍摄到该朋友的摄像头的影像。在该情况下,例如当请求将朋友的运动员号码作为检索关键字时,在Tacit Computing中,在带有摄像头的网关10或网络边缘20中配置OpenCV(Open Source Computer VisionLibrary:开源计算机视觉库)等图像分析功能。然后,在接近摄像头的场所对影像进行分析,通过图像分析提取朋友的运动员号码,由此能够确定拍摄到朋友的摄像头。这样一来,在Tacit Computing中使用实时数据检索技术。
接着,在通过实时数据检索技术确定了想要利用的设备的情况下,需要实际使用该设备。IoT设备由多个制造商开发,使用时的协议、接口、地址等按每种设备而不同。因此,通过设备虚拟化技术来吸收各个设备中的接口的差异。
例如,在上述的例子中,根据获取摄像头影像那样的共同的请求,在带有摄像头的网关(Gateway)等中按每种设备设置适配器来进行协议等的转换,在此基础上进行与各个摄像头对应的请求。通过使用这种设备虚拟化技术,用户能够在没有意识到各个设备的差异的情况下来使用该设备。
(向GPU的卸载)
将GPU的计算能力用于图像处理以外的其他用途的GPGPU(General Purpose GPU:通用图形处理器)的开发环境CUDA正在发展。CUDA是面向GPGPU的开发环境。另外,作为用于将GPU、FPGA、多核CPU等的异构硬件统一地进行处理的标准规格,还出现了OpenCL。
在CUDA或OpenCL中,通过C语言的扩展来进行编程。但是,需要描述GPU等设备与CPU之间的内存拷贝、释放等,描述的难度高。实际上,掌握CUDA或OpenCL的技术人员数量并不多。
为了易于执行GPGPU而存在以下技术:在指令形式(在源代码中插入命令行的形式)下,指定应该进行loop语句等并行处理的位置,编译器(compiler)按照指令将其转换为面向设备的代码。作为技术规范有OpenACC(Open Accelerator)等,作为编译器有PGI编译器(注册商标)等。例如,在使用OpenACC的例子中,用户在由C/C++/Fortran语言来书写的代码中指定由OpenACC指令来进行并行处理等。PGI编译器检查代码的并行可能性,生成GPU用、CPU用执行二进制,来实现执行模块化。IBM JDK(注册商标)支持将符合Java(注册商标)的lambda形式的并行处理指定卸载给GPU的功能。通过使用这些技术,程序员无需意识到向GPU存储器的数据分配等。
这样,能够通过OpenCL、CUDA、OpenACC等技术向GPU进行卸载处理。
现有技术文献
非专利文献
非专利文献1:Y.Yamato,N.Hoshikawa,H.Noguchi,T.Demizu and M.Kataoka,“Astudy to optimize heterogenesous resources for Open IoT,”2017FifthInternational Symposium on Computing and Networking(CANDAR 2017),pp.609-611,Nov.2017.
非专利文献2:Y.Tanaka,M.Yoshimi.M.Miki and T.Hiroyasu,“EvaluationofOptimization Method for Fortran Codes with GPU AutomaticParallelizationCompiler,”IPSJ SIG Technical Report,2011(9),pp.1-6,2011.
非专利文献3:Y.Yamato,M.Muroi,K.Tanaka and M.Uchimura,“Development ofTemplate Management Technology for Easy Deployment of Virtual Resources onOpenStack,”Journal of Cloud Computing,Springer,2014,3:7,DOI:10.1186/s13677-014-0007-3,June2014.
非专利文献4:Y.Yamato,“Automatic verification technology of softwarepatches for user virtual environments on IaaS cloud,”Journal of CloudComputing,Springer,2015,4:4,DOI:10.1186/s13677-015-0028-6,Feb.2015.
发明内容
通过上述的OpenCL、CUDA、OpenACC等技术,能够向GPU进行卸载处理。
然而,即使能进行卸载处理本身,合适的卸载也有很多技术问题。例如,有Intel编译器(注册商标)那样的具有自动并行化功能的编译器。在自动并行化时,提取程序上的for语句(循环语句:iteration statements)等并行处理部。然而,在使用GPU并行地进行动作的情况下,由于CPU-GPU存储器间的数据交换附加处理,很多时候性能并不好。当使用GPU来加速时,技能持有者需要使用OpenCL或CUDA进行调优、使用PGI编译器等搜索合适的并行处理部。还有以下例子:在for语句少的标准应用程序中,对各for语句循环地尝试是否进行并行处理来进行性能测定,搜索最优的并行处理部(参照非专利文献2)。
这样,没有技能的用户难以使用GPU使应用程序高性能化,即使在使用自动并行化技术的情况下,是否并行进行for语句的试错调优等、直到开始使用为止要花费大量的时间。
本发明是鉴于该点而完成的,其要解决的技术问题在于,提供一种能够通过将应用程序的特定处理自动地卸载给加速器来提高整体的处理能力的卸载服务器和卸载程序。
为了解决上述技术问题,技术方案1所记载的发明是一种卸载服务器,该卸载服务器用于将应用程序的特定处理卸载到加速器,其特征在于,具有应用程序代码分析部、并行处理指定部(paralled processing specification part)、并行处理模式制作部、性能测定部和可执行文件制作部(executable file creation part),其中,所述应用程序代码分析部分析应用程序的源代码;所述并行处理指定部确定所述应用程序的循环语句,且针对所确定的各所述循环语句指定所述加速器中的并行处理指定语句进行编译;所述并行处理模式制作部制作并行处理模式,该并行处理模式是指:将出现编译错误(compile errors)的循环语句从卸载对象中排除,并且对没有出现编译错误的循环语句指定是否进行并行处理;所述性能测定部编译所述并行处理模式的所述应用程序且将其配置在加速器验证装置中,执行卸载到所述加速器时的性能测定处理;所述可执行文件制作部根据性能测定结果从多种所述并行处理模式中选择最高处理性能的并行处理模式,且编译最高处理性能的所述并行处理模式来制作可执行文件。
这样一来,能够将应用程序的特定处理自动地卸载给加速器,提高整体的处理能力。据此,例如即使是没有CUDA等技能的用户也能使用加速器进行高性能处理。另外,能够提高现有GPU中的没有深入研究高性能化的面向通用的加速器的应用程序的性能。另外,能够向不是高性能计算用服务器的通用的机器的加速器进行卸载。
技术方案2所记载的发明为,根据技术方案1所记载的卸载服务器,其特征在于,具有存储部和性能测定试验提取执行部,其中,所述存储部具有用于存储性能试验项目的试验案例数据库;在面向用户的正式环境中配置了可执行文件之后,所述性能测定试验提取执行部从试验案例数据库中提取性能试验项目且执行性能试验。
这样一来,能够执行自动卸载的性能试验来对性能试验项目进行试验。
技术方案3所记载的发明为,根据技术方案1所记载的卸载服务器,其特征在于,所述并行处理指定部具有卸载范围提取部和中间语言文件输出部,其中,所述卸载范围提取部确定能卸载到所述加速器的处理,且提取与卸载处理对应的中间语言;所述中间语言文件输出部输出中间语言文件,所述性能测定部在所述加速器验证装置中配置由中间语言导出的可执行文件,所述性能测定部使所述加速器验证装置执行所配置的二进制文件,且测定卸载时的性能,并且获取性能测定结果来返回给所述卸载范围提取部,所述卸载范围提取部进行其他的所述并行处理模式的提取,所述中间语言文件输出部根据所提取出的中间语言来试行性能测定,所述可执行文件制作部根据重复了规定次数的所述性能测定结果,来从多种所述并行处理模式中选择最高处理性能的并行处理模式,且编译最高处理性能的所述并行处理模式来制作可执行文件。
这样一来,通过提取与卸载处理对应的中间语言,输出中间语言文件,能够部署由中间语言导出的可执行文件。另外,为了搜索适宜的卸载区域而能够重复中间语言提取和可执行文件的部署。据此,能够从没有假想并行化的通用程序中自动提取适宜的卸载区域。
技术方案4所记载的发明为,根据技术方案1所记载的卸载服务器,其特征在于,所述可执行文件制作部在实际使用所述应用程序期间,在所述加速器验证装置中重复进行性能测定,选择最高处理性能的并行处理模式,编译最高处理性能的所述并行处理模式来制作可执行文件且在规定的时间配置在实际使用环境中。
这样一来,能够在实际向用户提供的正式环境中部署最高处理性能的可执行文件,作为服务而提供给用户。
技术方案5所记载的发明为,根据技术方案1所记载的卸载服务器,其特征在于,所述并行处理指定部根据遗传算法来将没有出现编译错误的循环语句的数量作为基因长度,所述并行处理模式制作部将进行加速处理的情况设为1或0中的任一方,且将不进行加速处理的情况设为另一方的0或1,将能否加速处理映射到基因模式,所述并行处理模式制作部准备将所述基因的各值随机地制作为1或0的指定个体数的所述基因模式,所述性能测定部按照各个体来编译指定了所述加速器中的并行处理指定语句的应用程序代码且将其配置在所述加速器验证装置中,所述性能测定部在所述加速器验证装置中执行性能测定处理,所述可执行文件制作部对全部个体进行性能测定,且以越是处理时间短的个体则适合度越高的方式进行评价,所述可执行文件制作部从全部个体中选择性能高的个体,且对所选择的个体进行交叉、突然变异的处理,来制作下一代的个体,且在指定代数的处理结束后选择最高性能的所述并行处理模式作为解。
这样一来,首先检查能并行的循环语句,接着使用GA(Genetic Algorithm:遗传算法)在验证环境下对能并行的循环语句群重复试行性能验证来搜索适宜的区域。集中到能并行的循环语句(例如for语句),在此基础上以基因部分的形式保持和重组能高速化的并行处理模式,由此能够从取得的庞大的并行处理模式中高效地搜索能高速化的模式。
技术方案6所记载的发明为,根据技术方案5所记载的卸载服务器,其特征在于,在中间代中生成了与以前相同的所述并行处理模式的基因的情况下,所述性能测定部不进行符合所述并行处理模式的应用程序代码的编译和性能测定而使用相同的值来作为性能测定值。
这样一来,省略与以前相同的基因模式的编译、测定,因此能够缩短处理时间。
技术方案7所记载的发明为,根据技术方案5所记载的卸载服务器,其特征在于,所述性能测定部将发生编译错误的应用程序代码和性能测定没有在规定时间内结束的应用程序代码作为超时来对待,将其性能测定值设定为规定的长时间。
这样一来,能够一边尽可能剩下能卸载的循环语句,一边通过调整超时时间来缩短处理时间。
技术方案8所记载的发明是一种卸载程序,其特征在于,该卸载程序用于使计算机作为技术方案1至技术方案7中任一技术方案所记载的卸载服务器来发挥功能。
这样一来,能够使用一般的计算机,来实现技术方案1至技术方案7中的任一技术方案所记载的卸载服务器的各功能。
发明效果
根据本发明,能够提供一种通过将应用程序的特定处理自动地向加速器卸载,能够提高整体的处理能力的卸载服务器和卸载程序。
附图说明
图1是表示包括本发明实施方式所涉及的卸载服务器的Tacit Computing系统的图。
图2是表示上述实施方式所涉及的卸载服务器的结构例的功能框图。
图3是表示使用上述实施方式所涉及的卸载服务器的GA的自动卸载处理的图。
图4是表示基于上述实施方式所涉及的卸载服务器的Simple GA的控制部(自动卸载功能部)的搜索样子的图,(a)是表示处理的搜索样子的图,(b)是表示for语句的基因序列映射的图。
图5A是说明上述实施方式所涉及的卸载服务器的安装的动作概要的流程图。
图5B是说明上述实施方式所涉及的卸载服务器的安装的动作概要的流程图。
图6是用于说明Tacit Computing的概要的图。
具体实施方式
接着,说明用于实施本发明的方式(以下称为“本实施方式”。)中的卸载服务器1等。
图1是表示包括本实施方式所涉及的卸载服务器1的Tacit Computing系统的图。
本实施方式所涉及的Tacit Computing系统的特征在于,除了图6所示的现有技术的Tacit Computing的结构以外,还包括卸载服务器1。卸载服务器1是将应用程序的特定处理卸载给加速器的卸载服务器。另外,卸载服务器1与位于云层50、网络层60、设备层70这三层的各装置以能够进行通信的方式来连接。
在图6所示的现有技术的Tacit Computing的系统中,当专门地发现并使用设备时,首先以能提供服务为前提,因此没有考虑成本和性能。然而,为了持续且合理地提供服务,需要通过提高性能等来降低运用成本。
Tacit Computing实现OpenIoT的一部分概念,该OpenIoT发现并使用适合用户的设备。但是,当在Tacit Computing中即兴地使用设备、使设备协作时,忽视成本等。例如,在上述的例子不是监视马拉松选手,而是使用城市中的摄像头监视恐怖分子或监护高龄者的情况下,要求持续合理地提供对摄像头影像进行图像分析的服务。
因此,在包含本实施方式所涉及的卸载服务器1的Tacit Computing系统中,通过在设备层70、网络层60、云层50的各个层中,适宜地进行功能配置或处理卸载来实现高效化。主要是实现将功能配置在3层的合适的位置来进行处理的功能配置高效化、和通过将图像分析等功能处理向GPU、FPGA等异构硬件卸载来实现高效化。在云层50中,具有GPU、FPGA等异构的HW(硬件)(下面称为“异构设备”。)的服务器正在增加。例如,在Microsoft(注册商标)公司的Bing检索中也使用FPGA。这样,合理有效使用异构设备,例如,通过将矩阵计算等卸载给GPU,或者将FFT(Fast Fourier Transform:快速傅里叶变换)计算等特定处理卸载给FPGA,来实现高性能化。
下面,对本实施方式所涉及的卸载服务器1进行卸载处理时的结构例进行说明,该卸载处理是Tacit Computing系统中的面向用户的服务使用的在后台进行的处理。
如上所述,Tacit Computing系统是按照用户的期望使用合适的设备,专门地服务化的系统。例如,在非专利文献1中,使用图像分析和网络摄像头来实现监视服务,该监视服务是指,切换城市中的摄像头来持续地监视作为对象的人的服务。在这种情况下假想以下情况:第一天以试用等形式向用户提供服务,在其后台进行图像分析的卸载处理,在第二天以后将图像分析卸载给GPU来以合理的价格提供监视服务。
图2是表示本发明实施方式所涉及的卸载服务器1的结构例的功能框图。
卸载服务器1是将应用程序的特定处理自动卸载给加速器的装置。
如图2所述,卸载服务器1构成为包括控制部11、输入输出部12、存储部13和验证设备14(Verification machine)(加速器验证装置)。
输入输出部12由通信接口和输入输出接口构成,其中,所述通信接口用于与属于云层、网络层和设备层的各设备等之间进行信息的收发;所述输入输出接口用于与触摸屏、键盘等输入装置、监视器等输出装置之间进行信息的收发。
存储部13由硬盘、闪存存储器、RAM(Random Access Memory)等构成。
在该存储部13中,存储试验案例DB(Test case database)DB131,并且暂时性存储用于执行控制部11的各功能的程序(卸载程序)、控制部11的处理所需的信息(例如,中间语言文件(Intermediate file)132)。
在试验案例DB131中存储性能试验项目。试验案例DB131存储与性能试验项目对应的价格(例如,IoT服务的收费信息)、性能(加速器的计算资源)等数据。
验证设备14包括GPU和FPGA(加速器)作为用于验证Tacit Computing的环境。
控制部11是负责卸载服务器1整体的控制的自动卸载功能部(AutomaticOffloading function)。控制部11例如通过未图示的CPU(Central Processing Unit)在RAM中展开并执行存储部13所存储的程序(卸载程序)来实现。
控制部11具有应用程序代码指定部(Specify application code)111、应用程序代码分析部(Analyze application code)112、并行处理指定部113、并行处理模式制作部114、性能测定部115、可执行文件制作部116、正式环境配置部(Deploy final binaryfiles to production environment)117、性能测定试验提取执行部(Extractperformance test cases and run automatically)118和用户提供部(Provide priceand performance to a user to judge)119。
<应用程序代码指定部111>
应用程序代码指定部111进行所输入的应用程序代码的指定。具体而言,应用程序代码指定部111确定向用户提供的服务的处理功能(图像分析等)。
<应用程序代码分析部112>
应用程序代码分析部112分析处理功能的源代码,掌握loop语句、FFT库调用等的结构。
<并行处理指定部113>
并行处理指定部113确定应用程序的循环语句,针对各循环语句,指定加速器中的并行处理指定语句进行编译。
并行处理指定部113具有卸载范围提取部(Extract offloadable area)113a和中间语言文件输出部(Output intermediate file)113b。
卸载范围提取部113a确定loop语句、FFT等能向GPU和FPGA卸载的处理,且提取与卸载处理对应的中间语言。
中间语言文件输出部113b输出所提取出的中间语言文件132。中间语言提取不是一次就结束,为了搜索合适的卸载区域、且为了通过试行来优化执行而重复进行中间语言提取。
<并行处理模式制作部114>
并行处理模式制作部114制作并行处理模式,该并行处理模式是指,将出现编译错误的循环语句排除在卸载对象外,并且指定是否对没有出现编译错误的循环语句进行并行处理。
<性能测定部115>
性能测定部115编译并行处理模式的应用程序,将其配置于验证设备14,执行向加速器卸载时的性能测定处理。
性能测定部115具有二进制文件配置部(Deploy binary files)115a。二进制文件配置部115a在具有GPU和FPGA的验证设备14中部署(配置)由中间语言导出的可执行文件。
性能测定部115执行所配置的二进制文件,测定卸载时的性能,并且使性能测定结果返回卸载范围提取部113a。在该情况下,卸载范围提取部113a进行其他的并行处理模式提取,中间语言文件输出部113b根据提取出的中间语言,试行性能测定(参照后述图3的附图标记e)。
<可执行文件制作部116>
可执行文件制作部116根据重复规定次数的性能测定结果,从多种并行处理模式中选择最高处理性能的并行处理模式,编译最高处理性能的并行处理模式而制作可执行文件。
<正式环境配置部117>
正式环境配置部117将制作的可执行文件配置在面向用户的正式环境中(“最终二进制文件向正式环境的配置”)。正式环境配置部117确定指定了最终的卸载区域的模式,且将其部署在面向用户的正式环境中。
<性能测定试验提取执行部118>
在配置了可执行文件之后,性能测定试验提取执行部118从试验案例DB131中提取性能试验项目,执行性能试验(“最终二进制文件向正式环境的配置”)。
在配置了可执行文件之后,为了向用户示出性能,性能测定试验提取执行部118从试验案例DB131中提取性能试验项目,自动执行所提取出的性能试验。
<用户提供部119>
用户提供部119向用户提示依据性能试验结果的价格和性能等信息(“价格和性能等信息向用户的提供”)。在试验案例DB131中存储有与性能试验项目对应的价格和性能等数据。用户提供部119读出与存储在试验案例DB131中的试验项目对应的价格和性能等数据,将其与上述性能试验结果一起提示给用户。用户基于被提示的价格和性能等信息来判断IoT服务的付费使用的开始。在此,在向正式环境的一并部署中可以使用非专利文献3的现有技术,另外,在性能自动试验中可以使用非专利文献4的现有技术。
[遗传算法的适用]
卸载服务器1在卸载的优化中能够使用GA。使用GA的情况下的卸载服务器1的结构如下所述。
即,并行处理指定部113根据遗传算法,将没有出现编译错误的循环语句的数量作为基因长度。并行处理模式制作部114设进行加速处理的情况为1或0中的任一方、且设没有进行加速处理的情况为另一方的0或1,将能否加速处理映射到基因模式。
并行处理模式制作部114准备将基因的各值随机地制作为1或0的指定个体数的基因模式,性能测定部115按照各个体,编译指定了加速器中的并行处理指定语句的应用程序代码,且配置在验证设备14中。性能测定部115在验证设备14中执行性能测定处理。
在此,在中间代中生成了与以前相同的并行处理模式的基因的情况下,性能测定部115使用相同的值作为性能测定值,而无需进行符合该并行处理模式的应用程序代码的编译、以及性能测定。
另外,性能测定部115将发生编译错误的应用程序代码、和性能测定没有在规定时间内结束的应用程序代码,作为超时来对待,而将其性能测定值设定为规定的长时间。
可执行文件制作部116对全部个体进行性能测定,以越是处理时间短的个体则适合度越高的方式进行评价。可执行文件制作部116从全部个体中选择性能高的个体,对所选择的个体进行交叉、突然变异的处理,制作下一代的个体。可执行文件制作部116在指定代数的处理结束后,选择最高性能的并行处理模式作为解。
下面,对如上述那样构成的卸载服务器1的自动卸载动作进行说明。
[自动卸载动作]
本实施方式的卸载服务器1是作为Tacit Computing的要素技术,适用于用户应用逻辑的GPU自动卸载技术的例子。
图3是表示使用卸载服务器1的GA的自动卸载处理的图。
如图3所示,卸载服务器1被适用于Tacit Computing的要素技术。卸载服务器1具有控制部(自动卸载功能部)11、试验案例DB131、中间语言文件132和验证设备14。
卸载服务器1获取用户所使用的应用程序代码(Application code)130。
用户利用OpenIoT资源(OpenIoTResources)15。OpenIoT资源15例如是各种设备(Device)151、具有CPU-GPU的装置152、具有CPU-FPGA的装置153、具有CPU的装置154。卸载服务器1将功能处理自动卸载给具有CPU-GPU的装置152、具有CPU-FPGA的装置153的加速器。
下面,参照图3的步骤编号来说明各部的动作。
<步骤S11:指定应用代码(Specify application code)>
在步骤S11中,应用程序代码指定部111(参照图2)确定向用户提供的服务的处理功能(图像分析等)。具体而言,应用程序代码指定部111进行所输入的应用程序代码的指定。
<步骤S12:分析应用代码(Analyze application code)>
在步骤S12中,应用程序代码分析部112(参照图2)分析处理功能的源代码,掌握loop语句、FFT库调用等的结构。
<步骤S13:提取卸载范围(Extract offloadable area)>
在步骤S13中,并行处理指定部113(参照图2)确定应用程序的循环语句,针对各循环语句,指定加速器中的并行处理指定语句进行编译。具体而言,卸载范围提取部113a(参照图2)确定loop语句、FFT等能向GPU和FPGA卸载的处理,提取与卸载处理对应的中间语言。
<步骤S14:输出中间文件(Output intermediate file)>
在步骤S14中,中间语言文件输出部113b(参照图2)输出中间语言文件132。中间语言提取不是一次就结束,为了搜索合适的卸载区域、且为了通过试行来优化而重复进行中间语言提取。
<步骤S15:编译错误(Compile error)>
并行处理模式制作部114(参照图2)制作并行处理模式,该并行处理模式是指,将出现编译错误的循环语句排除在卸载对象外,并且指定是否对没有出现编译错误的循环语句进行并行处理。
<步骤S21:部署二进制文件(Deploy binary files)>
在步骤S21中,二进制文件配置部115a(参照图2)在具有GPU和FPGA的验证设备14中部署由中间语言导出的可执行文件。
<步骤S22:测定性能(Measure performances)>
在步骤S22中,性能测定部115(参照图2)执行所配置的文件,测定卸载时的性能。
为了使卸载的区域更合适,将该性能测定结果返回给卸载范围提取部113a,卸载范围提取部113a进行其他模式的提取,中间语言文件输出部113b根据提取出的中间语言,试行性能测定(参照图3的附图标记e)。
如图3的附图标记e所示,控制部11反复执行上述步骤S12至步骤S22。总结控制部11的自动卸载功能如下。即,并行处理指定部113确定应用程序的循环处理语句,对各循环语句指定GPU中的并行处理指定语句且进行编译。然后,并行处理模式制作部114制作并行处理模式,该并行处理模式是指,将出现编译错误的循环语句排除在卸载对象外,并且指定对没有出现编译错误的循环语句是否进行并行处理。然后,二进制文件配置部115a对该并行处理模式的应用程序进行编译,且配置于验证设备14,性能测定部115在验证设备14中执行性能测定处理。可执行文件制作部116根据重复规定次数的性能测定结果,从多种并行处理模式中选择最高处理性能的模式,对选择模式进行编译来制作可执行文件。
<步骤S23:将最终的二进制文件配置到正式环境(Deploy final binary filesto production environment)>
在步骤S23中,正式环境配置部117确定指定了最终的卸载区域的模式,且部署在面向用户的正式环境中。
<步骤S24:提取并自动执行性能试验案例(Extract performance test casesand run automatically)>
在步骤S24中,在配置了可执行文件之后,为了向用户示出性能,性能测定试验提取执行部118从试验案例DB131中提取性能试验项目,自动执行所提取出的性能试验。
<步骤S25:提供价格和性能以供用户进行判断(Provide price and performanceto a user to judge)>
在步骤S25中,用户提供部119向用户提示基于性能试验结果的价格和性能等信息。用户根据所提示的价格和性能等信息来判断IoT服务的付费使用的开始。
假设上述步骤S11~步骤S25在用户使用IoT服务的后台进行、例如在暂时使用的第一天的期间进行等。另外,为了降低成本而在后台进行的处理也可以仅将功能配置优化及GPU和FPGA卸载作为对象。
如上所述,卸载服务器1的控制部(自动卸载功能部)11在适用于Tacit Computing的要素技术的情况下,为了进行功能处理的卸载,从用户所使用的应用程序的源代码中提取卸载的区域且输出中间语言(步骤S11~步骤S15)。自动卸载功能部11将由中间语言导出的可执行文件配置在验证设备14中并执行,且验证卸载效果(步骤S21~步骤S22)。在重复进行验证,确定了适宜的卸载区域之后,自动卸载功能部11在实际向用户提供的正式环境中部署可执行文件,作为服务来提供(步骤S23~步骤S25)。
[使用GA的GPU自动卸载]
GPU自动卸载是用于对GPU重复执行图3的步骤S12~步骤S22,最终得到在步骤S23中部署的卸载代码的处理。
GPU是一般不保证潜伏(latency),但适合通过并行处理提高生产量的设备。在IoT中运行的应用程序多种各样。IoT数据的加密处理、用于摄像头影像分析的图像处理、用于大量传感器数据分析的机械学习处理等具有代表性,这些处理多为重复性处理。因此,通过将应用程序的循环语句自动向GPU卸载来实现高速化。
但是,如现有技术所记载的那样,高速化需要适宜的并行处理。尤其是,在使用GPU的情况下,由于CPU与GPU之间的转储,大多数情况下如果数据量小或循环次数少则性能并不好。另外,根据存储器数据传送的时间等,有时能并行高速化的各个循环语句(还称为loop语句)的组合不是最快的。例如,在10个for语句(循环语句)中第1个、5个、10个这3个与CPU相比能够高速化的情况下,第1个、第5个、第10个这3个的组合不一定最快等。
为了指定适宜的并行区域,有时尝试使用PGI编译器,对for语句能否并行进行试错来优化。但是,试错花费大量的工作量,当作为IoT服务来提供时,有导致用户使用开始的延迟,成本也提高的问题。
因此,在本实施方式中,从没有假想并行化的通用程序中自动提取适宜的卸载区域。因此,实现首先检查能并行的for语句,接着使用GA对能并行的for语句群在验证环境下重复进行性能验证试行来搜索适宜的区域。集中到能并行的for语句,在此基础上以基因部分的形式保持和重组能高速化的并行处理模式,据此,从能取得的庞大的并行处理模式中高效地搜索可高速化的模式。
[基于Simple GA的控制部(自动卸载功能部)11的搜索样子]
图4是表示基于Simple GA的控制部(自动卸载功能部)11的搜索样子的图,(a)是表示处理的搜索样子的图,(b)是表示for语句的基因序列映射的图。
GA是模仿生物的进化过程的组合优化方法之一。GA的流程图为,初始化→评价→选择→交叉→突然变异→结束判定。
在本实施方式中,在GA中,使用使处理简化的Simple GA。Simple GA是简化的GA,其中,基因仅为1、0,轮盘赌选择、一点交叉、突然变异使一个位置的基因的值变为与其相反的值等。
<初始化>
在初始化中,检查应用程序代码的全部for语句能否并行之后,将能并行的for语句映射到基因序列。在进行GPU处理的情况下设为1,在不进行GPU处理的情况下设为0。对基因准备指定的个体数M,对1个for语句随机地进行1、0的分配。
具体而言,控制部(自动卸载功能部)11(参照图2)获取用户所使用的应用程序代码(Application code)130(参照图3),如图4中的(a)所示,根据应用程序代码130的代码模式(Code patterns)141检查for语句能否并行。如图4中的(b)所示,在从代码模式141中发现5个for语句的情况下(参照图4的附图标记f),对各for语句随机地分配1位,在此对5个for语句随机地分配5位的1或0。例如,在由CPU进行处理的情况下设为0,在输出给GPU的情况下设为1。但是,在该阶段中随机地分配1或0。
相当于基因长度的代码为5位,5位的基因长度的代码为25=32模式,例如为10001、10010、…。另外,在图4中的(a)中,示出代码模式141中的圆形标记(○标记)作为代码的样子。
<评价>
在评价中,进行部署和性能的测定(Deploy&performance measurement)(参照图4的附图标记g)。即,性能测定部115(参照图2)对相当于基因的代码进行编译且部署在验证设备14中来执行。性能测定部115进行标准测试性能测定。提高性能好的模式(并行处理模式)的基因的适合度。
<选择>
在选择中,根据适合度,选择高性能代码模式(Select high performance codepatterns)(参照图4的附图标记h)。性能测定部115(参照图2)根据适合度,选择指定的个体数的高适合度的基因。在本实施方式中,进行与适合度对应的轮盘赌选择和最高适合度基因的精英选择。
在图4中的(a)中,示出所选择的代码模式(Select code patterns)142中的圆形标记(○标记)减少到3个作为搜索样子。
<交叉>
在交叉中,按一定的交叉率Pc,在所选择的个体间在某一点更换一部分基因,制作子个体。
使轮盘赌选择的某一模式(并行处理模式)和另一模式的基因交叉。一点交叉的位置是任意的,例如在上述5位的代码中的第3位进行交叉。
<突然变异>
在突然变异中,按一定的突然变异率Pm,将个体基因的各值从0变为1或者从1变为0。
另外,为了避免局部解而导入突然变异。另外,也可以是为了削减运算量而不进行突然变异的方式。
<结束判定>
如图4中的(a)所示,进行交叉和突然变异后的下一代代码模式的生成(Generate nextgeneration code patterns after crossover&mutation)(参照图4的附图标记i)。
在结束判定中,重复进行指定的代数T次之后结束处理,将最高适合度的基因作为解。
例如,进行性能测定,选择10010、01001、00101这3个快的。下一代通过GA将这三个进行重组,例如创建新的模式(并行处理模式)10101(一例)。此时,将从0变为1等的突然变异任意地插入重组后的模式中。重复上述操作,找到最快的模式。确定指定代(例如,20代)等,将最后一代中剩余的模式作为最后的解。
<部署(配置)>
以相当于最高适合度的基因的、最高处理性能的并行处理模式,重新部署在正式环境中,且提供给用户。
<补充说明>
对存在相当数量的无法向GPU卸载的for语句(循环语句)的情况进行说明。例如,尽管for语句有200个,但能向GPU卸载的for语句为30个左右。在此,排除错误的for语句,对这30个进行GA。
在OpenACC中有编译器,该编译器提取并执行由指令#pragma acc kernels指定且面向GPU的字节码,由此能够进行GPU卸载。通过在该#pragma中写入for语句的命令,能够判定该for语句在GPU中是否运转。
例如在使用了C/C++的情况下,分析C/C++的代码,找出for语句。当找出for语句时,在OpenACC中使用作为并行处理的文法的#pragma acc kernels对for语句进行写入。详细而言,在空的#pragma acc kernels一个个地加入for语句进行编译,如果出现错误,则该for语句本身无法进行GPU处理,因此将其排除。这样一来,找出剩余的for语句。并且,将没有出现错误的for语句作为长度(基因长度)。如果没有错误的for语句为5个,则基因长度为5,如果没有错误的for语句为10,则基因长度为10。此外,无法进行并行处理的是将以前的处理用于下一次的处理这样的与数据有依存关系的情况。
以上是准备阶段。接着进行GA处理。
得到了具有与for语句的数量对应的基因长度的代码模式。首先随机地分配并行处理模式10010、01001、00101、…。进行GA处理,且进行编译。此时,尽管是能卸载的for语句,但有时会出现错误。其是for语句为分层结构(指定任一个均能进行GPU处理)的情况。在该情况下,可以留下错误的for语句。具体而言,有使其成为处理时间变长的形态而使其超时的方法。
在验证设备14进行部署,进行标准测试,例如如果是图像处理则通过该图像处理进行标准测试,其处理时间越短,则评价为适应度越高。例如,设为处理时间的倒数,处理时间花费10秒设适应度为1,处理时间花费100秒则设适应度为0.1,处理时间花费1秒则设适应度为10。
选择适应度高的for语句,例如从10个中选择3~5个,进行重组来创作新的代码模式。在制作途中,有时制作出与以前相同的代码模式。在该情况下,无需进行相同的标准测试,因此使用与以前相同的数据。在本实施方式中,将代码模式和其处理时间存储在存储部13中。
以上对基于Simple GA的控制部(自动卸载功能部)11的搜索样子进行了说明。下面说明卸载服务器1的安装。
[安装]
说明使用通用的PGI编译器来将C/C++应用程序自动卸载的安装。
C/C++语言在OSS(Open Source Software:开源软件)和proprietary软件的开发中有很高的人气,大量的应用程序是用C/C++语言开发的。为了确认一般用户所使用的应用程序的卸载,使用加密处理和图像处理等的OSS的通用应用程序。
GPU处理由PGI编译器来进行。PGI编译器是解释OpenACC的面向C/C++/Fortran的编译器。PGI编译器通过OpenACC的指令#pragma acc kernels(并行处理指定语句)指定for语句等能并行处理的处理部,据此能够提取并执行面向GPU的字节码,实现GPU卸载。并且,当for语句内的数据彼此依存而无法并行处理、或指定了嵌套(nest)的for语句的不同的多个层等时,会出现错误。
将来,在还统一使用FPGA时,需要一次提取OpenCL等的共同的中间语言,且在FPGA、GPU等异构设备中执行。在本实施方式中,专注于卸载部自动提取,因此,GPU处理本身委托给使用CUDA作为中间语言的PGI编译器。
<安装的动作概要>
说明安装的动作概要。
通过Perl 5(Perl版本5)进行安装,进行以下处理。
在开始下述图5的流程的处理之前,准备高速化的C/C++应用程序和对该C/C++应用程序进行性能测定的标准测试工具。
当有使用C/C++应用程序的请求时,在安装时首先分析C/C++应用程序的代码,找出for语句且进行计数。
面向CPU的通用应用程序没有假想并行化来安装。因此,首先,需要排除GPU无法处理的for语句。因此,对各for语句逐句试行插入并行处理的#pragma acc kernels指令,判定在编译时是否出现错误。编译错误有若干种类。有在for语句中调用了外部例行程序的情况、在嵌套for语句中重复指定了不同的层的情况、存在由于break等在途中打断for语句的处理的情况、与for语句的数据有依存关系的情况等。根据应用程序,编译时错误的种类各种各样,还有这些情况以外的情况,但编译错误被排除在处理对象外,不插入#pragma指令。
大多数情况下编译错误难以自动应对,另外即使应对也不会有效果。在调用外部例行程序的情况下,有时能够通过#pragma acc routine来避免编译错误,但大多数外部调用都是库,即使包含这些库进行GPU处理,该调用也成为瓶颈而导致性能并不好。由于是逐句试行for语句,因此,关于嵌套的错误,不会发生编译错误。另外,在由于break等途中打断的情况下,并行处理需要使循环次数固定化,而需要进行程序改造。在与数据有依存关系的情况下,本身无法进行并行处理。
在此,在即使进行并行处理也没有出现错误的loop语句的数量为a的情况下,a为基因长度。基因的1与有并行处理指令对应,0与无并行处理指令对应,将应用程序代码映射到长度a的基因。
图5A-图5B是说明安装的动作概要的流程图,图5A和图5B用连接符来连接。
使用面向C/C++的OpenACC编译器进行以下处理。
<代码解析>
在步骤S101中,应用程序代码分析部112(参照图2)进行C/C++应用程序的代码解析。
<loop语句确定>
在步骤S102中,并行处理指定部113(参照图2)确定C/C++应用程序的loop语句。
控制部(自动卸载功能部)11在步骤S103的循环起始端与步骤S106的循环终端之间,将步骤S104-S105的处理重复loop语句的数量。
在步骤S104中,并行处理指定部113针对各loop语句,由OpenACC指定并行处理(#pragma acc kernels)且进行编译。
在步骤S105中,在错误时,并行处理指定部113将#pragma acc kernels从该for语句中除去。
在步骤S107中,并行处理指定部113对没有出现编译错误的for语句的数量进行计数,作为基因长度。
<指定个体数模式准备>
接着,并行处理指定部113准备指定个体数的基因序列作为初始值。在此,随机地分配0和1来制作。
在步骤S108中,并行处理指定部113将C/C++应用程序代码映射到基因,进行指定个体数模式准备。
按照所准备的基因序列,将在基因的值为1的情况下指定并行处理的指令插入C/C++代码(例如参照图4中的(b)的#pragma指令)。
控制部(自动卸载功能部)11在步骤S109的循环起始端与步骤S117的循环终端之间,将步骤S110-S116的处理重复进行指定代数的次数。
另外,在上述重复进行指定代数的次数的过程中,进一步在步骤S110的循环起始端与步骤S114的循环终端之间,对步骤S111-S113的处理重复进行指定个体数的次数。即,在重复进行指定代数的次数的过程中,以嵌套状态进行指定个体数的次数的重复处理。
在步骤S111中,并行处理模式制作部114(参照图2)通过PGI编译器对按照基因模式指定了指令的C/C++代码进行编译。即,并行处理模式制作部114通过具有GPU的验证设备14上的PGI编译器对所制作的C/C++代码进行编译。
在此,在并行指定多个嵌套for语句的情况下等,有时出现编译错误。在该情况下,与超出性能测定时的处理时间的情况同样地对待。
在步骤S112中,性能测定部115(参照图2)在搭载CPU-GPU的验证设备14中部署可执行文件。
在步骤S113中,性能测定部115执行所配置的二进制文件,测定卸载时的标准测试性能。
在此,在中间代中,对与以前相同模式的基因不进行测定,而使用相同的值。即,在GA处理中,在产生与以前相同的模式的基因的情况下,不对该个体进行编译或性能测定,而使用与以前相同的测定值。
在步骤S115中,可执行文件制作部116(参照图2)以越是处理时间短的个体则适合度越高的方式进行评价,选择性能高的个体。
在步骤S116中,可执行文件制作部116对所选择的个体进行交叉、突然变异的处理,制作下一代的个体。对下一代的个体进行编译、性能测定、适合度设定、选择、交叉、突然变异处理。
即,针对全部个体,在测定了标准测试性能之后,按照标准测试处理时间来设定各基因序列的适合度。按照设定的适合度进行剩余的个体的选择。对所选择的个体进行交叉处理、突然变异处理、直接拷贝处理的GA处理,制作下一代的个体群。
在步骤S118中,可执行文件制作部116在指定代数的GA处理结束后,将相当于最高性能的基因序列的C/C++代码(最高性能的并行处理模式)作为解。
<GA的参数>
上述的个体数、代数、交叉率、突然变异率、适合度设定、选择方法是GA的参数。GA的参数例如也可以如以下那样设定。
所执行的Simple GA的参数、条件例如能够如以下那样。
基因长度:能并行的loop语句数量
个体数M:基因长度以下
代数T:基因长度以下
适应度:(处理时间)(-1/2)
处理时间越短则适合度越高。另外,通过使适合度为处理时间的(-1/2)次方,能够防止处理时间短的特定个体的适合度过高,搜索范围变窄。另外,在性能测定在一定时间内没有结束的情况下,为超时,视为处理时间为1000秒等长时间,计算适合度。该超时时间也可以按照性能测定特性而进行变更。
选择:轮盘赌选择
其中,还一并进行本代中的最高适合度基因既不进行交叉也不进行突然变异,而保留到下一代的精英保留。
交叉率Pc:0.9
突然变异率Pm:0.05
<成本性能>
对自动卸载功能的成本性能进行叙述。
当仅看NVIDIA Tesla等GPU板的硬件的价格时,搭载有GPU的机器的价格是通常的仅有CPU的机器的约2倍。但是,一般在数据中心等的成本中,硬件和系统开发成本在1/3以下,电费、维护和运营体制等的运营费超过1/3,服务定制等的其他费用在1/3左右。在本实施方式中,能够使在进行加密处理和图像处理等的应用程序中花费时间的处理的性能提高2倍以上。因此,即使服务器硬件价格本身达到2倍,也能充分预期成本效果。
<直到开始使用正式服务为止的时间>
对直到开始使用正式服务为止的时间进行叙述。
当设从编译到一次性能测定为3分钟左右时,在个体数为20且代数为20的GA中解的搜索最多花费20小时左右,但由于省略与以前相同的基因模式的编译、测定,因此,在8小时以下结束。在许多云、虚拟主机、网络服务中,实际情况为需要半天左右才能开始使用服务。在本实施方式中,例如在半天以内能自动卸载。因此,如果在半天以内自动卸载,最初能进行试用,则能够期待充分提高用户满意度。
为了在短时间内搜索到卸载部分,考虑由多个验证设备并行进行个体数相应的数量的性能测定。按照应用程序调整超时时间也能缩短时间。例如,在卸载处理花费CPU的执行时间的2倍的情况下,视为超时等。另外,个体数、代数越多发现高性能的解的可能性越高。但是,在使各参数最大的情况下,需要个体数×代数的编译和性能标准测试。因此,直到开始使用正式服务为止需要时间。在本实施方式中,尽管GA以少的个体数、代数来进行,但使交叉率Pc为高到0.9的值来大范围搜索,据此迅速找到某种程度的性能的解。
如以上说明的那样,本实施方式所涉及的卸载服务器1具有应用程序代码分析部112、并行处理指定部113和并行处理模式制作部114,其中,所述应用程序代码分析部112分析应用程序的源代码;所述并行处理指定部113确定应用程序的循环语句,对各循环语句指定加速器中的并行处理指定语句进行编译;所述并行处理模式制作部114制作并行处理模式,该并行处理模式是指,将出现编译错误的循环语句排除在卸载对象外,并且指定是否对没有出现编译错误的循环语句进行并行处理。另外,卸载服务器1具有性能测定部115和可执行文件制作部116,其中,所述性能测定部115编译并行处理模式的应用程序,配置在验证设备14中,且执行向加速器时的性能测定处理;所述可执行文件制作部116根据性能测定结果,从多种并行处理模式中选择最高处理性能的并行处理模式,编译最高处理性能的并行处理模式来制作可执行文件。
根据该结构,通过将应用程序的特定处理自动地向加速器卸载,能够提高整体的处理能力。据此,即使是没有CUDA等技能的用户也能使用GPU进行高性能处理。另外,能够使现有GPU中的没有深入研究高性能化的面向通用的CPU的应用程序高性能化。另外,能够向不是高性能计算用服务器的通用的机器的GPU进行卸载。
并且,在Tacit Computing等技术中,能够将面向用户在IoT中通用的应用程序(加密处理、图像处理等)在一定时间内向加速器卸载。由此,减少使CPU运转的虚拟机器等的服务器数量,结果能够实现成本降低。
例如,如图1所示,卸载服务器1在考虑了3个层(设备层、网络层、云层)的全部的基础上,对最优的层进行功能配置,由此能够使资源得到保障。由此,能够持续合理地提供用户所期望的服务。
本实施方式所涉及的卸载服务器1具有正式环境配置部117,该正式环境配置部117将所制作的可执行文件配置在面向用户的正式环境中。
根据该结构,即使是没有CUDA等技能的用户也能够使用GPU进行高性能处理。
本实施方式所涉及的卸载服务器1具有存储部13和性能测定试验提取执行部118,其中,所述存储部13具有存储性能试验项目的试验案例数据库131,在配置可执行文件之后,性能测定试验提取执行部118从试验案例DB131中提取性能试验项目,执行性能试验。
根据该结构,能够执行自动卸载的性能试验来对性能试验项目进行试验。
在本实施方式中,并行处理指定部113具有卸载范围提取部113a和中间语言文件输出部113b,其中,所述卸载范围提取部113a确定能向加速器卸载的处理,提取与卸载处理对应的中间语言;所述中间语言文件输出部113b输出中间语言文件132,具有二进制文件配置部115a,该二进制文件配置部115a在验证设备14中配置由中间语言导出的可执行文件,执行所配置的二进制文件,测定卸载时的性能,并且使性能测定结果返回到卸载范围提取部113a,卸载范围提取部113a进行其他的并行处理模式提取,中间语言文件输出部113b根据提取出的中间语言试行性能测定,可执行文件制作部116根据重复规定次数的性能测定结果,从多种并行处理模式中选择最高处理性能的并行处理模式,编译最高处理性能的并行处理模式来制作可执行文件。
根据该结构,通过提取与卸载处理对应的中间语言且输出中间语言文件,能够部署由中间语言导出的可执行文件。另外,能够为了搜索适宜的卸载区域搜索而重复中间语言提取和可执行文件的部署。据此,能够从没有假想并行化的通用程序中自动提取适宜的卸载区域。
在本实施方式中,可执行文件制作部116在实际使用应用程序期间,在验证设备14中重复进行性能测定,选择最高处理性能的并行处理模式,编译最高处理性能的并行处理模式来制作可执行文件,且在规定的时间配置在实际利用环境中。
根据该结构,能够在实际向用户提供的正式环境中部署最高处理性能的可执行文件,作为服务进行提供。因此,能够提高用户满意度。
在本实施方式中,并行处理指定部113根据遗传算法,将没有出现编译错误的循环语句的数量作为基因长度,并行处理模式制作部114设进行加速处理的情况为1或0中的任一方、且设不进行加速处理的情况为另一方的0或者1,将能否加速处理映射到基因模式,准备将基因的各值随机地制作为1或0的指定个体数的基因模式,性能测定部115按照各个体,编译指定了加速器中的并行处理指定语句的应用程序代码,配置在验证设备14中,在验证设备14中执行性能测定处理,可执行文件制作部116对全部个体进行性能测定,以越是处理时间短的个体则适合度越高的方式进行评价,从全部个体中选择性能高的个体,对所选择的个体进行交叉、突然变异的处理,制作下一代的个体,在指定代数的处理结束后,选择最高性能的并行处理模式作为解。
根据该结构,首先检查能并行的for语句,接着使用GA在验证环境下对能并行的for语句群重复试行性能验证,搜索适宜的区域。集中到能并行的for语句,在此基础上以基因部分的形式来保持和重组能高速化的并行处理模式,据此,从能取得的庞大的并行处理模式中高效地搜索可高速化的模式。
在本实施方式中,在中间代中生成了与以前相同的并行处理模式的基因的情况下,性能测定部115使用相同的值作为性能测定值,而无需进行符合该并行处理模式的应用程序代码的编译、以及性能测定。
根据该结构,省略与以前相同的基因模式的编译、测定,因此能够缩短处理时间。
在本实施方式中,性能测定部115将发生编译错误的应用程序代码、和性能测定没有在规定时间内结束的应用程序代码,作为超时来对待,而将其性能测定值设定为规定的长时间。
根据该结构,能够一边尽可能剩下能卸载的for语句,一边通过调整超时时间来缩短处理时间。
另外,在上述实施方式中说明的各处理中的、说明为自动地进行的处理的全部或者一部分还能够手动进行,或者说明为手动进行的处理的全部或者一部分还能够以公知的方法自动地进行。除此以外,除了特别记载的情况以外,在上述说明书和附图中示出的处理步骤、控制步骤、具体的名称、包含各种数据和参数的信息能够任意地变更。
另外,图示的各装置的各结构要素是功能概念性的,不一定需要物理性地如图示那样构成。即,各装置的分散或集成的具体方式并不限定于图示,还能够按照各种的负荷和使用状况等,将全部或者一部分按任意的单位而功能性或者物理性地分散或集成来构成。
另外,上述的各结构、功能、处理部、处理机构等例如也可以通过在集成电路中进行设计等来由硬件实现。另外,上述的各结构、功能等也可以由用于解释并执行处理器实现各个功能的软件来实现。实现各功能的程序、表、文件等的信息能够保存在存储器、硬盘、SSD(Solid State Drive)等记录装置、或者IC(Integrated Circuit)卡、SD(SecureDigital)卡、光盘等记录介质中。
另外,在本实施方式中,为了能够在限定的优化期间中找到组合优化问题的解,使用遗传算法(GA)的方法,但优化的方法也可以是任意的方法。例如,也可以是local search(局部搜索法)、Dynamic Programming(动态计划法)、这些方法的组合。
另外,在本实施方式中,使用面向C/C++的OpenACC编译器,但也可以是任意的编译器,只要能对GPU处理进行卸载即可。例如,也可以是Java lambda(注册商标)GPU处理、IBMJava 9SDK(注册商标)。另外,并行处理指定语句依赖于这些开发环境。
另外,在本实施方式中,作为循环语句(loop语句)示例出for语句,但还包含for语句以外的while语句和do-while语句。但是,指定循环的继续条件等的for语句更合适。
附图标记说明
1:卸载服务器;10:网关;11:控制部;12:输入输出部;13:存储部;14:验证设备(加速器验证装置);15:OpenIoT资源;20:网络边缘;111:应用程序代码指定部;112:应用程序代码分析部;113:并行处理指定部;113a:卸载范围提取部;113b:中间语言文件输出部;114:并行处理模式制作部;115:性能测定部;115a:二进制文件配置部;116:可执行文件制作部;117:正式环境配置部;118:性能测定试验提取执行部;119:用户提供部;130:应用程序代码;131:试验案例DB;132:中间语言文件;151:各种设备;152:具有CPU-GPU的装置;153:具有CPU-FPGA的装置;154:具有CPU的装置。
Claims (8)
1.一种卸载服务器,该卸载服务器用于将应用程序的特定处理卸载到加速器,其特征在于,
具有应用程序代码分析部、并行处理指定部、并行处理模式制作部、性能测定部和可执行文件制作部,其中,
所述应用程序代码分析部分析应用程序的源代码;
所述并行处理指定部确定所述应用程序的循环语句,且针对所确定的各所述循环语句指定所述加速器中的并行处理指定语句进行编译;
所述并行处理模式制作部制作并行处理模式,该并行处理模式是指:将出现编译错误的循环语句从卸载对象中排除,并且对没有出现编译错误的循环语句指定是否进行并行处理;
所述性能测定部编译所述并行处理模式的所述应用程序且将其配置在加速器验证装置中,执行卸载到所述加速器时的性能测定处理;
所述可执行文件制作部根据性能测定结果从多种所述并行处理模式中选择最高处理性能的并行处理模式,且编译最高处理性能的所述并行处理模式来制作可执行文件。
2.根据权利要求1所述的卸载服务器,其特征在于,
具有存储部和性能测定试验提取执行部,其中,
所述存储部具有用于存储性能试验项目的试验案例数据库;
在面向用户的正式环境中配置可执行文件之后,所述性能测定试验提取执行部从试验案例数据库中提取性能试验项目且执行性能试验。
3.根据权利要求1所述的卸载服务器,其特征在于,
所述并行处理指定部具有卸载范围提取部和中间语言文件输出部,其中,
所述卸载范围提取部确定能卸载到所述加速器的处理,且提取与卸载处理对应的中间语言;
所述中间语言文件输出部输出中间语言文件,
所述性能测定部在所述加速器验证装置中配置由中间语言导出的可执行文件,
所述性能测定部使所述加速器验证装置执行所配置的二进制文件,且测定卸载时的性能,并且获取性能测定结果来返回给所述卸载范围提取部,
所述卸载范围提取部进行其他的所述并行处理模式的提取,
所述中间语言文件输出部根据所提取出的中间语言来试行性能测定,
所述可执行文件制作部根据重复了规定次数的所述性能测定结果,来从多种所述并行处理模式中选择最高处理性能的并行处理模式,且编译最高处理性能的所述并行处理模式来制作可执行文件。
4.根据权利要求1所述的卸载服务器,其特征在于,
所述可执行文件制作部在实际使用所述应用程序期间,在所述加速器验证装置中重复进行性能测定,选择最高处理性能的并行处理模式,编译最高处理性能的所述并行处理模式来制作可执行文件且在规定的时间配置在实际使用环境中。
5.根据权利要求1所述的卸载服务器,其特征在于,
所述并行处理指定部根据遗传算法来将没有出现编译错误的循环语句的数量作为基因长度,
所述并行处理模式制作部将进行加速处理的情况设为1或0中的任一方,且将不进行加速处理的情况设为另一方的0或1,将能否进行加速处理映射到基因模式,
所述并行处理模式制作部准备将所述基因的各值随机地制作为1或0的指定个体数的所述基因模式,
所述性能测定部按照各个体来编译指定了所述加速器中的并行处理指定语句的应用程序代码且将其配置在所述加速器验证装置中,
所述性能测定部在所述加速器验证装置中执行性能测定处理,
所述可执行文件制作部对全部个体进行性能测定,且以越是处理时间短的个体则适合度越高的方式进行评价,
所述可执行文件制作部从全部个体中选择性能高的个体,且对所选择的个体进行交叉、突然变异的处理,来制作下一代的个体,且在指定代数的处理结束后选择最高性能的所述并行处理模式作为解。
6.根据权利要求5所述的卸载服务器,其特征在于,
在中间代中生成了与以前相同的所述并行处理模式的基因的情况下,所述性能测定部不进行符合所述并行处理模式的应用程序代码的编译和性能测定而使用相同的值来作为性能测定值。
7.根据权利要求5所述的卸载服务器,其特征在于,
所述性能测定部将发生编译错误的应用程序代码和性能测定没有在规定时间内结束的应用程序代码作为超时来对待,将其性能测定值设定为规定的长时间。
8.一种卸载程序,其特征在于,
该卸载程序用于使计算机作为权利要求1至7中任一项所述的卸载服务器来发挥功能。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018-090478 | 2018-05-09 | ||
JP2018090478 | 2018-05-09 | ||
PCT/JP2019/016180 WO2019216127A1 (ja) | 2018-05-09 | 2019-04-15 | オフロードサーバおよびオフロードプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112106023A true CN112106023A (zh) | 2020-12-18 |
Family
ID=68466961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980031664.5A Pending CN112106023A (zh) | 2018-05-09 | 2019-04-15 | 卸载服务器和卸载程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11106439B2 (zh) |
JP (1) | JP6927424B2 (zh) |
CN (1) | CN112106023A (zh) |
WO (1) | WO2019216127A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11188348B2 (en) * | 2018-08-31 | 2021-11-30 | International Business Machines Corporation | Hybrid computing device selection analysis |
JP7153678B2 (ja) * | 2020-01-22 | 2022-10-14 | ソフトバンク株式会社 | コンピュータ |
WO2021156954A1 (ja) * | 2020-02-04 | 2021-08-12 | 日本電信電話株式会社 | オフロードサーバ、オフロード制御方法およびオフロードプログラム |
US20230065994A1 (en) * | 2020-02-04 | 2023-03-02 | Nippon Telegraph And Telephone Corporation | Offload server, offload control method, and offload program |
JP7322978B2 (ja) * | 2020-02-04 | 2023-08-08 | 日本電信電話株式会社 | オフロードサーバ、オフロード制御方法およびオフロードプログラム |
WO2021166031A1 (ja) * | 2020-02-17 | 2021-08-26 | 日本電信電話株式会社 | オフロードサーバ、オフロード制御方法およびオフロードプログラム |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050081220A1 (en) * | 2003-09-26 | 2005-04-14 | Victor Yodaiken | Systems and methods for dynamically linking application software into a running operating system kernel |
KR20110081486A (ko) * | 2010-01-08 | 2011-07-14 | 세메스 주식회사 | 기판 처리 장치 |
US20120185881A1 (en) * | 2011-01-13 | 2012-07-19 | Begeman Nathaniel C | Debugging Support For Core Virtual Machine Server |
US20130055224A1 (en) * | 2011-08-25 | 2013-02-28 | Nec Laboratories America, Inc. | Optimizing compiler for improving application performance on many-core coprocessors |
US20130174132A1 (en) * | 2011-12-29 | 2013-07-04 | American Express Travel Related Services Company, Inc. | Systems and methods for data brick creation and use |
US20140325495A1 (en) * | 2013-04-25 | 2014-10-30 | Nec Laboratories America, Inc. | Semi-Automatic Restructuring of Offloadable Tasks for Accelerators |
KR101474857B1 (ko) * | 2013-10-15 | 2014-12-19 | 한국기계연구원 | 경사식 베드를 갖는 롤 터닝형 융복합 가공머신 |
CN104380250A (zh) * | 2014-05-21 | 2015-02-25 | 华为技术有限公司 | 一种动态创建可附加和可拆除二进制文件的系统和方法 |
CN105209925A (zh) * | 2013-04-16 | 2015-12-30 | 爱德万测试公司 | 在用于编译自动化半导体器件测试的测试计划的开发环境内实施编辑并更新功能性 |
CN105302716A (zh) * | 2014-07-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 合流开发模式下的测试方法、装置 |
CN106250179A (zh) * | 2016-07-26 | 2016-12-21 | 北京北森云计算股份有限公司 | 通过多语言云编译实现系统动态功能拦截扩展的方法 |
CN107210931A (zh) * | 2015-01-02 | 2017-09-26 | 希斯泰克公司 | 控制基础架构 |
CN107301079A (zh) * | 2017-05-22 | 2017-10-27 | 南京南瑞继保电气有限公司 | 一种计算机程序语言的编译方法和编译器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5966538A (en) * | 1997-10-31 | 1999-10-12 | Hewlett-Packard Company | Method and apparatus for automatically determining which compiler options should be used when compiling a computer program |
JP5017410B2 (ja) * | 2010-03-26 | 2012-09-05 | 株式会社東芝 | ソフトウェア変換プログラム、および、計算機システム |
JP5589204B2 (ja) * | 2010-12-24 | 2014-09-17 | 株式会社日立製作所 | 性能分析方法、計算機システム及び性能分析プログラム |
US9483324B2 (en) * | 2012-06-26 | 2016-11-01 | Nec Corporation | Program conversion device and method, process switching method, method of determining execution scheme and program storage medium therefor, processor system, and parallel execution scheme |
US9104505B2 (en) * | 2013-10-03 | 2015-08-11 | International Business Machines Corporation | Acceleration prediction in hybrid systems |
EP3021224B1 (en) * | 2014-11-17 | 2018-03-07 | Fujitsu Limited | Method and apparatus for producing a benchmark application for performance testing |
JP6492977B2 (ja) * | 2015-06-01 | 2019-04-03 | 富士通株式会社 | 並列演算装置、並列演算システム、ノード割当プログラム及びノード割当方法 |
-
2019
- 2019-04-15 CN CN201980031664.5A patent/CN112106023A/zh active Pending
- 2019-04-15 US US17/053,155 patent/US11106439B2/en active Active
- 2019-04-15 WO PCT/JP2019/016180 patent/WO2019216127A1/ja active Application Filing
- 2019-04-15 JP JP2020518216A patent/JP6927424B2/ja active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050081220A1 (en) * | 2003-09-26 | 2005-04-14 | Victor Yodaiken | Systems and methods for dynamically linking application software into a running operating system kernel |
KR20110081486A (ko) * | 2010-01-08 | 2011-07-14 | 세메스 주식회사 | 기판 처리 장치 |
US20120185881A1 (en) * | 2011-01-13 | 2012-07-19 | Begeman Nathaniel C | Debugging Support For Core Virtual Machine Server |
US20130055224A1 (en) * | 2011-08-25 | 2013-02-28 | Nec Laboratories America, Inc. | Optimizing compiler for improving application performance on many-core coprocessors |
US20130174132A1 (en) * | 2011-12-29 | 2013-07-04 | American Express Travel Related Services Company, Inc. | Systems and methods for data brick creation and use |
CN105209925A (zh) * | 2013-04-16 | 2015-12-30 | 爱德万测试公司 | 在用于编译自动化半导体器件测试的测试计划的开发环境内实施编辑并更新功能性 |
US20140325495A1 (en) * | 2013-04-25 | 2014-10-30 | Nec Laboratories America, Inc. | Semi-Automatic Restructuring of Offloadable Tasks for Accelerators |
KR101474857B1 (ko) * | 2013-10-15 | 2014-12-19 | 한국기계연구원 | 경사식 베드를 갖는 롤 터닝형 융복합 가공머신 |
CN104380250A (zh) * | 2014-05-21 | 2015-02-25 | 华为技术有限公司 | 一种动态创建可附加和可拆除二进制文件的系统和方法 |
CN105302716A (zh) * | 2014-07-30 | 2016-02-03 | 腾讯科技(深圳)有限公司 | 合流开发模式下的测试方法、装置 |
CN107210931A (zh) * | 2015-01-02 | 2017-09-26 | 希斯泰克公司 | 控制基础架构 |
CN106250179A (zh) * | 2016-07-26 | 2016-12-21 | 北京北森云计算股份有限公司 | 通过多语言云编译实现系统动态功能拦截扩展的方法 |
CN107301079A (zh) * | 2017-05-22 | 2017-10-27 | 南京南瑞继保电气有限公司 | 一种计算机程序语言的编译方法和编译器 |
Non-Patent Citations (2)
Title |
---|
XIE XIE等: ""Scheduling Parallel Machines with a Single Server: A Dedicated Case"", 《2012 FIFTH INTERNATIONAL JOINT CONFERENCE ON COMPUTATIONAL SCIENCES AND OPTIMIZATION》 * |
刘晓娴: ""面向共享存储结构的并行编译优化技术研究"", 《中国优秀博硕士学位论文全文数据库 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2019216127A1 (ja) | 2020-12-10 |
US11106439B2 (en) | 2021-08-31 |
JP6927424B2 (ja) | 2021-08-25 |
WO2019216127A1 (ja) | 2019-11-14 |
US20210240457A1 (en) | 2021-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112106023A (zh) | 卸载服务器和卸载程序 | |
JP7063289B2 (ja) | オフロードサーバのソフトウェア最適配置方法およびプログラム | |
US8887056B2 (en) | System and method for configuring cloud computing systems | |
US20140047227A1 (en) | System and method for configuring boot-time parameters of nodes of a cloud computing system | |
US20140047272A1 (en) | System and method for configuring a cloud computing system with a synthetic test workload | |
US20140047079A1 (en) | System and method for emulating a desired network configuration in a cloud computing system | |
WO2014025584A1 (en) | System and method for tuning a cloud computing system | |
JP7322978B2 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
CN112997146A (zh) | 卸载服务器和卸载程序 | |
US20230065994A1 (en) | Offload server, offload control method, and offload program | |
WO2022097245A1 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
JP7473003B2 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
JP7363930B2 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
US11947975B2 (en) | Offload server, offload control method, and offload program | |
WO2020235087A1 (ja) | オフロードサーバおよびオフロードプログラム | |
WO2022102071A1 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
WO2023228369A1 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
WO2023002546A1 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
Yamato et al. | Proposal of Automatic GPU Offloading Technology on Open IoT Environment | |
WO2024079886A1 (ja) | オフロードサーバ、オフロード制御方法およびオフロードプログラム | |
WO2022208137A1 (en) | Managing deployment of an application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |