JP6839673B2 - アプリケーション分割装置、方法およびプログラム - Google Patents
アプリケーション分割装置、方法およびプログラム Download PDFInfo
- Publication number
- JP6839673B2 JP6839673B2 JP2018026047A JP2018026047A JP6839673B2 JP 6839673 B2 JP6839673 B2 JP 6839673B2 JP 2018026047 A JP2018026047 A JP 2018026047A JP 2018026047 A JP2018026047 A JP 2018026047A JP 6839673 B2 JP6839673 B2 JP 6839673B2
- Authority
- JP
- Japan
- Prior art keywords
- application
- function
- divided
- division
- functions
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Description
(構成)
図1は、この発明の一実施形態に係るアプリケーション分割装置を含むシステムの一例を示す概略構成図である。
このシステムは、通信ネットワークNWを介して通信可能なアプリケーション分割装置1と、アプリケーションの分散処理を担うエッジサーバESV1,ESV2,…ESVi(まとめてエッジサーバESVと言う)と、1または複数のエッジサーバESVを介してクラウド上のアプリケーションを利用可能なユーザ端末UT1,UT2,UT3,UT4,…UTj(以後まとめてユーザ端末UTと言う)を備えている。ユーザ端末UTには、例えば、スマートフォン、ラップトップコンピュータ、自動車、その他のIoT機器が用いられる。なお、図示したユーザ端末UTは一例にすぎず、固定端末であっても移動端末であってもよく、任意の数の様々な機器を含み得る。また、ユーザ端末UTは、必ずしもエッジサーバESVを経由する必要はなく、エッジサーバESVを経由せずに通信ネットワークNWを介してクラウド上に配置されたアプリケーションを利用することもできる。
アプリケーション分割装置1は、通信インタフェースユニット11と、処理ユニット12と、記憶ユニット13とを備えている。
次に、以上のように構成されたアプリケーション分割装置1による情報処理動作を説明する。図3はその処理手順と処理内容を示すフローチャートである。
アプリケーション分割装置1は、ステップS30によりアプリケーション分割処理を開始するトリガの有無を監視している。この状態で、例えばアプリ開発者またはシステム管理者が管理用端末を通じてアプリケーション分割処理の開始要求を入力し、この開始要求をトリガとして受け取ると、アプリケーション分割装置1は以下の処理を実行する。
アプリケーション分割装置1は、ステップS31において、ソースコード取得部121の制御の下、例えばアプリ管理サーバから分散処理の対象であるアプリケーションのソースコードを取得する。なお、アプリケーションのソースコードを、アプリ開発者またはシステム管理者が使用する管理用端末から取得するようにしてもよい。
アプリケーション分割装置1は、ステップS32において、ソースコード分割部122の制御の下、ソースコード内で定義される複数の関数を識別し、ソースコードを複数の関数に分割する。
アプリケーション分割装置1は、ステップS33において、分割された関数の各々について、複数の行を含むか否かを判定する。関数が1行の処理からなる場合、さらなる分割は実行されず、ステップS37に移行する。関数が複数の行を含む場合、ステップS34に移行する。
ここで、アプリケーションを異なるマシンに分散配置することを前提として、関数を行単位の処理に分割しようとする場合、関数は単純に1行ごとに分割することができない。これは、ソースコード内に分割が可能な箇所と不可能な箇所が存在するためである。例えば図5において、図中左のfor文を図のように分割し、上の処理から順番に実行したとすると、L2の処理とL3の処理の実行順序が変わってしまい、a[i]に格納される数値が変わってしまう。これはL3の出力データがL2の入力データになっている(データ依存関係にある)ためである。このような分割は、元の関数の出力結果、ひいてはアプリケーション全体の動作を変えてしまいかねないため、行うべきではない。また、if文やbreak文など、当該処理の結果によって、それ以降の処理を実行するか否かが決まる処理、つまり制御依存関係にある処理も、実行順序が逆転するとアプリケーションの動作が変わってしまう場合があるため、分割時には注意する必要がある。
ルール1) 互いにデータ依存関係および制御依存関係がない2つの処理は分割可能
ルール2) 互いにデータ依存関係または制御依存関係にある2つの処理において、分割による実行順序の逆転がなければ、その処理は分割可能
ルール3) 互いにデータ依存関係にある2つの処理において、直列化および直列化復元が標準設定されているデータ型で依存している場合、その処理は分割可能
上記ルールを用いることによって、開発者が定義した関数を、異なるマシンに配置できる形で、かつアプリケーション全体の動作を変えることなく分割することができる。
図4は、図3のステップS34において判定部123により実行される判定処理の一例を示すフローチャートである。判定部123は、上記判定ルールに従い、2つの処理が分割可能か否かを判定することにより、各関数について、さらに分割可能な箇所を識別する。
アプリケーション分割装置1は、ステップS35において、ステップS34の判定結果を受け取り、対象の関数について分割可能な箇所があったか否かを判定する。分割可能な箇所があった場合、アプリケーション分割装置1は、ステップS36に移行して、関数分割部124の制御の下、分割可能な箇所で関数をさらに複数の関数へと分割する。ステップS35において、分割可能な箇所がないと判定された場合、ステップS36をスキップしてステップS37に移行する。
次いで、アプリケーション分割装置1は、ステップS38において、分散配置部125の制御の下、アプリケーションを複数のマシンで分散的に動作させるため、各マシンへの関数の最適な分散配置を決定する。すなわち、アプリケーションのソースコード内で定義されたすべての関数について、ステップS36において複数の関数へと分割された関数は分割後の関数ごとに、分割されなかった関数はその関数ごとに、要求される性能を最大化できる配置先マシンを決定する。
一実施形態に係るアプリケーション分割装置1によりアプリケーションが分散配置されたシステムの有効性を確認するために、例えば、インターネットのGithub.com(https://github.com/MinhasKamal/GenderRecognizer)で公開されている顔認識アプリケーションを用い、以下の環境を想定して比較検証を行った。
(i)スマートフォンやノートPCなどのユーザ端末と、クラウドの、2種類のマシンが存在する。
(ii)ユーザ端末が所持している画像に対して顔認識を行い、性別情報が付与された顔の写真のみをクラウド上に保存する。(そのため、顔の写真をマシン上に出力する処理はクラウドを想定したマシン以外には配置できないという条件がある。)
(iii)最大化するアプリケーション性能は、ユーザ端末とクラウドとの間の、アプリケーション層におけるトラヒックとする。
(iv)顔認識を行う対象は、25人の人物が写っている集合写真(423[KB])とする。
(関数1)snipFace関数:顔検出を行い、写真からその部分だけ切り取る。
(関数2)predict関数:入力された顔写真に写っている人が、男性か女性かを認識する。
(関数3)main関数:snipFace関数を呼び出して顔写真の枚数をカウントし、すべての顔写真に対してPredict関数を呼び出し、その結果を顔写真に付与してマシン上に出力する。
以上詳述したように、この発明の一実施形態では、アプリケーションのソースコードが取得され、該ソースコード内で定義される複数の関数が識別され、該ソースコードが先ず複数の関数に分割される。そして、分割された関数の各々について、あらかじめ設定された判定ルールに従い、さらに行単位で分割可能か否かが判定され、行単位で分割可能であると判定された場合、関数がさらに行単位で複数のロジック(関数)へと分割される。
なお、この発明は上記実施形態に限定されるものではない。
例えば、図1に示した実施形態では、エッジサーバESV1,ESV2,…ESViがアプリケーションの分散処理を担うものとして説明したが、図6に例示されるように、分割されたアプリケーションロジックがアプリケーションを利用するユーザ端末UT上で実行されるものとすることもできる。同様に、分割されたアプリケーションロジックがクラウド上で実行されることもできる。
Claims (7)
- 複数の情報処理装置によって分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置であって、
前記アプリケーションのソースコードを取得する取得部と、
前記ソースコード内で定義される複数の関数を識別し、前記ソースコードを前記複数の関数に分割する第1の分割部と、
分割された前記関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かを判定する判定部と、
分割可能であると判定された場合、前記関数を1または複数の行を含む複数の関数に分割する第2の分割部と、
前記第1の分割部および前記第2の分割部により分割された複数の関数を前記複数の情報処理装置に割り当てる分散配置部と
を具備するアプリケーション分割装置。 - 前記分散配置部は、
前記ソースコード内で定義される複数の関数のうち、前記第2の分割部により分割されていない関数については関数単位で、前記第2の分割部により分割された関数については分割後の関数単位で、前記複数の情報処理装置への最適な分散配置を決定する配置決定部を備える、請求項1に記載のアプリケーション分割装置。 - 前記判定部は、前記ルールに従い、2つの処理の間にデータ依存関係および制御依存関係が存在しないと判定されたことに基づいて、前記2つの処理が分割可能であると判定する、請求項1に記載のアプリケーション分割装置。
- 前記判定部は、前記ルールに従い、2つの処理の間にデータ依存関係または制御依存関係が存在するが前記2つの処理を分割した場合に実行順序の逆転がないと判定されたことに基づいて、前記2つの処理が分割可能であると判定する、請求項1に記載のアプリケーション分割装置。
- 前記判定部は、前記ルールに従い、2つの処理が、直列化および直列化復元可能に標準設定されていないデータ型によるデータ依存関係があると判定されたことに基づいて、前記2つの処理が分割可能でないと判定する、請求項1に記載のアプリケーション分割装置。
- 複数の情報処理装置によって分散処理されるアプリケーションを複数のロジックに分割するアプリケーション分割装置が実行する、アプリケーション分割方法であって、
前記アプリケーションのソースコードを取得する過程と、
前記ソースコード内で定義される複数の関数を識別し、前記ソースコードを前記複数の関数に分割する第1の分割過程と、
分割された前記関数の各々について、あらかじめ設定されたルールに従い、さらに分割可能か否かを判定する過程と、
分割可能であると判定された場合、前記関数を1または複数の行を含む複数の関数に分割する第2の分割過程と、
前記第1の分割過程および前記第2の分割過程において分割された複数の関数を前記複数の情報処理装置に割り当てる過程と
を具備するアプリケーション分割方法。 - 請求項1乃至請求項5のいずれかに記載の装置の各部による処理をプロセッサに実行させるプログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018026047A JP6839673B2 (ja) | 2018-02-16 | 2018-02-16 | アプリケーション分割装置、方法およびプログラム |
US16/969,506 US11269623B2 (en) | 2018-02-16 | 2019-02-14 | Application division device, method and program |
PCT/JP2019/005265 WO2019160008A1 (ja) | 2018-02-16 | 2019-02-14 | アプリケーション分割装置、方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018026047A JP6839673B2 (ja) | 2018-02-16 | 2018-02-16 | アプリケーション分割装置、方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019144656A JP2019144656A (ja) | 2019-08-29 |
JP6839673B2 true JP6839673B2 (ja) | 2021-03-10 |
Family
ID=67618682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018026047A Active JP6839673B2 (ja) | 2018-02-16 | 2018-02-16 | アプリケーション分割装置、方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11269623B2 (ja) |
JP (1) | JP6839673B2 (ja) |
WO (1) | WO2019160008A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7263970B2 (ja) | 2019-08-06 | 2023-04-25 | 株式会社デンソー | 熱交換器 |
JP7484038B2 (ja) | 2019-11-21 | 2024-05-16 | 日本電気株式会社 | データ分割装置、データ分割方法及びプログラム。 |
CN111859383B (zh) * | 2020-06-08 | 2021-08-06 | 西安电子科技大学 | 软件自动分割方法、***、存储介质、计算机设备、终端 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843909B2 (en) * | 2001-05-11 | 2014-09-23 | Ca, Inc. | Method and apparatus for transforming legacy software applications into modern object-oriented distributed systems |
US20030163801A1 (en) * | 2001-10-31 | 2003-08-28 | Metacyber.Net | Computer-based method for defining a patch in computer source code including conditional compilation cell groups |
US8060865B2 (en) * | 2006-01-12 | 2011-11-15 | Microsoft Corporation | Build-time enforcement of architectural partitioning in computer application |
JP2007199869A (ja) * | 2006-01-24 | 2007-08-09 | Univ Nagoya | デバイス連携機構の自動分散化プログラム、装置およびデバイス連携機構 |
US9038040B2 (en) * | 2006-01-25 | 2015-05-19 | International Business Machines Corporation | Method for partitioning programs between a general purpose core and one or more accelerators |
JP5170408B2 (ja) * | 2008-03-31 | 2013-03-27 | 日本電気株式会社 | 自動分散化システム及び自動分散化方法 |
US8887154B2 (en) * | 2012-09-06 | 2014-11-11 | Imagine Communications Corp. | Systems and methods for partitioning computing applications to optimize deployment resources |
US10241761B2 (en) * | 2014-12-29 | 2019-03-26 | Nvidia Corporation | System and method for compiler support for compile time customization of code |
US9715375B1 (en) * | 2016-01-27 | 2017-07-25 | International Business Machines Corporation | Parallel compilation of software application |
-
2018
- 2018-02-16 JP JP2018026047A patent/JP6839673B2/ja active Active
-
2019
- 2019-02-14 WO PCT/JP2019/005265 patent/WO2019160008A1/ja active Application Filing
- 2019-02-14 US US16/969,506 patent/US11269623B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2019144656A (ja) | 2019-08-29 |
US11269623B2 (en) | 2022-03-08 |
WO2019160008A1 (ja) | 2019-08-22 |
US20200401399A1 (en) | 2020-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dai et al. | Cloud infrastructure resource allocation for big data applications | |
Agliamzanov et al. | Hydrology@ Home: a distributed volunteer computing framework for hydrological research and applications | |
TW201820165A (zh) | 用於雲端巨量資料運算架構之伺服器及其雲端運算資源最佳化方法 | |
US8819683B2 (en) | Scalable distributed compute based on business rules | |
Batista et al. | Performance evaluation of resource management in cloud computing environments | |
US10078843B2 (en) | Systems and methods for analyzing consumer sentiment with social perspective insight | |
JP6839673B2 (ja) | アプリケーション分割装置、方法およびプログラム | |
Almeida et al. | Smart at what cost? characterising mobile deep neural networks in the wild | |
CN109614227B (zh) | 任务资源调配方法、装置、电子设备及计算机可读介质 | |
US10866838B2 (en) | Cluster computing service assurance apparatus and method | |
Andrade et al. | Performance and availability trade-offs in fog–cloud iot environments | |
US20200186595A1 (en) | Facilitating management of communications systems | |
US10482268B1 (en) | Systems and methods for access management | |
CN113989058A (zh) | 一种服务生成方法和装置 | |
US11409564B2 (en) | Resource allocation for tuning hyperparameters of large-scale deep learning workloads | |
Wu et al. | Re-entrant flowshop scheduling with learning considerations to minimize the makespan | |
US20180260246A1 (en) | Runtime piggybacking of concurrent jobs in task-parallel machine learning programs | |
EP4113307A1 (en) | Onboarding of monitoring tools | |
JP7450190B2 (ja) | 特許情報処理装置、特許情報処理方法、およびプログラム | |
US11775264B2 (en) | Efficient deployment of machine learning and deep learning model's pipeline for serving service level agreement | |
US20180005249A1 (en) | Optimize a resource allocation plan corresponding to a legacy software product sustenance | |
TWI545453B (zh) | 分散式系統及其資料庫管理方法及管理系統 | |
JP2023545316A (ja) | システム性能に対する複数のアプリケーションの影響の決定 | |
Tang et al. | To cloud or not to cloud: an on-line scheduler for dynamic privacy-protection of deep learning workload on edge devices | |
Beach et al. | Integrating acceleration devices using CometCloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200220 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201124 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210122 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210209 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210215 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6839673 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |