特表2016-538621(P2016-538621A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特表2016-538621ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム
<>
  • 特表2016538621-ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム 図000003
  • 特表2016538621-ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム 図000004
  • 特表2016538621-ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム 図000005
  • 特表2016538621-ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2016-538621(P2016-538621A)
(43)【公表日】2016年12月8日
(54)【発明の名称】ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラム
(51)【国際特許分類】
   G06F 11/22 20060101AFI20161111BHJP
   G06F 11/34 20060101ALI20161111BHJP
【FI】
   G06F11/22 673W
   G06F11/22 673R
   G06F11/34 128
【審査請求】未請求
【予備審査請求】未請求
【全頁数】22
(21)【出願番号】特願2016-520146(P2016-520146)
(86)(22)【出願日】2014年9月28日
(85)【翻訳文提出日】2016年4月5日
(86)【国際出願番号】CN2014087638
(87)【国際公開番号】WO2015051712
(87)【国際公開日】20150416
(31)【優先権主張番号】14/050,831
(32)【優先日】2013年10月10日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】デュサナプディ、マノジュ
(72)【発明者】
【氏名】カマラージュ、サイラム
(72)【発明者】
【氏名】クリシュナ、アニール
【テーマコード(参考)】
5B042
5B048
【Fターム(参考)】
5B042GA11
5B042HH20
5B042HH49
5B042LA19
5B042MC25
5B042MC28
5B042MC35
5B048AA04
5B048AA08
5B048DD08
5B048DD17
5B048EE05
(57)【要約】
【課題】ハードウェア・アクセラレータの性能測定を可能にする。
【解決手段】ハードウェア・アクセラレータの性能測定であって、1つまたは複数のコンピュータ・プロセッサが少なくとも1つのハードウェア・アクセラレータに動作可能なように結合され、コンピュータ・メモリが1つまたは複数のコンピュータ・プロセッサに動作可能なように結合される。まず、1つまたは複数のプロセッサによって、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにプロセッサによってデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させて、アクセラレータを飽和状態で動作させる。次に、プロセッサによって、アクセラレータが飽和状態で動作している間に、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定する。
【選択図】図2
【特許請求の範囲】
【請求項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に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の分野は、データ処理であり、またはより詳細にはハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムである。
【背景技術】
【0002】
汎用プロセッサは、過去数十年にわたって、ユニプロセッサ・システム、対称型マルチプロセッサ・システム、およびチップ・マルチプロセッサ・システムを構築するために使用される主力製品であった。汎用のコアは、作業負荷の集合に対して最も優れた「平均的な」挙動を実現するために設計されるが、それぞれの個々の作業負荷に関しては概して準最適である。(業界標準の制約および作業負荷の幅広い組に対する平均して良好な性能という設計目的が原因でもたらされる)汎用処理コアの固有の非効率性は、概して、単位面積当たりの指数関数的なトランジスタ密度の増加(ムーアの法則)および単位面積当たりの一定の電力密度(デナード・スケーリング(Dennard Scaling))のおかげで過去数十年にわたって隠されてきた。新しい現実は、ムーアの法則により、単位面積当たりのトランジスタの数がますます増え続ける一方で、デナード・スケーリングが著しく鈍化したことである。これは、汎用コアを用いる性能の向上がチップおよびシステムの電力バジェット(power budget)の超線形の(super linear)増加によってのみ可能であることを意味する。したがって、将来の計算機械は、汎用コンピュータのエネルギー非効率性から離れて特化されたタスクに固有のプロセッサまたはアクセラレータに向かうように強いられる。特定の作業負荷のためにハードウェア・コアを特化させることは、大きな性能の利点と1ワット当たりの性能の利点とをもたらす。特定のタスクを汎用プロセッサからタスクに固有のアクセラレータにオフロードすることは、汎用プロセッサで同じタスクを行うのに比べて消費電力を削減しながら(場合によってはタスクに関して数桁の)実行速度の向上をもたらし得る。
【0003】
アクセラレータの性能を測定することは、アクセラレータの設計を実証するために使用される。アクセラレータの性能を測定することは、設計のボトルネックを理解し、チップの設計、システムの設計、およびソフトウェアの設計を手引きする際の価値ある手段である。しかし、この測定を正確に行うことには大きな課題がある。概して、アクセラレータの性能が測定される2つの方法がある。第1の方法は、アクセラレータのパフォーマンス・カウンタを(利用可能である場合)プログラミングすることをともなう。第2の方法は、ソフトウェア測定ツールを用いてアクセラレータによる作業の完了を特定し、その後、タイマ・レジスタを読む。第2の手法は、好ましい手法である。第2の手法はより広く(特定のパフォーマンス・カウンタが利用不可能であるときでさえも機能する)、より信頼性があり(パフォーマンス・カウンタを効率的にプログラミングすることができるライブラリに頼る必要がない)、より単純である(利用可能なパフォーマンス・カウンタの複雑さ、それらのパフォーマンス・カウンタが何を意味するかなどを知る必要がない)。たとえば、ラボ・システム(lab system)の呼出(bringup)中は、パフォーマンス・カウンタが容易に利用可能でないことが多く、少なくとも、測定ツールがそれらを利用することができない。利用可能になった後でさえも、解決されるべきバグが存在する。その一方、第2の手法は機能し続ける。そうは言っても、第2の手法は、汎用コアで実行され、アクセラレータと通信する測定ソフトウェアを使用することに依拠する。
【0004】
これらの従来技術の手法は、問題を有する。ソフトウェア測定ツールは、比較的遠く離れているオンチップまたはオフチップ相互接続によって取り付けられたアクセラレータと(直接かまたはメモリを介するかのどちらかで)通信しなければならない。加えて、ソフトウェアは、アクセラレータによる作業の完了をテストするための少なくとも少数の命令を実行しなければならず、それらの命令は、実行に時間がかかる。さらに、すべての完了後の測定ステップは時間を要し、最善の場合の測定の粒度(measurement granularity)につながる。すなわち、ソフトウェアがタスクの完了をテストするために必要とする最短の時間につながる。これらの従来技術の技術はアクセラレータにおけるタスクの完了レートがこの測定の粒度に比べて遅いときに機能するが、多くの場合、アクセラレータにおける完了レートは、汎用コア上で実行されるソフトウェア測定ツールまたはアプリケーションが利用可能な粒度よりもずっと高い。結局、それが、アクセラレーションの本質、いかなる汎用コアまたはプロセッサよりも速いということである。これは、特に、たとえば、小さなイーサネット(R)・パケットの暗号化など、少量のデータに対して働くアクセラレータに当てはまる。そのような場合、対象のタスクは、性能測定ツールが検知してタスクが完了していることを認識する前に、統計的に相当な時間アクセラレータで完了した可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【0006】
1つまたは複数のコンピュータ・プロセッサが少なくとも1つのハードウェア・アクセラレータに動作可能なように結合され、コンピュータ・メモリが1つまたは複数のコンピュータ・プロセッサに動作可能なように結合される、ハードウェア・アクセラレータの性能測定であって、1つまたは複数のプロセッサによって、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにプロセッサによってデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させて、アクセラレータを飽和状態で動作させることと、アクセラレータが飽和状態で動作している間に、プロセッサによって、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定することとを含む、ハードウェア・アクセラレータの性能測定のための方法、装置、およびコンピュータ・プログラムが、説明される。
【0007】
本発明の上述した目的およびその他の目的、特徴、および利点が、添付図面に示される本発明の例示的な実施形態による以下の詳細な説明から明らかになるであろう。ここで、添付図面における同符号は、本発明の例示的な実施形態の同部分を示す。
【図面の簡単な説明】
【0008】
図1】ハードウェア・アクセラレータの性能測定で有用な例示的なコンピュータを含む自動化された計算機のブロック図である。
図2】ハードウェア・アクセラレータの性能測定の例示的な方法を示すフローチャートである。
図3】ハードウェア・アクセラレータの性能測定のさらなる例示的な方法に関するタイミング図である。
図4】ハードウェア・アクセラレータの性能測定のためのさらなる例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0009】
本発明によるハードウェア・アクセラレータの性能測定のための例示的な方法、装置、およびコンピュータ・プログラムが、図1で始まる添付の図面を参照して説明される。本発明によるハードウェア・アクセラレータの性能測定は、一般的に、コンピュータによって、すなわち自動化された計算機によって実装される。したがって、図1は、本発明の実施形態によるハードウェア・アクセラレータの性能測定で有用な例示的なコンピュータ(152)を含む自動化された計算機のブロック図を示す。図1のコンピュータ(152)は、1つまたは複数のコンピュータ・プロセッサ(156)と、高速メモリ・バス(166)およびバス・アダプタ(158)を通じてコンピュータ(152)のプロセッサ(156)およびその他の構成要素に接続されるランダム・アクセス・メモリ(168)(「RAM」)とを含む。プロセッサ(156)は、本明細書においては「1つまたは複数のコンピュータ・プロセッサ」と呼ばれるが、本明細書の読み手であれば、あるコンピュータが単一のプロセッサのみでアクセラレータの性能を測定する可能性がある一方、本発明の実施形態によるアクセラレータの性能を測定するその他のコンピュータが多くのプロセッサ、プロセッサの中のマルチコア、マルチプロセッサ内のマルチ・ハードウェア・スレッドなどを含むことを理解するであろう。
【0010】
図1の例示的なコンピュータは、ハードウェア・アクセラレータ(157)も含む。アクセラレータまたは補助プロセッサ(coprocessor)が、汎用プロセッサと類似の能力を有する可能性がある。アクセラレータは、メモリから命令をフェッチすること、プログラム・フロー制御命令を実行すること、入力/出力操作を行うこと、メモリを管理することなどができる。しかし、典型的に、アクセラレータは、ホストまたは主プロセッサ、汎用プロセッサにアクセラレータの命令をフェッチするように要求し、アクセラレーション機能自体に加えてその他の動作をハンドルする。明確にするために、本明細書においては、汎用プロセッサは、「プロセッサ」と呼ばれ、特化された補助プロセッサは、「アクセラレータ」と呼ばれる。本発明の実施形態による性能測定のために適合されたアクセラレータは、浮動小数点演算補助プロセッサ、グラフィックス・エンジン、ビデオ・アダプタ、デジタル信号プロセッサ、高速I/Oインターフェース、暗号化アクセラレータなどを含む。図1の例において、アクセラレータ(157)は、拡張バス(160)、バス・アダプタ(158)、およびフロント・サイド・バス(162)を通じてプロセッサ(156)に結合されるが、そのすべては、限定のためではなく説明のみのための例示的なアーキテクチャである。当業者は、一部のアクセラレータ、たとえば、数値演算補助プロセッサが汎用プロセッサと一緒に同じ集積回路基板上に直接実装され、オンチップ相互接続を通じてプロセッサに結合されることを理解するであろう。ビデオ・アダプタ(209)は、拡張バス(160)ではなく専用の高速ビデオ・バス(164)を通じてプロセッサ(157)に接続されるビデオ・アクセラレータの例である。アクセラレータおよびプロセッサを相互に接続するその他の方法が、当業者の頭に浮かび、すべてのそのような方法は、当然に本発明の範囲内にある。
【0011】
RAM(168)に記憶されるのは、プロセッサがデータ処理タスク(208)をアクセラレータ(157)に送るようにプロセッサ(156)を動作させるアプリケーション(182)である。アプリケーションの制御の下で、プロセッサは、初めに、アクセラレータを飽和状態で動作させることによって、つまり、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにデータ処理タスクを送り、送られたタスクの少なくとも一部をアクセラレータに拒否させることによって、アクセラレータの性能を測定する。RAMは、アクセラレータ制御ブロック(210)も含み、各制御ブロックは、アクセラレータに送られたタスクを表現し、記述する構造である。各制御ブロックは、たとえば、入力バッファ・アドレス、入力バッファ・サイズ、出力バッファ・アドレス、出力バッファ・サイズ、およびステータス(リトライフラグがTRUEに設定される制御ブロックが示すアクセラレータが拒否したタスクを、セット時に示すフラグまたはメモリのビットなどのリトライインジケータ(211)を含む)を含む。リトライインジケータ(211)の代替として、一部の実施形態においては、少なくとも、アクセラレータは、プロセッサ自体のうちの1つまたは複数に搭載されたステータス・レジスタ(214)にBUSYビット(212)を設定することによって、アクセラレータが送られたタスクを拒否したことをシグナリングすることができる。送られたタスクを拒否したことのアクセラレータの指示を実装するその他の方法が、当業者の頭に浮かぶ可能性があり、すべてのそのような方法は、当然に本発明の範囲内に入る。
【0012】
さらに、図1の例のRAM(168)内には、アクセラレータが飽和状態で動作している間に、アクセラレータ(157)が複数の送られたタスク(208)を受け入れる期間に従ってアクセラレータの性能を測定するようにプロセッサ(156)のうちの少なくとも1つを動作させる性能測定プログラム(184)がある。本明細書の読み手であれば、なぜ性能測定プログラム(184)がデータ処理タスクのアクセラレータに関してアクセラレータを用いるアプリケーション(182)の構成要素ではなく別個のプログラムとして実装されるのか不思議に思うであろう。答えは、それはそうされ得るということであり、性能測定プログラムは、多くの実施形態においてここに示されるように別に実装されるが、アプリケーション(182)内のスレッドまたはサブルーチンとして実装され得る。アプリケーション(182)は、アクセラレータの性能を測定するのに有用である標準的なアプリケーション・プログラム、財務会計プログラム(accounting program)、またはコンピュータ・ゲームである可能性があり、その理由は、そのプログラムがそうするように既に設定されているからである。したがって、アプリケーション(182)内に性能測定機能をインストールすることは、既存のプログラムのコードを変更することを必要とする。コンピュータにアクセラレータが存在することの本質は、そのアクセラレータがプロセッサよりもずっと高速であり、したがって、特に比較的小さなタスクで飽和した性能を実現することが、プロセッサがアクセラレータを飽和させるレートでタスクを送ることができるようになる前に、アプリケーションの複数のインスタンスが複数のプロセッサで実行されることを必要とする可能性があることも思い出されたい。同時に、アクセラレータの性能のそのような性能測定は、やはり性能測定プログラムの1つのインスタンスのみを必要とし、したがって、アプリケーションの各インスタンス内に別々の性能測定機能を有することは、おそらくリソースの最良の使用方法ではない。
【0013】
さらにRAM(168)に記憶されるのは、オペレーティング・システム(154)である。オペレーティング・システムは、アプリケーション・プログラムの実行を担い、アプリケーション・プログラムに代わってコンピュータ・リソースへのアクセス、メモリ、プロセッサ時間、およびI/O機能の管理を担うコンピュータ・ソフトウェア・コンポーネントである。本発明の実施形態によるハードウェア・アクセラレータの性能測定に有用なオペレーティング・システムは、UNIX(商標)、Linux(商標)、Microsoft XP(商標)、AIX(商標)、IBMのi5/OS(商標)、および当業者の頭に浮かぶその他のオペレーティング・システムを含む。図1の例のオペレーティング・システム(154)、アプリケーション(182)、性能測定プログラム(184)、および制御ブロック(210)は、RAM(168)内に示されるが、概して、多くのそのような構成要素は、たとえば、ディスク・ドライブ(170)上またはフラッシュ・メモリ(188)内など、不揮発性メモリにも記憶される。
【0014】
図1のコンピュータ(152)は、拡張バス(160)およびバス・アダプタ(158)を通じてコンピュータ(152)のプロセッサ(156)およびその他の構成要素に結合されたディスク・ドライブ・アダプタ(172)を含む。ディスク・ドライブ・アダプタ(172)は、不揮発性データ・ストレージをディスク・ドライブ(170)の形態でコンピュータ(152)に接続する。本発明の実施形態によるハードウェア・アクセラレータの性能測定のためのコンピュータにおいて有用なディスク・ドライブ・アダプタは、インテグレーテッド・デバイス・エレクトロニクス(「IDE:Integrated Drive Electronics」)アダプタ、小型コンピュータ・システム・インターフェース(「SCSI:Small Computer System Interface」)アダプタ、および当業者の頭に浮かぶその他のディスク・ドライブ・アダプタを含む。不揮発性コンピュータ・メモリは、当業者の頭に浮かぶ光ディスク・ドライブ、電気的消去可能プログラマブル読み出し専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブなどとして実装される可能性もある。
【0015】
図1の例示的なコンピュータ(152)は、1つまたは複数の入力/出力(「I/O」)アダプタ(178)を含む。I/Oアダプタは、たとえば、コンピュータ・ディスプレイ・スクリーンなどのディスプレイ・デバイスへの出力ならびにキーボードおよびマウスなどのユーザ入力デバイス(181)からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを通じてユーザ指向の入力/出力を実装する。図1の例示的なコンピュータ(152)は、ディスプレイ・スクリーンまたはコンピュータ・モニタなどのディスプレイ・デバイス(180)へのグラフィック出力のために特別に設計されたI/Oアダプタの例であるビデオ・アダプタ(209)を含む。ビデオ・アダプタ(209)は、高速ビデオ・バス(164)、バス・アダプタ(158)、およびやはり高速バスであるフロント・サイド・バス(162)を通じてプロセッサ(156)に接続される。
【0016】
図1の例示的なコンピュータ(152)は、その他のコンピュータ(118)とのデータ通信およびデータ通信ネットワーク(100)とのデータ通信のための通信アダプタ(167)を含む。そのようなデータ通信は、RS−232接続を通じて、ユニバーサル・シリアル・バス(「USB」)などの外部バスを通じて、IPデータ通信ネットワークなどのデータ通信ネットワークを通じて、および当業者の頭に浮かぶその他の方法でシリアルに実行される可能性がある。通信アダプタは、1つのコンピュータが直接またはデータ通信ネットワークを通じて別のコンピュータにデータ通信を送るデータ通信のハードウェアのレベルを実装する。本発明の実施形態によるハードウェア・アクセラレータの性能測定のために有用な通信アダプタの例は、有線ダイアルアップ通信のためのモデム、有線データ通信ネットワーク通信のためのイーサネット(R)(IEEE802.3)アダプタ、およびワイヤレス・データ通信ネットワーク通信のための802.11アダプタを含む。
【0017】
さらなる説明のために、図2は、本発明の実施形態によるハードウェア・アクセラレータの性能測定の例示的な方法を示すフローチャートを示す。図2の方法は、図1を参照して上で説明されたコンピュータ、少なくとも1つのハードウェア・アクセラレータ(157)に動作可能なように結合された1つまたは複数のコンピュータ・プロセッサ(156)を含むコンピュータと同様のコンピュータで実施される。図2の方法において、プロセッサは、アクセラレータを飽和状態で動作させる、つまり、アクセラレータのデータ処理リソースを飽和させるレートでアクセラレータにデータ処理タスク(208)を送り、送られたタスクの少なくとも一部をアクセラレータに拒否させること(216)によってアクセラレータを動作させる。上述のように、データ処理タスク(208)を送ることは、アプリケーション(182)の1つまたは複数のインスタンスがプロセッサ(156)のうちの1つまたは複数で実行されることによって実行される可能性があり、実際の測定を行うプロセス(206)は、別の性能測定プログラム(184)によって実行される可能性がある。
【0018】
図2の例において、アクセラレータを飽和状態で動作させること(202)は、アクセラレータに送られたそれぞれのタスクに関する制御ブロック(210)を開始すること(204)を含む。上述のように、各制御ブロックは、アクセラレータに送られるタスクを記述する構造である。各制御ブロックは、たとえば、入力バッファ・アドレス、入力バッファ・サイズ、出力バッファ・アドレス、出力バッファ・サイズ、およびステータス・インジケータを含む(ステータス表示は、リトライフラグがTRUEに設定される制御ブロックによって示されるアクセラレータが拒否したことを示すタスクを、セット時に示すフラグまたはメモリのビットなどのリトライインジケータ(211)を含む)。つまり、図2の例示的な方法において、飽和状態で実行されるアクセラレータ(157)は、送られたタスク(208)の少なくとも一部を拒否し(216)、それぞれの拒否されたタスクに関して対応する制御ブロック(210)においてリトライインジケータ(211)を設定することによってどのタスクが拒否されるかを示すことができる(220)。図2の例のリトライインジケータ(211)の使用(220)の代替として、アクセラレータ(157)は、プロセッサ・ステータス・レジスタ(214)のBUSYビット(212)を設定することによって、そのアクセラレータ(157)が送られたタスクを拒否したことを示すことができる(218)。
【0019】
図2の方法は、アクセラレータが飽和状態で動作している間に、プロセッサによって、アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定すること(206)も含む。アクセラレータを飽和状態で動作させること(202)、タスクを送ること(208)などの一部として、プロセッサは、システム・クロック(215)を読み、制御ブロックの一部またはすべてにおいて、それらの制御ブロックの対応するタスクが送られる時間(217)を記録する。N個のタスク(208)が送られることになることを知って、プロセッサは、(各タスクに関する送信時間をN個の制御ブロックのそれぞれに書き込むのではなく)アクセラレータが複数の送られたタスクを受け入れる期間を定めるために最初のタスクおよび最後のタスクに関する送信時間を記録することのみを必要とする。
【0020】
さらに、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するためにアクセラレータによって必要とされる期間であると解釈すること(222)を含む。飽和状態で実行されるとき、アクセラレータは次のタスクを受け入れることができるようにするためにタスクを完了しなければならないので、これは実現可能であり、受け入れ時間を完了時間であると解釈する。このようにして、受け入れ時間が、完了時間をたどる。
【0021】
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、T=N/(t−t)に従ってアクセラレータの性能を測定すること(224)を含み、ここで、Tは、毎秒受け入れられるタスクとして表されたスループットを表し、Nは、時間tとtとの間にアクセラレータによって受け入れられた、送られたタスクの数であり、tは、アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、tは、N番目の送られたタスクの受け入れの時間である。
【0022】
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、B=T*Iに従ってアクセラレータの性能を測定することを含み、ここで、Bは、バイト毎秒で表された入力帯域幅を表し、Tは、毎秒受け入れられるタスクとして表現されたスループットを表し、Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す。
【0023】
また、図2の方法において、アクセラレータの性能を測定すること(206)は、任意で、B=T*Oに従ってアクセラレータの性能を測定することを含み、ここで、Bは、バイト毎秒で表された出力帯域幅を表し、Tは、毎秒受け入れられるタスクとして表されたスループットを表し、Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す。
【0024】
さらなる説明のために、図3は、本発明の実施形態によるハードウェア・アクセラレータの性能測定のさらなる例示的な方法に関するタイミング図を示す。図3の例においては、1つまたは複数のコンピュータ・プロセッサ(156)が、アクセラレータを飽和させるのに十分なだけ速い多くのデータ処理タスクをアクセラレータ(157)に送る(302)。図3において、送られたタスクは、黒い点によって示され、拒否されたタスクは、斜交平行線のひかれた灰色の点によって示され、完了されたタスクは、斜交平行線のひかれた白い点によって示される。送信を速く行うことができるようにするために、アプリケーションは、多くのタスクに関するすべての必要な制御ブロックを前もって準備し、そして、アクセラレータへの送信をタイトなループで行わなければならい可能性がある。アクセラレータを飽和させるのに十分なだけ速く送信を行うことができるようにするためには、アプリケーションの複数のインスタンスが、2つ以上のプロセッサで実行される必要がある可能性がある。
【0025】
いくつかのタスクが受け入れられた後、アクセラレータは、(内部のタスクのキューまたは入力バッファなどの)そのアクセラレータのリソースが一杯であるので、さらなる作業を引き受けることができない。その時点で、アクセラレータは、たとえば、プロセッサのレジスタのBUSYビットを設定するか、または制御ブロックのリトライフラグを設定することによって、送られたタスクを拒否する(304)。このフィードバックは、送るアプリケーションがそのアプリケーションの送ったタスクが正しく受け入れられたかどうかを知るためにデフォルトで必要とされる。アプリケーションは、この応答を用いて、アクセラレータがそのアクセラレータの性能の限界に到達した可能性が高いことを認識する。つまり、この時点(304)のタイミングで、アクセラレータは、飽和した動作を開始する。この時点(304)の後、次のタスクが受け入れに成功するとき(306)、アプリケーション制御下のプロセッサは、タイマ・レジスタから、つまり、システム・クロックからの時間tを記録する。プロセッサは、いくつかのタスクNを正常に送った後、時間tを記録する(308)。tとtとの間の差は、アクセラレータが飽和状態で動作しながら複数のN個の送られたタスクを受け入れた期間を表す(310)。
【0026】
しかし、我々が発見したのは、tとtとの間のこの受け入れの時間がタスクの間の完了時間の実際の差(312)もたどることである。これが起こる理由は、時間tにおけるタスクの受け入れが、アクセラレータからの前のタスクの実際の完了と一致しなければならないからである。これは、タスクが前の試みでアクセラレータによって直ちに受け入れられなかったからである。したがって、タスクが受け入れられる可能性があるのは、その他のタスクが完了した後である。したがって、飽和したアクセラレータに対する受け入れレートは、アクセラレータにおける完了レートを測定するために使用され得る。
【0027】
さらなる説明のために、図4は、本発明の実施形態によるハードウェア・アクセラレータの性能測定のさらなる例示的な方法を示すフローチャートを示す。図4の方法の初めに、アクセラレーションのために送られることになるN個のタスクに対応する、補助プロセッサ要求ブロック(Coprocessor Request Block;CRB)としても知られるN個のアクセラレータに固有の制御ブロックの構造(210)が、メモリ内で予め割り当てられ、初期化される(402)。Nは、ターゲットアクセラレータにより受け入れられるタスクキューをオーバーフローさせるのに十分なだけ大きいように選択されるべきである。この情報が利用可能でない場合、どのNがアクセラレータを不足なく飽和させるかを特定するために、対数的に大きくなるNを用いたいくつかの実験が必要とされる可能性がある。アクセラレータを飽和させることは、アクセラレータのキューが一杯になり、アクセラレータがBUSYまたはリトライ信号で応答し、送られたタスクを受け入れない状態を指す。
【0028】
タスク(208)は、アクセラレータを飽和させるのに十分なだけ速く、密な間隔でアクセラレータに送られる(410)。このステップは、アクセラレータを飽和させることができる十分に高い送信レートにするために複数のスレッドが関与する可能性がある。各タスクが送られた後、タスクのステータスが、たとえば、IBM PowerPC(商標)プロセッサのCR0などのステータス・レジスタを読むことによって判定される(412)。ステータス・レジスタが、タスクが受け入れられたことを示す場合、方法は、正常に送られたタスクのカウントをインクリメントし(414)、次のタスクを用いて継続する。タスクが、アクセラレータが飽和状態に達した後に受け入れられることになる最初のタスクである場合、つまり、変数「saturated」が真(TRUE)である場合、システム・クロックの時間ベース・レジスタの値を「time_busy」変数に読み込むことによって現在の時間が記録される(404、406)。また、状態レジスタのステータスは、アクセラレータがBUSYであったので、そのアクセラレータがタスクを受け入れることができなかったことを示す可能性がある。その場合、図4の方法は、拒否されたタスクを再び送ることを含む。
【0029】
加えて、タスクがそのようなBUSY応答を受け取る最初のタスクである場合、つまり、FALSEに初期化された変数「saturated」がまだFALSEである場合(416)、変数「saturated」が真(TRUE)に設定される(418)。1回または複数回の再試行の後、タスクがアクセラレータによって受け入れられるとき、変数「time_busy」が、システム・クロックのタイムレジスタの値からの現在の時間を記録するために使用される(406)。これは、飽和状態に達した後のアクセラレータによるタスクの初めての受け入れである。加えて、変数「N_busy」が、このときに「tasksSubmitted」変数の値に設定される。この変数は、アクセラレータによって受け入れられる前にアクセラレータからのBUSY信号に出合った最初のタスクを合計N個のタスクの中から特定する。タスクの送信は、N個のタスクがすべて受け入れられるまで継続する。送られ、受け入れられた最後のタスク(408)に関して、システム時間の値が、タイムレジスタを読むことによって変数「time_last」に記録される(420)。すべてのタスクが受け入れられた後、方法は、すべてのタスクが完了するのを待つ(422)。
【0030】
結果が、エラーに関して調べられる(424)。エラーがある場合、エラーが報告され(426)、テスト・ケース、アプリケーション、またはハードウェアがデバッグされる。しかし、基礎を成すハードウェアおよびアプリケーションが正しく機能している場合の典型的なシナリオであるエラーがない場合、毎秒の動作のアクセラレータのスループットの性能が、この式によって計算される(428)。
毎秒のタスクのスループット=(N−N_busy)*time_base_frequency/(time_last−time_busy)
time_base_frequencyは、毎秒のタイマのチック(tick)の数を指す。バイト秒毎で表される入力および出力帯域幅は、どの程度の入力および出力データの平均タスクが働くかの知識に基づいて計算され得る。式が、ここで示される。
バイト毎秒の入力帯域幅(Input_Bandwidth)=スループット*タスクごとに処理された平均の入力データのバイト
バイト毎秒の出力帯域幅(Output_Bandwidth)=スループット*タスクごとに生成された平均の出力データのバイト
【0031】
本発明の例示的な実施形態は、主に、ハードウェア・アクセラレータの性能測定のために完全に機能するコンピュータ・システムの文脈で説明された。しかし、当技術分野の読者は、本発明が任意の好適なデータ処理システムで使用するためのコンピュータ可読ストレージ媒体に配備されたコンピュータ・プログラムで具現化される可能性もあることを認めるであろう。そのようなコンピュータ可読ストレージ媒体は、磁気式媒体、光学式媒体、またはその他の好適な媒体を含む、機械可読情報のための任意のストレージ媒体である可能性がある。そのような媒体の例は、ハード・ドライブまたはディスケットの磁気ディスク、光学式ドライブのためのコンパクト・ディスク、磁気テープ、および当業者の頭に浮かぶその他の媒体を含む。当業者は、好適なプログラミング手段を有する任意のコンピュータ・システムが、コンピュータ・プログラムで具現化される本発明の方法のステップを実行することができることを直ちに認識するであろう。本明細書において説明された例示的な実施形態の一部は、コンピュータ・ハードウェアにインストールされて実行されるソフトウェアに基づくものの、当業者であれば、ファームウェアとしてまたはハードウェアとして実装される代替的な実施形態が、当然に本発明の範囲内にあることを認識するであろう。
【0032】
当業者に理解されるように、本発明の態様は、方法、装置もしくはシステム、またはコンピュータ・プログラムとして具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、またはすべてが本明細書において「回路」、「モジュール」、「システム」、もしくは「装置」と呼ばれることがあるソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態(ファームウェア、常駐ソフトウェア、マイクロコード、マイクロコントローラ組み込みコードなど)の形態をとる可能性がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化する1つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラムの形態をとる可能性がある。
【0033】
1つまたは複数のコンピュータ可読媒体の任意の組み合わせが、利用される可能性がある。そのようなコンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体システム、装置、もしくはデバイス、またはこれらの任意の好適な組み合わせである可能性があるがこれらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例(非網羅的なリスト)は、以下、すなわち、1つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMもしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせを含む。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むまたは記憶することができる任意の有形の媒体である可能性がある。
【0034】
コンピュータ可読信号媒体は、たとえば、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードを具現化する伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁的、光学的、またはこれらの任意の好適な組み合わせを含むがこれらに限定されないさまざまな形態のうちの任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体である可能性がある。コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。
【0035】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的にかつ遠隔のコンピュータ上で部分的に、またはすべて遠隔のコンピュータもしくはサーバ上で実行され得る。最後のシナリオでは、遠隔のコンピュータが、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)行われ得る。
【0036】
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラムのフローチャートまたはブロック図あるいはその両方を参照して本明細書において説明される。フローチャートまたはブロック図あるいはその両方の各ブロック、およびフローチャートまたはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施するための手段をもたらすように、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能なデータ処理装置のプロセッサに与えられ、マシンを作り出すものであってよい。
【0037】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施する命令を含む製品をもたらすように、コンピュータ可読媒体に記憶され、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスを特定の方法で機能させるものであってもよい。コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つのブロックまたは複数のブロックで規定された機能/動作を実施するためのプロセスを提供するように、コンピュータで実施されるプロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされ、コンピュータ、その他のプログラム可能な装置、またはその他のデバイスで一連の動作のステップを実行させるものであってもよい。
【0038】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるコンピュータ、装置、方法、およびコンピュータ・プログラムのあり得る実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図の各ブロックは、(1つまたは複数の)規定された論理的な機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表す可能性がある。一部の代替的な実装においては、ブロックで示された機能が、図面に示された順序とは異なる順序で行われる可能性があることにも留意されたい。たとえば、連続で示された2つのブロックが、実際には実質的に同時に実行される可能性があり、またはそれらのブロックが、関連する機能に応じて逆順に実行されることもあり得る。ブロック図またはフローチャートあるいはその両方の各ブロックと、ブロック図またはフローチャートあるいはその両方のブロックの組み合わせとは、規定された機能もしくは動作を実行する専用のハードウェアに基づくシステム、または専用のハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも留意されたい。
【0039】
変更および改変が本発明のさまざまな実施形態において本発明の真の思想を逸脱することなく行われ得ることは、上述の説明から理解されるであろう。本明細書の説明は、例示のみを目的としており、限定する意味で解釈されるべきでない。本発明の範囲は、以下の請求項の文言によってのみ限定される。
図1
図2
図3
図4
【手続補正書】
【提出日】2016年4月19日
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも1つのハードウェア・アクセラレータに動作可能なように結合された1つまたは複数のコンピュータ・プロセッサを含むコンピュータのハードウェア・アクセラレータの性能測定の方法であって、
前記1つまたは複数のコンピュータ・プロセッサが、
記アクセラレータのデータ処理リソースを飽和させるレートで前記アクセラレータにデータ処理タスクを送り、前記送られたタスクの少なくとも一部を前記アクセラレータに拒否させて、前記アクセラレータを飽和状態で動作させるステップと、
前記アクセラレータが飽和状態で動作している間に、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定するステップと、を実行する、方法。
【請求項2】
アクセラレータの性能を測定するステップが、前記アクセラレータが複数の送られたタスクを受け入れる期間を、前記受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈するステップをさらに含む、請求項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のプログラム命令と
前記アクセラレータが飽和状態で動作している間に、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定する第2のプログラム命令と、を含み、
前記第1及び第2のプログラム命令が、前記1つまたは複数のコンピュータ・プロセッサによる実行のために前記コンピュータ・メモリに格納される、装置。
【請求項9】
前記第2のプログラム命令においてアクセラレータの性能を測定することが、前記アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈することをさらに含む、請求項8に記載の装置。
【請求項10】
前記第1のプログラム命令においてデータ処理タスクを送ることが、前記プロセッサのうちの1つまたは複数で実行されるアプリケーション・プログラムの1つまたは複数のインスタンスによって、前記アクセラレータにデータ処理タスクを送ることをさらに含み、
前記第2のプログラム命令においてアクセラレータの性能を測定することが、前記プロセッサのうちの少なくとも1つで実行される性能測定プログラムによってアクセラレータの性能を測定することをさらに含む、請求項8に記載の装置。
【請求項11】
前記アクセラレータが送られたタスクを拒否することを示すために前記アクセラレータがプロセッサ・ステータス・レジスタのビットを設定するように構成された前記アクセラレータをさらに含む、請求項8に記載の装置。
【請求項12】
前記第2のプログラム命令においてアクセラレータの性能を測定することが、
T=N/(t−t)に従ってアクセラレータの性能を測定することをさらに含み、式中、
Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
Nは、時間tとtとの間に前記アクセラレータによって受け入れられた、送られたタスクの数であり、
は、前記アクセラレータの飽和した動作が始まった後に受け入れられた、最初の送られたタスクの受け入れの時間であり、
は、N番目に送られたタスクの受け入れの時間である、請求項8に記載の装置。
【請求項13】
前記第2のプログラム命令においてアクセラレータの性能を測定することが、
=T*Iに従ってアクセラレータの性能を測定することをさらに含み、式中、
は、バイト毎秒で表された入力帯域幅を表し、
Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
Iは、受け入れられたタスクごとに処理された入力データの平均バイト数を表す、請求項8に記載の装置。
【請求項14】
前記第2のプログラム命令においてアクセラレータの性能を測定することが、
=T*Oに従ってアクセラレータの性能を測定することをさらに含み、式中、
は、バイト毎秒で表された出力帯域幅を表し、
Tは、毎秒受け入れられるタスクとして表されたスループットを表し、
Oは、受け入れられたタスクごとに処理された出力データの平均バイト数を表す、請求項8に記載の装置。
【請求項15】
1つまたは複数のコンピュータ・プロセッサに動作可能なように結合されたハードウェア・アクセラレータの性能測定のためのコンピュータ・プログラムであって
前記1つまたは複数のコンピュータ・プロセッサに、
前記アクセラレータのデータ処理リソースを飽和させるレートで前記アクセラレータにデータ処理タスクを送り、前記送られたタスクの少なくとも一部を前記アクセラレータに拒否させて、前記アクセラレータを飽和状態で動作させるステップと、
前記アクセラレータが飽和状態で動作している間に、前記アクセラレータが複数の送られたタスクを受け入れる期間に従ってアクセラレータの性能を測定するステップと、
を実行させるためのコンピュータ・プログラム。
【請求項16】
アクセラレータの性能を測定するステップが、前記アクセラレータが複数の送られたタスクを受け入れる期間を、受け入れられたタスクを完了するために前記アクセラレータによって必要とされる期間であると解釈するステップをさらに含む、請求項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に記載のコンピュータ・プログラム。
【国際調査報告】