(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-28
(45)【発行日】2023-12-06
(54)【発明の名称】コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム
(51)【国際特許分類】
G06F 8/41 20180101AFI20231129BHJP
【FI】
G06F8/41
(21)【出願番号】P 2021155593
(22)【出願日】2021-09-24
【審査請求日】2021-09-24
(31)【優先権主張番号】202110309279.1
(32)【優先日】2021-03-23
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】武 桓 州
(72)【発明者】
【氏名】王 歓
(72)【発明者】
【氏名】周 威
(72)【発明者】
【氏名】駱 涛
(72)【発明者】
【氏名】藍 翔
【審査官】渡辺 一帆
(56)【参考文献】
【文献】中国特許出願公開第109614106(CN,A)
【文献】米国特許出願公開第2014/0282438(US,A1)
【文献】特開平05-120025(JP,A)
【文献】窪田貴文 ほか,"WebKitにおけるUnified Buildsについての調査",情報処理学会研究報告システムソフトウェアとオペレーティング・システム(OS),日本,一般社団法人情報処理学会,2019年,第2019-OS-145巻, 第9号,pp. 1-6,ISSN 2188-8795
【文献】CATANZARO, M,"On Compiling WebKit (now twice as fast!)",MICHAEL CATANZARO'S BLOG On Fedora Workstation, GNOME, Epiphany, and WebKitGTK [online],2018年,pp. 1-6,[retrieved on 2022.09.16], Retrieved from the Internet: <URL: https://blogs.gnome.org/mcatanzaro/2018/02/17/on-compiling-webkit-now-twice-as-fast/>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/41
(57)【特許請求の範囲】
【請求項1】
ソースファイルのプログラミング言語の類型について、同じ類型のソースファイルを含むソースファイルセットを取得することと、
前記ソースファイルセットに関連する予め定められた組合せ規則に基づいて、前記ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることと、
各ソースファイルサブセットを全体としてコンパイルすることと、
前記ソースファイルセットの前記類型に基づいて、前記ソースファイルセットに関連する前記予め定められた組合せ規則を特定することと、を含む
コンパイル方法。
【請求項2】
前記予め定められた組合せ規則は、
前記ソースファイルのコンパイル時間、
前記ソースファイルのサイズ、
前記ソースファイルがコンパイルされた後のサイズ、
前記ソースファイル
を組合せてコンパイルした際のコンフリクト状況、
のうちの少なくとも1つに基づいて生成される
請求項1に記載の方法。
【請求項3】
複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることは、
前記予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、前記複数のソースファイルを、前記少なくとも1つのソースファイルサブセットに組み合わせ、各ソースファイルサブセットは、当該ソースファイルサブセットと対応している規則指定ソースファイルサブセットのうちのサブセットであることを含む
請求項1に記載の方法。
【請求項4】
前記予め定められた組合せ規則に基づいて、ヌルファイルを含む前記少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成することをさらに含む
請求項1に記載の方法。
【請求項5】
各ソースファイルサブセットを全体としてコンパイルすることは、
ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、前記ソースファイルサブセットを全体としてコンパイルすることを含む
請求項1に記載の方法。
【請求項6】
ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することは、
前記ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定することを含む
請求項5に記載の方法。
【請求項7】
前記ソースファイルサブセットの前記名称は、前記予め定められた組合せ規則に基づいて生成される
請求項6に記載の方法。
【請求項8】
前記ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除することをさらに含む
請求項5に記載の方法。
【請求項9】
前記ソースファイルセットにおける、前記少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルすることをさらに含む
請求項1に記載の方法。
【請求項10】
ソースファイルのプログラミング言語の類型について、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュールと、
前記ソースファイルセットに関連する予め定められた組合せ規則に基づいて、前記ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュールと、
各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュールと、
前記ソースファイルセットの前記類型に基づいて、前記ソースファイルセットに関連する前記予め定められた組合せ規則を特定するように配置される第1の特定モジュールと、
を含む
コンパイル装置。
【請求項11】
前記予め定められた組合せ規則は、
前記ソースファイルのコンパイル時間、
前記ソースファイルのサイズ、
前記ソースファイルがコンパイルされた後のサイズ、
前記ソースファイル
を組合せてコンパイルした際のコンフリクト状況、
のうちの少なくとも1つに基づいて生成される
請求項10に記載の装置。
【請求項12】
前記第1の組合せモジュールは、
前記予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、前記複数のソースファイルを、前記少なくとも1つのソースファイルサブセットに組み合わせ、各ソースファイルサブセットは、当該ソースファイルサブセットと対応している規則指定ソースファイルサブセットのうちのサブセットであるように配置される第2の組合せモジュールを含む
請求項10に記載の装置。
【請求項13】
前記予め定められた組合せ規則に基づいて、ヌルファイルを含む前記少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成するように配置される生成モジュールをさらに含む
請求項10に記載の装置。
【請求項14】
前記第1のコンパイルモジュールは、
ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、前記ソースファイルサブセットを全体としてコンパイルするように配置される第2のコンパイルモジュールを含む
請求項10に記載の装置。
【請求項15】
前記第2のコンパイルモジュールは、
前記ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定するように配置される第2の特定モジュールを含む
請求項14に記載の装置。
【請求項16】
前記ソースファイルサブセットの前記名称は、前記予め定められた組合せ規則に基づいて生成される
請求項15に記載の装置。
【請求項17】
前記ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除するように配置される削除モジュールをさらに含む
請求項14に記載の装置。
【請求項18】
前記ソースファイルセットにおける、前記少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルするように配置される第3のコンパイルモジュールをさらに含む
請求項10に記載の装置。
【請求項19】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、前記命令は、前記プロセッサによって実行され、前記少なくとも1つのプロセッサに請求項1~9のいずれか一項に記載の方法を実行させることを可能にする
電子デバイス。
【請求項20】
コンピュータに請求項1~9のいずれか一項に記載の方法を実行させるためのコンピュータ命令を記憶した非一時的コンピュータ可読記憶媒体。
【請求項21】
プロセッサによって実行されたときに、請求項1~9のいずれか一項に記載の方法を実行するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術に関し、より具体的には、コンパイル方法、コンパイル装置、電子デバイス、コンピュータ可読記憶媒体及びプログラムに関し、ソースファイルコンパイル分野及びディープラーニング分野などに利用することができる。
【背景技術】
【0002】
C++言語は静的型言語であり、例えば、フォーマットが.CCであるソースファイルがコンパイルによってバイナリファイルを生成して実行または使用する必要がある。C++言語のソースファイルをコンパイルする場合、各ソースファイルは1つのコンパイルユニットとみなしてコンパイラでコンパイルされ、各コンパイルユニット毎にオブジェクトファイルが生成され、最終的にリンカでバイナリオブジェクトにリンクされる。コンパイル過程には、主にコンパイラによってコンパイルユニットをコンパイルしてオブジェクトファイルを取得する過程に時間がかかる。一般的には、コンパイルユニットの数は、プロジェクトにおけるソースファイルの数と一致する。大規模なプロジェクトでは、コンパイルユニットは、数千個以上にあることが多い。各コンパイルユニット毎に、コンパイラを起動し、ディスク上のソースファイルおよび依存ファイルを読み込み、コンパイルによって得られたオブジェクトファイルをディスクに書き込む必要がある。また、最終的にオブジェクトファイルにリンクする際に、リンカは、コンパイルユニット毎に対する作成されたオブジェクトファイルをディスクから再度読み込む必要がある。このため、コンパイルユニットが多過ぎると、コンパイラの起動やディスクの読み書きにかかる時間が累積的に増加し、コンパイルに冗長な時間を要する。類似的には、CUDAのソースファイルに対するコンパイルにも上記の問題が存在する。
【0003】
しかしながら、従来のソースファイルためのコンパイル技術は、ソースファイル毎に個別にコンパイルするか、又はソースファイルの一部を非常に概略的にマージしてコンパイルするだけであり、プロジェクトに対する必要なコンパイルの回数が多くなり、ソースファイルが多い大型プロジェクトに適用できないだけでなく、ソースファイルが増加又は減少した場合に異常が発生し、ユーザの要求を満たすことが困難であった。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示の実施例によれば、コンパイル方法、コンパイル装置、電子デバイス、コンピュータ可読記憶媒体、及びコンピュータプログラムが提供される。
【0005】
本開示の第1の局面では、同じ類型のソースファイルを含むソースファイルセットを取得することと、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることと、各ソースファイルサブセットを全体としてコンパイルすることと、を含むコンパイル方法が提供される。
【0006】
本開示の第2の局面では、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュールと、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュールと、各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュールと、を含むコンパイル装置が提供される。
【0007】
本開示の第3の局面では、少なくとも1つのプロセッサと、少なくとも1つのプロセッサに通信可能に接続されたメモリと、を含み、メモリには、少なくとも一つのプロセッサによって実行可能な命令が記憶され、この命令は、少なくとも一つのプロセッサによって実行され、少なくとも一つのプロセッサに本開示の第1の局面による方法を実行させることを可能にする電子デバイスが提供される。
【0008】
本開示の第4の局面では、コンピュータに本開示の第1の局面による方法を実行させるためのコンピュータ命令を記憶した非一時的コンピュータ可読記憶媒体が提供される。
【0009】
本開示の第5の局面では、プロセッサによって実行されたときに、本開示の第1の局面による方法を実現するコンピュータプログラムが提供される。
【0010】
本開示による技術によれば、コンパイル方法が提供され、当該方法の技術案によって、予め定められた組合せ規則に従って、複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによって、コンパイル効率を効果的に向上させ、コンパイル時間を短縮することができる。
【0011】
発明の概要に記載された内容は、本開示の実施例の主要な特徴または重要な特徴を限定することを意図したものではなく、また本開示の範囲を限定するものでもないことを理解されたい。本開示の他の特徴は、以下の説明から容易に理解されるであろう。
【0012】
図面を組み合わせて、本開示の例示的な実施例をより詳細に説明することにより、本開示の上記および他の目的、特徴、利点はより明らかになるであろう。本開示の例示的な実施例において、同じ参照番号が同じ部品を示す。図面は、本技術案をより良く理解するためのものであり、本開示を限定するものではないことを理解されたい。
【図面の簡単な説明】
【0013】
【
図1】本開示のいくつかの実施例におけるコンパイル方法が実現されるコンパイル環境100の概略的なブロック図を示す。
【
図2】本開示の実施例によるコンパイル方法200のフローチャートを示す。
【
図3】本開示の実施例によるコンパイル方法300のフローチャートを示す。
【
図4】本開示の実施例によるコンパイル装置400の概略的なブロック図を示す。
【
図5】本開示の実施例を実施するための例示的な電子デバイス500の概略的なブロック図を示す。
【発明を実施するための形態】
【0014】
各図中、同一又は対応符号は、同一又は対応部分を示す。
以下、図面を参照して、本開示の好ましい実施例をより詳細に説明する。本開示の好ましい実施例が図面に示されてきたが、本開示は、様々な形態で実現されてよく、ここで説明される実施例に限定されるものではないことが理解されるべきである。むしろ、これらの実施例は、本開示をより明瞭かつ完全にするために提供され、本開示の範囲を当業者に完全に伝えることができる。
【0015】
「含む」及びその変形という本明細書で使用される用語は、非限定的な意味、すなわち、「含むが、これに限定されない」という意味で使用される。特に明記しない限り、「または」という用語は、「および/または」を意味する。「基づいて」という用語は、「少なくとも部分的に基づいて」を意味する。「1つの例示的な実施例」及び「1つの実施例」という用語は、「少なくとも1つの例示的な実施例」を意味する。「別の実施例」という用語は、「少なくとも1つの別の実施例」を意味する。「第1」、「第2」などの用語は、異なるまたは同一の対象を指すことができる。他の明示的および暗黙的な定義も、以下に含まれる場合がある。
【0016】
背景技術で説明したように、従来のソースファイルのコンパイル技術は、ソースファイルごとにそれぞれにコンパイルするか、又はソースファイルの一部のみを非常に概略的にマージしてコンパイルするため、プロジェクトに対する必要なコンパイルの回数が多くなり、ソースファイルが多い大規模なプロジェクトに適用できないだけでなく、ソースファイルが増加又は減少した場合にも異常が発生し、ユーザの要求を満たすことが困難であった。
【0017】
例えば、従来技術では、ソースファイルの組合せをサポートできるツールはCMAKEのみである。CMAKEを用いる場合は、ターゲット(target)においてUNITY_BUILD属性をONに設定することにより実現する。しかし、CMAKEを採用する方式は、大規模なプロジェクトに対して良好な効果を奏することができず、これは主に、ソースファイル間の複数の符号重複定義の問題によって制限され、ソースファイルを組み合わせる際に起こり得るコンフリクトに対処できず、ソースファイルの追加や削除の際に不具合が生じるため、広く利用されていない。
【0018】
上記問題及び他の潜在的な問題のうちの1つまたは複数の問題を少なくとも部分的に解決するために、本開示の実施例は、本開示の実施態様による技術案によって、予め定められた組合せ規則に従って、複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによって、コンパイル効率を効果的に向上させ、コンパイル時間を短縮し、ユーザ体験を向上させることができるコンパイル方法を提供する。
【0019】
図1は、本開示のある実施例におけるコンパイル方法が実現されるコンパイル環境100の概略ブロック図を示す。本開示の1つ以上の実施例によれば、コンパイル環境100はクラウド環境であり得る。
図1に示すように、コンパイル環境100は、コンピューティングデバイス110を含む。コンパイル環境100では、例えば、コンパイルされることが望まれるソースファイルから構成されるソースファイルセット、ソースファイルセット内のソースファイルをコンパイルするために必要とされる依存ファイル、およびソースファイルセットに関連す
る予め定められた組合せ規則の入力データ120を含み、コンピューティングデバイス110の入力としてコンピューティングデバイス110に提供され得る。コンピューティングデバイス110は
、予め定められた組合せ規則に基づいてソースファイルセットに含まれるソースファイルを1つまたは複数のソースファイルサブセットに組合せ、次いで、それが含むコンパイラ(図示せず)を使用して、依存ファイルを使用して、組み合わせたソースファイルをコンパイルすることができる。コンパイル過程では、各ソースファイルサブセットについて、コンピューティングデバイス110は、それを全体としてコンパイルする。言い換えると、各ソースファイルサブセットについて、いくつのソースファイルを含むかにかかわらず、コンピューティングデバイス110は、コンパイラを1回だけ起動すればよい。
【0020】
なお、コンパイル環境100は例示的なものにすぎず、限定的なものではなく、拡張可能であり、より多くのコンピューティングデバイス110を含み、コンピューティングデバイス110により多くの入力データ120を提供し、それにより、より多くのユーザがより多くのコンピューティングデバイス110を同時に利用し、さらにはより多くの入力データ120によってソースファイルセットにおけるソースファイルを同時にまたは非同時にコンパイルする要求を満たすことができる。
【0021】
図1に示されるコンパイル環境100では、コンピューティングデバイス110への入力データ120の入力は、ネットワークを介して行われ得る。
【0022】
図2は、本開示の実施例によるコンパイル方法200のフローチャートを示す。具体的には、コンパイル方法200は、
図1に示されるコンパイル環境100におけるコンピューティングデバイス110によって実行され得る。コンパイル方法200は、図示されていない追加の操作及び/または省略可能な操作を含むことができ、本開示の範囲はこの点において限定されない。
【0023】
ブロック202で、コンピューティングデバイス110は、ソースファイルセットを取得する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、入力データ120を受信することによってソースファイルセットを取得し、そして、ソースファイルセットは、同じ類型のソースファイルを含む。
【0024】
例えば、ソースファイルの類型は、C++言語用のソースファイル及びCUDAに対するソースファイルを含むことができる。1つのプロジェクトには、C++言語用のソースファイルとCUDAに対するソースファイルが同時に含まれるが、異なる類型のソースファイルが異なるコンパイラを使用する必要があるため、異なる類型のソースファイルを組み合わせて1つのコンパイラだけを用いて翻訳することはできない。従って、ソースファイルセットは、同じ類型のソースファイルを含む必要がある。ソースファイルセットが異なる類型のソースファイルを含む場合、ソースファイルの類型に従ってソースファイルセットを複数のサブセットに分割することができ、各サブセットは、いずれも同じ類型のソースファイルを含む。
【0025】
ブロック204では、コンピューティングデバイス110は、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる。本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、コンパイルの前に、コンピューティングデバイス110が、コンパイル配置に従ってソースファイルセットにおけるソースファイルを使用して複数のソースファイルを含み得るコンパイルユニットを生成し、コンパイルユニットを単位として、コンパイラを用いて、各コンパイルユニットをコンパイルする、というコンパイル配置とみなされることができる。
【0026】
本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、コンパイルシステム構成を構築するための操作を実行してもよい。例えば、C++プロジェクトは、例えばMAKE、MSVC及びNINJAという異なるビルドシステムを用いて、例えばLinux(登録商標)、Windows(登録商標)及びMacOS(登録商標)という異なるプラットフォームでコンパイルされることができる。クロスプラットフォームで迅速に正常にコンパイルするために、通常、例えばCMAKEというクロスプラットフォームのコンパイルツールを使用し、これにより、簡単なステートメントで全てのプラットフォームのコンパイル過程を記述することができる。しかし、コンパイル用の配置としてそのまま用いることができるのは、各ビルドシステム毎に個別に用いられる配置であり、CMAKEが用いるCMakeLists.txtをそのままコンパイルに用いることができない。このとき、コンピューティングデバイス110は、CMAKEのCMakeLists.txtという配置から各プラットフォームに対応するビルドシステムの配置へのビルドコンパイラシステム配置を設計する操作を実行することができる。
【0027】
本開示のいくつかの実施例によれば、コンピューティングデバイス110は、文法レベルで汎用的なincludeメカニズムを使用して、ソースファイルセットにおけるソースファイルをソースファイルサブセットに組み合わせることができる。
【0028】
本開示のいくつかの実施例によれば、ソースファイルセットのすべてのソースファイルは、異なるソースファイルサブセットに組み合わせることができる。この場合、予め定められた組合せ規則に基づいてソースファイルセットにおけるソースファイルを組み合わせた後、ソースファイルは単独では存在せず、ソースファイルサブセットに組み合わせられる。
【0029】
本開示の他のいくつかの実施例によれば、ソースファイルセットのうちのソースファイルの例えば80%~95%は、異なるソースファイルサブセットに組み合わせられることができる。この場合、予め定められた組合せ規則に基づいてソースファイルセットのソースファイルを組み合わせた後に、いくつかのソースファイルがソースファイルサブセットに組み合わせていないことが存在する。
【0030】
本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、ソースファイルセットにおけるソースファイルの属性のうちの1つ以上に基づいて生成されることができ、これらの属性は、例えば、ソースファイルのコンパイル時間、ソースファイルのサイズ、ソースファイルのコンパイル後のサイズ、ソースファイルの組合せコンパイル際のコンフリクト状況を含むことができる。
【0031】
例えば、いくつかのソースファイルのコンパイルに要する時間が例えば3~5秒程度と短い場合、例えば30~50個の大量のこのようなソースファイルをソースファイルサブセットに組み合わせることができる。逆に、あるソースファイルをコンパイルすることに要する時間が例えば1~2分と長い場合、このソースファイルを他のファイルとソースファイルサブセットに組み合わせないことができる。
【0032】
また例えば、いくつかのソースファイルのサイズが大きい場合、又はコンパイル後に得られたオブジェクトファイルのサイズが大きい場合、これらのソースファイルを他のファイルとソースファイルサブセットに組み合わせなくてもよいし、これらのソースファイルの少量のソースファイルのみをソースファイルサブセットに組み合わせてもよい。
【0033】
また、任意の2つ以上のソースファイルがソースファイルサブセットに組み合わされた後、当該ソースファイルサブセットをコンパイルする際にコンフリクトにより正常にコンパイルできない場合、これらのソースファイルを1つのソースファイルサブセットに組み合わせることを避けるべきである。本開示の1つ以上の実施例によれば、予め定められた組合せ規則に基づいてソースファイルをソースファイルサブセットに組み合わせた後、ソースファイルサブセットに対して実際のコンパイルまたはシミュレートされたコンパイルを行うことができ、コンフリクトにより正常にコンパイルできない場合、予め定められた組合せ規則を補正してコンフリクトを回避することができる。
【0034】
本開示の1つ以上の実施例によれば、ソースファイルセット中の複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせることは、予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、複数のソースファイルを、対応的な規則指定ソースファイルサブセットのサブセットである少なくとも1つのソースファイルサブセットに組み合わせることを含む。例えば、予め定められた組合せ規則は、ソースファイルA~Zの合計26個のソースファイルのうちのソースファイルA~Gの合計7個のソースファイルを1つのソースファイルサブセットに組み合わせることを指示することができる。このとき、ソースファイルセットを調整することにより、ソースファイルCが削除されても、ソースファイルA、B及びD~Gを1つのソースファイルサブセットに組み合わせることもでき、これは、組合せることが許容された複数のソースファイルの一部のソースファイルを削除して組み合わせることが、通常、コンフリクトが生じないためである。
【0035】
大規模プロジェクトでは、ソースファイルの増減の繰り返しの頻度が速く、各開発者がそれぞれ異なるソースファイルを担当するが、ソースファイルの組合せ規則は1箇所だけであることが多く、これにより、予め定められた組合せ規則におけるソースファイルがリネームまたは削除されたことを引き起こす可能性が高く、予め定められた組合せ規則の効果が失われる。したがって、本開示の1つ以上の実施例によれば、指定されたファイル組合せ規則から生成された規則指定ソースファイルセットと、実際の情報に応じて規則のソースファイルをヒットし、規則指定ソースファイルセットのサブセットに属する規則ヒットソースファイルセット、という2つの辞書セットを使用して、ソースファイルセットをそれぞれ記憶することができる。2つのソースファイルセットにより、ソースファイルを組み合わせる際にソースファイルの増減を効果的に処理することができ、規則の頻繁な変化を回避できる。
【0036】
本開示の1つ以上の実施例によれば、予め定められた組合せ規則は、例えば、数十の規則を含むことができ、従って、この予め定められた組合せ規則に基づいて、ソースファイルセットのソースファイルは、数十のソースファイルサブセットに組み合わせられることができる。また、各ソースファイルサブセットには、例えば、数個又は数十個のソースファイルが含まれることができる。予め定められた組合せ規則に含まれる規則の数、及び予め定められた組合せ規則に従って特定されるソースファイルサブセットにおけるソースファイルの数が、例示のみであり、本開示の保護範囲を限定しないことが理解されるべきである。
【0037】
ブロック206において、コンピューティングデバイス110は、各ソースファイルサブセットを全体としてコンパイルする。本開示の1つ以上の実施例によれば、前記したように、コンピューティングデバイス110がソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせた後、各ソースファイルサブセットは、1つのコンパイルユニットとしてコンパイルされる。言い換えれば、各ソースファイルサブセットについて、コンパイラを1回だけ起動すればよい。したがって、ソースファイルセットのソースファイルごとにコンパイラを1回だけ起動する場合に比べて、本開示の実施例による技術案によって、コンパイラの起動回数を顕著に減らすことができ、コンパイルの回数を減らすことができる。
【0038】
図3は、本開示の実施例によるコンパイル方法300のフローチャートを示す。具体的には、コンパイル方法300は、
図1に示されるコンパイル環境100内のコンピューティングデバイス110によって実行されてもよい。コンパイル方法300が、図示されていない追加の操作及び/または省略可能な操作を含むことができ、本開示の範囲はこの点において限定されない。
【0039】
ブロック302で、コンピューティングデバイス110は、ソースファイルセットを取得する。前述のように、本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、入力データ120を受信することによってソースファイルセットを取得し、ソースファイルセットは、同じ類型のソースファイルを含む。ブロック302に係るステップの具体的な内容は、ブロック202に係るステップの具体的な内容と同じであり、ここでは贅言しない。
【0040】
ブロック304で、コンピューティングデバイス110は、ソースファイルセットの類型に基づいて、ソースファイルセットに関連する予め定められた組合せ規則を特定する。本開示の1つ以上の実施例によれば、1つのプロジェクトには、例えばC++言語用のソースファイルとCUDAに対するソースファイルが同時に含まれてもよく、異なる類型のソースファイルに対して、使用されるコンパイラが異なるため、組合せ規則も異なる。このとき、コンピューティングデバイス110は、ソースファイルセットに含まれたソースファイルの類型に基づいて、C++言語用のソースファイルに対する予め定められた組合せ規則を使用するか、CUDAのソースファイルに対する予め定められた組合せ規則を使用するかを特定し得る。ブロック304に係るステップは、選択的なステップであり、プロジェクトに1つの類型のソースファイルのみが含まれる場合に、ソースファイルセットの類型に基づいてソースファイルセットに関連する予め定められた組合せ規則を特定する必要がなく、方法300にブロック304が含まれなくてもよいことを理解されたい。
【0041】
ブロック306で、コンピューティングデバイス110は、予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを、ヌルファイルを含む少なくとも1つのソースファイルサブセットとして生成する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110が実際的にソースファイルセットに関連する予め定められた組合せ規則に基づいてソースファイルセットの複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる前に、コンピューティングデバイス110は、予め予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成することができる。この生成されるソースファイルサブセットは、実際のソースファイルに対することではなく、予め定められた組合せ規則によって指定されたコンテンツのみに基づいて生成されるので、本願では規則指定ソースファイルサブセットと呼ばれる。
【0042】
本開示の1つ以上の実施例によれば、規則指定ソースファイルサブセットを予め生成することは、ソースファイルサブセット内のソースファイルと、組み合わされた少なくとも1つのソースファイルサブセットとが変化する場合に、処理を簡略化できることを目的とする。規則指定ソースファイルサブセットが予め生成されたので、ソースファイルサブセットにおけるソースファイルをソースファイルサブセットに組み合わせた後、2つのサブセットのコンテンツが同一であるかどうかを直接に比較することができ、その後、組み合わされたソースファイルサブセットと以前のソースファイルサブセットとを同様に比較し、サブセットのコンテンツが変化したかどうかを特定することができる。ブロック306に係るステップは、選択的なステップであり、主に処理を簡略化するためのものであり、そのため、方法300にブロック306が含まれなくてもよいことを理解されたい。
【0043】
ブロック308で、コンピューティングデバイス110は、ソースファイルセットに関連する予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせる。ブロック308に係るステップの具体的な内容は、ブロック204に係るステップの具体的内容と同じであり、ここでは贅言しない。
【0044】
ブロック310で、コンピューティングデバイス110は、ソースファイルサブセットに含まれるコンテンツが、組み合わされた既存のソースファイルサブセットと異なるかどうかを特定する。コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせた既存のソースファイルサブセットと異なることを特定すると、方法300は、コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせたある既存のソースファイルサブセットと同じであることを特定すれば、操作を行う必要がない、というブロック312に進む。
【0045】
本開示の1つ以上の実施例によれば、コンピューティングデバイス110がソースファイルをソースファイルサブセットに組み合わせる場合、予定の規則に従って、組み合わせたソースファイルサブセットに名称を特定することができる。コンピューティングデバイス110は、ソースファイルのパスに従ってソースファイルサブセットの名称を特定することができる。例えば、ソースファイルサブセットに組み合わせる複数のソースファイルのパスがすべてA-B-Cである場合、パスに例えば数の接尾辞を追加する形で、このソースファイルサブセットに例えばA-B-C-1またはA-B-C-2という名称を特定することができる。組み合わせに用いられるソースファイルが予め定められた組合せ規則によって指示されるので、ソースファイルサブセットの名称は、予め定められた組合せ規則に基づいて生成されると考えられる。
【0046】
本開示の1つ以上の実施例によれば、コンピューティングデバイス110は、ソースファイルサブセットの名称が、組み合わせた既存のソースファイルサブセットの名称と異なることによって、ソースファイルサブセットに含まれるコンテンツが、組み合わせた既存のソースファイルサブセットと異なると特定することができ、これは、ソースファイルサブセットの名称がいずれも、組み合わせた既存のソースファイルサブセットの名称と異なる場合、当該ソースファイルサブセットのコンテンツが、全ての既存のソースファイルサブセットのコンテンツと同じではないためである。コンピューティングデバイス110が、ソースファイルサブセットの名称が、組み合わせたある既存のソースファイルのサブセットの名称と同じであると特定した場合、コンピューティングデバイス110は、この2つのサブセットのコンテンツが同じであるかどうかをさらに特定することができる。例えば、プロジェクトには、追加ビルドにより複数のコンパイルを行う場合、毎回に生成されるソースファイルサブセットが同じ名称であってもタイムスタンプが変化し、これにより、タイムスタンプが異なるが名称が同じであるソースファイルサブセットのコンテンツが同じであるかどうかを判定することができる。コンテンツが同じであれば、操作を行う必要がない;コンテンツが異なる場合、新しいタイムスタンプを有するソースファイルサブセットをコンパイルする必要がある。
【0047】
具体的には、ビルドシステムの多くは、開発の便宜上、追加コンパイルの戦略が提供され、すなわち、前回のコンパイルを基礎とし、後に変更したソースファイルのみをコンパイルする。追加コンパイルをトリガするか否かを判定する一般的な方法は、ファイルのタイムスタンプを判定し、タイムスタンプが前回のコンパイルよりも遅い場合にトリガする。単純に予定の規則に従ってファイルを組み合わせると、その都度タイムスタンプが変化してしまい、不要な追加コンパイルに時間がかかる。したがって、本開示の1つ以上の実施例によれば、初期化の指定規則期間に、まず、組み合わせたソースファイルサブセットに対して存在性を検査し、当該ソースファイルサブセットが存在しない場合、ソースファイルサブセットとしてヌルファイルを作成し、そうでない場合は何も処理しない。全てのソースファイルサブセットが生成された後、組み合わされたソースファイルサブセットと実際のソースファイルサブセットのコンテンツとを比較することができ、コンテンツが一致しない場合、上書きされ得るし、そうでない場合、何も処理しない。これにより、冗長追加コンパイルの問題を回避することができる。
【0048】
ブロック312において、コンピューティングデバイス110は、ソースファイルサブセットと同じ名称を有する、組み合わせた既存のソースファイルサブセットを削除する。本開示の1つ以上の実施例によれば、コンピューティングデバイス110が、ソースファイルサブセットに含まれるコンテンツが組み合わせた既存のソースファイルサブセットと異なると特定する場合、後続のコンパイルは、新たに組み合わせたソースファイルサブセットに対して行われるべきである。このとき、コンフリクトを避けるために、ソースファイルサブセットが、ある組み合わせた既存のソースファイルサブセットと同じ名称を有する場合、コンピューティングデバイス110は、ソースファイルサブセットと同じ名称を有する組み合わせた既存の元のファイルサブセットを削除することができる。ブロック312に係るステップが選択的なステップであり、ソースファイルサブセットがいずれも、組み合わされた既存のソースファイルサブセットと同じ名称を有しない場合、組み合わされた既存のソースファイルサブセットを削除する必要がなく、方法300にブロック312が含まなくてもよいことを理解されたい。
【0049】
ブロック314で、コンピューティングデバイス110は、各ソースファイルサブセットを全体としてコンパイルする。本開示の1つ以上の実施例によれば、ブロック314は、コンピューティングデバイス110が、ソースファイルセットにおけるソースファイルをソースファイルサブセットに組み合わせ、選択的に組み合わせたソースファイルサブセットと同じ名称を有する、組み合わせた既存のソースファイルサブセットを削除した後に、保留された各ソースファイルサブセットを全体としてコンパイルすることを指す。ブロック314に係るステップの具体的内容は、ブロック206に係るステップの具体的内容と同じであり、ここでは贅言しない。
【0050】
ブロック316で、コンピューティングデバイス110は、ソースファイルセットにおける、少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルする。本開示の1つ以上の実施例によれば、予め定められた組合せ規則に基づいてソースファイルセットにおけるソースファイルを組み合わせた後、いくつかのソースファイルをソースファイルサブセットに組み合わせていないいくつかのソースファイルがある可能性がある。この場合も、これらソースファイルをコンパイルする必要がある。
【0051】
本開示の1つ以上の実施例によれば、組み合わせた複数のソースファイルサブセット及び少なくとも1つのソースファイルサブセットに含まれないソースファイルに対するコンパイルは、任意の順序で又は同期して行われ得る。
【0052】
以上、
図1乃至
図3を参照して、本開示のいくつかの実施例に係るコンパイル方法が実現されるコンパイル環境100、本開示の実施例によるコンパイル方法200及び本開示の実施例によるコンパイル方法300の関連内容を説明した。上記の説明は、本開示に記載された内容をよりよく示すためのものであり、いかなる方法で限定するものではないことを理解されたい。
【0053】
本開示の上記の様々な図面に用いられている様々な素子の数および物理量の大きさは、単なる例であり、本開示の保護範囲を制限するものではないことを理解されたい。上述した数および大きさは、本開示の実施形態の正常な実施に影響を与えることなく、需要に応じて任意に設置され得る。
【0054】
以上、
図1乃至
図3を参照して、本開示の実施形態によるコンパイル方法200及びコンパイル方法300の詳細を説明した。以下、
図4を参照して、コンパイル装置の各ブロックについて説明する。
【0055】
図4は、本開示の実施例によるコンパイル装置400の概略的なブロック図である。
図4に示すように、コンパイル装置400は、同じ類型のソースファイルを含むソースファイルセットを取得するように配置される取得モジュール410と、ソースファイルセットに関連す
る予め定められた組合せ規則に基づいて、ソースファイルセットにおける複数のソースファイルを少なくとも1つのソースファイルサブセットに組み合わせるように配置される第1の組合せモジュール420と、各ソースファイルサブセットを全体としてコンパイルするように配置される第1のコンパイルモジュール430と、を含む。
【0056】
1つ以上の実施例では、コンパイル装置400は、ソースファイルセットの類型に基づいて、ソースファイルセットに関連する予め定められた組合せ規則を特定するように配置される第1の特定モジュール(図示せず)をさらに含む。
【0057】
1つ以上の実施例では、予め定められた組合せ規則は、ソースファイルのコンパイル時間、ソースファイルのサイズ、ソースファイルのコンパイル後のサイズ、ソースファイルの組合せコンパイル際のコンフリクト状況、のうちの少なくとも1つに基づいて生成される。
【0058】
1つ以上の実施例では、第1の組合せモジュール420は、予め定められた組合せ規則によって指示される少なくとも1つの規則指定ソースファイルサブセットに基づいて、複数のソースファイルを、対応的な規則指定ソースファイルサブセットのサブセットである少なくとも1つのソースファイルサブセットに組み合わせるように配置される第2の組合せモジュール(図示せず)を含む。
【0059】
1つ以上の実施例では、コンパイル装置400は、予め定められた組合せ規則に基づいて、ヌルファイルを含む少なくとも1つのソースファイルサブセットとして、ヌルファイルを含む少なくとも1つの規則指定ソースファイルサブセットを生成するように配置される生成モジュール(図示せず)をさらに含む。
【0060】
1つ以上の実施例では、第1のコンパイルモジュール430は、ソースファイルサブセットに含まれるコンテンツが組み合わされた既存のソースファイルサブセットと異なると特定することに基づいて、ソースファイルサブセットを全体としてコンパイルするように配置される第2のコンパイルモジュール(図示せず)を含む。
【0061】
1つ以上の実施例では、第2のコンパイルモジュールは、ソースファイルサブセットの名称が、組み合わされた既存のソースファイルサブセットの名称と異なると特定するように配置される第2の特定モジュール(図示せず)を含む。
【0062】
1つ以上の実施例では、ソースファイルサブセットの名称は、予め定められた組合せ規則に基づいて生成される。
【0063】
1つ以上の実施例では、コンパイル装置400は、ソースファイルサブセットと同じ名称を有する組み合わせた既存のソースファイルサブセットを削除するように配置される削除モジュール(図示せず)をさらに含む。
【0064】
1つ以上の実施例では、コンパイル装置400は、ソースファイルセットにおける、少なくとも1つのソースファイルサブセットに含まれないソースファイルをコンパイルするように配置される第3のコンパイルモジュール(図示せず)をさらに含む。
【0065】
図1乃至
図4を参照して説明したように、本開示の実施形態による技術案は、従来技術に比べて多くの長所を有する。例えば、本開示の実施例による技術案によって、予定の組み合わせ規則に従って複数のソースファイルを含むプロジェクトにおけるソースファイルを組み合わせてコンパイルすることができ、コンパイル回数を減らすことによってコンパイル効率を効果的に向上させ、コンパイルにかかる時間を減らして、ユーザ体験を向上させることができる。実験を通して、本開示の実施形態による技術案をディープランニングフレームワークに適用する場合、ソースファイルに対するコンパイル時間を30%以上減少させることができるため、コンパイル効率を顕著に向上させることができる。また、本開示の実施形態による技術案は、例えばLinux、Windows、MacOSという多様なプラットフォームに適用可能であり、例えばMAKE、Ninja、MSVCという多様なビルドシステムに適用可能であり、汎用性が高い。
【0066】
本開示の実施例によれば、本開示は、電子デバイス、コンピュータ可読記憶媒体、およびコンピュータプログラムをさらに提供している。
【0067】
図5は、本開示の実施例を実施するための例示的電子デバイス500の概略ブロック図を示す。例えば、
図1に示すコンピューティングデバイス110および
図4に示すコンパイル装置400は、電子デバイス500によって実施されることができる。電子デバイス500は、例えば、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレームコンピュータ、及び他の適切なコンピュータなどの様々な形態のデジタルコンピュータである。電子デバイスは、例えば、パーソナルデジタルプロセッシング、携帯電話、スマートフォン、ウェアラブルデバイス、及び他の類似なコンピューティングデバイス等、様々な形態のモバイルデバイスであってもよい。本明細書に示される部品、それらの接続及び関係、並びにそれらの機能は、単なる例示であり、本明細書に記載及び/又は請求される本開示の実施を限定しない。
【0068】
図5に示されるように、デバイス500は、リードオンリーメモリ(ROM)502に記憶されたコンピュータプログラム、又は記憶ユニット508からランダムアクセスメモリ(RAM)503にロードされたコンピュータプログラムに従って様々な適切な動作及び処理を実行することができるコンピューティングユニット501を含む。RAM503には、デバイス500の操作に必要な各種プログラムやデータを記憶するもできる。コンピューティングユニット501、ROM502、及びRAM503は、バス504を介して相互に接続されている。入出力(I/O)インタフェース505もバス504に接続されている。
【0069】
デバイス500における複数の部品は、I/Oインタフェース505に接続されており、例えばキーボード、マウスなどの入力ユニット506と、例えば各種のディスプレイ、スピーカなどの出力ユニット507と、例えば磁気ディスク、光ディスクなどの記憶ユニット508と、例えばネットワークカード、モデム、無線通信送受信機などの通信ユニット509と、を含む。通信ユニット509は、デバイス500が、例えばインターネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して、他の機器と情報/データを交換することを可能にする。
【0070】
コンピューティングユニット501は、処理および計算能力を有する様々な汎用および/または専用処理コンポーネントであることができる。コンピューティングユニット501のいくつかの例示は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)、様々な専用人工知能(AI)コンピューティングチップ、様々な機械学習モデルアルゴリズムを実行するコンピューティングユニット、デジタルシグナルプロセッサ(DSP)、および任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。コンピューティングユニット501は、例えば方法200および300のような上記に記載の各方法及び処理を実行する。例えば、いくつかの実施例において、方法200および300のいずれかは、コンピュータソフトウェアプログラムとして実現され、例えば記憶ユニット508などの機械可読媒体に有形に組み込まれる。いくつかの実施例において、コンピュータプログラムの一部又は全部は、ROM502及び/又は通信ユニット509を介してデバイス500にロード及び/又はインストールされてよい。コンピュータプログラムがRAM503にロードされ、コンピューティングユニット501によって実行されると、上記に記載の方法200および300のいずれかの1つまたは複数のステップを実行することができる。あるいは、他の実施例では、コンピューティングユニット501は、他の任意の適切な方式で(例えば、ファームウェアを用いて)方法200および300のいずれかを実行するように配置されることができる。
【0071】
本明細書で説明したシステムおよび技術の様々な実施態様は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、負荷プログラマブル論理デバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらの様々な実施例は、1つまたは複数のコンピュータプログラム内で実施されることを含み、当該1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行および/または解釈され、当該プログラマブルプロセッサは、専用または汎用のプログラマブルプロセッサであり、記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、データおよび命令を当該記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置に送信する。
【0072】
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能なデータ処理装置のプロセッサ又はコントローラに提供されてもよく、これにより、プログラムコードがプロセッサ又はコントローラによって実行されると、フローチャート及び/又はブロック図において特定された機能/動作が実施される。プログラムコードは、完全にマシンで、部分的にマシンで、独立型ソフトウェアパッケージとして部分的にマシンで、部分的にリモートマシンで、または完全にリモートマシンもしくはサーバで実行され得る。
【0073】
本開示の文脈において、機械可読媒体は、命令実行システム、装置、またはデバイスによる使用のための、またはそれらと関連して使用されるプログラムを含み、または記憶することができる有形媒体であり得る。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であり得る。機械可読媒体は、電子的、磁気的、光学的、電磁的、赤外線、または半導体システム、装置、もしくはデバイス、または上記の任意の好適な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例示は、1つ以上の配線に基づく電気接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、消去可能プログラマブルリードオンリメモリ(EPROM又はフラッシュメモリ)、光ファイバ、コンパクトディスクリードオンリメモリ(CD-ROM)、光記憶装置、磁気記憶装置、又はこれらの任意の適切な組み合わせを含む。
【0074】
ユーザとのインタラクティブを提供するために、コンピュータで本明細書に記載されるシステムおよび技術を実施することができ、当該コンピュータは、ユーザに情報を表示するための表示装置(たとえば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力を提供し得るキーボードおよびポインティングデバイス(たとえば、マウスまたはトラックボール)とを有する。他の類型の装置は、ユーザとの対話を提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であってもよく、任意の形態(例えば、音声入力、発話入力または触覚入力)でユーザからの入力を受信することができる。
【0075】
本明細書で説明されるシステムおよび技術を、バックエンド部品を含むコンピューティングシステム(例えば、データサーバとして)、またはミドルウェア部品を含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンド部品を含むコンピューティングシステム(例えば、ユーザが本明細書で説明されるシステムおよび技術の実施例と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するユーザコンピュータ)、またはそのようなバックエンド部品、ミドルウェア部品、もしくはフロントエンド部品の任意の組合せを含むコンピューティングシステムにおいて実施され得る。任意の形態または媒体のデジタルデータ通信(例えば、通信ネットワーク)を介してシステムの部品を互いに接続することができる。通信ネットワークの例示は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、およびインターネットを含む。
【0076】
コンピュータシステムは、クライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に、互いから離れており、通常、通信ネットワークを介してインタラクティブしている。相応的なコンピュータで運行し、互いにクライアント-サーバ関係を有するコンピュータプログラムによって、クライアントとサーバの関係を生成する。
【0077】
なお、上記に示された様々な形態のフローを用いて、ステップを並べ替え、追加、または削除することができることを理解されたい。例えば、本開示に記載された各ステップは、並列的に実行されてもよく、順番に実行されてもよく、異なる順番で実行されてもよく、本開示において開示された技術案の所望の結果を達成することができる限り、ここで制限されない。
【0078】
上記の具体的な実施例は、本開示の保護範囲を限定するものではない。当業者であれば、設計の要求及び他の要因に応じて、各種の補正、組合、サブ組合および切り替えを行うことができることは明らかであろう。本開示の思想及び原則における任意の補正、均等物及び改善は、本開示の保護範囲に含まれるべきである。