JP2016538621A - ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム - Google Patents

ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2016538621A
JP2016538621A JP2016520146A JP2016520146A JP2016538621A JP 2016538621 A JP2016538621 A JP 2016538621A JP 2016520146 A JP2016520146 A JP 2016520146A JP 2016520146 A JP2016520146 A JP 2016520146A JP 2016538621 A JP2016538621 A JP 2016538621A
Authority
JP
Japan
Prior art keywords
accelerator
performance
task
measuring
accepted
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.)
Granted
Application number
JP2016520146A
Other languages
English (en)
Other versions
JP6444393B2 (ja
Inventor
デュサナプディ、マノジュ
カマラージュ、サイラム
クリシュナ、アニール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016538621A publication Critical patent/JP2016538621A/ja
Application granted granted Critical
Publication of JP6444393B2 publication Critical patent/JP6444393B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Software Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】ハードウェア・アクセラレータの性能測定を可能にする。【解決手段】ハードウェア・アクセラレータの性能測定であって、1つまたは複数のコンピュータ・プロセッサが少なくとも1つのハードウェア・アクセラレータに動作可能なように結合され、コンピュータ・メモリが1つまたは複数のコンピュータ・プロセッサに動作可能なように結合される。まず、1つまたは複数のプロセッサによって、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにプロセッサによってデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させて、アクセラレータを飽和状態で動作させる。次に、プロセッサによって、アクセラレータが飽和状態で動作している間に、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定する。【選択図】図2

Description

本発明の分野は、データ処理であり、またはより詳細にはハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムである。
汎用プロセッサは、過去数十年にわたって、ユニプロセッサ・システム、対称型マルチプロセッサ・システム、およびチップ・マルチプロセッサ・システムを構築するために使用される主力製品であった。汎用のコアは、作業負荷の集合に対して最も優れた「平均的な」挙動を実現するために設計されるが、それぞれの個々の作業負荷に関しては概して準最適である。(業界標準の制約および作業負荷の幅広い組に対する平均して良好な性能という設計目的が原因でもたらされる)汎用処理コアの固有の非効率性は、概して、単位面積当たりの指数関数的なトランジスタ密度の増加(ムーアの法則)および単位面積当たりの一定の電力密度(デナード・スケーリング(Dennard Scaling))のおかげで過去数十年にわたって隠されてきた。新しい現実は、ムーアの法則により、単位面積当たりのトランジスタの数がますます増え続ける一方で、デナード・スケーリングが著しく鈍化したことである。これは、汎用コアを用いる性能の向上がチップおよびシステムの電力バジェット(power budget)の超線形の(super linear)増加によってのみ可能であることを意味する。したがって、将来の計算機械は、汎用コンピュータのエネルギー非効率性から離れて特化されたタスクに固有のプロセッサまたはアクセラレータに向かうように強いられる。特定の作業負荷のためにハードウェア・コアを特化させることは、大きな性能の利点と1ワット当たりの性能の利点とをもたらす。特定のタスクを汎用プロセッサからタスクに固有のアクセラレータにオフロードすることは、汎用プロセッサで同じタスクを行うのに比べて消費電力を削減しながら(場合によってはタスクに関して数桁の)実行速度の向上をもたらし得る。
アクセラレータの性能を測定することは、アクセラレータの設計を実証するために使用される。アクセラレータの性能を測定することは、設計のボトルネックを理解し、チップの設計、システムの設計、およびソフトウェアの設計を手引きする際の価値ある手段である。しかし、この測定を正確に行うことには大きな課題がある。概して、アクセラレータの性能が測定される2つの方法がある。第1の方法は、アクセラレータのパフォーマンス・カウンタを(利用可能である場合)プログラミングすることをともなう。第2の方法は、ソフトウェア測定ツールを用いてアクセラレータによる作業の完了を特定し、その後、タイマ・レジスタを読む。第2の手法は、好ましい手法である。第2の手法はより広く(特定のパフォーマンス・カウンタが利用不可能であるときでさえも機能する)、より信頼性があり(パフォーマンス・カウンタを効率的にプログラミングすることができるライブラリに頼る必要がない)、より単純である(利用可能なパフォーマンス・カウンタの複雑さ、それらのパフォーマンス・カウンタが何を意味するかなどを知る必要がない)。たとえば、ラボ・システム(lab system)の呼出(bringup)中は、パフォーマンス・カウンタが容易に利用可能でないことが多く、少なくとも、測定ツールがそれらを利用することができない。利用可能になった後でさえも、解決されるべきバグが存在する。その一方、第2の手法は機能し続ける。そうは言っても、第2の手法は、汎用コアで実行され、アクセラレータと通信する測定ソフトウェアを使用することに依拠する。
これらの従来技術の手法は、問題を有する。ソフトウェア測定ツールは、比較的遠く離れているオンチップまたはオフチップ相互接続によって取り付けられたアクセラレータと(直接かまたはメモリを介するかのどちらかで)通信しなければならない。加えて、ソフトウェアは、アクセラレータによる作業の完了をテストするための少なくとも少数の命令を実行しなければならず、それらの命令は、実行に時間がかかる。さらに、すべての完了後の測定ステップは時間を要し、最善の場合の測定の粒度(measurement granularity)につながる。すなわち、ソフトウェアがタスクの完了をテストするために必要とする最短の時間につながる。これらの従来技術の技術はアクセラレータにおけるタスクの完了レートがこの測定の粒度に比べて遅いときに機能するが、多くの場合、アクセラレータにおける完了レートは、汎用コア上で実行されるソフトウェア測定ツールまたはアプリケーションが利用可能な粒度よりもずっと高い。結局、それが、アクセラレーションの本質、いかなる汎用コアまたはプロセッサよりも速いということである。これは、特に、たとえば、小さなイーサネット(R)・パケットの暗号化など、少量のデータに対して働くアクセラレータに当てはまる。そのような場合、対象のタスクは、性能測定ツールが検知してタスクが完了していることを認識する前に、統計的に相当な時間アクセラレータで完了した可能性がある。
ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムを提供する。
1つまたは複数のコンピュータ・プロセッサが少なくとも1つのハードウェア・アクセラレータに動作可能なように結合され、コンピュータ・メモリが1つまたは複数のコンピュータ・プロセッサに動作可能なように結合される、ハードウェア・アクセラレータの性能測定であって、1つまたは複数のプロセッサによって、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにプロセッサによってデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させて、アクセラレータを飽和状態で動作させることと、アクセラレータが飽和状態で動作している間に、プロセッサによって、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定することとを含む、ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムが、説明される。
本発明の上述した目的およびその他の目的、特徴、および利点が、添付図面に示される本発明の例示的な実施形態による以下の詳細な説明から明らかになるであろう。ここで、添付図面における同符号は、本発明の例示的な実施形態の同部分を示す。
ハードウェア・アクセラレータの性能測定で有用な例示的なコンピュータを含む自動化された計算機のブロック図である。 ハードウェア・アクセラレータの性能測定の例示的な方法を示すフローチャートである。 ハードウェア・アクセラレータの性能測定のさらなる例示的な方法に関するタイミング図である。 ハードウェア・アクセラレータの性能測定のためのさらなる例示的な方法を示すフローチャートである。
本発明によるハードウェア・アクセラレータの性能測定のための例示的な方法、装置、およびコンピュータ・プログラムが、図1で始まる添付の図面を参照して説明される。本発明によるハードウェア・アクセラレータの性能測定は、一般的に、コンピュータによって、すなわち自動化された計算機によって実装される。したがって、図1は、本発明の実施形態によるハードウェア・アクセラレータの性能測定で有用な例示的なコンピュータ(152)を含む自動化された計算機のブロック図を示す。図1のコンピュータ(152)は、1つまたは複数のコンピュータ・プロセッサ(156)と、高速メモリ・バス(166)およびバス・アダプタ(158)を通じてコンピュータ(152)のプロセッサ(156)およびその他の構成要素に接続されるランダム・アクセス・メモリ(168)(「RAM」)とを含む。プロセッサ(156)は、本明細書においては「1つまたは複数のコンピュータ・プロセッサ」と呼ばれるが、本明細書の読み手であれば、あるコンピュータが単一のプロセッサのみでアクセラレータの性能を測定する可能性がある一方、本発明の実施形態によるアクセラレータの性能を測定するその他のコンピュータが多くのプロセッサ、プロセッサの中のマルチコア、マルチプロセッサ内のマルチ・ハードウェア・スレッドなどを含むことを理解するであろう。
図1の例示的なコンピュータは、ハードウェア・アクセラレータ(157)も含む。アクセラレータまたは補助プロセッサ(coprocessor)が、汎用プロセッサと類似の能力を有する可能性がある。アクセラレータは、メモリから命令をフェッチすること、プログラム・フロー制御命令を実行すること、入力/出力操作を行うこと、メモリを管理することなどができる。しかし、典型的に、アクセラレータは、ホストまたは主プロセッサ、汎用プロセッサにアクセラレータの命令をフェッチするように要求し、アクセラレーション機能自体に加えてその他の動作をハンドルする。明確にするために、本明細書においては、汎用プロセッサは、「プロセッサ」と呼ばれ、特化された補助プロセッサは、「アクセラレータ」と呼ばれる。本発明の実施形態による性能測定のために適合されたアクセラレータは、浮動小数点演算補助プロセッサ、グラフィックス・エンジン、ビデオ・アダプタ、デジタル信号プロセッサ、高速I/Oインターフェース、暗号化アクセラレータなどを含む。図1の例において、アクセラレータ(157)は、拡張バス(160)、バス・アダプタ(158)、およびフロント・サイド・バス(162)を通じてプロセッサ(156)に結合されるが、そのすべては、限定のためではなく説明のみのための例示的なアーキテクチャである。当業者は、一部のアクセラレータ、たとえば、数値演算補助プロセッサが汎用プロセッサと一緒に同じ集積回路基板上に直接実装され、オンチップ相互接続を通じてプロセッサに結合されることを理解するであろう。ビデオ・アダプタ(209)は、拡張バス(160)ではなく専用の高速ビデオ・バス(164)を通じてプロセッサ(157)に接続されるビデオ・アクセラレータの例である。アクセラレータおよびプロセッサを相互に接続するその他の方法が、当業者の頭に浮かび、すべてのそのような方法は、当然に本発明の範囲内にある。
RAM(168)に記憶されるのは、プロセッサがデータ処理タスク(208)をアクセラレータ(157)に送るようにプロセッサ(156)を動作させるアプリケーション(182)である。アプリケーションの制御の下で、プロセッサは、初めに、アクセラレータを飽和状態で動作させることによって、つまり、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させることによって、アクセラレータの性能を測定する。RAMは、アクセラレータ制御ブロック(210)も含み、各制御ブロックは、アクセラレータに送られたタスクを表現し、記述する構造である。各制御ブロックは、たとえば、入力バッファ・アドレス、入力バッファ・サイズ、出力バッファ・アドレス、出力バッファ・サイズ、およびステータス(リトライフラグがTRUEに設定される制御ブロックが示すアクセラレータが拒否したタスクを、セット時に示すフラグまたはメモリのビットなどのリトライインジケータ(211)を含む)を含む。リトライインジケータ(211)の代替として、一部の実施形態においては、少なくとも、アクセラレータは、プロセッサ自体のうちの1つまたは複数に搭載されたステータス・レジスタ(214)にBUSYビット(212)を設定することによって、アクセラレータが送られたタスクを拒否したことをシグナリングすることができる。送られたタスクを拒否したことのアクセラレータの指示を実装するその他の方法が、当業者の頭に浮かぶ可能性があり、すべてのそのような方法は、当然に本発明の範囲内に入る。
さらに、図1の例のRAM(168)内には、アクセラレータが飽和状態で動作している間に、アクセラレータ(157)が複数の送られたタスク(208)を受け入れる期間に従ってアクセラレータの性能を測定するようにプロセッサ(156)のうちの少なくとも1つを動作させる性能測定プログラム(184)がある。本明細書の読み手であれば、なぜ性能測定プログラム(184)がデータ処理タスクのアクセラレータに関してアクセラレータを用いるアプリケーション(182)の構成要素ではなく別個のプログラムとして実装されるのか不思議に思うであろう。答えは、それはそうされ得るということであり、性能測定プログラムは、多くの実施形態においてここに示されるように別に実装されるが、アプリケーション(182)内のスレッドまたはサブルーチンとして実装され得る。アプリケーション(182)は、アクセラレータの性能を測定するのに有用である標準的なアプリケーション・プログラム、財務会計プログラム(accounting program)、またはコンピュータ・ゲームである可能性があり、その理由は、そのプログラムがそうするように既に設定されているからである。したがって、アプリケーション(182)内に性能測定機能をインストールすることは、既存のプログラムのコードを変更することを必要とする。コンピュータにアクセラレータが存在することの本質は、そのアクセラレータがプロセッサよりもずっと高速であり、したがって、特に比較的小さなタスクで飽和した性能を実現することが、プロセッサがアクセラレータを飽和させるレートでタスクを送ることができるようになる前に、アプリケーションの複数のインスタンスが複数のプロセッサで実行されることを必要とする可能性があることも思い出されたい。同時に、アクセラレータの性能のそのような性能測定は、やはり性能測定プログラムの1つのインスタンスのみを必要とし、したがって、アプリケーションの各インスタンス内に別々の性能測定機能を有することは、おそらくリソースの最良の使用方法ではない。
さらにRAM(168)に記憶されるのは、オペレーティング・システム(154)である。オペレーティング・システムは、アプリケーション・プログラムの実行を担い、アプリケーション・プログラムに代わってコンピュータ・リソースへのアクセス、メモリ、プロセッサ時間、およびI/O機能の管理を担うコンピュータ・ソフトウェア・コンポーネントである。本発明の実施形態によるハードウェア・アクセラレータの性能測定に有用なオペレーティング・システムは、UNIX(商標)、Linux(商標)、Microsoft XP(商標)、AIX(商標)、IBMのi5/OS(商標)、および当業者の頭に浮かぶその他のオペレーティング・システムを含む。図1の例のオペレーティング・システム(154)、アプリケーション(182)、性能測定プログラム(184)、および制御ブロック(210)は、RAM(168)内に示されるが、概して、多くのそのような構成要素は、たとえば、ディスク・ドライブ(170)上またはフラッシュ・メモリ(188)内など、不揮発性メモリにも記憶される。
図1のコンピュータ(152)は、拡張バス(160)およびバス・アダプタ(158)を通じてコンピュータ(152)のプロセッサ(156)およびその他の構成要素に結合されたディスク・ドライブ・アダプタ(172)を含む。ディスク・ドライブ・アダプタ(172)は、不揮発性データ・ストレージをディスク・ドライブ(170)の形態でコンピュータ(152)に接続する。本発明の実施形態によるハードウェア・アクセラレータの性能測定のためのコンピュータにおいて有用なディスク・ドライブ・アダプタは、インテグレーテッド・デバイス・エレクトロニクス(「IDE:Integrated Drive Electronics」)アダプタ、小型コンピュータ・システム・インターフェース(「SCSI:Small Computer System Interface」)アダプタ、および当業者の頭に浮かぶその他のディスク・ドライブ・アダプタを含む。不揮発性コンピュータ・メモリは、当業者の頭に浮かぶ光ディスク・ドライブ、電気的消去可能プログラマブル読み出し専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブなどとして実装される可能性もある。
図1の例示的なコンピュータ(152)は、1つまたは複数の入力/出力(「I/O」)アダプタ(178)を含む。I/Oアダプタは、たとえば、コンピュータ・ディスプレイ・スクリーンなどのディスプレイ・デバイスへの出力ならびにキーボードおよびマウスなどのユーザ入力デバイス(181)からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを通じてユーザ指向の入力/出力を実装する。図1の例示的なコンピュータ(152)は、ディスプレイ・スクリーンまたはコンピュータ・モニタなどのディスプレイ・デバイス(180)へのグラフィック出力のために特別に設計されたI/Oアダプタの例であるビデオ・アダプタ(209)を含む。ビデオ・アダプタ(209)は、高速ビデオ・バス(164)、バス・アダプタ(158)、およびやはり高速バスであるフロント・サイド・バス(162)を通じてプロセッサ(156)に接続される。
図1の例示的なコンピュータ(152)は、その他のコンピュータ(118)とのデータ通信およびデータ通信ネットワーク(100)とのデータ通信のための通信アダプタ(167)を含む。そのようなデータ通信は、RS−232接続を通じて、ユニバーサル・シリアル・バス(「USB」)などの外部バスを通じて、IPデータ通信ネットワークなどのデータ通信ネットワークを通じて、および当業者の頭に浮かぶその他の方法でシリアルに実行される可能性がある。通信アダプタは、1つのコンピュータが直接またはデータ通信ネットワークを通じて別のコンピュータにデータ通信を送るデータ通信のハードウェアのレベルを実装する。本発明の実施形態によるハードウェア・アクセラレータの性能測定のために有用な通信アダプタの例は、有線ダイアルアップ通信のためのモデム、有線データ通信ネットワーク通信のためのイーサネット(R)(IEEE802.3)アダプタ、およびワイヤレス・データ通信ネットワーク通信のための802.11アダプタを含む。
さらなる説明のために、図2は、本発明の実施形態によるハードウェア・アクセラレータの性能測定の例示的な方法を示すフローチャートを示す。図2の方法は、図1を参照して上で説明されたコンピュータ、少なくとも1つのハードウェア・アクセラレータ(157)に動作可能なように結合された1つまたは複数のコンピュータ・プロセッサ(156)を含むコンピュータと同様のコンピュータで実施される。図2の方法において、プロセッサは、アクセラレータを飽和状態で動作させる、つまり、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにデータ処理タスク(208)を送り、送られたタスクの少なくとも一部をアクセラレータに拒否させること(216)によってアクセラレータを動作させる。上述のように、データ処理タスク(208)を送ることは、アプリケーション(182)の1つまたは複数のインスタンスがプロセッサ(156)のうちの1つまたは複数で実行されることによって実行される可能性があり、実際の測定を行うプロセス(206)は、別の性能測定プログラム(184)によって実行される可能性がある。
図2の例において、アクセラレータを飽和状態で動作させること(202)は、アクセラレータに送られたそれぞれのタスクに関する制御ブロック(210)を開始すること(204)を含む。上述のように、各制御ブロックは、アクセラレータに送られるタスクを記述する構造である。各制御ブロックは、たとえば、入力バッファ・アドレス、入力バッファ・サイズ、出力バッファ・アドレス、出力バッファ・サイズ、およびステータス・インジケータを含む(ステータス表示は、リトライフラグがTRUEに設定される制御ブロックによって示されるアクセラレータが拒否したことを示すタスクを、セット時に示すフラグまたはメモリのビットなどのリトライインジケータ(211)を含む)。つまり、図2の例示的な方法において、飽和状態で実行されるアクセラレータ(157)は、送られたタスク(208)の少なくとも一部を拒否し(216)、それぞれの拒否されたタスクに関して対応する制御ブロック(210)においてリトライインジケータ(211)を設定することによってどのタスクが拒否されるかを示すことができる(220)。図2の例のリトライインジケータ(211)の使用(220)の代替として、アクセラレータ(157)は、プロセッサ・ステータス・レジスタ(214)のBUSYビット(212)を設定することによって、そのアクセラレータ(157)が送られたタスクを拒否したことを示すことができる(218)。
図2の方法は、アクセラレータが飽和状態で動作している間に、プロセッサによって、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定すること(206)も含む。アクセラレータを飽和状態で動作させること(202)、タスクを送ること(208)などの一部として、プロセッサは、システム・クロック(215)を読み、制御ブロックの一部またはすべてにおいて、それらの制御ブロックの対応するタスクが送られる時間(217)を記録する。N個のタスク(208)が送られることになることを知って、プロセッサは、(各タスクに関する送信時間をN個の制御ブロックのそれぞれに書き込むのではなく)アクセラレータが複数の送られたタスクを受け入れる期間を定めるために最初のタスクおよび最後のタスクに関する送信時間を記録することのみを必要とする。
さらに、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するためにアクセラレータによって必要とされる期間であると解釈すること(222)を含む。飽和状態で実行されるとき、アクセラレータは次のタスクを受け入れることができるようにするためにタスクを完了しなければならないので、これは実現可能であり、受け入れ時間を完了時間であると解釈する。このようにして、受け入れ時間が、完了時間をたどる。
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、T=N/(t−t)に従ってアクセラレータの性能を測定すること(224)を含み、ここで、Tは、毎秒受け入れられるタスクとして表されたスループットを表し、Nは、時間tとtとの間にアクセラレータによって受け入れられた、送られたタスクの数であり、tは、アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、tは、N番目の送られたタスクの受け入れの時間である。
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、B=T*Iに従ってアクセラレータの性能を測定することを含み、ここで、Bは、バイト毎秒で表された入力帯域幅を表し、Tは、毎秒受け入れられるタスクとして表現されたスループットを表し、Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す。
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、B=T*Oに従ってアクセラレータの性能を測定することを含み、ここで、Bは、バイト毎秒で表された出力帯域幅を表し、Tは、毎秒受け入れられるタスクとして表されたスループットを表し、Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す。
さらなる説明のために、図3は、本発明の実施形態によるハードウェア・アクセラレータの性能測定のさらなる例示的な方法に関するタイミング図を示す。図3の例においては、1つまたは複数のコンピュータ・プロセッサ(156)が、アクセラレータを飽和させるのに十分なだけ速い多くのデータ処理タスクをアクセラレータ(157)に送る(302)。図3において、送られたタスクは、黒い点によって示され、拒否されたタスクは、斜交平行線のひかれた灰色の点によって示され、完了されたタスクは、斜交平行線のひかれた白い点によって示される。送信を速く行うことができるようにするために、アプリケーションは、多くのタスクに関するすべての必要な制御ブロックを前もって準備し、そして、アクセラレータへの送信をタイトなループで行わなければならい可能性がある。アクセラレータを飽和させるのに十分なだけ速く送信を行うことができるようにするためには、アプリケーションの複数のインスタンスが、2つ以上のプロセッサで実行される必要がある可能性がある。
いくつかのタスクが受け入れられた後、アクセラレータは、(内部のタスクのキューまたは入力バッファなどの)そのアクセラレータのリソースが一杯であるので、さらなる作業を引き受けることができない。その時点で、アクセラレータは、たとえば、プロセッサのレジスタのBUSYビットを設定するか、または制御ブロックのリトライフラグを設定することによって、送られたタスクを拒否する(304)。このフィードバックは、送るアプリケーションがそのアプリケーションの送ったタスクが正しく受け入れられたかどうかを知るためにデフォルトで必要とされる。アプリケーションは、この応答を用いて、アクセラレータがそのアクセラレータの性能の限界に到達した可能性が高いことを認識する。つまり、この時点(304)のタイミングで、アクセラレータは、飽和した動作を開始する。この時点(304)の後、次のタスクが受け入れに成功するとき(306)、アプリケーション制御下のプロセッサは、タイマ・レジスタから、つまり、システム・クロックからの時間tを記録する。プロセッサは、いくつかのタスクNを正常に送った後、時間tを記録する(308)。tとtとの間の差は、アクセラレータが飽和状態で動作しながら複数のN個の送られたタスクを受け入れた期間を表す(310)。
しかし、我々が発見したのは、tとtとの間のこの受け入れの時間がタスクの間の完了時間の実際の差(312)もたどることである。これが起こる理由は、時間tにおけるタスクの受け入れが、アクセラレータからの前のタスクの実際の完了と一致しなければならないからである。これは、タスクが前の試みでアクセラレータによって直ちに受け入れられなかったからである。したがって、タスクが受け入れられる可能性があるのは、その他のタスクが完了した後である。したがって、飽和したアクセラレータに対する受け入れレートは、アクセラレータにおける完了レートを測定するために使用され得る。
さらなる説明のために、図4は、本発明の実施形態によるハードウェア・アクセラレータの性能測定のさらなる例示的な方法を示すフローチャートを示す。図4の方法の初めに、アクセラレーションのために送られることになるN個のタスクに対応する、補助プロセッサ要求ブロック(Coprocessor Request Block;CRB)としても知られるN個のアクセラレータに固有の制御ブロックの構造(210)が、メモリ内で予め割り当てられ、初期化される(402)。Nは、ターゲットアクセラレータにより受け入れられるタスクキューをオーバーフローさせるのに十分なだけ大きいように選択されるべきである。この情報が利用可能でない場合、どのNがアクセラレータを不足なく飽和させるかを特定するために、対数的に大きくなるNを用いたいくつかの実験が必要とされる可能性がある。アクセラレータを飽和させることは、アクセラレータのキューが一杯になり、アクセラレータがBUSYまたはリトライ信号で応答し、送られたタスクを受け入れない状態を指す。
タスク(208)は、アクセラレータを飽和させるのに十分なだけ速く、密な間隔でアクセラレータに送られる(410)。このステップは、アクセラレータを飽和させることができる十分に高い送信レートにするために複数のスレッドが関与する可能性がある。各タスクが送られた後、タスクのステータスが、たとえば、IBM PowerPC(商標)プロセッサのCR0などのステータス・レジスタを読むことによって判定される(412)。ステータス・レジスタが、タスクが受け入れられたことを示す場合、方法は、正常に送られたタスクのカウントをインクリメントし(414)、次のタスクを用いて継続する。タスクが、アクセラレータが飽和状態に達した後に受け入れられることになる最初のタスクである場合、つまり、変数「saturated」が真(TRUE)である場合、システム・クロックの時間ベース・レジスタの値を「time_busy」変数に読み込むことによって現在の時間が記録される(404、406)。また、状態レジスタのステータスは、アクセラレータがBUSYであったので、そのアクセラレータがタスクを受け入れることができなかったことを示す可能性がある。その場合、図4の方法は、拒否されたタスクを再び送ることを含む。
加えて、タスクがそのようなBUSY応答を受け取る最初のタスクである場合、つまり、FALSEに初期化された変数「saturated」がまだFALSEである場合(416)、変数「saturated」が真(TRUE)に設定される(418)。1回または複数回の再試行の後、タスクがアクセラレータによって受け入れられるとき、変数「time_busy」が、システム・クロックのタイムレジスタの値からの現在の時間を記録するために使用される(406)。これは、飽和状態に達した後のアクセラレータによるタスクの初めての受け入れである。加えて、変数「N_busy」が、このときに「tasksSubmitted」変数の値に設定される。この変数は、アクセラレータによって受け入れられる前にアクセラレータからのBUSY信号に出合った最初のタスクを合計N個のタスクの中から特定する。タスクの送信は、N個のタスクがすべて受け入れられるまで継続する。送られ、受け入れられた最後のタスク(408)に関して、システム時間の値が、タイムレジスタを読むことによって変数「time_last」に記録される(420)。すべてのタスクが受け入れられた後、方法は、すべてのタスクが完了するのを待つ(422)。
結果が、エラーに関して調べられる(424)。エラーがある場合、エラーが報告され(426)、テスト・ケース、アプリケーション、またはハードウェアがデバッグされる。しかし、基礎を成すハードウェアおよびアプリケーションが正しく機能している場合の典型的なシナリオであるエラーがない場合、毎秒の動作のアクセラレータのスループットの性能が、この式によって計算される(428)。
毎秒のタスクのスループット=(N−N_busy)*time_base_frequency/(time_last−time_busy)
time_base_frequencyは、毎秒のタイマのチック(tick)の数を指す。バイト秒毎で表される入力および出力帯域幅は、どの程度の入力および出力データの平均タスクが働くかの知識に基づいて計算され得る。式が、ここで示される。
バイト毎秒の入力帯域幅(Input_Bandwidth)=スループット*タスクごとに処理された平均の入力データのバイト
バイト毎秒の出力帯域幅(Output_Bandwidth)=スループット*タスクごとに生成された平均の出力データのバイト
本発明の例示的な実施形態は、主に、ハードウェア・アクセラレータの性能測定のために完全に機能するコンピュータ・システムの文脈で説明された。しかし、当技術分野の読者は、本発明が任意の好適なデータ処理システムで使用するためのコンピュータ可読ストレージ媒体に配備されたコンピュータ・プログラムで具現化される可能性もあることを認めるであろう。そのようなコンピュータ可読ストレージ媒体は、磁気式媒体、光学式媒体、またはその他の好適な媒体を含む、機械可読情報のための任意のストレージ媒体である可能性がある。そのような媒体の例は、ハード・ドライブまたはディスケットの磁気ディスク、光学式ドライブのためのコンパクト・ディスク、磁気テープ、および当業者の頭に浮かぶその他の媒体を含む。当業者は、好適なプログラミング手段を有する任意のコンピュータ・システムが、コンピュータ・プログラムで具現化される本発明の方法のステップを実行することができることを直ちに認識するであろう。本明細書において説明された例示的な実施形態の一部は、コンピュータ・ハードウェアにインストールされて実行されるソフトウェアに基づくものの、当業者であれば、ファームウェアとしてまたはハードウェアとして実装される代替的な実施形態が、当然に本発明の範囲内にあることを認識するであろう。
当業者に理解されるように、本発明の態様は、方法、装置もしくはシステム、またはコンピュータ・プログラムとして具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、またはすべてが本明細書において「回路」、「モジュール」、「システム」、もしくは「装置」と呼ばれることがあるソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態(ファームウェア、常駐ソフトウェア、マイクロコード、マイクロコントローラ組み込みコードなど)の形態をとる可能性がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化する1つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラムの形態をとる可能性がある。
1つまたは複数のコンピュータ可読媒体の任意の組み合わせが、利用される可能性がある。そのようなコンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体システム、装置、もしくはデバイス、またはこれらの任意の好適な組み合わせである可能性があるがこれらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例(非網羅的なリスト)は、以下、すなわち、1つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせを含む。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むまたは記憶することができる任意の有形の媒体である可能性がある。
コンピュータ可読信号媒体は、たとえば、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードを具現化する伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁的、光学的、またはこれらの任意の好適な組み合わせを含むがこれらに限定されないさまざまな形態のうちの任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体である可能性がある。コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的にかつ遠隔のコンピュータ上で部分的に、またはすべて遠隔のコンピュータもしくはサーバ上で実行され得る。最後のシナリオでは、遠隔のコンピュータが、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われ得る。
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラムのフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施するための手段をもたらすように、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに与えられ、マシンを作り出すものであってよい。
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施する命令を含む製品をもたらすように、コンピュータ可読媒体に記憶され、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスを特定の方法で機能させるものであってもよい。コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施するためのプロセスを提供するように、コンピュータで実施されるプロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラム可能な装置、またはその他のデバイスで一連の動作のステップを実行させるものであってもよい。
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるコンピュータ、装置、方法、およびコンピュータ・プログラムのあり得る実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、(1つまたは複数の)規定された論理的な機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表す可能性がある。一部の代替的な実装においては、ブロックで示された機能が、図面に示された順序とは異なる順序で行われる可能性があることにも留意されたい。たとえば、連続で示された2つのブロックが、実際には実質的に同時に実行される可能性があり、またはそれらのブロックが、関連する機能に応じて逆順に実行されることもあり得る。ブロック図またはフローチャートあるいはその両方の各ブロックと、ブロック図またはフローチャートあるいはその両方のブロックの組み合わせとは、規定された機能もしくは動作を実行する専用のハードウェアに基づくシステム、または専用のハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも留意されたい。
変更および改変が本発明のさまざまな実施形態において本発明の真の思想を逸脱することなく行われ得ることは、上述の説明から理解されるであろう。本明細書の説明は、例示のみを目的としており、限定する意味で解釈されるべきでない。本発明の範囲は、以下の請求項の文言によってのみ限定される。

Claims (20)

  1. 少なくとも1つのハードウェア・アクセラレータに動作可能なように結合された1つまたは複数のコンピュータ・プロセッサを含むコンピュータのハードウェア・アクセラレータの性能測定の方法であって、
    前記1つまたは複数のプロセッサによって、前記アクセラレータのデータ処理リソースを飽和させるレートで前記アクセラレータにデータ処理タスクを送り、前記送られたタスクの少なくとも一部を前記アクセラレータに拒否させて、前記アクセラレータを飽和状態で動作させるステップと、
    前記アクセラレータが飽和状態で動作している間に、前記プロセッサによって、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定するステップと、を含む、方法。
  2. アクセラレータの性能を測定するステップが、前記1つまたは複数のプロセッサによって、前記アクセラレータが複数の送られたタスクを受け入れる期間を、前記受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈するステップをさらに含む、請求項1に記載の方法。
  3. データ処理タスクを送るステップが、前記プロセッサのうちの1つまたは複数で実行されるアプリケーション・プログラムの1つまたは複数のインスタンスによって、前記アクセラレータにデータ処理タスクを送るステップをさらに含み、
    アクセラレータの性能を測定するステップが、前記プロセッサのうちの少なくとも1つで実行される性能測定プログラムによってアクセラレータの性能を測定するステップをさらに含む、請求項1に記載の方法。
  4. 前記アクセラレータによって、前記アクセラレータが送られたタスクを拒否することを示すためにプロセッサ・ステータス・レジスタのビットを設定するステップをさらに含む、請求項1に記載の方法。
  5. アクセラレータの性能を測定するステップが、
    T=N/(t−t)に従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Nは、時間tとtとの間に前記アクセラレータによって受け入れられた、送られたタスクの数であり、
    は、前記アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、
    は、N番目に送られたタスクの受け入れの時間である、請求項1に記載の方法。
  6. アクセラレータの性能を測定するステップが、
    =T*Iに従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    は、バイト毎秒で表された入力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す、請求項1に記載の方法。
  7. アクセラレータの性能を測定するステップが、
    =T*Oに従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    は、バイト毎秒で表された出力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す、請求項1に記載の方法。
  8. ハードウェア・アクセラレータの性能測定のための装置であって、少なくとも1つのハードウェア・アクセラレータに動作可能なように結合された1つまたは複数のコンピュータ・プロセッサと、前記1つまたは複数のコンピュータ・プロセッサに動作可能なように結合されたコンピュータ・メモリとを含み、前記コンピュータ・メモリ内に配備されるコンピュータ・プログラム命令を前記コンピュータ・プロセッサが実行することによって、前記装置を、
    前記1つまたは複数のプロセッサによって、前記アクセラレータのデータ処理リソースを飽和させるレートで前記アクセラレータにデータ処理タスクを送り、前記送られたタスクの少なくとも一部を前記アクセラレータに拒否させて、前記アクセラレータを飽和状態で動作させること、
    前記アクセラレータが飽和状態で動作している間に、前記プロセッサによって、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定すること、として機能させる、装置。
  9. アクセラレータの性能を測定することが、前記1つまたは複数のプロセッサによって、前記アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈することをさらに含む、請求項8に記載の装置。
  10. データ処理タスクを送ることが、前記プロセッサのうちの1つまたは複数で実行されるアプリケーション・プログラムの1つまたは複数のインスタンスによって、前記アクセラレータにデータ処理タスクを送ることをさらに含み、
    アクセラレータの性能を測定することが、前記プロセッサのうちの少なくとも1つで実行される性能測定プログラムによってアクセラレータの性能を測定することをさらに含む、請求項8に記載の装置。
  11. 前記アクセラレータが送られたタスクを拒否することを示すために前記アクセラレータがプロセッサ・ステータス・レジスタのビットを設定するように構成された前記アクセラレータをさらに含む、請求項8に記載の装置。
  12. アクセラレータの性能を測定することが、
    T=N/(t−t)に従ってアクセラレータの性能を測定することをさらに含み、式中、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Nは、時間tとtとの間に前記アクセラレータによって受け入れられた、送られたタスクの数であり、
    は、前記アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、
    は、N番目に送られたタスクの受け入れの時間である、請求項8に記載の装置。
  13. アクセラレータの性能を測定することが、
    =T*Iに従ってアクセラレータの性能を測定することをさらに含み、式中、
    は、バイト毎秒で表された入力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す、請求項8に記載の装置。
  14. アクセラレータの性能を測定することが、
    =T*Oに従ってアクセラレータの性能を測定することをさらに含み、式中、
    は、バイト毎秒で表された出力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す、請求項8に記載の装置。
  15. 1つまたは複数のコンピュータ・プロセッサに動作可能なように結合されたハードウェア・アクセラレータの性能測定のためのコンピュータ・プログラムであって、コンピュータ可読ストレージ媒体上に配備され、
    前記1つまたは複数のコンピュータ・プロセッサに、
    前記アクセラレータのデータ処理リソースを飽和させるレートで前記アクセラレータにデータ処理タスクを送り、前記送られたタスクの少なくとも一部を前記アクセラレータに拒否させて、前記アクセラレータを飽和状態で動作させるステップと、
    前記アクセラレータが飽和状態で動作している間に、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定するステップと、
    を実行させるためのコンピュータ・プログラム。
  16. アクセラレータの性能を測定するステップが、前記1つまたは複数のプロセッサによって、前記アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈するステップをさらに含む、請求項15に記載のコンピュータ・プログラム。
  17. データ処理タスクを送るステップが、前記プロセッサのうちの1つまたは複数で実行されるアプリケーション・プログラムの1つまたは複数のインスタンスによって、前記アクセラレータにデータ処理タスクを送るステップをさらに含み、
    アクセラレータの性能を測定するステップが、前記プロセッサのうちの少なくとも1つで実行される性能測定プログラムによってアクセラレータの性能を測定するステップをさらに含む、請求項15に記載のコンピュータ・プログラム。
  18. アクセラレータの性能を測定するステップが、
    T=N/(t−t)に従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Nは、時間tとtとの間に前記アクセラレータによって受け入れられた、送られたタスクの数であり、
    は、前記アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、
    は、N番目に送られたタスクの受け入れの時間である、請求項15に記載のコンピュータ・プログラム。
  19. アクセラレータの性能を測定するステップが、
    =T*Iに従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    は、バイト毎秒で表された入力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す、請求項15に記載のコンピュータ・プログラム。
  20. アクセラレータの性能を測定するステップが、
    =T*Oに従ってアクセラレータの性能を測定するステップをさらに含み、式中、
    は、バイト毎秒で表された出力帯域幅を表し、
    Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
    Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す、請求項15に記載のコンピュータ・プログラム。
JP2016520146A 2013-10-10 2014-09-28 ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム Active JP6444393B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/050,831 US9424159B2 (en) 2013-10-10 2013-10-10 Performance measurement of hardware accelerators
US14/050,831 2013-10-10
PCT/CN2014/087638 WO2015051712A1 (en) 2013-10-10 2014-09-28 Performance measurement of hardware accelerators

Publications (2)

Publication Number Publication Date
JP2016538621A true JP2016538621A (ja) 2016-12-08
JP6444393B2 JP6444393B2 (ja) 2018-12-26

Family

ID=52810787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016520146A Active JP6444393B2 (ja) 2013-10-10 2014-09-28 ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム

Country Status (4)

Country Link
US (1) US9424159B2 (ja)
JP (1) JP6444393B2 (ja)
CN (1) CN105579996B (ja)
WO (1) WO2015051712A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465618B2 (en) * 2014-01-08 2016-10-11 Oracle International Corporation Methods and systems for optimally selecting an assist unit
CN106791808A (zh) * 2016-12-14 2017-05-31 郑州云海信息技术有限公司 一种视频加速器的检测方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132593A (ja) * 2000-10-26 2002-05-10 Matsushita Electric Ind Co Ltd 通信制御負荷変動シミュレータ
JP2002328818A (ja) * 2001-02-27 2002-11-15 Sony Computer Entertainment Inc 情報処理装置、統合型情報処理装置、実行負荷計測方法、コンピュータプログラム
WO2007125942A1 (ja) * 2006-04-26 2007-11-08 Nippon Telegraph And Telephone Corporation 負荷制御装置およびその方法
JP2013515991A (ja) * 2009-12-24 2013-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセラレータ・リソースを動的に管理するための方法、情報処理システム、およびコンピュータ・プログラム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146460A (en) 1990-02-16 1992-09-08 International Business Machines Logic simulation using a hardware accelerator together with an automated error event isolation and trace facility
US20020091817A1 (en) 2000-12-21 2002-07-11 Electronic Data Systems Corporation Performance measurement system and method
US6643609B2 (en) 2001-05-16 2003-11-04 Sharewave, Inc Performance measurement for embedded systems
US7305492B2 (en) * 2001-07-06 2007-12-04 Juniper Networks, Inc. Content service aggregation system
WO2005006205A1 (en) 2003-07-15 2005-01-20 Intel, Zakrytoe Aktsionernoe Obschestvo A method of efficient performance monitoring for symmetric multi-threading systems
US6925424B2 (en) 2003-10-16 2005-08-02 International Business Machines Corporation Method, apparatus and computer program product for efficient per thread performance information
US20050183065A1 (en) 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7292957B1 (en) 2005-01-26 2007-11-06 Sun Microsystems, Inc. Cost efficient performance statistics gathering using logarithmic indexing
US7340378B1 (en) 2006-11-30 2008-03-04 International Business Machines Corporation Weighted event counting system and method for processor performance measurements
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US7757068B2 (en) 2007-01-16 2010-07-13 Oracle America, Inc. Method and apparatus for measuring performance during speculative execution
US7953912B2 (en) 2008-02-22 2011-05-31 International Business Machines Corporation Guided attachment of accelerators to computer systems
JP2011108140A (ja) 2009-11-20 2011-06-02 Seiko Epson Corp データ処理装置
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8589922B2 (en) 2010-10-08 2013-11-19 International Business Machines Corporation Performance monitor design for counting events generated by thread groups
US8855970B2 (en) 2010-10-13 2014-10-07 The Trustees Of Columbia University In The City Of New York System and methods for precise microprocessor event counting
US8957903B2 (en) * 2010-12-20 2015-02-17 International Business Machines Corporation Run-time allocation of functions to a hardware accelerator
US8402003B2 (en) * 2011-02-08 2013-03-19 International Business Machines Corporation Performance monitoring mechanism for use in a pattern matching accelerator
CN103430484B (zh) * 2011-04-19 2017-01-18 慧与发展有限责任合伙企业 表征网络设备的方法和系统
KR101557596B1 (ko) * 2011-07-15 2015-10-05 고쿠리쯔 다이가쿠 호징 츠쿠바 다이가쿠 과부하를 회피하는 초저소비 전력화 데이터 구동 네트워킹 처리장치
US20140153577A1 (en) * 2012-12-03 2014-06-05 Aruba Networks, Inc. Session-based forwarding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002132593A (ja) * 2000-10-26 2002-05-10 Matsushita Electric Ind Co Ltd 通信制御負荷変動シミュレータ
JP2002328818A (ja) * 2001-02-27 2002-11-15 Sony Computer Entertainment Inc 情報処理装置、統合型情報処理装置、実行負荷計測方法、コンピュータプログラム
WO2007125942A1 (ja) * 2006-04-26 2007-11-08 Nippon Telegraph And Telephone Corporation 負荷制御装置およびその方法
JP2013515991A (ja) * 2009-12-24 2013-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセラレータ・リソースを動的に管理するための方法、情報処理システム、およびコンピュータ・プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
渡邊義和,酒井淳嗣,菅原智義: "アクセラレータの使用時間を考慮したヘテロメニコアマルチスレッドプロセッサ向けスケジューリング方式", 電子情報通信学会2011年総合大会講演論文集 情報・システム1, JPN6018026161, 28 February 2011 (2011-02-28), pages 41, ISSN: 0003834655 *

Also Published As

Publication number Publication date
US9424159B2 (en) 2016-08-23
CN105579996B (zh) 2018-01-05
WO2015051712A1 (en) 2015-04-16
CN105579996A (zh) 2016-05-11
US20150106816A1 (en) 2015-04-16
JP6444393B2 (ja) 2018-12-26

Similar Documents

Publication Publication Date Title
US9542295B2 (en) Method to apply perturbation for resource bottleneck detection and capacity planning
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
JP6444393B2 (ja) ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム
US20190294571A1 (en) Operation of a multi-slice processor implementing datapath steering
US10459705B2 (en) Latency measurement technology
US9703614B2 (en) Managing a free list of resources to decrease control complexity and reduce power consumption
US7823018B2 (en) Methods, systems and computer program products for CPU signaturing to aide in performance analysis
US10949330B2 (en) Binary instrumentation to trace graphics processor code
US9092333B2 (en) Fault isolation with abstracted objects
US8707449B2 (en) Acquiring access to a token controlled system resource
US8762126B2 (en) Analyzing simulated operation of a computer
US8719638B2 (en) Assist thread analysis and debug mechanism
US20130305226A1 (en) Collecting Tracepoint Data
KR102443894B1 (ko) 가상화 환경에서 가상머신의 i/o 성능을 높이기 위한 스케줄링 방법
US20100332690A1 (en) Processor performance analysis device, method, and simulator
Lesage et al. Exploring and understanding multicore interference from observable factors
US10990443B2 (en) Utilization profiling and scheduling operations using thread specific execution units usage of a multi-core multi-threaded processor
US20230376403A1 (en) Debug device, debug system, and debug method for testing storage device
KR101721341B1 (ko) 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
US20200319864A1 (en) Optimizing program parameters in multithreaded programming
JP2013196241A (ja) 情報処理装置およびログ取得方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170714

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180710

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181005

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181127

R150 Certificate of patent or registration of utility model

Ref document number: 6444393

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150