特許第6857196号(P6857196)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特許68571961つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム
<>
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000002
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000003
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000004
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000005
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000006
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000007
  • 特許6857196-1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6857196
(24)【登録日】2021年3月23日
(45)【発行日】2021年4月14日
(54)【発明の名称】1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法、コンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体、およびシステム
(51)【国際特許分類】
   G06F 16/13 20190101AFI20210405BHJP
   G06F 16/182 20190101ALI20210405BHJP
【FI】
   G06F16/13 100
   G06F16/13 110
   G06F16/182
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2018-561000(P2018-561000)
(86)(22)【出願日】2017年2月20日
(65)【公表番号】特表2019-526091(P2019-526091A)
(43)【公表日】2019年9月12日
(86)【国際出願番号】IB2017050953
(87)【国際公開番号】WO2017216646
(87)【国際公開日】20171221
【審査請求日】2019年7月29日
(31)【優先権主張番号】15/180,756
(32)【優先日】2016年6月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】スーラ、ゼーラ、ノーマン
(72)【発明者】
【氏名】チェン、トン
(72)【発明者】
【氏名】オブライエン、ジョン、ケヴィン
(72)【発明者】
【氏名】プレナー、ダニエル、アーサー
【審査官】 鹿野 博嗣
(56)【参考文献】
【文献】 特開2006−085208(JP,A)
【文献】 特表2011−528142(JP,A)
【文献】 特開2008−047156(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/13
G06F 16/182
(57)【特許請求の範囲】
【請求項1】
プロセッサおよびメモリを有するコンピュータの情報処理により、1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法であって、
アプリケーションのデータ領域の1つまたは複数のデータ処理特性を決定するステップであって、前記データ領域の前記1つまたは複数のデータ処理特性が、データ・レイアウト情報を含む、前記ステップと、
前記1つまたは複数のデータ処理特性に基づいて、前記データ領域の1つまたは複数のデータ処理ポリシーを決定するステップと、
前記1つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいて前記データ領域を使用する前記アプリケーションの範囲のデータ・セットアップ・コストを決定するステップと、
前記1つまたは複数のデータ処理ポリシーおよび前記異なるメモリ・ロケーションの前記データ・セットアップ・コストに従って、前記アプリケーションを最適化するステップと、
を含む、方法。
【請求項2】
前記アプリケーションを最適化するステップが、前記データ領域を格納する1つまたは複数のメモリ・ロケーションを選択するステップを含む、請求項1に記載の方法。
【請求項3】
前記データ領域がメモリ・ロケーション間で移動する1つまたは複数の通信チャネルを選択するステップをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記データ領域の前記1つまたは複数のデータ処理特性が、網羅情報を含む、請求項1ないし3のいずれかに記載の方法。
【請求項5】
前記データ領域の前記1つまたは複数のデータ処理特性が、アクセス頻度情報を含む、請求項1ないし3のいずれかに記載の方法。
【請求項6】
前記1つまたは複数のデータ処理特性のうちの少なくとも1つが、プログラマによって設定された、請求項1に記載の方法。
【請求項7】
前記アプリケーションの各範囲が、アプリケーション・コードの統語構造または一連の実行対象命令により画定された前記アプリケーション・コードの一部によって規定された、請求項4ないしのいずれかに記載の方法。
【請求項8】
1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するコンピュータ可読プログラムを含む非一時的コンピュータ可読記憶媒体であって、前記コンピュータ可読プログラムが、コンピュータ上で実行された場合に、請求項1の各ステップを前記コンピュータに実行させる、非一時的コンピュータ可読記憶媒体。
【請求項9】
1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するシステムであって、
アプリケーションのデータ領域の1つまたは複数のデータ処理特性を決定し、前記1つまたは複数のデータ処理特性に基づいて、前記データ領域の1つまたは複数のデータ処理ポリシーを決定し、前記1つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいて前記データ領域を使用する前記アプリケーションの範囲のデータ・セットアップ・コストを決定し、前記1つまたは複数のデータ処理ポリシーおよび前記異なるメモリ・ロケーションの前記データ・セットアップ・コストに従って、前記アプリケーションを最適化するように構成されたプロセッサを備えたコンパイラ・モジュールを備え、
ここで前記データ領域の前記1つまたは複数のデータ処理特性が、データ・レイアウト情報を含む、
最適化するシステム。
【請求項10】
前記コンパイラ・モジュールが、前記データ領域を格納する1つまたは複数のメモリ・ロケーションを選択するようにさらに構成された、請求項に記載の最適化するシステム。
【請求項11】
前記コンパイラ・モジュールが、前記データ領域がメモリ・ロケーション間で移動する1つまたは複数の通信チャネルを選択するようにさらに構成された、請求項9または10に記載の最適化するシステム。
【請求項12】
前記データ領域の前記1つまたは複数のデータ処理特性が、網羅情報を含む、請求項9ないし11のいずれかに記載の最適化するシステム。
【請求項13】
前記データ領域の前記1つまたは複数のデータ処理特性が、アクセス頻度情報を含む、請求項9ないし11のいずれかに記載の最適化するシステム。
【請求項14】
前記1つまたは複数のデータ処理特性のうちの少なくとも1つが、プログラマによって設定された、請求項に記載の最適化するシステム。
【請求項15】
前記アプリケーションの各範囲が、アプリケーション・コードの統語構造または一連の実行対象命令により画定された前記アプリケーション・コードの一部によって規定された、請求項12ないし13のいずれかに記載の最適化するシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的に、データ管理に関し、より詳細には、メモリ・ロケーションおよびメモリ・アクセス・チャネルの最適化に関する。
【背景技術】
【0002】
現代のコンピューティング・システムは、複数の異なるメモリおよび格納ロケーションを利用可能な場合がある。これは、たとえば単一機器内の複数のメモリ、ローカル・メモリをそれぞれ有する複数の分散コンピューティング・システム、クラウド・コンピューティング・システム等、を含む多くのスケールで可能となっている。複数のメモリへアクセス可能なソフトウェアの実行に際しては、特定のデータを格納する場所および当該データを適当なロケーションに伝達する方法についての決定が自動または手動でなされる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従来の一手法においては、メッセージ・パッシング・インターフェース(MPI)等の低レベルのプログラミング技術によって、プログラマがメモリ格納ロケーションおよび通信方法を手動で決定する。ただし、このプロセスは、エラーが起こりやすく、システムが複雑になるにつれて最適化が困難である。
【0004】
また、プログラマの入力がほとんど必要ない自動システムも利用可能である。ただし、このようなシステムが提供するのは、特定のアプリケーションに合わせて十分に調節することができず、オーバヘッドが不必要に高くなり得る一般的なソリューションである。半自動システムでは、高レベルのプログラマ指示によってデータ移動を制御するが、アプリケーションの特定点で読み出しまたは書き込みがなされるデータ領域に関する情報を利用するのみであり、細かな不規則アクセスを有するデータ領域に対しては十分に作用しない。最悪の場合、半自動システムは、再帰的なポインタ・ベースのデータ構造の使用に際して、低レベルの手法へと移行する。したがって、本発明が解決しようとする課題は、複数のメモリを備えたシステムにおける柔軟な最適化データ処理を提供することである。
【課題を解決するための手段】
【0005】
1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法は、アプリケーションのデータ領域の1つまたは複数のデータ処理特性を決定するステップを含む。1つまたは複数のデータ処理特性に基づいて、データ領域の1つまたは複数のデータ処理ポリシーが決定される。1つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストが決定される。アプリケーションは、1つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って最適化される。
【0006】
1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化する方法は、アプリケーションのデータ領域の1つまたは複数のデータ処理特性を決定するステップを含む。1つまたは複数のデータ処理特性に基づいて、データ領域の1つまたは複数のデータ処理ポリシーが決定される。1つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストが決定される。アプリケーションは、1つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って最適化される。最適化するステップは、データ領域を格納する1つまたは複数のメモリ・ロケーションを選択するステップと、データ領域がメモリ・ロケーション間で移動する1つまたは複数の通信チャネルを選択するステップと、を含む。
【0007】
1つまたは複数の通信チャネルにより相互接続された複数の異なるメモリ・ロケーションを有するコンピューティング・システムのアプリケーションを最適化するシステムは、アプリケーションのデータ領域の1つまたは複数のデータ処理特性を決定し、1つまたは複数のデータ処理特性に基づいて、データ領域の1つまたは複数のデータ処理ポリシーを決定し、1つまたは複数のデータ処理特性に基づいて、異なるメモリ・ロケーションにおいてデータ領域を使用するアプリケーションの範囲のデータ・セットアップ・コストを決定し、1つまたは複数のデータ処理ポリシーおよび異なるメモリ・ロケーションのデータ・セットアップ・コストに従って、アプリケーションを最適化するように構成されたプロセッサを有するコンパイラ・モジュールを備える。
【0008】
上記および他の特徴および利点については、添付の図面と併せて読むべき本開示の例示的な実施形態に関する以下の詳細な説明から明らかとなるであろう。
【0009】
本開示は、以下の図面を参照しつつ、好適な実施形態の詳細な説明を以下に提供する。
【図面の簡単な説明】
【0010】
図1】本発明に係る、複数のメモリを有するコンピューティング・システムのブロック図である。
図2】本発明に係る、データ特性に基づいてデータ処理ポリシーを選択する方法のブロック/フロー図である。
図3】本発明に係る、データ特性およびデータ処理ポリシーに基づいてアプリケーション・コードを最適化する方法のブロック/フロー図である。
図4】本発明に係る、最適化システムのブロック図である。
図5】本発明に係る、処理システムのブロック図である。
図6】本発明に係る、クラウド・コンピューティング環境の図である。
図7】本発明に係る、抽象モデル・レイヤの図である。
【発明を実施するための形態】
【0011】
本発明の実施形態は、プログラム・データを中心とするプログラマからの手掛かりを用いて、データ移動の制御を自動化する。これらの手掛かりは、後続の自動最適化に実質的に役立つとともにデータ処理の特定のポリシーに至るデータの特性を指定する。
【0012】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むものの、本明細書に列挙する教示内容の実装は、クラウド・コンピューティング環境に限定されないことが予め了解されるものとする。むしろ、本発明の実施形態は、現在既知または後々開発されるその他任意の種類のコンピューティング環境と併せて実装され得る。
【0013】
ここで図1を参照するに、複数のメモリを備えた汎用コンピューティング・システム100が示される。コンピューティング・システム100は、それぞれの処理リソース104およびメモリ・リソース106をそれぞれ備えた複数のシステム・ノード102を具備する。以下により詳しく論じる通り、処理リソース104は、1つまたは複数のハードウェア・プロセッサを含んでいてもよく、メモリ・リソース106は、任意適当な種類の1つまたは複数のストレージ・バンクを含んでいてもよいことが了解されるものとする。
【0014】
システム・ノード102は、複数の通信チャネル108のうちの1つを介して、互いに通信する。通信チャネル108は、たとえばシステム内バス、有線接続、無線接続、インターネット接続等、を含む任意適当な形態のデータ通信システムであってもよい。各システム・ノード102は、データの要求を受信し、要求されたデータをメモリ・リソース106から読み出し、1つまたは複数の通信チャネル108を介して、要求されたデータを要求ノードに伝達する1つまたは複数のメモリ・コントローラ110を具備する。また、メモリ・コントローラ110は、他のノード102に対するデータの応答を処理することによって、たとえば、必要となるノード102でローカル・コピーを生成することによりシステム性能を向上させる。
【0015】
通信チャネル108は、ハードウェアおよびソフトウェアの両態様を含むことに留意するものとする。ハードウェア・メカニズムは、たとえばソフトウェアによるアプリケーション・プログラミング・インターフェース(API)の呼び出しを用いることによって直接露出し得る物理的に利用可能な通信経路を表す。2つのメモリが両者間に直接物理相互接続の形態の複数の物理接続を有していてもよいが、たとえば、第1のメモリ・リソース106から処理リソース104を通じて第2のメモリ・リソースに至るデータ・フローによって、間接的な物理接続が存在していてもよい。ソフトウェア通信メカニズムは、ハードウェア・メカニズム上に構築され、付加的なサービスを提供していてもよいし、何らかのポリシーを執行していてもよい。ハードウェア・メカニズムおよびソフトウェア・メカニズムは、一体的に通信チャネル108を構成する。
【0016】
データの格納ロケーションおよび要求ノードへのデータの伝達方法をメモリ・コントローラ110がどのようにして決定するかは、処理リソース102上で動作するソフトウェア・プログラムによって決まる。各ソフトウェア・プログラムは、データ管理に対して異なるニーズを有することになるため、使用している特定種類のデータに対応したそれぞれの最適なデータ処理ポリシーを有することになる。
【0017】
これらのさまざまな可能性に対応するため、ソフトウェア・プログラムは、問題のデータの既知の特性に従って、コンパイル時および実行時に最適化される。データ処理ポリシーはコンパイル時に決まるが、コードは、ポリシーの実装の容易化に役立つ実行時呼び出しでさらにコンパイルされるようになっていてもよい。実行時呼び出しは、ソフトウェア通信メカニズムのアプリケーション・プログラミング・インターフェース(API)呼び出しを含んでいてもよいし、実行時システム・リソースまたはプログラム・データの状態を尋ねて実行経路の選定を容易化する呼び出しであってもよい。
【0018】
データ特性は、プログラマにより明示的に設定されるようになっていてもよいし、自動的に発見されるようになっていてもよい。使用可能なデータ特性としては、所与の範囲のデータのデータ領域のサイズ、読み出し/書き込み/読み書きアクセス・ステータス、網羅情報、アクセス頻度情報、およびデータ・レイアウト情報が挙げられる。特に、網羅情報は、アクセスを受けるデータ領域の要素数(たとえば、データ領域サイズのわずか、すべて、ほとんど、または一部の固定または可変割合)を表し、アクセス頻度情報は、データ領域がアクセスを受ける頻度(たとえば、一度、ごく稀、一定間隔、頻繁等)を表し、データ・レイアウト情報は、たとえばアクセスがストリーミング、ランダム、またはストライドであるかを表す。最適化中に考慮可能なほかの基準としては、データの移動に要する時間、移動するデータの量および頻度、データのコピーのオーバヘッド、統一性および一貫性を維持するコスト、システム100のパワーおよび帯域幅の制約、ならびに演算対通信比および重複がある。
【0019】
特定の一実施形態において、システム100は、互いに地理的に大きく離間し得る多くの異なるノード102を備えたクラウド・コンピューティング・システムとして実装される。このようなシステムにおいて、通信チャネル108を介してあるノード102から別のノードにデータを移動させるコストは、当該データに対して関連する演算を行うコストよりもかなり高くなる場合がある。このような場合は、データ・ストレージおよび通信チャネルを最適化する効用が明らかである。
【0020】
ここで図2を参照するに、データ特性に基づいてポリシーを選択する方法が示される。ブロック202では、システム100上での動作が意図されるアプリケーションのソース・コードを修正して、データ領域のデータ特性を指定する。具体的には、ブロック202がプログラマによって手動で実行可能であり、たとえば上述の特性のうちの1つを指定する明示的な命令の入力を含むと考えられる。そして、ブロック204では、たとえば静的解析および動的プロファイリングを用いることにより、アプリケーションのデータ領域の特性を自動的に検出して、特性定義を可能な限り多く補う。特性が割り当てられていない状態の任意のデータ領域について、ブロック206では、デフォルト値を設定する。
【0021】
ブロック208では、アプリケーションの全範囲にわたって、各データ領域の特性を解析する。本明細書において、用語「範囲」は、アプリケーション・コードの統語構造または一連の実行対象命令に基づいて画定可能な当該コードの一部を表す。この解析は、システム100の特定の構成およびアプリケーションのニーズによって決まるが、いくつかの例を以下に示す。一般的に、ブロック208では、データ領域の格納ロケーションおよびこれらデータ領域の移動に用いる通信チャネル(ハードウェアおよびソフトウェアの両メカニズム)を決定することにより、1つまたは複数のシステム測定基準(たとえば、アプリケーションの速度、パワー/エネルギー効率、または帯域幅利用)を最適化しようとする。この解析では、アプリケーションのニーズを鑑みて、ハードウェアおよびソフトウェアの両制限を考慮するようにしてもよい。解析に基づいて、ブロック210では、初期データ配置の設定を含めて、各データ領域のデータ処理特性を選択する。
【0022】
複数の異なるデータ処理ポリシーのいずれかは、ソフトウェア・プログラムの所与の範囲の所与のデータ領域に当てはまり得る。一般的に、ポリシーは、単純(たとえば、2つの異なる通信チャネルの選択)であってもよいし、より複雑(たとえば、データがAにある場合はXを選択し、それ以外はYを選択)であってもよい。
【0023】
第1の例示的なポリシーは、異なる統一性/一貫性オプションの選定である。一例として、システム構成には、3つの異なるメモリ・ロケーションA、B、およびCを含み、AおよびBにわたるハードウェアでは統一性に対する効率的な対応があるものの、Cでは対応がなくてもよい。Cの統一性は、高オーバヘッドでソフトウェアにて処理される。例示的なソフトウェアのアプリケーション・コードは、システムレベルの統一性に依拠しており、並列実行可能な3つの範囲X、Y、およびZを有するが、これらはすべて、同じデータ領域にアクセスする。このデータ領域は、演算に先立って、ローカル・メモリA、B、およびCにコピーされる。そして、X、Y、およびZのすべてがデータ領域の全要素への書き込みの場合は、Cのソフトウェア統一性を有効とせずに、(X,Y,Z)のマッピングにより任意の順序にて(A,B,C)上で実行するようにしてもよい。ただし、Xがデータ領域の全要素への書き込みと考えられない場合は、XのCへのマッピングに、高コストのソフトウェア統一性処理を要することになる。この例において、ポリシーの選択では、これらの特性を考慮して、コストを計算するとともにコンピューティング・ロケーションを選ぶことで、XのCへのマッピングを防止する。こうして、このポリシーでは、統一性に対応する通信チャネル108と対応しない通信チャネルとの間の選択を行う。
【0024】
第2の例示的なポリシーは、異なるソフトウェア対応通信メカニズムの選定(たとえば、ソフトウェア通信チャネル108の選択)である。例示的なシステムは、ホスト・プロセッサおよびメモリのほか、別個のアクセラレータ・プロセッサおよびメモリを有していてもよく、2つのメモリ間の相互接続は、帯域幅が制限され、少量のデータの移動に一定の時間を要する一方、何らかの閾値より多くの量の移動には、より長い時間を要する。2つの例示的なソフトウェア・ライブラリがデータの移動を実行するが、一方が急いでデータを押し出し(バルク移動)、もう一方がゆっくりとデータを引き込む(複数の微細移動)。例示的な一用途において、ソフトウェアは、大きなデータ領域のランダム要素にアクセスする。アクセスを受ける要素がほとんどない場合、複数の微小移動の待ち時間は、データ領域全体の移動に要する時間よりも短くなる可能性がある。この例において、ポリシーの選択では、アクセス頻度特性を考慮することにより、異なるポリシーのコストおよび利益を重み付けする。ソフトウェア・ライブラリの高速版および低速版は、異なる通信チャネル108を特徴付ける異なるソフトウェア・メカニズムを表す。
【0025】
第3の例示的なポリシーは、異なるハードウェア対応メカニズムの選定(たとえば、ハードウェア・メカニズムの選択)である。上記の通り、例示的なシステムは、ホスト・プロセッサおよびメモリならびにアクセラレータ・プロセッサおよびメモリを有し、ハードウェア相互接続によって、アクセラレータは、ホスト・メモリおよびアクセラレータ・メモリの両者に直接アクセス可能である(言い換えると、アクセラレータは、ホスト・メモリにマッピングするアドレスのほか、アクセラレータ・メモリにマッピングするアドレスを用いたロード/格納命令に対応する)。この場合、アクセラレータ上でめったにアクセスを受けないデータは、そのローカル・メモリへのコピーが必要ない。一方、頻繁にアクセスを受けるデータは依然として、コピーにより性能を向上させるものとする。したがって、ポリシーの選択では、データのアクセスの頻度を規定した特性を考慮する。この例において、ホスト・メモリへの直接アクセスおよびデータのローカル・メモリへのコピーは、異なる通信チャネル108を表す。
【0026】
第4の例示的なポリシーでは、データがある範囲で一度、正確に書き込まれた場合、データを次のロケーションに押し出す。例示的なシステムは、ホスト・プロセッサおよびメモリのほか、別個のアクセラレータ・プロセッサおよびメモリを具備していてもよく、2つのメモリ間の相互接続は、長い移動待ち時間を有する。また、この例示的なシステムに利用可能で、データ移動の実行に使用可能な2つの例示的なソフトウェア・ライブラリが存在していてもよく、第1のライブラリは、データのコピーによる書き込みアクセスの後、急いでデータを他のロケーションに押し出し、第2のライブラリは、読み出しアクセスでデータが最後に更新されたロケーションからゆっくりとデータを引き込む。ホスト上のデータ領域の要素に一度、ソフトウェアが正確に書き込みを行った後、アクセラレータ上で読み出しを複数回行った場合は、相互接続を介したデータ領域の要素の移動に、急いで押し出すライブラリを使用するのがより効率的である。読み出しの蓄積が、比較的高い書き込みコストを上回るためである。ソフトウェア・ライブラリの高速版および低速版は、異なる通信チャネル108を特徴付ける異なるソフトウェア・メカニズムを表す。
【0027】
第5の例示的なポリシーは、通信チャネル108を介したリモートアクセスを回避するように、データの配置および演算をガイドする。データ領域ごとに決定されるデータ特性の使用により、データ・アフィニティの最適化を自動で適用することができる(たとえば、アクセスを受けるコンピューティング・ロケーションの近くにデータを配置する)。例示的な一用途では、並列コード部でアクセスを受ける大きなデータ領域を有していてもよい。データが一定のパターン(たとえば、ストリーミングまたはストライド・データ)でアクセスを受ける場合、データ領域は、複数のメモリに区分・配置可能である。そして、並列コード部のコンピューティング・ロケーションは、コードによるアクセスを受けるデータに対応したデータ領域区分を保持するメモリに対して物理的に近くなるように選択可能である。これは、通信チャネル108を介したデータ移動を抑制または除去するのに役立ち得る。
【0028】
ここで図3を参照するに、アプリケーションのコードを最適化する方法が示される。ブロック302では、アプリケーションのさまざまな範囲のうちから、新たな範囲を選択する。ブロック304では、範囲中のアクセスを受ける各データ領域の特性を集める。ブロック304では、図2のプロセスにより決定されたのと同じデータ特性を再利用するようにしてもよい。そして、ブロック306では、この情報により増強されたコンパイラ解析を実行する。コンパイラ解析としては、たとえばコード中のアクセスを受ける一組のデータ要素およびアクセス・パターンを決定するのに役立つ制御およびデータ・フロー解析、エイリアス解析、および依存性解析等の解析が挙げられる。
【0029】
ブロック308では、システム100で利用可能な異なるコンピューティング・ロケーションそれぞれのデータ・セットアップ・コストを計算する。各ロケーションについて、コード中のアクセスを受ける一組のデータ要素、アクセス・パターン、およびデータ処理ポリシーに関する情報の使用により、当該コンピューティング・ロケーションで上記範囲が実行される場合に必要となるデータ移動の数、サイズ、および方向を決定する。その後、データ処理ポリシーにより選択された通信チャネル108について、すべてのデータ移動のコストを推定することができる。適用可能なコスト測定基準としては、たとえば実行時間、パワー/エネルギー効率、または帯域幅の使用、あるいはその組み合わせ等、最適化対象のシステム・パラメータの任意の部分集合が挙げられる。
【0030】
ブロック310では、計算したコストに基づいて、範囲のコンピューティング・ロケーションを選択する。コンピューティング・ロケーションは、アプリケーションの1つまたは複数のニーズに従って選択される。たとえば、一部のコンピューティング・ロケーションは、アプリケーションが要する特徴に欠けているかもしれないし、これらの特徴と関連付けられたコストが高いかもしれないため、異なるコンピューティング・ロケーションが選択されるようになっていてもよい。別の例において、コストは、処理のパワー消費を特徴付けるが、一部のロケーションの処理がより高いパワー・コストを招来し得る。そして、ブロック312では、データ処理ポリシーを関連するコンピューティング・ロケーションの範囲に適用する。範囲中の各データ領域について、当該データ領域のデータ処理ポリシーおよび当該ロケーションで利用可能な通信チャネル108に基づいて、通信チャネル108が選択される。当該データ領域の要素に対応する範囲中のすべてのデータ移動に対して、選択された通信チャネル108が用いられる。
【0031】
ブロック314では、未処理の別の範囲がアプリケーションに存在するかを判定する。存在する場合は、処理がブロック302に戻って、新たな範囲が選択される。存在しない場合、ブロック316では、選択されたコンピューティング・ロケーションおよびデータ処理ポリシーを用いて、最適化コードを生成する。この最適化コードは、プログラマによる明示的な配置の必要なく、関係するデータ領域の特性に厳密に基づく方式で、範囲に跨るアプリケーションのニーズを考慮に入れる。結果として、コードがブロック318で実行されると、アプリケーションはより高性能に動作する。
【0032】
データ領域の最良のメモリ・ロケーションを決定するのに用いられる最適化基準は、使用する特定のアプリケーションおよびシステム・パラメータによって決まることになる。最適化基準(すなわち、最適化プロセスが実現する目標)としては、たとえばデータ移動時間、移動対象のデータの量/頻度、データ・コピーのオーバヘッド、またはシステムの統一性/一貫性の維持もしくはパワー/帯域幅制約の満足のためのコストの改善が挙げられる。
【0033】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってもよい。コンピュータ・プログラム製品には、本発明の態様をプロセッサに実行させるコンピュータ可読プログラム命令を有する(1つまたは複数の)コンピュータ可読記憶媒体を含んでいてもよい。
【0034】
コンピュータ可読記憶媒体としては、命令実行機器が使用する命令を保持および格納可能な有形のデバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非包括的な一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリー・メモリ(ROM)、消去・プログラム可能リードオンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リードオンリー・メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチカードまたは溝中持ち上げ構造等の機械的符号化装置、およびこれらの任意適当な組み合わせを含む。本明細書において、コンピュータ可読記憶媒体は、電波またはその他自由伝搬電磁波、導波路またはその他伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを伝わる電気信号等の一過性の信号自体として解釈しないものとする。
【0035】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング/処理装置へのダウンロードまたはたとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、あるいはその組み合わせのネットワークを介した外部コンピュータまたは外部記憶装置へのダウンロードが可能である。ネットワークは、伝送銅ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えていてもよい。各コンピューティング/処理装置におけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、当該コンピュータ可読プログラム命令を転送して、各コンピューティング/処理装置内のコンピュータ可読記憶媒体に格納する。
【0036】
本発明の演算を実行するコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk、C++等のオブジェクト指向プログラミング言語およびCプログラミング言語もしくは類似のプログラミング言語等の従来の手続き型プログラミグ言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、スタンドアロン型のソフトウェア・パッケージとして、ユーザのコンピュータ上で全部または一部が実行されるようになっていてもよいし、ユーザのコンピュータおよびリモート・コンピュータ上でそれぞれ一部が実行されるようになっていてもよいし、リモート・コンピュータまたはサーバ上で全部が実行されるようになっていてもよい。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されていてもよいし、(たとえば、インターネット・サービス・プロバイダを用いることにより、インターネットを通して)外部のコンピュータに接続されていてもよい。いくつかの実施形態において、たとえばプログラム可能論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用してコンピュータ可読プログラム命令を実行することにより、電子回路をカスタマイズして、本発明の態様を実行するようにしてもよい。
【0037】
本発明の態様は、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図、あるいはその両方を参照して、本明細書に記載している。フローチャート図またはブロック図、あるいはその両方の各ブロックならびにフローチャート図またはブロック図、あるいはその両方のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることが了解される。
【0038】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供され、機械の生成により、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサにより実行される命令によって、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに規定された機能/動作を実装する手段が形成されるようになっていてもよい。また、これらのコンピュータ可読プログラム命令は、特定の方式で機能するようにコンピュータ、プログラム可能なデータ処理装置、または他の機器、あるいはその組み合わせに指示可能なコンピュータ可読記憶媒体に格納されることにより、命令が格納されたコンピュータ可読記憶媒体に、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに規定された機能/動作の態様を実装する命令を含む製造品が含まれるようにしてもよい。
【0039】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能なデータ処理装置、または他の機器にロードされ、一連の動作ステップがコンピュータ、他のプログラム可能な装置、または他の機器上で実行されて、コンピュータ実装プロセスの生成により、コンピュータ、他のプログラム可能な装置、または他の機器上で実行される命令によって、フローチャートまたはブロック図、あるいはその両方の1つまたは複数のブロックに規定された機能/動作が実装されるようになっていてもよい。
【0040】
図中のフローチャートおよびブロック図は、本発明の種々実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示している。この点において、フローチャートまたはブロック図の各ブロックは、規定の論理機能を実装する1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の部分を表していてもよい。いくつかの別の実施態様において、ブロックに記載の機能は、図中に記載の順序から外れて実行されるようになっていてもよい。たとえば、関係する機能に応じて、連続して示す2つのブロックが実際のところ、実質的に同時に実行されるようになっていてもよいし、ブロックが逆順で実行される場合があってもよい。また、ブロック図またはフローチャート図、あるいはその両方の各ブロックおよびブロック図またはフローチャート図、あるいはその両方のブロックの組み合わせは、規定の機能もしくは動作の実行または専用ハードウェアおよびコンピュータ命令の組み合わせの実行を行う専用ハードウェアベースのシステムによって実装可能であることに留意する。
【0041】
本明細書において、本原理の「一実施形態(one embodimentまたはan embodiment)」のほか、その他の変形例に対する言及は、当該実施形態に関連して説明する特定の特徴、構造、特性等が本原理の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書全体のさまざまな場所において、表現「一実施形態において(in one embodimentまたはin an embodiment)」のほか、その他任意の変形例の出現は、必ずしもすべてが同じ実施形態を参照しているわけではない。
【0042】
たとえば「A/B」、「AまたはB、あるいはその両方」、および「AおよびBの少なくとも一方」の場合等、「/」、「または〜あるいは」、および「〜の少なくとも一方」のうちのいずれかの使用は、1番目に挙げられた選択肢(A)のみの選択、2番目に挙げられた選択肢(B)のみの選択、または両選択肢(AおよびB)の選択を含むことが意図されることが認識される。別の例として、「A、B、またはC、あるいはその組み合わせ」および「A、B、およびCのうちの少なくとも1つ」の場合、これらの表現は、1番目に挙げられた選択肢(A)のみの選択、2番目に挙げられた選択肢(B)のみの選択、3番目に挙げられた選択肢(C)のみの選択、1番目および2番目に挙げられた選択肢(AおよびB)のみの選択、1番目および3番目に挙げられた選択肢(AおよびC)のみの選択、2番目および3番目に挙げられた選択肢(BおよびC)のみの選択、または3つの全選択肢(A、B、およびC)の選択を含むことが意図される。当技術および関連技術の当業者には容易に明らかとなる通り、これは、挙げられた項目と同じ数だけ拡張可能である。
【0043】
ここで図4を参照するに、最適化システム400が示される。システム400は、ハードウェア・プロセッサ402およびメモリ404を具備する。システム400は、1つまたは複数の機能モジュールをさらに具備していてもよい。機能モジュールは、メモリ404に格納され、ハードウェア・プロセッサ402により実行されるソフトウェアとして実装されていてもよい。別の実施形態において、機能モジュールは、たとえば特定用途向け集積チップまたはフィールド・プログラマブル・ゲート・アレイの形態の1つまたは複数の離散ハードウェア・コンポーネントとして実装されていてもよい。
【0044】
開発者環境406がシステム400上で動作して、プログラマは、メモリ404に格納されたソース・コード408を変更することができる。開発者環境406は、ソース・コード408のさまざまな範囲にわたってデータ領域の特性410を手動で指定できるようにする。コンパイラ・モジュール414がデータ特性およびシステム記述412を使用して、ソース・コードに適用するデータ処理ポリシーを選択するとともに、各データ領域のコンピューティング・ロケーションを選択する。そして、コンパイラ・モジュール414は、コンパイルされたアプリケーションを出力して、複数のコンピューティング・ロケーションおよびメモリ・ロケーションを有するシステム100上で実行する。
【0045】
ここで図5を参照するに、最適化システム400を表し得る例示的な処理システム500が示される。処理システム500は、システム・バス502を介して他のコンポーネントに動作可能に結合された少なくとも1つのプロセッサ(CPU)504を具備する。システム・バス502には、キャッシュ506、リードオンリー・メモリ(ROM)508、ランダム・アクセス・メモリ(RAM)510、入出力(I/O)アダプタ520、サウンド・アダプタ530、ネットワーク・アダプタ540、ユーザ・インターフェース・アダプタ550、およびディスプレイ・アダプタ560が動作可能に結合されている。
【0046】
システム・バス502には、I/Oアダプタ520によって、第1の記憶装置522および第2の記憶装置524が動作可能に結合されている。記憶装置522および524としては、ディスク記憶装置(たとえば、磁気または光ディスク記憶装置)、固体磁気デバイス等のいずれかが可能である。記憶装置522および524としては、同じ種類の記憶装置も可能であるし、異なる種類の記憶装置も可能である。
【0047】
システム・バス502には、サウンド・アダプタ530によって、スピーカ532が動作可能に結合されている。システム・バス502には、ネットワーク・アダプタ540によって、送受信機542が動作可能に結合されている。システム・バス502には、ディスプレイ・アダプタ560によって、ディスプレイ装置562が動作可能に結合されている。
【0048】
システム・バス502には、ユーザ・インターフェース・アダプタ550によって、第1のユーザ入力装置552、第2のユーザ入力装置554、および第3のユーザ入力装置556が動作可能に結合されている。ユーザ入力装置552、554、および556としては、キーボード、マウス、キーパッド、画像取り込み装置、運動検知装置、マイク、これらのうちの少なくとも2つの機能を内蔵した装置等が可能である。当然のことながら、本原理の思想を維持しつつ、他の種類の入力装置も使用可能である。ユーザ入力装置552、554、および556としては、同じ種類のユーザ入力装置も可能であるし、異なる種類のユーザ入力装置も可能である。ユーザ入力装置552、554、および556は、システム500に対する情報の入力および出力に用いられる。
【0049】
当然のことながら、処理システム500は、当業者であれば容易に考え付く通り、他の要素(図示せず)を具備していてもよいし、特定の要素を省略していてもよい。たとえば、当業者であれば容易に理解できる通り、特定の実施態様によって、その他さまざまな入力装置または出力装置、あるいはその両方を処理システム500に具備可能である。たとえば、さまざまな種類の無線または有線、あるいはその両方の入力装置または出力装置、あるいはその両方を使用可能である。さらに、当業者であれば容易に認識できる通り、さまざまな構成の別のプロセッサ、コントローラ、メモリ等も利用可能である。処理システム500の上記および他の変形例は、本明細書に示す本原理の教示内容を所与として、当業者であれば容易に考え付く。
【0050】
ここで図6を参照するに、例示的なクラウド・コンピューティング環境50が示される。図示のように、クラウド・コンピューティング環境50は、たとえば個人用デジタル補助装置(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組み合わせ等のクラウド消費者が使用するローカルのコンピューティング装置が通信可能な1つまたは複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信するようになっていてもよい。また、上述のプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはこれらの組み合わせ等の1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化されていてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド消費者がローカルのコンピューティング装置上でリソースを維持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組み合わせを提供することができる。図6に示すコンピューティング装置54A〜54Nの種類は、例示に過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえば、ウェブ・ブラウザを用いることにより)任意の種類のネットワークまたはネットワーク指定可能な接続、あるいはその両方を介して、如何なる種類のコンピューティング装置とも通信可能であることが了解される。
【0051】
ここで図7を参照するに、クラウド・コンピューティング環境50(図6)が提供する一組の機能的抽象レイヤが示される。図7に示すコンポーネント、レイヤ、および機能は、例示に過ぎず、本発明の実施形態はこれに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
【0052】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャに基づくサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、ならびにネットワークおよびネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
【0053】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75といった仮想エンティティ例を提供可能な抽象レイヤを与える。
【0054】
一例において、管理レイヤ80は、後述の機能を提供するようにしてもよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でのタスクの実行に利用されるコンピューティング・リソースおよび他のリソースの動的入手を提供する。メータリングおよびプライシング82は、クラウド・コンピューティング環境内でリソースが利用された場合のコスト追跡およびこれらリソースの消費の請求またはインボイスを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでいてもよい。セキュリティは、クラウド消費者およびタスクの同一性確認のほか、データおよび他のリソースの保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、所要サービス・レベルが満たされるように、クラウド・コンピューティング・リソース割り当ておよび管理を提供する。サービス・レベル合意(SLA)プランニングおよび達成85は、SLAに従って将来の要求が見込まれるクラウド・コンピューティング・リソースの予備調整および入手を提供する。
【0055】
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラス教育提供93、データ解析処理94、トランザクション処理95、およびソース・コード最適化96が挙げられる。
【0056】
複数のメモリを備えたシステムにおける柔軟な最適化データ処理の好適な実施形態(例示に過ぎず、これらに限定されない)を説明したが、当業者であれば、上記教示内容に照らして、改良および変形を行い得ることに留意する。したがって、添付の特許請求の範囲により概略規定される本発明の範囲内の開示の特定の実施形態において、変更が可能であることが了解されるものとする。以上、本発明の態様を説明したが、特許法により詳細および細部が求められていることから、特許状により保護される請求および所望事項を添付の特許請求の範囲に示す。
図1
図2
図3
図4
図5
図6
図7