(57)【特許請求の範囲】
【請求項１】
外部ネットワークを介して相互接続される、ホストコンピュータと、疎結合型アクセラレータとして機能する少なくとも１つのアクセラレータ装置との間で実行される分散計算方法であって、前記分散計算方法は、
データサイズの範囲についてデータ転送速度および計算速度を性能分析し、前記外部ネットワークを経由するデータ転送に最適なチャンクサイズを、前記データ転送速度を、チャンクからフレーム形成する速度およびチャンクを計算する速度を含む計算速度で除算した値として定義される、重なり比が１に最も近くなるようなデータサイズに、決定するステップと、
前記ホストコンピュータのメモリ内に格納されたあるサイズのデータを分割または集約して、前記最適なチャンクサイズを有するチャンクに該データをカプセル化するステップと、
カプセル化されたデータを前記アクセラレータ装置に振り分けるステップと、
前記アクセラレータ装置に対し、受信した前記カプセル化されたデータに関してパイプライン計算を命令するステップと
を含み、
前記重なり比は、実際にかかった転送時間から計算され、前記重なり比が１に最も近くなるようなデータサイズが複数存在する場合は、前記最適なチャンクサイズは、最小データサイズと最大データサイズとの間で最大のデータ転送速度を有するデータサイズに決定される、
分散計算方法。
【請求項２】
前記最適なチャンクサイズは、計算速度に関して前記性能分析するステップ中に送信された最小データサイズと最大データサイズとの間で、最大のデータ転送速度を有するデータサイズに決定される、請求項１に記載の分散計算方法。
【請求項３】
前記パイプライン計算を命令するステップは、
前記アクセラレータ装置内のバッファ・オブジェクトへのチャンク数分の前記カプセル化されたデータの複数書き込みを命令するステップと、
前記カプセル化されたデータの受信に際して、前記カプセル化されたデータへの前記アクセラレータ装置の演算の実行を命令するステップと
を含む、請求項１に記載の分散計算方法。
【請求項４】
前記データのカプセル化について、前記データのサイズが前記最適なチャンクサイズよりも大きい場合に前記データに前記分割が適用され、前記データのサイズが前記最適なチャンクサイズよりも小さい場合に前記データは前記集約に施される、請求項１に記載の分散計算方法。
【請求項５】
前記アクセラレータ装置は、アプリケーション・プログラムを実装するコンピュータから選択される、請求項１に記載の分散計算方法。
【請求項６】
前記アクセラレータ装置は、ＴＣＰ／ＩＰネットワークを用いて前記ホストコンピュータとネットワーク接続される、請求項１に記載の分散計算方法。
【請求項７】
外部ネットワークを介して相互接続される、ホストコンピュータと、疎結合型アクセラレータとして機能する少なくとも１つのアクセラレータ装置との間で分散計算するためのプログラムであって、前記プログラムは、前記ホストコンピュータに対し、
データサイズの範囲についてデータ転送速度および計算速度を性能分析し、前記外部ネットワークを経由するデータ転送に最適なチャンクサイズを、前記データ転送速度を、チャンクからフレーム形成する速度およびチャンクを計算する速度を含む計算速度で除算した値として定義される、重なり比が１に最も近くなるようなデータサイズに、決定するステップと、
前記ホストコンピュータのメモリ内に格納されたあるサイズのデータを分割または集約して、前記最適なチャンクサイズを有するチャンクに該データをカプセル化するステップと、
カプセル化されたデータを前記アクセラレータ装置に振り分けるステップと、
前記アクセラレータ装置に対し、受信した前記カプセル化されたデータに関してパイプライン計算を命令するステップと
を実行させ、
前記重なり比は、実際にかかった転送時間から計算され、前記重なり比が１に最も近くなるようなデータサイズが複数存在する場合は、前記最適なチャンクサイズは、最小データサイズと最大データサイズとの間で最大のデータ転送速度を有するデータサイズに決定される、
プログラム。
【請求項８】
前記最適なチャンクサイズは、計算速度に関して前記性能分析するステップ中に送信された最小データサイズと最大データサイズとの間で、最大のデータ転送速度を有するデータサイズに決定される、請求項７に記載のプログラム。
【請求項９】
前記パイプライン計算を命令するステップは、
前記アクセラレータ装置内のバッファ・オブジェクトへのチャンク数分の前記カプセル化されたデータの複数書き込みを命令するステップと、
前記カプセル化されたデータの受信に際して、前記カプセル化されたデータへの前記アクセラレータ装置の演算の実行を命令するステップと
を含む、請求項７に記載のプログラム。
【請求項１０】
前記データのカプセル化について、前記データのサイズが前記最適なチャンクサイズよりも大きい場合に前記データに前記分割が適用され、前記データのサイズが前記最適なチャンクサイズよりも小さい場合に前記データに前記集約が適用される、請求項７に記載のプログラム。
【請求項１１】
前記アクセラレータ装置は、アプリケーション・プログラムを実装するコンピュータから選択され、前記アクセラレータ装置は、ＴＣＰ／ＩＰネットワークを用いて前記ホストコンピュータとネットワーク接続される、請求項７に記載のプログラム。
【請求項１２】
外部ネットワークを介して相互接続される、ホストコンピュータと、疎結合型アクセラレータとして機能する少なくとも１つのアクセラレータ装置との間の分散計算を実行する前記ホストコンピュータであって、前記ホストコンピュータは、
データサイズの範囲についてデータ転送速度および計算速度を性能分析するプロファイラ部と、
性能分析された前記データ転送速度および前記計算速度から、前記外部ネットワークを経由するデータ転送に最適なチャンクサイズを、前記データ転送速度を、チャンクからフレーム形成する速度およびチャンクを計算する速度を含む計算速度で除算した値として定義される、重なり比が１に最も近くなるようなデータサイズに、決定するサイズ最適化部と、
前記ホストコンピュータのメモリ内に格納されたあるサイズのデータを分割または集約することによって、前記最適なチャンクサイズを有するチャンクに該データをカプセル化するカプセル化部と、
カプセル化されたデータを前記アクセラレータ装置に振り分け、かつ、該アクセラレータ装置に対し、受信した前記カプセル化されたデータに関してパイプライン計算を命令するディスパッチャ部と
含み、
前記重なり比は、実際にかかった転送時間から計算され、前記重なり比が１に最も近くなるようなデータサイズが複数存在する場合は、前記最適なチャンクサイズは、最小データサイズと最大データサイズとの間で最大のデータ転送速度を有するデータサイズに決定される、
ホストコンピュータ。
【請求項１３】
前記最適なチャンクサイズは、計算速度に関して前記プロファイラ部により送信された最小データサイズと最大データサイズとの間で、最大のデータ転送速度を有するデータサイズに決定される、請求項１２に記載のホストコンピュータ。
【請求項１４】
前記ディスパッチャ部は、前記アクセラレータ装置内のバッファ・オブジェクトへのチャンク数分の前記カプセル化されたデータの複数書き込みを命令し、前記カプセル化されたデータの受信に際して、前記カプセル化されたデータへの前記アクセラレータ装置の演算の実行を命令する、請求項１２に記載のホストコンピュータ。
【請求項１５】
ＴＣＰ／ＩＰネットワークを介して相互接続される、ホストコンピュータと、疎結合型アクセラレータとして機能する少なくとも１つのアクセラレータ装置とを含む分散計算システムであって、前記アクセラレータ装置は、アプリケーション・プログラムを実装し、前記ホストコンピュータは、
データサイズの範囲についてデータ転送速度および計算速度を性能分析するプロファイラ部と、
性能分析された前記データ転送速度および前記計算速度から、前記外部ネットワークを経由するデータ転送に最適なチャンクサイズを、前記データ転送速度を、チャンクからフレーム形成する速度およびチャンクを計算する速度を含む計算速度で除算した値として定義される、重なり比が１に最も近くなるようなデータサイズに、決定するサイズ最適化部と、
前記ホストコンピュータのメモリ内に格納されたあるサイズのデータを分割または集約することによって、前記最適なチャンクサイズを有するチャンクに該データをカプセル化するカプセル化部と、
カプセル化されたデータを前記アクセラレータ装置に振り分け、かつ、該アクセラレータ装置に対し、受信した前記カプセル化されたデータに関してパイプライン計算を命令するディスパッチャ部と
を含み、
前記最適なチャンクサイズは、計算および通信の前記重なり比が１に最も近いデータサイズに決定され、前記重なり比が１に最も近くなるようなデータサイズが複数存在する場合は、最小データサイズと最大データサイズとの間で最大のデータ転送速度を有するものに決定され、
前記ディスパッチャ部は、前記アクセラレータ装置内のバッファ・オブジェクトへのチャンク数分の前記カプセル化されたデータの複数書き込みを命令し、前記カプセル化されたデータの受信に際して、前記カプセル化されたデータへの前記アクセラレータ装置の演算の実行を命令する、分散計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散計算技術に関し、より詳細には、複数のアクセラレータ装置を用いた分散並列計算に関する。
【背景技術】
【０００２】
近年、計算効率および／または計算速度を高めるためにＧＰＵ（Graphic Processor Units）を用いたマルチプロセッサ計算が広く利用されている。ＧＰＵは、典型的には、計算性能を高めるためメインＣＰＵのアクセラレータとして用いられる。上述のようなマルチプロセッサ計算アーキテクチャでは、ＰＣＩまたはＰＣＩ−Ｅｘｐｒｅｓｓなどの内部バスを介して接続されたＧＰＵネットワークがよく用いられる。ここでは、上述のような内部バスを介して接続されたＧＰＵを、密結合型アクセラレータ装置（Tightly-Coupled Accelerator Devices）と参照する。
【０００３】
ＧＰＵは、適切なプログラム言語によって、ホストＣＰＵの制御の下、並列動作して計算性能を高めている。上述したようなプログラム言語の一例としては、ＯｐｅｎＣＬを挙げることができる。ＯｐｅｎＣＬは、ホストＣＰＵおよびＧＰＵ間のデータ転送を管理するために適用することができ、本発明では、このデータ転送における性能コストを最小化するため利用することができる。
【０００４】
他のスキームのマルチプロセッサ計算アーキテクチャは、例えば、分散コンピューティングまたはグリッド・コンピューティングとして知られている。これらのマルチプロセッサ計算アーキテクチャは、ホストコンピュータまたはマスタコンピュータの制御下で計算を分担する複数のサーバまたはコンピュータを含むことができる。このタイプのマルチプロセッサ計算アーキテクチャでは、コンピュータ間は、イーサネット（登録商標）などの外部バスネットワークと種々の物理接続プロトコルを用いたネットワーク・インタフェース・カードとを用いて接続される。コンピュータは、ネットワーク内で実行される計算全体をサポートすることができ、分散計算を担当するコンピュータは、アクセラレータと見なすことができる。しかしながら、上記分散計算アーキテクチャにおけるコンピュータは、外部ネットワークを介してＴＣＰ／ＩＰで接続されており、よって、分散計算システム内のコンピュータは、疎結合型アクセラレータ（loosely-coupled accelerators）と見なすことができる。
【０００５】
疎結合型マルチプロセッサ・システムでは、コンピュータまたはノードは、外部ネットワークを介して接続される。このため、ホストコンピュータおよびアクセラレータ間のデータ転送は、データサイズ、ランタイム実装やネットワーク状態などの転送条件の影響を受ける可能性がある。
【０００６】
ＴＣＰネットワークを経由した計算の性能強化は、これまでも開発されており、米国特許出願公開第２００８／０２９５０９８号明細書（特許文献１）は、大きなＴＣＰセグメントを小さなＴＣＰセグメントで動的にセグメント化し、割り込み頻度を低減するコンピュータ・システムを開示する。特開２０１１−１７０７３２号公報（特許文献２）は、機能ブロックをストランドに分け、計算時間に依存して機能ブロックを修正する並列コンピューテーション方法を開示する。
【０００７】
密結合型アクセラレーション・アーキテクチャにおいては、多数の少量の転送を１つの大きな転送にバッチ化して、データ転送性能を向上する技術が提案されている（NVIDIA，OpenCL Best Practice Guide，Section 3.1 ”Data Transfer between Host and Device”を参照のこと）。さらに、Ｋｉｍ等は、非特許文献１において、データ並列プログラム中で通信レイテンシを隠蔽するために通信および計算をオーバラップさせるモデルを開示する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２００８／０２９５０９８号明細書
【特許文献２】特開２０１１−１７０７３２号公報
【非特許文献】
【０００９】
【非特許文献１】Junghwan Kim，Sangyong Han，Heungwan Kim，and Seungho Cho、”A New Communication and Computation Overlapping Model with Loop Sub-Partitioning and Dynamic Scheduling”
【発明の概要】
【発明が解決しようとする課題】
【００１０】
これまで開発されてきた並列計算アーキテクチャのための性能強化では、計算が開始可能となる前のネットワークを介したデータ転送のレイテンシを低減する点については充分に検討されてこなかった。さらに、本質的に相異するプラットフォーム・アーキテクチャ（ＰｏｗｅｒＰＣ（登録商標）アーキテクチャ，インテル（登録商標）アーキテクチャおよび／またはＩＢＭ  Ｓｙｓｔｅｍ／３９０のようなメインフレームアーキテクチャなど）を接続するには、プラットフォームを横断してアプリケーションを動作させる疎結合型アクセラレータによる並列計算の性能を最適化しながら、計算プラットフォーム間の差異を乗り越える必要があった。
【００１１】
本発明の目的は、アプリケーション環境を構成する異プラットフォーム間の差異を緩和する、新規な分散並列計算アーキテクチャを提供することである。
【００１２】
本発明の他の目的は、データ転送速度および並列計算性能を最適化することができる、新規な分散計算アーキテクチャを提供することである。
【００１３】
本発明のさらに他の目的は、プラットフォーム・アーキテクチャ間の差異を乗り越えて並列分散計算を実行するための方法、プログラム、ホストコンピュータおよびシステムを提供することである。
【課題を解決するための手段】
【００１４】
本発明では、ホストコンピュータおよびアクセラレータ装置が外部ネットワークを介して相互接続され、ホストは、アプリケーションの作業用データをアクセラレータ装置に送信する前に、現在の環境で分散計算に用いるデータサイズを最適化する。このチャンクサイズと呼ばれる最適データサイズは、ネットワーク内におけるアクセラレータ装置との通信速度および計算速度の実測に基づく。
【００１５】
ホストコンピュータは、アプリケーション・データをセグメントに分割して、データを最適なチャンクにカプセル化し、そして、カプセル化されたデータと、該カプセル化されたデータに対する並列計算の命令とをアクセラレータ装置に振り分ける。
【００１６】
アクセラレータ装置は、各カプセル化されたデータを受信した際には、アプリケーション・データ全体を待たずに、データ転送と並列して計算を開始し、これにより、疎結合型ネットワークを経由するデータ転送に起因した通信オーバヘッドが最小化され、並列計算効率が改善される。
【００１７】
言い換えると、各アクセラレータ装置は、カプセル化されたデータおよび命令を受信し、必要に応じて（ホスト命令によって規定された通り）、計算に必要なすべてのデータが到着するのを待機する。ひとたびデータが集まると、ホスト命令によって規定された特定の計算（すなわち「カーネル」）をディスパッチする。完了すると、再びホスト・カプセル化命令によって規定された通り、出力データがアクセラレータ装置からホストへ送信される。
【図面の簡単な説明】
【００１８】
【図１】ＯＳＩ基本参照モデルを用いて疎結合型システムにおける分散計算のデータ転送コストを説明する図。
【図２】本発明の例示的な分散計算システム２００のブロック図。
【図３】疎結合型システムを構築するためのプラットフォームの機能ブロック図。
【図４】本分散計算システムの処理を示すフローチャート。
【図５】図４におけるステップＳ４００「最適なチャンクサイズを決定する」の詳細な処理を示す図。
【図６】図５のステップＳ５００においてホストからアクセラレータ装置への経路についてのデータ転送コストおよび計算コストを性能分析する詳細な処理を示す図。
【図７】図５のステップＳ５００においてアクセラレータ装置からホストへの経路についてデータ転送コストおよび計算コストを性能分析する詳細な処理を示す図。
【図８】転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）８００、計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）８１０およびデータサイズの典型的な関係を示す図。
【図９】最適なチャンクサイズおよびアプリケーション・データサイズに依存する、アクセラレータ装置のためのデータ・バッファ割り当てを例示する図。
【図１０】アプリケーション・データが最適なチャンクサイズより大きい場合のデータ転送を例示する図。
【図１１】アプリケーション・データが最適なチャンクサイズより小さく、したがってアクセラレータ装置に転送される際に集約が行われる場合のホストおよびアクセラレータ装置のデータ処理を例示する図。
【図１２】従来技術のカーネル計算１２１０から本発明のカーネル計算１２２０への変形についてのホスト１２００の疑似コードを表す図。
【図１３】図４に示した本発明のパイプライン計算上の改善の仕組みを説明する図。
【図１４】本発明によるシステム実装における計算性能の改善結果を示す図。
【発明を実施するための形態】
【００１９】
以下、本発明について特定の実施形態に基づいて説明するが、説明する実施形態は、単に最良の実施形態を説明するものであり、本発明を限定するものではない。以下、図１を参照して、疎結合型システムにおける分散計算のデータ転送コストについて、ＯＳＩ基本参照モデルを用いて説明する。システム内のノード各々は、通常、物理層１０３、ネットワーク層１０２およびトランスポート層１０１を含む。物理層１０３は、イーサネット（登録商標）フレームの受信および送信を担当する。ネットワーク層１０２は、適切なデータサイズのペイロードを持つＩＰパケットの形成を担当する。トランスポート層１０１は、アプリケーション層１００内のアプリケーションによって処理されたデータからＴＣＰパケットを形成する。アプリケーション層１００は、アプリケーションにおけるデータの計算によって、ランタイム・オーバヘッドとしてそのコストを支払う。
【００２０】
トランスポート層１０１、ネットワーク層１０２および物理層１０３は、それぞれ対応する処理コストに寄与し、アプリケーション全体に対するコストは、ノードから他のノードへＴＣＰ／ＩＰパケットとして転送されるデータサイズに影響される可能性がある。上記データサイズの影響は、密結合型システムとは対照的に、計算およびスケーラビリティに余分なコストを生じさせる可能性がある。
【００２１】
図２は、本発明の例示的な分散計算システム２００のブロック図である。本システム２００は、例えばメインフレーム２０１、サーバ２０２、ブレード型サーバがラック内に配置されるラックマウント・サーバ２０３といった種々の計算プラットフォームを含む。メインフレーム２０１は、ＩＢＭ  Ｓｙｓｔｅｍ／３９０といったＳｙｓｔｅｍ  ｚシリーズから選択することができるが、他のアーキテクチャのメインフレームを用いてもよい。サーバ２０２およびラックマウント・サーバ２０３内のブレード型サーバは、ＩＢＭ  ＰＯＷＥＲ、Ｐｏｗｅｒ  Ｓｅｒｉｅｓ（登録商標）で実装されるＰｏｗｅｒＰＣ（登録商標）などのＣＰＵ／ＣＰＵｓを含み構成される。
【００２２】
これに対して、プラットフォーム２０４は、ｘ８６アーキテクチャとも参照される、Ｉｎｔｅｌ  ＸＥＯＮ（登録商標）といったＣＰＵ／ＣＰＵｓを含むことができる。図２に示すプラットフォームは、それぞれ、異なるオペレーティング・システムおよびアプリケーション・プログラムがインストールされ、オペレータまたはユーザから要求されたサービスを提供する。プラットフォームは、ハブ／スイッチ２１０およびルータ２３０を経由して、イーサネット（登録商標）または光通信を用いるＦＴＴＨといった適切なネットワーク２２０によって接続される。プラットフォームは、さらに、ＲＡＭ、ＲＯＭ、ハードディスク・ドライブ、ギガビット・レートのネットワーク・インタフェース・カードなどを含み、オペレータに業務アプリケーション・サービスを提供する。
【００２３】
プラットフォームは、ＴＣＰ／ＩＰプロトコルを通じて、ネットワークを経由してデータ、コマンドおよびメッセージを通信し、本発明においては、プラットフォームは、疎結合型アーキテクチャによる分散計算環境を提供する。分散計算は、これまで知られた如何なるプロトコルまたは技術を用いることによって可能であるが、既存のアプリケーション・リソースを用いてプラットフォーム間の差異を乗り越える観点からは、ＯｐｅｎＣＬアーキテクチャが有用である。
【００２４】
図３は、疎結合型システムを構築するためのプラットフォームの機能ブロック図３００である。プラットフォーム３１０はホストの役割を担い、プラットフォーム３２０はアクセラレータ装置の役割を担う。ここで、用語「アクセラレータ装置」または、より簡単に「アクセラレータ」は、分離されたコンピュータまたは情報処理装置を参照し、このコンピュータまたは情報処理装置は、ホストと通信して、該ホストの全体計算を高速化する。ホストは、その機能手段として、ホスト・アプリケーション３１１と、ホスト３１０に実装されたアプリケーション・カーネル・プログラム３１２と、ランタイム環境３１３と、ソケット・インタフェース３１４とを含み構成される。
【００２５】
ホスト・アプリケーション３１１は、プロファイラ部３１１ａと、サイズ最適化部３１１ｂと、カプセル化部３１１ｃと、ディスパッチャ部３１１ｄとを含み構成される。プロファイラ部は、最小サイズ（ＭＩＮ＿ＳＩＺＥ）から最大サイズ（ＭＡＸ＿ＳＩＺＥ）までのデータサイズの範囲について、データ転送速度および計算速度を性能分析する。ここで、最小サイズ（ＭＩＮ＿ＳＩＺＥ）および最大サイズ（ＭＡＸ＿ＳＩＺＥ）は、アプリケーション・プログラムにおいて、ホストおよびアクセラレータ装置間で転送される可能なデータサイズである。サイズ最適化部３１１ｂは、性能分析されたデータ転送速度および計算速度に基づいて、ネットワークを経由するデータ転送に最適なチャンクサイズを見つけ出し、決定する。
【００２６】
カプセル化部３１１ｃは、ホストコンピュータのメモリ内に格納されたデータを、最適なチャンクサイズを有するチャンクに分割または集約することによって、カプセル化する。ディスパッチャ部３１１ｄは、カプセル化されたデータをアクセラレータ装置に振り分けると共に、アクセラレータ装置に対し、受信したカプセル化されたデータに関してパイプライン計算を命令する。なお、プロファイラ部３１１ａ、サイズ最適化部３１１ｂ、カプセル化部３１１ｃおよびディスパッチャ部３１１ｄは、ホスト・アプリケーション３１１の一部である必要はなく、これらのいくつかはランタイム環境３１３の一部であってもよい。
【００２７】
ホスト・アプリケーション３１１は、カーネル・プログラム３１２の制御により、ユーザに対し種々のサービスを提供し、説明する実施形態では、ＯｐｅｎＣＬ  ＡＰＩが、ホスト・アプリケーションの一つのモジュールとして実装されてもよい。カーネル・プログラム３１２は、ｚ／ＯＳ、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（登録商標）、またはＷｉｎｄｏｗｓ（登録商標）２００Ｘ  Ｓｅｒｖｅｒ用に実装され、ホストの種々の動作を制御する。
【００２８】
特定の実施形態では、ホストは、疎結合型システムを実装するため、カーネル３１２の１つのコンポーネントとしてＯｐｅｎＣＬカーネル・プログラムを含む。ランタイム環境３１３は、ＯｐｅｎＣＬランタイム、ホストのランタイム状態をサポートするダイナミック・リンク・ライブラリなどのランタイム・ライブラリを含む。ソケット・インタフェース３１４は、ソケット通信を用いて、ＴＣＰ／ＩＰパケットをアクセラレータ装置３２０に送信し、説明する実施形態では、Ｓｏｃｋｅｔ  Ｓｅｎｄ／Ｒｅｃｉｅｖｅ、ＲＤＭＡ  Ｒ／Ｗメソッドまたはクラスが、ＯｐｅｎＣＬアーキテクチャをサポートするための１つのモジュールとして実装される。
【００２９】
アクセラレータ装置３２０は、アプリケーション・カーネル３２１と、バッファ・オブジェクト３２２と、ランタイム環境３２３と、ホスト３１０へのプロキシ機能部３２４と、ソケット・インタフェース３２５とを含み構成される。アプリケーション・カーネル３２１は、要求されたサービスを提供し、バッファ・オブジェクト３２２は、アクセラレータ装置３２０で使用される種々の情報を格納する。説明する実施形態では、バッファ・オブジェクト３２２は、疎結合型システムのアクセラレータ装置として、入力データおよびコマンドを受信し、またアプリケーション・カーネル・プログラム３２１からの計算結果を送信する。
【００３０】
ランタイム環境３２３は、その機能コンポーネントとして、プラットフォームのアーキテクチャに適合するＯｐｅｎＣＬコンパイラおよびランタイム・ライブラリを含み、ＯｐｅｎＣＬ関数を実装するプロキシ機能部３２４とともに、ホスト３１０から命令された演算を実行する。ソケット・インタフェース３２５は、ソケット通信を介してホストと通信し、ネットワーク３３０を経由したホスト３１０に対するＳｏｃｋｅｔ  Ｓｅｎｄ／Ｒｅｃｅｉｖｅ、ＲＤＭＡ  Ｒ／Ｗメソッドまたはクラスを含み構成される。
【００３１】
したがって、疎結合型システムは、２種類のデータ処理コストを含み、１つは計算およびフレーム形成コストであり、他の１つはネットワークを経由するデータ転送コストである。この２種類のコスト、つまり、計算コストおよびデータ転送コストは、分散計算環境における円滑かつ効率的な計算のため良くバランスされ、通信レイテンシの待機時間を最小化することが好ましい。換言すれば、データ転送速度および計算速度は、アクセラレータ装置内のハードウェア・リソースを浪費しないように最適化される必要がある。
【００３２】
図４は、本分散計算システムの処理を示すフローチャートである。図４に示す処理は、ステップＳ４００から開始され、ホストは、ネットワーク状態およびアクセラレータ装置のハードウェア状態を検査し、システムにおける最適なチャンクサイズを決定する。ステップＳ４００の詳細は後述するが、ステップＳ４００では、ホストは、ネットワークを経由して、アクセラレータ装置によるテスト計算を行い、その応答時間を測定する。ステップＳ４０１では、ホストは、転送データのためのバッファおよびサブバッファのサイズを割り当てる。ここで、バッファのサイズは、対象とされる計算のデータサイズにより決定することができ、サブバッファのサイズは、最適なチャンクサイズに設定することができる。あるいはその反対とすることができる。説明する好適な実施形態において、いずれとなるかは、データ分割またはデータ集約のどちらが適用されるかに依存する。
【００３３】
ステップＳ４０２では、対象とされる計算用のデータが分割または集約されて、これによって、アクセラレータ装置に転送されるデータサイズが最適なサイズを有するサブバッファ内に収容されるようになる。ステップＳ４０３では、ホストは、最適なサイズを有するデータを、アクセラレータ装置内での計算のためのコマンドまたは命令と共に送信する。説明する実施形態では、アクセラレータ装置上での計算の命令は、ＯｐｅｎＣＬ言語によりコード化されるものとするが、しかしながら、その他の分散計算プロトコルを使用してもよい。
【００３４】
ステップＳ４０４では、ホストは、データ分割が適用され、かつアクセラレータ装置に割り当てられたアプリケーション・カーネル・タスクが結合可能型であるか、つまり、タスクが分割データについてパイプライン実行を適用できるかを判定する。肯定的である場合（ｙｅｓ）は、ホストは、アクセラレータ装置にパイプライン化された計算を開始させるための命令を転送し、アクセラレータ装置で、データ通信と重複させて計算を実行させる。一方、タスクがパイプライン計算に適合していない場合（ｎｏ）は、ホストは、パイプライン処理を行わない通常の疎結合型計算命令コードを転送し、図４に示す処理は、アクセラレータ装置によるステップＳ４０５へ進められる。
【００３５】
ステップＳ４０５〜ステップＳ４０８の処理は、計算を担当するアクセラレータ装置において実行される処理である。ステップＳ４０５では、アクセラレータ装置は、データおよび命令を受信し、アクセラレータ装置は、ここでは計算が結合可能型ではなく、計算の投機的な開始が不正であるため、すべてのデータチャンクが受信されるまで待機する。ステップＳ４０５に処理が進められると、アクセラレータ装置は、計算に必要なデータ全体を受信した後に計算を開始し、ステップＳ４０８で、計算の結果をホストに返す。
【００３６】
ステップＳ４０４の判定で、肯定的な結果が戻された場合（ｙｅｓ）は、ステップＳ４０６へ処理が進められ、アクセラレータ装置は、最適化された計算および通信の重なりをもって、順次受信されたデータチャンクおよび命令に対して、パイプライン化された計算の実行を開始する。アクセラレータ装置は、連続して送信されたデータチャンクに対してパイプライン実行による計算を最後まで続け、アクセラレータ装置は、結合演算を呼び出して、パイプライン化された計算で得られた各部分結果を結合する。アクセラレータ装置は、計算された結果をホストに返し、ホストから受信したコマンドを完了させる。
【００３７】
図５は、図４におけるステップＳ４００「最適なチャンクサイズを決定する」の詳細な処理を示す。本処理は、ステップＳ５００から開始し、ホストは、所与のランタイムおよびネットワーク環境において、ホストからアクセラレータへの経路とアクセラレータからホストへの経路との両方について別個に、データ転送コストおよび計算パイプライン効果を性能分析する。そして、ステップＳ５０１では、ホストは、適切なサンプル計算セットを用いて、経過時間（ｅｌａｐｓｅｄＴｉｍｅ１およびｅｌａｐｓｅｄＴｉｍｅ２で参照する）に相当するデータ転送速度および計算速度を決定する。ここで、「ｅｌａｐｓｅｄＴｉｍｅ１」および「ｅｌａｐｓｅｄＴｉｍｅ２」は、性能分析処理で得られる変数である。
【００３８】
ステップＳ５０２では、ホストは、パラメータ（ｅｌａｐｓｅｄＴｉｍｅ１およびｅｌａｐｓｅｄＴｉｍｅ２）を用いて重なり比を計算する。本実施形態において、「重なり比」とは、計算速度に対する転送速度の比として定義され、好ましくは、データ転送速度と計算速度とが等しい場合に１となる。
【００３９】
続いてステップＳ５０３では、ホストは、ネットワークおよびデバイスの与えられた性能の下で、より高いデータ転送速度を求めつつ、重なり比が１に最も近くなるような、最適化されるべきチャンクのデータサイズを決定する。そして、ホストは、図４中ステップＳ４００で決定された最適なチャンクサイズを用いて、アクセラレータ装置へ転送すべき計算の命令の準備を開始する。
【００４０】
図６は、図５（ステップＳ５００）においてホストからアクセラレータ装置への経路（以下、経路ｈ２ａと参照する）についてのデータ転送コストおよび計算コストを性能分析する詳細な処理を示す。図６に示す処理は、ステップＳ６００から開始され、ホストは、ステップＳ６０１では、テスト計算用データを送信するために用いる書き込み用のグローバル・バッファを割り当て、その後、ホストは、タイマ・オブジェクトを開始する。ホストは、最小サイズ（ＭＩＮ＿ＳＩＺＥ）から最大サイズ（ＭＡＸ＿ＳＩＺＥ）までの範囲でサンプルデータのサイズを、このデータサイズでのデータ転送速度を調査するべくバッファにセットする。ステップＳ６０４では、ホストは、書き込み、つまりアクセラレータ装置内の空のカーネル・プログラムまたはアプリケーション・カーネル・プログラムを呼び出すための操作コマンドを振り分けて、ステップＳ６０５で、所定の繰り返し回数（ＮＵＭ＿ＩＴＥＲ）の計算を実行させる。
【００４１】
ステップＳ６０６で、所定の繰り返し回数（ＮＵＭ＿ＩＴＥＲ）が実行された後（ｙｅｓ）は、ホストは、アクセラレータ装置に投入したすべてのイベントの完了が確認されるまで、終了したか否かを判定する。ステップＳ６０６は、パラメータ（ＮＵＭ＿ＩＴＥＲ）で規定される回数だけステップＳ６０４およびステップＳ６０５の処理を繰り返すことによって、転送速度および計算速度のより精密な値を得るように繰り返されても良い。また用語「イベント」は、ここでは、転送速度および／または計算速度を決定するために用いられる、グローバル・バッファへのデータ書き込みの単位トランザクションおよび後続するカーネル・プログラムの実行として定義される。すべてのイベントが完了すると、ホストは、ステップＳ６０７で、タイマ・オブジェクトを停止させ、ステップＳ６０８で、タイマ・オブジェクトのタイマー値（Ｔｉｍｅｒ＿Ｖａｌｕｅ）を経過時間のパラメータ（ｅｌａｐｓｅｄＴｉｍｅ１またはｅｌａｐｓｅｄＴｉｍｅ２）に設定する。いずれのパラメータに設定されるかは、測定が、転送速度のみを目的とするか、転送速度および計算速度の両方を目的とするかに依存する。２種類の測定が異なる種類のパラメータをセットするが、ソフトウェア・モジュールは２つの測定間で共有されてもよい。
【００４２】
次にステップＳ６０９では、ホストは、サンプルデータのサイズが最大サイズ（ＭＡＸ＿ＳＩＺＥ）に達したかを判定し、サンプルデータが最大サイズ（ＭＡＸ＿ＳＩＺＥ）に達していない場合（ｎｏ）は、ステップＳ６０２に処理が戻され、サンプルデータのサイズが最大サイズ（ＭＡＸ＿ＳＩＺＥ）に達するまで繰り返し実行する。一方、ステップＳ６０９の判定で肯定的な結果が返された場合（ｙｅｓ）は、ステップＳ６１０で処理を終了させて、性能分析を終了する。パラメータｅｌａｐｓｅｄＴｉｍｅ１は、空のカーネル・プログラムが呼び出されたときの全実行時間に相当し、パラメータｅｌａｐｓｅｄＴｉｍｅ２は、サンプル計算のために、アクセラレータ装置からアプリケーション・カーネル・プログラムが呼び出されたときの全実行時間に相当する。空のカーネル・プログラムは、データ転送に要する時間のみを得るべく、何も計算を行わずに単純にホスト・アプリケーションから入力データを受信すると直ちにアクノレッジを返すものである。一方で、アプリケーション・カーネル・プログラムは、入力データを用いてアプリケーションで要求された計算を実行し、カーネル計算の完了によりアクノレッジを返すものである。
【００４３】
非結合型の計算について経路ｈ２ａにおける転送速度は、最小サイズ（ＭＩＮ＿ＳＩＺＥ）および最大サイズ（ＭＡＸ＿ＳＩＺＥ）間のサイズのサンプルデータを用いて空のカーネル・プログラムを呼び出すことによって概算することができ、最適なチャンクサイズは、最もデータ転送速度が速いデータサイズに決定することができる。
【００４４】
図７は、図５（ステップＳ５００）においてアクセラレータ装置からホストへの経路（以下、経路ａ２ｈとも参照する）についてのデータ転送コストおよび計算コストを性能分析する詳細な処理を示す。経路ａ２ｈの転送速度は、アクセラレータからのホストのデータ読み出し速度によって性能分析することができる。本質的に処理は、図６に示した処理と大部分において類似するので、ここでは、詳細な説明は省略する。
【００４５】
本実施形態によれば、データ転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）、計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）および重なり比（ｏｖｅｒｌａｐｐｉｎｇＲａｔｉｏ）といったパラメータは、性能分析の結果から得られ、以下のように定義される：
transfeRate = dataSize * NUM_ITER / elapsedTime1
computationRate = dataSize * NUM_ITER / (elapsedTime2- elapsedTime1)
overlappingRatio = transfeRate / computationRate
ここで、データサイズと繰り返し回数との積（ｄａｔａＳｉｚｅ＊ＮＵＭ＿ＩＴＥＲ）は、パラメータ（ｅｌａｐｓｅｄＴｉｍｅ１またはｅｌａｐｓｅｄＴｉｍｅ２）の測定中に転送されたデータの総量である。
【００４６】
より一般的には、最適なデータサイズは、可能なデータサイズの中で最も速い転送速度を与えながら、値｜１−ｏｖｅｒｌａｐｐｉｎｇＲａｔｉｏ｜が閾値を超えないという条件を満たすデータサイズになるように決定することができる。上記閾値は、転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）および計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）の取り得る範囲にわたり、その重なりの要件を考慮して、可能な限りゼロ（０）に近い値となるように決定することができる。
【００４７】
図８は、転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）８００、計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）８１０およびデータサイズの典型的な関係を示す図である。転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）は、データサイズが小さな場合およびデータサイズが大きい場合の両端において、比較的高いＴＣＰ／ＩＰランタイム・オーバヘッドに起因して、低い値となり、したがって、そのプロファイルは、典型的には、データサイズの中間点で最大の転送速度を示す凸形状を有するようになっている。
【００４８】
一方、計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）は、アプリケーション・カーネル・プログラムのオーバヘッドが増加することに起因して、典型的には、データサイズが増加するにつれ減少する。データサイズの範囲にわたって計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）が転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）よりも高いケースでは、これは従来のネットワーク通信インフラ基盤に典型的なケースであるかもしれないが、交点が存在せず、最適なチャンクサイズは、凸曲線の最大値８４０のデータサイズに一意に決定することで、上記定義した最大の重なり比（ｏｖｅｒｌａｐｐｉｎｇＲａｔｉｏ）を達成することができる。
【００４９】
続いて、転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）および計算速度（ｃｏｍｐｕｔａｔｉｏｎＲａｔｅ）が拮抗する場合は、これは近年のギガビット・イーサネット（登録商標）ネットワーク通信または光通信で起こりうるが、図８に示すように、重なり比（ｏｖｅｒｌａｐｐｉｎｇＲａｔｉｏ）が１に可能な限り近接するという条件を満たす複数の交点が存在する。本発明によれば、交点が複数存在する場合は、より高い転送速度（ｔｒａｎｓｆｅｒＲａｔｅ）を有するデータサイズが最適なチャンクサイズとして採用される。
【００５０】
上記決定されたデータサイズは、疎結合型分散計算システムにおいてデータ転送速度および計算速度を最適化する。上述までは、性能分析処理および最適なチャンクサイズの決定について説明した。以下、本発明における効率的な並列計算のためのデータ処理について説明する。
【００５１】
図９は、データがアクセラレータ装置に転送されたときのデータ処理を示す。図９に示す実施形態においては、疑似コード９００に示すように、データ・バッファおよびサブバッファが、それぞれアプリケーション・データサイズおよび最適なチャンクサイズに基づいて割り当てられる。典型的な実施形態としてｎ＝２を仮定したアプリケーション・データ９１０で示すように、ホスト上のアプリケーション・データサイズが所定の数とチャンクサイズとの積（ｎ＊ｃｈｕｎｋ  ｓｉｚｅ）より大きい場合は、アプリケーション・データは、アクセラレータ装置上のサブバッファに対応して、最適なチャンクサイズを有するｎ個のチャンクに分割される。典型的な実施形態としてｎ＝２を仮定したアプリケーション・データ９２０で示すように、ホスト上のアプリケーション・データサイズが、チャンクサイズを所定数で割った値（ｃｈｕｎｋ  ｓｉｚｅ／ｎ）より小さい場合は、少なくともｎ個のアプリケーション・データが１つの最適なチャンクサイズを有するチャンクに集約される。
【００５２】
その後、最適なチャンクサイズを有するデータは、アクセラレータ装置に転送される。図１０は、アプリケーション・データサイズが最適なチャンクのサイズよりも大きい場合のデータ転送操作を表す。図１０に示す疑似コード１０００は、ＯｐｅｎＣＬ言語での特定の実施形態を記述し、行１０では、ホストは、アプリケーション・データのデータサイズ（ｄａｔａＳｉｚｅ）がチャンクサイズの２倍（ｃｈｕｎｋＳｉｚｅ＊２）より大きいか否かを判定する。データサイズ（ｄａｔａＳｉｚｅ）がチャンクサイズの２倍（ｃｈｕｎｋＳｉｚｅ＊２）より大きい場合は、ホストは、行２０で、サブチャンクの数を決定する。ここで、変数「ｄａｔａＳｉｚｅ」は、ホストからアクセラレータ装置へ転送すべきアプリケーション・データのサイズであり、変数「ｃｈｕｎｋＳｉｚｅ」は、転送されるデータをカプセル化するのに最適なチャンクのサイズである。
【００５３】
続いて、行３０−７０で、ホストは、ホストメモリ１０１０内のアプリケーション・データすべてがアクセラレータ装置のサブバッファ［ｉ］１０２０へ転送されるまで、アプリケーション・データをチャンクサイズに分割して転送する。ホストメモリ内のアプリケーション・データが最適なチャンクサイズよりも小さい場合のデータ集約にも同様のデータ処理が適用される。
【００５４】
図１１は、アクセラレータ装置に転送される際にアプリケーション・データが集約される場合のホストおよびアクセラレータ装置のデータ処理を示す。ホストは、ステップＳ１１００で、ホストメモリ１内のデータおよびホストメモリ２内のデータに対し特定の演算を実行して、アプリケーション・データが最適なチャンクサイズの２分の１より小さくなるようにする。ここでは、ステップＳ１１１０で示すように、変数ｎｕｍが２に設定されている。続いてステップＳ１１２０では、ホストは、アプリケーション・データを最適なサイズのチャンクに集約ないしカプセル化する。そして、ホストは、最適なサイズのチャンクにカプセル化されたアプリケーション・データをアクセラレータ装置に転送する。
【００５５】
ステップＳ１１３０では、アクセラレータ装置は、アプリケーション・データをホストから受信すると、アプリケーション・データをアクセラレータ装置内の集約された数に対応するバッファに格納する。アクセラレータ装置は、ステップＳ１１４０およびＳ１１５０で、アプリケーション・カーネル・プログラムを呼び出して、アクセラレータ装置バッファ１内のデータおよびアクセラレータ装置バッファ２内のデータへのカーネル演算を開始する。
【００５６】
図１２は、従来技術のカーネル計算１２１０および本発明での結合可能型の演算に対するカーネル計算１２２０を実行するためのホストの疑似コードを表す。従来技術の処理１２１０においては、アプリケーション・データは、ホストによって準備されたアプリケーション・データそのままのデータサイズで転送され、アクセラレータ装置は、そのデータを一度に受信する。そしてアクセラレータ装置は、アプリケーション・カーネル／プログラムを呼び出して、カーネル演算を完了させる。
【００５７】
代わりに、本発明の実施形態によれば、疑似コード１２２０で示されるように、アプリケーション・データが最適なチャンクサイズで転送され、アクセラレータ装置は、計算が結合可能型である場合には、各チャンクを受信すると、アプリケーション・カーネル・プログラムを呼び出して、データへの操作を開始する。最後に、アクセラレータ装置は、結合演算を呼び出して、個々のチャンクについて得られた結果を結合する。本処理においては、アクセラレータ装置は、ＴＣＰ／ＩＰネットワークを経由したデータ転送を最適化するとともに、アプリケーション・データへパイプライン計算を適用することによって、アプリケーション・データに対する全実行時間をさらに削減する。
【００５８】
図１３は、従来技術の計算効率と比較して、結合可能計算の場合の本発明のパイプライン計算における改善の仕組みを示す。従来技術の計算１３００では、ホストで準備されたアプリケーション・データは、そのままのアプリケーション・データサイズでアクセラレータ装置に転送される。すなわち、最適化されずに用意されたアプリケーション・データがアクセラレータ装置に転送されるのである。
【００５９】
ブロック１３１０に示すように、アプリケーション・データが最適なサイズで転送される場合、データ転送効率は、本発明に従って改善され得る。しかしながら、ブロック１３２０に示すように、カーネル計算がアプリケーション・データの全体を受信した後に呼び出される場合は、アクセラレータ装置でパイプライン計算が適用されないため、アクセラレータ装置は、実質的には、アプリケーション・データが揃うまで計算リソースを浪費することになる。この場合は、アクセラレータ装置におけるアプリケーション・データに対する計算は、時間（Ｔｉｍｅ１）で終了する。
【００６０】
本発明においては、ホストは、ブロック１３３０において示すように、最適なチャンクサイズを有するチャンク内にアプリケーション・データを生成する。そして、カーネル計算が結合可能型であれば、パイプライン計算の命令が投入され、アクセラレータ装置は、あるデータチャンクを受信すると直ちにアプリケーション・カーネル・プログラムを呼び出して、そのチャンクに対するパイプライン計算を開始させる。アクセラレータ装置がすべてのデータチャンクに対する計算を完了させると、アクセラレータ装置は、個々のデータチャンクに対する部分結果を結合するタスクを呼び出し、時間（Ｔｉｍｅ２）で、アクセラレータ装置に対して割り当てたタスクを完了させる。
【００６１】
カーネル計算がデータチャンクの転送と並列に実行されて、計算時間における浪費が最小化される。ブロック１３４０に示すように、同一のタスクをパイプライン処理で実行するために必要な時間（Ｔｉｍｅ２）は、パイプライン操作を行わない場合の時間（Ｔｉｍｅ１）よりも明らかに短縮され、本発明は、アクセラレータ装置を用いた疎結合型アーキテクチャにおいて分散計算の効率を著しく向上させることができる。
【００６２】
図１４は、本発明を用いた実装システムにおける計算性能の改善結果を示す。ＩＢＭ  ｚＥｎｔｅｒｐｒｉｚｅプラットフォーム（ｚ１９６）と、ＩＢＭ  ＰＯＷＥＲ７を実装するブレードサーバとを１Ｇｂｐｓおよび１０Ｇｂｐｓのイーサネット（登録商標）に接続して疎結合型システムを構築した。
【００６３】
ＳＰＳＳ（インターナショナル・ビジネス・マシーンズ・コーポレーションから提供される。例えば、＜URL=http://www-01.ibm.com/software/analytics/spss/＞を参照されたい）の２ステップ・クラスタリング・アルゴリズムを用いて、ＯｐｅｎＣＬで実装し、実験を行った。実験は、図１３のブロック１３００に示した従来技術の疎結合型システムを含めて、データ分割およびデータ集約の両方について試行した。
【００６４】
図１４において、左側のグラフは、１Ｇｂｐｓネットワーク環境における結果を表し、右側のグラフは、１０Ｇｂｐｓネットワーク環境における結果を表す。両方のグラフにおいて、左側のバーは参照用結果であり、右側のバーは、本発明の結果を表す。図１４に示すように、本発明では、データ分割およびデータ集約の両方のケースについて、参照用結果と比較して実行時間の明瞭な低減が確認された。最適なチャンクサイズは、上述した条件で決定され、１Ｇｂｐｓネットワークについては６４Ｋバイトに決定され、１０Ｇｂｐｓネットワークについては１２８Ｋバイトに決定され、これらは、それぞれアプリケーション・データサイズの４Ｋおよび８Ｋに対応している。
【００６５】
本発明について図面に示した実施形態を参照しながら説明してきた。しかしながら、本発明は、図面に示した実施形態に限定されるものではなく、当業者が導出できる種々の変更または他の実施形態が可能であり、本発明の範囲は、付記する請求項によって定められる。
【図１】
0006083687.tif 000002
【図２】
0006083687.tif 000003
【図３】
0006083687.tif 000004
【図４】
0006083687.tif 000005
【図５】
0006083687.tif 000006
【図６】
0006083687.tif 000007
【図７】
0006083687.tif 000008
【図８】
0006083687.tif 000009
【図９】
0006083687.tif 000010
【図１０】
0006083687.tif 000011
【図１１】
0006083687.tif 000012
【図１２】
0006083687.tif 000013
【図１３】
0006083687.tif 000014
【図１４】
0006083687.tif 000015