(57)【要約】      （修正有）【課題】プロセッサ間相互通信を効率的に行う方法を提供する。【解決手段】共有メモリとのハイブリッドメッセージパッシングの方法を提供する。単一のコンピューティング環境において少なくとも２つのコプロセッサ間でデータをやりとりする方法であって、コプロセッサの一方が送信プロセッサであり、コプロセッサの他方が受信プロセッサであり、単一のコンピューティング環境がコプロセッサによってアクセス可能なメモリを含む、方法は、とりわけ、送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップと、データのサイズが予め定められた閾値より小さいかまたはそれと等しい場合は、そのデータをメッセージに添付し、そのメッセージを受信プロセッサに送信するステップと、データのサイズが予め定められた閾値より大きい場合はメモリ内のデータのロケーションを示すポインタを受信プロセッサに送信するステップとを含む。【選択図】図１
2014186718.tif 000002
【特許請求の範囲】
【請求項１】
単一のコンピューティング環境において少なくとも２つのコプロセッサ間でデータをやりとりする方法であって、前記少なくとも２つのコプロセッサの一方が送信プロセッサであり、前記少なくとも２つのコプロセッサの他方が受信プロセッサであり、前記単一のコンピューティング環境が前記少なくとも２つのコプロセッサによってアクセス可能なメモリを含み、前記方法が
前記送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップと、
前記データの前記サイズが予め定められた閾値より小さいかまたはそれに等しい場合は、前記データをメッセージに添付し、前記メッセージを前記受信プロセッサに送信するステップと、
前記データの前記サイズが前記予め定められた閾値より大きい場合は、前記メモリ内の前記データのロケーションを示すポインタを前記受信プロセッサに送信するステップと
を含む方法。
【請求項２】
ポインタを前記受信プロセッサに送信する前記ステップが、前記データが前記メモリ内のロケーションにまだない場合は、前記データを前記ポインタに対応する前記メモリ内の前記ロケーションに移すステップによって先行される、請求項１記載の方法。
【請求項３】
ポインタを前記受信プロセッサに送信する前記ステップが、一意の識別子を前記受信プロセッサに送信する前記ステップを含み、前記位置識別子が前記ポインタによって示されている前記ロケーションにおいて前記メモリ内の前記データにプリペンドされる、請求項１記載の方法。
【請求項４】
一意の識別子がタイムスタンプである、請求項３記載の方法。
【請求項５】
前記予め定められた閾値が構成ファイルにエンコードされる、請求項１記載の方法。
【請求項６】
前記予め定められた閾値がメッセージを前記送信プロセッサから前記受信プロセッサに送信するために必要な時間の量に基づく、請求項１記載の方法。
【請求項７】
前記送信プロセッサが前記メッセージを２つ以上の受信プロセッサに送信する、請求項１記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一のコンピューティング環境において少なくとも２つのコプロセッサ間でデータをやりとりする方法に関する。
【背景技術】
【０００２】
マルチプロセッサまたはマルチコアプロセッサコンピューティング環境で動作するアプリケーションのためのコードパフォーマンスは、部分的には、その環境内の単一の処理要素がどのように相互に通信するかによって判定されてよい。共有メモリおよびメッセージパッシングは、プロセッサ間通信のために使用される大別して２種類の通信パラダイムである。両方の通信パラダイムを利用するハイブリッドプログラミング技法が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第７５０６０３２号明細書
【発明の概要】
【０００４】
本発明の一態様は、単一のコンピューティング環境において２つ以上のコプロセッサ間でデータをやりとりする方法であって、コプロセッサの一方が送信プロセッサであり、コプロセッサの他方が受信プロセッサである、方法に関する。単一のコンピューティング環境は、コプロセッサによってアクセス可能なメモリを含む。本方法は、送信プロセッサにおいて、伝達されるべきデータのサイズを判定するステップを含む。データのサイズが予め定められた閾値より小さいかまたはそれに等しい場合は、本方法は、そのデータをメッセージに添付し、そのメッセージを受信プロセッサに送信する。データのサイズが予め定められた閾値より大きい場合は、本方法は、受信プロセッサにポインタを送信し、ポインタはメモリ内のデータのロケーションを示す。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態による、共有メモリとのハイブリッドメッセージパッシングの方法を示す流れ図である。
【発明を実施するための形態】
【０００６】
背景技術および以下の説明において、説明の目的のために、多数の特定の詳細が本明細書に記載の技術の徹底的な理解を提供するために記述される。しかし、例示的実施形態は、これらの特定の詳細がなくても実施されることが可能であることが当業者には明らかであろう。他の場合には、例示的実施形態の説明を容易にするために、構造およびデバイスがダイヤグラム形式で示される。
【０００７】
例示的実施形態は、図面に関連して説明される。これらの図面は、本明細書に記載のモジュール、方法、またはコンピュータプログラム製品を実施する特定の諸実施形態のいくつかの詳細を例示する。しかし、図面は、図面に存在する可能性がある限定を課すと解釈されるべきではない。本方法およびコンピュータプログラム製品は、それらの動作を遂行するために任意の機械可読媒体上に提供されてよい。諸実施形態は、既存のコンピュータプロセッサを使用して、あるいは、このもしくは他の目的のために組み込まれた専用コンピュータプロセッサによって、またはハードワイヤードシステムによって実施されることが可能である。
【０００８】
上記のように、本明細書に記載の諸実施形態は、そこに記憶されている機械実行可能命令もしくはデータ構造を担持する、または有する機械可読媒体を含むコンピュータプログラム製品を含んでよい。そのような機械可読媒体は、汎用コンピュータもしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスされることが可能である任意の利用可能な媒体でよい。例として、そのような機械可読媒体は、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは所望のプログラムコードを機械実行可能命令もしくはデータ構造の形で担持する、または記憶するために使用されることが可能であり、汎用コンピュータもしくは専用コンピュータ、またはプロセッサを有する他の機械によってアクセスされることが可能である任意の他の媒体を含んでよい。情報がネットワークもしくは他の通信接続（ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ）を介して機械に伝送または提供される場合は、機械は、その接続を機械可読媒体と適切にみなす。したがって、任意のそのような接続は、機械可読媒体と適切に呼ばれる。上記のものの組合せも、機械可読媒体の範囲内に含まれる。機械実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理機械に、ある機能または機能のグループを実行させる命令およびデータを含む。
【０００９】
諸実施形態は、例えばネットワーク接続環境において機械によって実行されるプログラムモジュールの形でのプログラムコードなどの機械実行可能命令を含むプログラム製品によって一実施形態において実行されることが可能である方法ステップの一般的文脈で説明される。一般に、プログラムモジュールは、特定のタスクを実行するという技術的効果を有する、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。機械実行可能命令、関連データ構造、およびプログラムモジュールは、本明細書で開示されるステップを実行するためのプログラムコードの例を表す。そのような実行可能な命令または関連データ構造の特定のシーケンスは、そのようなステップに記述されている機能を実行するための対応する動作の例を表す。
【００１０】
諸実施形態は、プロセッサを有する１つまたは複数のリモートコンピュータへの論理的接続を使用してネットワーク接続環境において実施されることが可能である。論理的接続は、ここでは例として、限定としてではなく提示されるローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）を含んでよい。そのようなネットワーキング環境は、オフィス全体のまたは企業全体のコンピュータネットワーク、イントラネット、およびインターネットでは普通であり、多種多様な異なる通信プロトコルを使用することができる。そのようなネットワークコンピューティング環境は、通常、パーソナルコンピュータ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、および同種のものを含めて、多くのタイプのコンピュータシステム構成を包含することを当業者は理解するであろう。
【００１１】
諸実施形態はまた、タスクが通信ネットワーク経由で（ハードワイヤードリンクかまたは無線リンクのどちらかによって、またはハードワイヤードリンクもしくは無線リンクの組合せによって）リンクされたローカル処理デバイスおよびリモート処理デバイスによって実行される、分散コンピューティング環境において実施されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリストレージデバイスおよびリモートメモリストレージデバイスの両方に配置されてよい。
【００１２】
例示的実施形態の全部または一部を実施するための例示的システムは、処理ユニット、システムメモリ、およびシステムメモリを含む様々なシステム構成要素を処理ユニットに結合するシステムバスを含む、コンピュータの形態での汎用コンピューティングデバイスを含んでもよい。システムメモリは、読出し専用メモリ（ＲＯＭ）およびランダムアクセスメモリ（ＲＡＭ）を含んでよい。コンピュータはまた、磁気ハードディスクから読み出すおよびそれに書き込むための磁気ハードディスクドライブ、取外し可能な磁気ディスクから読み出すまたはそれに書き込むための磁気ディスクドライブ、およびＣＤ−ＲＯＭまたは他の光媒体などの取外し可能な光ディスクから読み出すまたはそれに書き込むための光ディスクドライブを含んでもよい。ドライブおよびそれらの関連機械可読媒体は、機械実行可能命令、データ構造、プログラムモジュールおよびコンピュータのための他のデータの不揮発性ストレージを提供する。
【００１３】
諸実施形態において開示される方法の技術的効果は、マルチプロセッサコンピューティングシステムの性能およびスケーラビリティを改善することを含む。任意に大きいメッセージは、任意に小さいメッセージと同じ程度に効率よくコプロセッサ間で送信されることが可能である。メッセージをコプロセッサから複数の受信プロセッサに送信するために必要な追加の時間はごくわずかである。ハイパースペクトラルイメージングシステムの場合のように、大きなデータタイプを有し、様々なメッセージのサイズ要件間の違いの程度が大きいリアルタイム処理システムの性能は、諸実施形態において開示される方法によって改善されることが可能である。
【００１４】
少なくとも２つのコプロセッサを有する単一のコンピューティング環境では、コンピューティング環境に入力されたデータを処理している間に、コプロセッサ間でデータをやりとりすることがしばしば必要である。コプロセッサ間でデータをやりとりするためには、送信プロセッサは、データまたはデータについての情報を受信プロセッサに伝達するために、メッセージを受信プロセッサに送信しなければならない。メッセージパッシングが通信のパラダイムであるコンピューティング環境では、送信プロセッサは、メッセージに含まれているデータを有するメッセージを１つまたは複数の受信プロセッサに送信することができる。代替として、共有メモリシステムを有するコンピューティング環境では、送信プロセッサは、メッセージを、データが常駐するすべてのコプロセッサによってアクセス可能なメモリ内のロケーションをエンコードする１つまたは複数の受信プロセッサに送信することができる。次いで、各コプロセッサは、共有メモリ内のデータに直接アクセスすることができる。
【００１５】
図１は、メッセージパッシングの共有メモリとのハイブリッドを使用する本発明の一実施形態による方法１０を示す流れ図である。最初に、ステップ１２において、マルチプロセッサシステム上でアプリケーションを動作させている間に、コンピューティング環境内のコプロセッサはデータの特定のブロックを少なくとも１つの他のコプロセッサに伝達する必要があり得る。データのブロックは、例えば、データをデジタルにエンコードするためにメモリ内の必要なバイト数によって判定されることが可能である何らかの有限のサイズを有する。
【００１６】
ステップ１４において、送信プロセッサが伝達されるべきデータのサイズを判定し、そのサイズを予め定められた閾値と比較することができる。３６において、伝達されるべきデータのサイズが予め定められた閾値より小さいかそれと等しい場合は、ステップ１５において、送信プロセッサは、そのデータを、１つまたは複数の受信プロセッサに伝達されるメッセージにコピーすることができる。逆に、３４において、伝達されるべきデータのサイズが予め定められた閾値より大きい場合は、送信プロセッサは、ステップ１６において、データが共有メモリにあるかどうかを判定することができる。
【００１７】
本発明の一実施形態では、予め定められた閾値は、構成ファイルでなどの静的パラメータとしてエンコードされることが可能である。構成ファイルは、アプリケーション、サーバ、およびオペレーティングシステムのために一般に使用されるような初期設定でエンコードされ、しばしばＸＭＬなどのマークアップ言語で書かれたＡＳＣＩＩテキストファイルでよい。代替として、予め定められた閾値は、アプリケーションのインスタンス化時にパラメータとしてコンピューティング環境に渡されるか、またはさらにコンピューティング環境のオペレーティングシステムの環境変数として設定されてもよい。これらの実施例のすべてにおいて、データの特定のサイズのブロックが共有メモリまたはメッセージパッシングによってより効率よく伝達されるかどうかを判定するために予め定められた閾値を識別する静的パラメータがエンコードされる。
【００１８】
本発明の他の実施形態では、予め定められた閾値が適応可能であり得る。送信プロセッサは、メッセージを伝達する場合、すべてのコプロセッサに知られているグローバルクロックに基づいてタイムスタンプを挿入することができ、次いで、受信プロセッサは、予め定められた閾値が変更されるべきかどうかを判定するために待ち時間を分析することができる。待ち時間に影響を与え、最適閾値を変える可能性がある要因は、バス混雑、ページング、割り込み、およびＣＰＵクロック速度を含む。
【００１９】
４０において、送信プロセッサが、伝達されるべきデータが１つまたは複数の受信プロセッサによってアクセス可能でないメモリロケーションに記憶されていると判定した場合は、送信プロセッサは、ステップ１８において、データを共有メモリ領域に移すことができる。３８において、送信プロセッサが、伝達されるべきデータがすでに共有メモリ領域にあると判定した場合は、送信プロセッサは、データを共有メモリ領域に移すステップをスキップしてよい。
【００２０】
次いで、ステップ２０において、送信プロセッサは、一意の識別子が存在するかどうか、すなわち、一意の識別子が生成され、受信プロセッサに伝達されるべきデータに割り当てられているかどうかを判定する。一意の識別子は、データのブロックなどのコンピューティングオブジェクトに割り当てられたコード、すなわち、分散コンピューティング環境が情報を一意に識別することができるようにするコードである。本発明の文脈では、一意の識別子は、共有メモリを介してデータにアクセスする受信プロセッサが、データが有効であるかどうかを判定することができるように、伝達されるべきデータに割り当てられる。無効なデータが同期問題および有効期限切れ問題から生じる可能性があり、それによって、共有メモリ領域は、受信プロセッサが一意の識別子に対応する古いデータにアクセスする前に、新しいデータで上書きされる可能性がある。一意の識別子は、ソフトウェア設計の技術分野でよく知られているユニバーサルユニーク識別子（ＵＵＩＤ）の実施形態の１つでよい。代替として、一意の識別子は、データが共有メモリ領域に書き込まれた時間、または、自己言及的に、一意の識別子が生成された時間など、データに関係のある時間をエンコードするためのタイムスタンプでもよい。
【００２１】
４２において、送信プロセッサが、共有メモリ内にある伝達されるべきデータのための一意の識別子が存在しないと判定した場合は、送信プロセッサは、ステップ２１において、一意の識別子を生成し、データのロケーションにおける共有メモリ領域にプリペンドすることができる。４４において、送信プロセッサが、伝達されるべきデータのための一意の識別子がすでに存在し、共有メモリ領域にあると判定した場合は、送信プロセッサは、共有メモリ領域内のデータに一意の識別子を付加するステップをスキップしてよい。
【００２２】
送信プロセッサが伝達されるべき共有メモリ内のデータのための一意の識別子を確認した後は、送信プロセッサは、ステップ２２において、その一意の識別子を配置されるべき共有メモリ領域から１つまたは複数の受信プロセッサに送信されるべきメッセージにコピーすることができる。さらに、ステップ２４において、送信プロセッサは、ポインタをメッセージに入れることができ、この場合、ポインタは、伝達されるべきデータを記憶しておく共有メモリ内のアドレスを示す値である。ポインタを伝達されるべきメッセージに入れることは本発明の好ましい実施形態であるが、共有メモリシステムのタイプなど特定のコンピューティング環境は、ポインタを送信プロセッサから受信プロセッサに直接伝達するステップを不要にすることができる。例えば、コンピューティング環境は、共有メモリが、伝達されるべきデータのロケーションが、メッセージ内の一意の識別子に対して絶対値算術演算を実行することにより受信プロセッサによって確認されることが可能であるやり方で区分されるように構成されてよい。
【００２３】
少なくとも１つの受信プロセッサに伝達されるべきメッセージは、ステップ１５においてのようにメッセージ内にデータのコピーを有してもよく、またはステップ２４においてのように共有メモリ内にロケーションに対するポインタを含んでもよい。それとは関係なく、送信プロセッサは、ステップ２８において、追加のメタデータがメッセージ内に送信されなければならないかどうかを判定することができる。４６において、送信プロセッサが追加のメタデータをメッセージに付加すると決めた場合は、送信プロセッサは、ステップ２６において追加のメタデータをメッセージにコピーすることができる。４８において、送信プロセッサが、追加のメタデータが利用可能でないかまたはメッセージにとって必要でないと判定した場合は、送信プロセッサは、追加のメタデータをメッセージにコピーするステップをスキップしてよい。
【００２４】
メタデータは、伝達されるべきデータを記述し、そのデータの最も効率のよい伝達を可能にするために追加の情報を提供するデータの任意のセットでよい。例えば、メタデータは、データを送信プロセッサから特定の受信プロセッサに伝達するために必要なチャネルを特徴づける待ち時間情報を含んでよい。データが、スペクトル帯の数、ビット深度、画像寸法、および帯域順などの特徴に応じていくつかの異なるやり方でフォーマットされてよいハイパースペクトル画像を表してよいコンピューティング環境では、メタデータは、ハイパースペクトル画像の特定のフォーマットをエンコードすることができる。口径およびＩＳＯ感度などの画像を収集するために使用されるレンズを特徴づける追加の情報は、メタデータとしてエンコードされてよい。さらに、ハイパースペクトル画像に適用される変換を含む処理履歴がメタデータとして記憶されてもよい。
【００２５】
次いで、送信プロセッサは、ステップ３０において、メッセージを少なくとも１つの受信プロセッサに送信する。本方法は、ステップ３２において終了し、この場合、各受信プロセッサはメッセージを解析して、データがメッセージにエンコードされているかどうかを直接判定するか、または、メッセージが一意の識別子およびポインタを含む場合は、データを共有メモリロケーションから取り出すかのどちらかをすることができる。
【００２６】
多くのコンピューティング環境が前述の発明から利益を受けることができる。送信処理エンティティおよび受信処理エンティティは、コプロセッサと呼ばれるが、本発明は、プロセス、カーネルスレッドおよびファイバに等しく適用可能である。とりわけ本発明に適したハードウェア実施形態は、それらの高度並列処理アーキテクチャのゆえにグラフィック処理装置（ＧＰＵ）およびマルチコアプロセッサを含む。
【００２７】
本明細書は、ベストモードを含めて本発明を開示するために、さらに、当業者なら誰でも任意のデバイスまたはシステムを作成し使用することおよび任意の組み込まれた方法を実施することを含めて本発明を実施することができるようにするために、実施例を使用する。本発明の特許可能な範囲は、特許請求の範囲によって定義され、当業者に思いつかれる他の実施例を含んでよい。そのような他の実施例は、特許請求の範囲の文字言語と異ならない構造要素を有する場合、または特許請求の範囲の文字言語と事実上異ならない同等の構造要素を含む場合は、特許請求の範囲の範囲内にあるものとする。
【符号の説明】
【００２８】
１０  コプロセッサ間でデータをやりとりする方法
１２  方法１０の最初のステップ
１４  伝達されるべきデータのサイズを判定し、そのサイズを予め定められた閾値と比較するステップ
１５  データをメッセージにコピーするステップ
１６  データが共用メモリにあるかどうかを判定するステップ
１８  データを共有メモリ領域に移すステップ
２０  一意の識別子が存在するかどうかを判定するステップ
２１  一意の識別子を生成し、データのロケーションにおける共有メモリ領域にプリペンドするステップ
２２  一意の識別子を配置されるべき共有メモリ領域からメッセージにコピーするステップ
２４  ポインタをメッセージに入れるステップ
２６  追加のメタデータをメッセージにコピーするステップ
２８  メッセージ内に追加のメタデータが送信されなければならないかどうかを判定するステップ
３０  メッセージを送信するステップ
３２  方法１０の最終ステップ
３４  伝達されるべきデータのサイズが予め定められた閾値より大きい
３６  伝達されるべきデータのサイズが予め定められた閾値より小さいかまたはそれに等しい
３８  伝達されるべきデータがすでに共有メモリ領域にある
４０  伝達されるべきデータが１つまたは複数の受信プロセッサによってアクセス可能でないメモリロケーションに記憶されている
４２  共有メモリにある伝達されるべきデータのための一意の識別子が存在しない
４４  伝達されるべきデータのための一意の識別子がすでに存在し、共有メモリ領域にある
４６  追加のメタデータをメッセージに付加する
４８  追加のメタデータが利用可能でないかまたはメッセージにとって必要でない
【図１】
2014186718.tif 000003