JP2013506898A - 複数の入力/出力コントローラと補助演算ユニットとを備えるマルチプロセッサアーキテクチャにおけるソフトウェアアプリケーションの実行を最適化するための方法および装置 - Google Patents

複数の入力/出力コントローラと補助演算ユニットとを備えるマルチプロセッサアーキテクチャにおけるソフトウェアアプリケーションの実行を最適化するための方法および装置 Download PDF

Info

Publication number
JP2013506898A
JP2013506898A JP2012531488A JP2012531488A JP2013506898A JP 2013506898 A JP2013506898 A JP 2013506898A JP 2012531488 A JP2012531488 A JP 2012531488A JP 2012531488 A JP2012531488 A JP 2012531488A JP 2013506898 A JP2013506898 A JP 2013506898A
Authority
JP
Japan
Prior art keywords
auxiliary
auxiliary computing
identified
computing unit
call
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.)
Pending
Application number
JP2012531488A
Other languages
English (en)
Other versions
JP2013506898A5 (ja
Inventor
デル,シモン
ガリグ,フイリツプ
ウエルテルラン,ブノワ
Original Assignee
ブル・エス・アー・エス
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ブル・エス・アー・エス filed Critical ブル・エス・アー・エス
Publication of JP2013506898A publication Critical patent/JP2013506898A/ja
Publication of JP2013506898A5 publication Critical patent/JP2013506898A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/502Proximity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

本発明は、特に、複数の入力/出力コントローラと補助演算ユニットとを備えるマイクロプロセッサアーキテクチャを有するシステムにおけるソフトウェアアプリケーションの実行の最適化に関する。システムの接続形態を解明(300)した後で、補助演算ユニットによって実行されるべき機能への呼び出しが傍受(305)される。前記呼び出しを生成した主プロセッサが特定(310)される。次いで、補助演算ユニットが、特定された主プロセッサおよび前記システムの接続形態に従って特定(315)される。好都合には、このようにして特定される補助演算ユニットが、特定された主プロセッサに最も近い補助演算ユニットである。次いで、呼び出しが、特定された補助演算ユニットにおける呼び出された機能の少なくとも一部の実行を強いるように変更(320)される。

Description

本発明は、マルチプロセッサアーキテクチャにおける演算の割り当てに関し、さらに詳しくは、複数の入力/出力コントローラと補助演算ユニット(グラフィックプロセッサなど)とを備えるマルチプロセッサアーキテクチャにおいてソフトウェアアプリケーションの実行を最適化するための方法および装置に関する。
マイクロプロセッサに関する物理的な制約ゆえに、マイクロプロセッサの性能に限界があるため、並列演算の実行を可能にする複数のマイクロプロセッサの実装にもとづくアーキテクチャが、開発されてきている。これらのマルチプロセッサアーキテクチャは、大量の演算を使用して多数のアプリケーションおよび/または段階へ分割されたアプリケーションの実行を可能にする。
このようなアーキテクチャに実装されたプロセッサは、一般に、スレッドと称される複雑なプロセスの並列処理が可能である。
さらには、特定のプロセッサが、特にグラフィックデータの表示および操作の動作のために、特定のニーズに合致するように開発されている。これらのプロセッサは、グラフィック処理ユニットまたはGPUと称されるが、並列にて大規模に動作し、特に多数の単純なプロセスを同時に処理することを可能にする。それらは、反復的な演算の処理にきわめて有効である。しかしながら、それらのプロセッサは、きわめて特定的なニーズに合致するように開発されてきているが、その一部は、今日では、非特定的な演算の実行も可能にしている。例として、nVidia社によって開発されたCUDAテクノロジ(CUDAは商標である)が、複雑な演算の問題に対する1つの回答である。
すなわち、HPCコンピュータ(HPCは、高性能演算(High−Performance Computing)を表わす)の性能を向上させるために、従来からのプロセッサをグラフィックプロセッサなどの特定のプロセッサと組み合わせるアーキテクチャが開発されてきている。
これらの異なる種類のプロセッサの実装は、それらおよびメモリの間の高品質なデータ転送を必要とする。したがって、入力/出力コントローラが使用される。入力/出力コントローラは、例えば、標準的なプロセッサの配線とPCI−e型(PCI−eは、ペリフェラルコンポーネントインターコネクトエクスプレスの略語である)のバスなどの入力/出力バスとの間のブリッジを提供するチップセット(プロセッサ、メモリ、および周辺機器の間のデジタルデータストリームを管理するための統合型の電子部品)という電子部品である。
図1は、複数の入力/出力コントローラおよびグラフィックプロセッサを備えているそのようなマルチプロセッサアーキテクチャの例を示している。
図示のとおり、このシステム100は、参照符号105−1〜105−4(包括的には参照符号105)で示されている4つの主プロセッサ、例えば、Intel社によって開発されたNehalemという型式(Nehalemは商標である)のプロセッサを備えている。ここで、これらのプロセッサの各々は、図式的に表わされている4つのコアを備えている(クアッドコアプロセッサ)。例として、プロセッサ105−1が、コア110−11〜110−14を備えている。
この例によれば、各々の主プロセッサが、例えばQPI方式のリンク(QPIは、クイックパスインターコネクトの略語である)などの高速通信リンクを介して他のすべての主プロセッサへ接続されている。
さらにシステム100は、I/OハブまたはIOH(入力/出力ハブの略語である)とも称される2つの入力/出力コントローラ115−1および115−2を備えている。ここで、各々のIOHが、2つの主プロセッサに接続されている。すなわち、IOH115−1が、プロセッサ105−1および105−4へ接続される一方で、IOH115−2が、プロセッサ105−2および105−3へ接続されている。IOHとプロセッサとの間の接続は、例えばQPI方式である。
さらに、各々のIOHが、特に特有のカード上にまとめられていてもよい1つ以上のグラフィックプロセッサへ接続されている。ここでは、IOH115−1および115−2が、それぞれグラフィックプロセッサ120−1および120−2へ接続されている。IOHと一式のグラフィックプロセッサとの間の通信リンクは、例えばPCI−e型である。
このようにして、このようなアーキテクチャは、プロセッサ105−1および105−4がグラフィックプロセッサ120−1に直接アクセスすることを可能にし、プロセッサ105−2および105−3がグラフィックプロセッサ120−2に直接アクセスすることを可能にする。さらに、プロセッサ105−1および105−4が、プロセッサ105−2および105−3の相互接続を介してグラフィックプロセッサ120−2に間接的にアクセスすることができる。同様に、プロセッサ105−2および105−3が、プロセッサ105−1および105−4の相互接続を介してグラフィックプロセッサ120−1にアクセスすることができる。
このようなシステムが実装されるとき、主プロセッサによって実行されるアプリケーションからのグラフィックプロセッサによって実行される機能の呼び出しを管理するために、通常はライブラリが使用される。特に、このライブラリの目的は、それらの機能を実行すべきグラフィックプロセッサ(複数可)を決定することにある。
ここで、グラフィックプロセッサを、ユーザが、それらの性能またはバージョンなどといった特定の特徴に従って特定できることが明らかになっている。すなわち、グラフィックプロセッサによって実行される機能への呼び出しを管理するために使用されるライブラリを通じて、ユーザは、その情報を使用し、実行すべき機能に応じてそれらのグラフィックプロセッサを選択することができる。
これらの技術的解決策は、有効であることが明らかになっているが、それでもなお、特にシミュレーションの分野における幾多のアプリケーションが必要とするますます増大する演算の必要性を満たすために、それらを改善するというニーズが常に存在し、これを本発明が提供する。
本発明は、少なくとも1つの複数の主プロセッサと、複数の補助演算ユニットと、複数の入力/出力コントローラとを備えており、前記複数の入力/出力コントローラの各々の入力/出力コントローラが、前記複数の主プロセッサのうちの少なくとも1つの主プロセッサへ接続され、前記複数の補助演算ユニットの各々の補助演算ユニットが、前記複数の入力/出力コントローラのうちの入力/出力コントローラへ接続されているシステムにおいて実行される、補助演算ユニットによって実行されるべき少なくとも1つの機能への少なくとも1つの呼び出しを含んでいるソフトウェアアプリケーションの実行を最適化するための方法であって、
前記システムの接続形態を判定するステップと、
少なくとも1つの補助演算ユニットによって実行されるべき前記少なくとも1つの機能への前記少なくとも1つの呼び出しを傍受するステップと、
前記少なくとも1つの呼び出しを生成した主プロセッサを特定するステップと、
前記特定された主プロセッサおよび前記システムの前記接続形態に従って特定する、前記複数の補助演算ユニットのうちの少なくとも1つの補助演算ユニットを特定するステップと、
前記少なくとも1つの特定された補助演算ユニットにおける前記少なくとも1つの機能の少なくとも一部の実行を強いるように、前記少なくとも1つの呼び出しを変更するステップと
を含んでいる方法に関する。
このようにして、本発明による方法は、機能の実行の割り当てを最適にするために、呼び出された機能を実行すべき補助演算ユニットを、システムの接続形態およびそれらの呼び出しの起点に位置する主プロセッサの前記接続形態における場所に従って、選択することを可能にする。
特定の実施形態によれば、前記システムの前記接続形態を判定するステップが、前記主プロセッサのうちの少なくとも1つに関する少なくとも1つのリストを制定するステップを含み、前記リストが、前記補助演算ユニットのうちの少なくとも1つの少なくとも1つの識別子、ならびに前記主プロセッサのうちの前記少なくとも1つと、前記少なくとも1つの識別子に対応する前記補助演算ユニットのうちの前記少なくとも1つとの間の距離の測定を含む。そのようなリストは、補助演算ユニットを、特定の主プロセッサおよびこの主プロセッサと補助演算ユニットとの距離にもとづいて迅速に特定することを可能にする。
好都合には、この方法が、呼び出された機能の実行に利用することができる補助演算ユニットを選択するために、前記少なくとも1つの特定された補助演算ユニットについて利用可能性をテストするステップをさらに備える。
特定の実施形態によれば、前記少なくとも1つの特定された補助演算ユニットが、前記少なくとも1つの呼び出しを生成した前記主プロセッサに最も近い利用可能な補助演算ユニットである。これにより、主プロセッサと主プロセッサによって呼び出された機能を実行する補助演算ユニットとの間の距離によって引き起こされるレイテンシ時間が、最小にされる。
前記接続形態は、好ましくは、前記システムに実装されたオペレーティングシステムに特有の情報に従って判定される。これにより、システムの接続形態を、追加の情報を必要とせずに判定することができる。
特定の実施形態によれば、前記接続形態を判定する前記ステップが、
前記複数の補助演算ユニットのうちの少なくとも1つの補助演算ユニットを特定するステップと、
前記接続形態を判定する前記ステップにおいて特定された前記少なくとも1つの補助演算ユニットが接続された少なくとも1つのバスを特定するステップと、
前記複数の主プロセッサのうちで、前記少なくとも1つの特定されたバスに接続された少なくとも1つの主プロセッサを特定するステップと
を含む。
したがって、システムの接続形態を、LINUX(登録商標)などのオペレーティングシステムに特有の情報から判定することができる。
さらに特定の実施形態によれば、前記少なくとも1つの呼び出しを変更する前記ステップが、前記少なくとも1つの呼び出しの処理動作の時点で実行される機能をオーバーロード(overloading)するステップを含む。このようにして、本発明を、システムによって実行されるソフトウェアアプリケーションに関していかなる特定の変更も必要とせずに容易に実行することができる。
さらに特定の実施形態によれば、すでに述べたステップが、前記ソフトウェアアプリケーションの実行に先立って動的にロードされるライブラリに実装される。結果として、本発明が、きわめて単純に実現される。
さらに本発明は、コンピュータ上で実行されたときにすでに述べた方法の各々のステップを実行するように構成されたインストラクションを含んでいるコンピュータプログラム、ならびにすでに述べた方法の各々のステップを実施するように構成された手段を備えている装置に関する。
そのようなコンピュータプログラムおよび装置によってもたらされる利点は、上述した利点と同様である。
本発明の他の利点、目的、および特徴が、添付の図面に関連してあくまでも本発明を限定するものではない例として提示される以下の詳細な説明から、明らかになる。
複数の入力/出力コントローラおよびグラフィックプロセッサを備えている単純なマルチプロセッサアーキテクチャであって、本発明を実施することができるマルチプロセッサアーキテクチャの例を示している。 複数の入力/出力コントローラおよびグラフィックプロセッサを備えている複雑なマルチプロセッサアーキテクチャであって、本発明を実施することができるマルチプロセッサアーキテクチャの例を示している。 補助演算ユニットによって実行されるべき機能が呼び出されたときに特定の補助演算ユニットの選択を強いるように実行される方法の例について、特定の複数のステップを図式的に示している。 図3に示した補助演算ユニットを特定するステップをさらに詳しく示している。
ただ1つの入力/出力コントローラ(あるいは、入力/出力ハブ、略してIOH)が演算システムにおいて使用される場合、そのIOHに接続された主プロセッサ(あるいは、中央演算ユニット、略してCPU)は、同じ速度でそれに接続された補助演算ユニット、例えばグラフィックプロセッサ(あるいは、グラフィクスプロセシングユニット、略してGPU)にアクセスする。しかしながら、複数のIOHが存在する場合、演算システムの接続形態に応じて、複数の主プロセッサが所与の補助演算ユニットに同じ速度でアクセスしないことも可能である。
例えば、図1を参照すると、CPU105−1および105−4の両方が、IOH115−1を介して直接接続されたGPU120−1に同じ速度でアクセスし、さらにCPU105−2および105−3の両方が、IOH115−1を介して間接的に接続されたGPU120−1に同じ速度でアクセスする場合、CPU105−1および105−4は、CPU105−2および105−3と同じ速度でGPU120−1にアクセスするわけではない。
したがって、演算システムの性能の低下を避けるために、IOHに直接接続された主プロセッサ上で実行されるアプリケーションまたはプロセスは、可能な限り、そのIOHに接続された補助演算ユニットと通信しなければならないことが明らかである。この問題は、図2に示されているようなより大規模なシステムにはなおさら当てはまる。
図2に示されているように、ここでは、演算システムが、同じアーキテクチャを有する4つのサブシステムを備えており、各々のサブシステムが、複数の主プロセッサと、複数の補助演算ユニット(ここでは、グラフィクスプロセッサ)とを備えている。
例として、サブシステム200−1が、参照符号205−1〜205−4で指し示されている4つの主プロセッサ、例えば、Nehalemという型式のプロセッサを備えている。ここでは、各々の主プロセッサが、例えばQPI方式のリンク(QPIは、クイックパスインターコネクトの略語である)などの高速通信リンクを介して自身のサブグループの残りのすべての主プロセッサへ接続されている。
サブシステム200−1は、すべての主プロセッサ205−1〜205−4が接続され、さらに2つのIOH215−1および215−2も接続された通信コンポーネント210をさらに備えている。そのような通信コンポーネントは、例えばBCS型(BCSは、ブルコヒーレントスイッチの略語である)のコンポーネントである。
さらに、各々のIOHは、1つ以上のグラフィクスプロセッサへ接続されている。ここでは、IOH215−1および215−2が、グラフィクスプロセッサ220−1および220−2へそれぞれ接続されている。IOHとグラフィックプロセッサとの間の通信リンクは、例えばPCI−e型(PCI−eは、ペリフェラルコンポーネントインターコネクトエクスプレスの略語である)である。
さらに、BCS型の複数のコンポーネントを、例えばXCSI形式(XCSIは、拡張コモンシステムインターフェイスの略語である)のポイントトゥポイント接続モードにてつなぎ合わせることができる。したがって、サブシステムをXCSI形式のネットワーク225を介してつなぎ合わせることができる。
このように、このアーキテクチャによれば、各々のプロセッサが、各々のグラフィックプロセッサの機能を呼び出すことができる。
しかしながら、すでに述べたように、すべてのCPUがすべてのGPUに同じ速度でアクセスするわけではないことが、明らかである。例えば、4つのCPU205−1〜205−4のすべてが、IOH215−1および215−2ならびに通信コンポーネント210を介して直接接続されたGPU220−1および220−2に同じ速度でアクセスする一方で、サブシステム200−3のCPU205’−1は、通信コンポーネント210’およびネットワーク225によって持ち込まれるレイテンシゆえに、より低い速度でこれらのGPUにアクセスする。
図1および図2に示されているような演算システムの主プロセッサにおいて実行されるプロセスまたはアプリケーションが、補助演算ユニットによって実行されるべき機能を呼び出すとき、そのようなシステムのオペレーティングシステムのカーネルが、例えば前もってロードされるライブラリを介して、この呼び出しを処理する。ライブラリの役割は、特に、呼び出しされた機能の実行を可能にするパラメータを決定することにあり、特にこの機能を実行すべき補助演算ユニット(複数可)を決定することにある。
本発明は、特に、呼び出された機能(複数可)を実行する補助演算ユニット(複数可)の選択を強いるべく、そのような呼び出しを傍受することに関する。換言すると、主プロセッサから到来する機能の呼び出しであって、その機能を実行するように補助演算ユニットを予約することに向けられた呼び出しが、そのような補助演算ユニットの選択を、呼び出し元の主プロセッサに可能な限り近い補助演算ユニットになり、好ましくは呼び出し元の主プロセッサに接続された同じ入力/出力コントローラに接続された補助演算ユニットになるように強いるために傍受される。
図3は、補助演算ユニットによって実行されるべき機能が呼び出されたときに特定の補助演算ユニットの選択を強いるように実行される方法の例について、特定の複数のステップを図式的に示している。
図示のとおり、第1のステップ(ステップ300)は、特に主プロセッサ、補助演算ユニット、および入力/出力コントローラの間のリンクを判定するために、演算システムの接続形態を判定することからなる。
このステップの一部は、特に、ログファイルと一般に称される演算システムに実装されたオペレーティングシステムのカーネルの診断メッセージまたは実行ジャーナルの分析からなることができる。また、オペレーティングシステムのデータの階層構造(ファイルシステム)の特定のデータの調査からなることができる。
したがって、例えばLINUXオペレーティングシステム(LINUXは商標である)のデータの階層構造において、特に/sysおよび/procという名称で知られる場所、すなわちシステムについての情報を含んでいる疑似ファイルが存在する。それらは、オペレーティングシステムのカーネルによってもたらされ、演算システムの接続形態を判定することを可能にする。
例として、演算システムの接続形態を、
補助演算ユニットを特定し、
演算システムのバスを分析して補助演算ユニットが接続されたバス(および入力/出力コントローラ)を特定し、
補助演算ユニットが接続されたバスへ接続された主プロセッサを特定する
ことによって決定することができる。
nVidiaの補助演算ユニットの特定を、例えば、nVidia形式の各々の周辺機器の周辺機器ドライバに関し、したがってそれらの周辺機器そのものに関する表示が保存される以下の場所
/proc/driver/nvidia/cards/
へ供給される情報にもとづいて実行することができる。
ここで、ファイルシステム/procが、ハードウェア、カーネルの構成、および実行中のプロセスについての情報へのアクセスを可能にするカーネルの疑似ファイルシステムを含んでいるディレクトリであることが明らかである。
したがって、この種のディレクトリを調査することによって、演算システムのすべての補助演算ユニットを特定することが可能である。
同様に、演算システムのバスの構成にアクセスし、前もって特定された補助演算ユニットが接続されたバスを特定することが可能である。この分析を、例えば、使用されるバスに関し、したがって使用される入力/出力コントローラに関する情報が保存される以下の場所
/sys/bus/pci/devices/0000:xxxxx
へ供給される情報にもとづいて実行することができる。
ここで、ファイルシステム/sysが、カーネルのすべてのオブジェクトについての情報を得ることを可能にし、特に演算システムのすべての周辺機器についての情報を得ることを可能にする周辺機器マネージャのための疑似ファイルシステムを特に含んでいるディレクトリであることが明らかである。ファイルシステム/sysは、ファイルシステム/procにより一般的に定義された特徴に特有の特定の情報を含んでいる。
最後に、前もって特定されたバスへ接続された主プロセッサを、例えば呼び出し元のアプリケーションによって使用されているプロセッサに関する情報が存在する以下の場所
/proc/self/stat
へ供給される情報にもとづいて決定することができる。
同様に、主プロセッサの間の接続を判定することができ、したがって各々の補助演算ユニットと各々の主プロセッサとの間の距離を表わす構造を確立することができる。そのような構造を、例えば表に保存することができる。そのような表の例が、付表(表1)に提示されている。この表は、図1に示した演算システムの接続形態に対応している。
すなわち、表に示されているように、主プロセッサ105−1が補助演算ユニット120−1に直接接続(距離がゼロ)されている一方で、この主プロセッサは、或る主プロセッサを介して補助演算ユニット120−2へ間接的に接続(1に等しい距離)されている。
好都合には、この表は、主プロセッサが選択されたときに最も近い補助演算ユニットを直接特定できるように、補助演算ユニットが距離の昇順によって分類されて順序付けされたリストの形態に構成される。表1にもとづくそのような分類されたリストの例が、付表(表2)に示されている。すなわち、この例によれば、ここで主プロセッサ105−1が選択されたとき、最も近い補助演算ユニットが補助演算ユニット120−1であり、次が補助演算ユニット120−2であることが、最初の行を読み取ることによって即座に明らかとなる。演算システムの接続形態を定めるために、他の方法も使用可能である。特に、その接続形態を、ファイルに静的に定めることができる。
次のステップ(ステップ305)は、GPUなどの補助演算ユニットによって実行されるべき機能について、主プロセッサによって実行されるプロセスまたはアプリケーションによる呼び出しを検出し、傍受することに関する。
そのような呼び出しが検出および傍受されたとき、呼び出し元の主プロセッサが特定される(ステップ310)。この特定は、特に、ファイル/proc/self/statに保存されたデータを参照することによって実行できる。
このステップに、呼び出しされた機能を実行するために利用することが可能であり、先に特定された主プロセッサから所定の距離に(好ましくは、できるだけ近くに)位置している少なくとも1つの補助演算ユニットのリストを決定するステップ(ステップ315)が続く。
たとえ一般論として、目的が、補助演算ユニットによって実行されるべき機能の呼び出し元の主プロセッサに最も近い利用可能な補助演算ユニットの特定であっても、複数の補助演算ユニットが必要とされてもよい。この場合、特定される補助演算ユニットの数は、呼び出された機能(複数可)の性質に依存することができ、すなわち機能(複数可)の実行に必要な補助演算ユニットの数に依存することができる。
さらに、最も近い補助演算ユニットを、後に呼び出される機能の実行に使用できるように残しておくために、所与の時点において選択しないことも可能であることは明らかである。
先に決定されたとおりの演算システムの接続形態が、呼び出し元の主プロセッサの識別子に従って、呼び出された機能(複数可)を実行するために使用されるべき補助演算ユニット(複数可)を特定するために使用される。
これらの目的のために、最初にまず主プロセッサが特定され、そこからその主プロセッサへ接続された補助演算ユニットが、それぞれの距離とともに導き出される。これには、補助演算ユニットの順序付けされたリストを含むことができる。この情報は、例えば付表に提示した表2と同様の表を使用して、決定された接続形態から直接得ることができる。好ましい実施形態によれば、補助演算ユニットが、例えば補助演算ユニットの順序付けされたリストの順番にしたがって分析され、最も近い利用可能な補助演算ユニット(複数可)が特定される。
このステップ315の実施の例が、図4に詳しく示されている。
補助演算ユニットのリストにおける指数を表わしている変数iをゼロに設定(ステップ400)した後で、特定された主プロセッサにとってアクセスできる補助演算ユニットの順序付けされたリストが決定される(ステップ405)。そのようなリストは、好ましくは、付表に提示した表2を参照して説明したとおりにあらかじめ決定される。次いで、順序付けされたリストにおいて指数iを有する補助演算ユニットが利用可能であるか否かを判断するためのテストが実行される(ステップ410)。利用可能でない場合、指数iが1だけ増やされ(ステップ415)、先のテストが繰り返される。反対に、指数iを有する補助演算ユニットが利用可能である場合、その補助演算ユニットが、主プロセッサによって呼び出された機能を実行するために選択される。
複数の補助演算ユニットが必要である場合、必要な数の補助演算ユニットが得られるまで、ステップ410および415が繰り返される。
当然ながら、複数の補助演算ユニットを選択すべき場合、それらを、選択された主プロセッサに最も近くなるように選択でき、すべてが選択されたプロセッサに可能な限り近い同じ距離になるように選択でき、あるいは選択されたプロセッサからの同じ所定の距離になるように選択することができる。
例として、先に図1を参照して定めた接続形態によれば、呼び出し元のCPUがCPU105−1である場合、GPUの順序付けされたリストが、120−1、120−2であると導き出される。このリストにもとづき、最初のGPU、すなわち最も近いGPU120−1について、利用可能であるか否かを判定するためのテストが実行される。否である場合、同様のテストが次の補助演算ユニットについて実行され、すなわち、ここでは補助演算ユニット120−2について実行される。利用可能である場合、その補助演算ユニットが選択される。
このようにして補助演算ユニット(複数可)が決定されると、呼び出しが、送信(ステップ325)の前に変更(ステップ320)される。
呼び出しの変更は、ここでは、例えば呼び出された機能を実行する補助演算ユニットを選択するように機能する関数cudaSetDevice()を呼び出すことによって補助演算ユニットの属性の呼び出し(attribution call)をオーバーロードするライブラリのローディングからなる。
より詳しくは、ここでは関数cudaSetDevice()が傍受され、特定された補助演算ユニット、例えば、最も近い補助演算ユニットに帰することを可能にするパラメータで呼び出される。
すでに述べたステップ(ステップ305〜325)が、他の機能を他の補助演算ユニットにおいて実行させる後続の呼び出しを処理するために繰り返される(補助演算ユニットがプロセスに属する場合、図3を参照して説明した機能は、その補助演算ユニットへの各々の呼び出しについて再び実行されるわけではない)。このプロセスが、呼び出しが生成されうる限りにおいて繰り返される。
特定の実施形態によれば、図3を参照して説明したアルゴリズムを実行するように構成されたライブラリが、補助演算ユニットにおいて実行される機能を呼び出すアプリケーションの実行に先立って、例えば環境変数LD_PRELOADを使用して動的に生成およびロードされる。ここで、環境変数LD_PRELOADが、ソフトウェアアプリケーションの実行においてさらなるライブラリのローディングを強いることを可能にすることに注意すべきである。そのようなライブラリは、機能が補助演算ユニットにおいて実行されるべき場合に、実行される機能の呼び出しのオーバーロードを可能にする。
すなわち、補助演算ユニットによって実行される機能への呼び出しを傍受し、システムの接続形態に従ってそれらの機能の実行のための場所を強制するようにそれらの呼び出しを変更することを目的とするライブラリを使用することで、それらのソフトウェアアプリケーションの実行を、それらを変更することなく加速させることができる。
当然ながら、個々のニーズを満たすために、当業者であれば、以上の説明について変更を行うことが可能であろう。特に、補助演算ユニットが、特にグラフィックプロセッサであってもよい場合に、FPGA(フィールドプログラマブルゲートアレイの略語である)またはASIC(特定用途向け集積回路の略語である)などの特定の回路を使用することも可能である。
付表
Figure 2013506898
Figure 2013506898

Claims (10)

  1. 少なくとも1つの複数の主プロセッサ(105、205)と、複数の補助演算ユニット(120、220)と、複数の入力/出力コントローラ(115、215)とを備えており、前記複数の入力/出力コントローラの各々の入力/出力コントローラが、前記複数の主プロセッサのうちの少なくとも1つの主プロセッサへ接続される、前記複数の補助演算ユニットの各々の補助演算ユニットが、前記複数の入力/出力コントローラのうちの入力/出力コントローラへ接続されているシステムにおいて実行され、補助演算ユニットによって実行されるべき少なくとも1つの機能への少なくとも1つの呼び出しを含んでいるソフトウェアアプリケーションの実行を最適化するための方法であって、
    前記システムの接続形態を判定するステップ(300)と、
    少なくとも1つの補助演算ユニットによって実行されるべき前記少なくとも1つの機能への前記少なくとも1つの呼び出しを傍受するステップ(305)と、
    前記少なくとも1つの呼び出しを生成した主プロセッサを特定するステップ(310)と、
    前記特定された主プロセッサおよび前記システムの前記接続形態に従って特定する、前記複数の補助演算ユニットのうちの少なくとも1つの補助演算ユニットを特定するステップ(315)と、
    前記少なくとも1つの特定された補助演算ユニットにおける前記少なくとも1つの機能の少なくとも一部の実行を強いるように、前記少なくとも1つの呼び出しを変更するステップ(320)と
    を含むことを特徴とする方法。
  2. 前記システムの前記接続形態を判定する前記ステップが、前記主プロセッサのうちの少なくとも1つに関する少なくとも1つのリストを制定するステップを含んでおり、前記リストが、前記補助演算ユニットのうちの少なくとも1つの少なくとも1つの識別子、ならびに前記主プロセッサのうちの前記少なくとも1つと前記少なくとも1つの識別子に対応する前記補助演算ユニットのうちの前記少なくとも1つとの間の距離の測定を含んでいる請求項1に記載の方法。
  3. 前記少なくとも1つの特定された補助演算ユニットについて利用可能性をテストするステップ(410)をさらに備えている請求項1または2に記載の方法。
  4. 前記少なくとも1つの特定された補助演算ユニットが、前記少なくとも1つの呼び出しを生成した前記主プロセッサに最も近い利用可能な補助演算ユニットである請求項3に記載の方法。
  5. 前記接続形態が、前記システムに実装されたオペレーティングシステムに特有の情報に従って判定される請求項1から4のいずれか一項に記載の方法。
  6. 前記接続形態を判定する前記ステップが、
    前記複数の補助演算ユニットのうちの少なくとも1つの補助演算ユニットを特定するステップと、
    前記接続形態を判定する前記ステップにおいて特定された前記少なくとも1つの補助演算ユニットが接続された少なくとも1つのバスを特定するステップと、
    前記複数の主プロセッサのうちで、前記少なくとも1つの特定されたバスに接続された少なくとも1つの主プロセッサを特定するステップと
    を含んでいる請求項5に記載の方法。
  7. 前記少なくとも1つの呼び出しを変更する前記ステップが、前記少なくとも1つの呼び出しの処理動作の時点で実行される機能をオーバーロードするステップを含んでいる請求項1から6のいずれか一項に記載の方法。
  8. 前記ステップが、前記ソフトウェア機能の実行に先立って動的にロードされるライブラリに実装される請求項1から7のいずれか一項に記載の方法。
  9. コンピュータ上で実行されたときに請求項1から8のいずれか一項に記載の方法の各ステップを実行するように構成されたインストラクションを含んでいるコンピュータプログラム。
  10. 請求項1から8のいずれか一項に記載の方法の各ステップを実行するように構成された手段を備えている装置。
JP2012531488A 2009-11-13 2010-10-28 複数の入力/出力コントローラと補助演算ユニットとを備えるマルチプロセッサアーキテクチャにおけるソフトウェアアプリケーションの実行を最適化するための方法および装置 Pending JP2013506898A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0905453A FR2952731B1 (fr) 2009-11-13 2009-11-13 Procede et dispositif d'optimisation d'execution d'applications logicielles dans une architecture multiprocesseur comprenant plusieurs controleurs d'entree/sortie et unites de calcul secondaires
FR0905453 2009-11-13
PCT/FR2010/052312 WO2011058260A1 (fr) 2009-11-13 2010-10-28 Procede et dispositif d'optimisation d'execution d'applications logicielles dans une architecture multiprocesseur comprenant plusieurs controleurs d'entree/sortie et unites de calcul secondaires

Publications (2)

Publication Number Publication Date
JP2013506898A true JP2013506898A (ja) 2013-02-28
JP2013506898A5 JP2013506898A5 (ja) 2014-05-01

Family

ID=42112316

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012531488A Pending JP2013506898A (ja) 2009-11-13 2010-10-28 複数の入力/出力コントローラと補助演算ユニットとを備えるマルチプロセッサアーキテクチャにおけるソフトウェアアプリケーションの実行を最適化するための方法および装置

Country Status (7)

Country Link
US (1) US8966483B2 (ja)
EP (1) EP2499570B1 (ja)
JP (1) JP2013506898A (ja)
BR (1) BR112012002720A2 (ja)
ES (1) ES2741131T3 (ja)
FR (1) FR2952731B1 (ja)
WO (1) WO2011058260A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519758B2 (en) * 2014-02-04 2016-12-13 Pegasus Media Security, Llc System and process for monitoring malicious access of protected content
FR3021430B1 (fr) * 2014-05-20 2016-05-13 Bull Sas Procede d'obtention d'informations stockees dans des registres de module(s) de traitement d'un calculateur juste apres la survenue d'une erreur fatale
US9967160B2 (en) 2015-05-21 2018-05-08 International Business Machines Corporation Rerouting data of a streaming application

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
JP2007512613A (ja) * 2003-11-19 2007-05-17 ルシッド インフォメーション テクノロジー リミテッド Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415323B1 (en) * 1999-09-03 2002-07-02 Fastforward Networks Proximity-based redirection system for robust and scalable service-node location in an internetwork
US7159216B2 (en) * 2001-11-07 2007-01-02 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system
TWI338844B (en) * 2005-02-04 2011-03-11 Sony Computer Entertainment Inc Processor task migration over a network in a multi-processor system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
JP2007512613A (ja) * 2003-11-19 2007-05-17 ルシッド インフォメーション テクノロジー リミテッド Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム

Also Published As

Publication number Publication date
ES2741131T3 (es) 2020-02-10
FR2952731B1 (fr) 2011-11-04
US8966483B2 (en) 2015-02-24
EP2499570A1 (fr) 2012-09-19
FR2952731A1 (fr) 2011-05-20
WO2011058260A1 (fr) 2011-05-19
BR112012002720A2 (pt) 2016-05-03
US20120222031A1 (en) 2012-08-30
EP2499570B1 (fr) 2019-05-08

Similar Documents

Publication Publication Date Title
US8893150B2 (en) Runtime optimization of an application executing on a parallel computer
US8281053B2 (en) Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
EP0561541B1 (en) A method of processing a program by parallel processing, and a processing unit thereof
US8495603B2 (en) Generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes
US7953957B2 (en) Mapping and distributing parallel algorithms to compute nodes in a parallel computer based on temperatures of the compute nodes in a hardware profile and a hardware independent application profile describing thermal characteristics of each parallel algorithm
US8436720B2 (en) Monitoring operating parameters in a distributed computing system with active messages
US9880877B2 (en) Methods for rule-based dynamic resource adjustment for upstream and downstream processing units in response to an intermediate processing unit event
US20090300154A1 (en) Managing performance of a job performed in a distributed computing system
US20130086551A1 (en) Providing A User With A Graphics Based IDE For Developing Software For Distributed Computing Systems
CN110825731B (zh) 数据存储方法、装置、电子设备及存储介质
US20160224379A1 (en) Mapping Processes to Processors in a Network on a Chip Computing System
JP2013506898A (ja) 複数の入力/出力コントローラと補助演算ユニットとを備えるマルチプロセッサアーキテクチャにおけるソフトウェアアプリケーションの実行を最適化するための方法および装置
JP2013506898A5 (ja)
US20170031793A1 (en) Assessment of a High Performance Computing Application in Relation to Network Latency Due to the Chosen Interconnects
US8495189B2 (en) Managing the performance of an application carried out using a plurality of pluggable processing components
US8447912B2 (en) Paging memory from random access memory to backing storage in a parallel computer
CN115314570B (zh) 基于协议开发框架的数据下发方法、装置、设备及介质
JP2014186477A (ja) 情報処理装置、情報処理方法、及び、プログラム
US20220261405A1 (en) Configurable monitoring and alerting system
CN110825461A (zh) 数据处理方法和装置
Govindasamy et al. Minimizing Memory Contention in an APNG Encoder using a Grid of Processing Cells
WO2018139344A1 (ja) 情報処理システム、情報処理装置、周辺装置、データ転送方法、及びデータ転送プログラムが格納された非一時的な記憶媒体
EP3495960A1 (en) Program, apparatus, and method for communicating data between parallel processor cores
JP3085730B2 (ja) 複合cpuシステムの並列シミュレーション方式
CN111782482B (zh) 接口压力测试方法及相关设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130910

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131206

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140304

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20140304

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140812

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20141110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20141117

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150407