JP2014194660A - 算出方法、算出プログラム、および算出装置 - Google Patents

算出方法、算出プログラム、および算出装置 Download PDF

Info

Publication number
JP2014194660A
JP2014194660A JP2013070657A JP2013070657A JP2014194660A JP 2014194660 A JP2014194660 A JP 2014194660A JP 2013070657 A JP2013070657 A JP 2013070657A JP 2013070657 A JP2013070657 A JP 2013070657A JP 2014194660 A JP2014194660 A JP 2014194660A
Authority
JP
Japan
Prior art keywords
data
processing
processor
statement
amount
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
JP2013070657A
Other languages
English (en)
Other versions
JP6075157B2 (ja
Inventor
Toshiki Obara
俊樹 小原
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013070657A priority Critical patent/JP6075157B2/ja
Publication of JP2014194660A publication Critical patent/JP2014194660A/ja
Application granted granted Critical
Publication of JP6075157B2 publication Critical patent/JP6075157B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】効率のよい見積もりを行うことができる。
【解決手段】算出装置100は、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文である「Func(p);」を取得して記憶部に記憶する。「Func(p);」のpが所定パラメータである。算出装置100は、記憶した処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理のループ回数を特定する。算出装置100は、特定したループ回数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要する処理時間またはエネルギー量を算出する。
【選択図】図1

Description

本発明は、算出方法、算出プログラム、および算出装置に関する。
従来、CPU(Central Processing Unit)によるプログラムの実行に要する消費電力量を見積もるための技術が知られている(たとえば、下記特許文献1,2)。
また、従来、CPUのモデルと、プログラムと、によってCPUの動作を論理シミュレーションすることにより、プログラムの実行に要するサイクル数に基づいてCPUによるプログラムの実行に要する処理時間を見積もることが知られている。
特開2012−83804号公報 特開平10−254944号公報
しかしながら、CPUとGPU(Graphics Processing Unit)とを用いるプログラムにおいて、CPUからの依頼によるGPUのデータ処理に要する処理時間または消費電力量の見積もりに論理シミュレーションを用いると、論理シミュレーションのためのモデルの開発に時間がかかる。そのため、見積もりを効率よく行うことができないという問題点がある。
1つの側面では、本発明は、効率のよい見積もりを行うことができる算出方法、算出プログラム、および算出装置を提供することを目的とする。
本発明の一の側面によれば、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出方法、算出プログラム、および算出装置が提案される。
本発明の他の側面によれば、データを第1プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出方法、算出プログラム、および算出装置が提案される。
本発明の一態様によれば、効率のよい見積もりを行うことができる。
図1は、GPUの処理時間およびエネルギーの第1算出例を示す説明図である。 図2は、GPUの処理時間およびエネルギーの第2算出例を示す説明図である。 図3は、GPGPUプログラムの使用例を示す説明図である。 図4は、GPGPUプログラムを実行するシステムのハードウェア構成例を示す説明図である。 図5は、GPGPUプログラム例を示す説明図である。 図6は、GPGPUプログラムによるCPUとGPUの動作例を示す説明図である。 図7は、算出装置のハードウェア構成例を示すブロック図である。 図8は、算出装置の機能的構成例を示すブロック図である。 図9は、第1および第3時間と第1および第3エネルギー量の算出に用いる各パラメータの説明図である。 図10は、第1時間の詳細例を示す説明図である。 図11は、第2時間と第2エネルギー量の算出に用いる各パラメータの説明図である。 図12は、GPUの構成例を示すブロック図である。 図13は、入出力画面例を示す説明図である。 図14は、定数によるループ回数の記述例を示す説明図である。 図15は、定数とみなせる変数によるループ回数の記述例を示す説明図である。 図16は、パターンマッチテーブル例を示す説明図である。 図17は、算出装置による算出処理手順例を示すフローチャート(その1)である。 図18は、算出装置による算出処理手順例を示すフローチャート(その2)である。 図19は、算出装置による算出処理手順例を示すフローチャート(その3)である。 図20は、図18で示した第1時間および第1エネルギー量の算出処理の詳細な説明を示すフローチャートである。 図21は、実施例1にかかる図18で示した第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。 図22は、実施例2にかかる図18で示した第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。 図23は、実施例2にかかる図22で示したループ回数に基づく第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。 図24は、図18で示した第3時間および第3エネルギー量の算出処理の詳細な説明を示すフローチャートである。
以下に添付図面を参照して、本発明にかかる算出方法、算出プログラム、および算出装置の実施の形態を詳細に説明する。
図1は、GPUの処理時間およびエネルギーの第1算出例を示す説明図である。算出装置100は、第1プロセッサによって実行されるデータ処理に要する処理時間およびエネルギー量を算出するコンピュータである。ここで、第1プロセッサは、第2プロセッサからの依頼によってデータ処理を実行する。本実施の形態では、第1プロセッサがGPU402であり、第2プロセッサがCPU401である。そのため、CPU401が実行するプログラム101と、GPU402が実行するデータ処理を示すプログラム102と、がある。図1では、ループ処理を含むデータ処理についてのデータ処理の処理時間を見積もる例を示す。また、本実施の形態では、GPU402での処理結果が、CPU401が実行するループ処理などのループ回数に影響しないことを前提とする。
算出装置100は、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する。記憶部としては、たとえば、算出装置100が有するRAM(Randam Access Memory)などの一時記憶装置が挙げられる。プログラム101では、「Func(p);」が処理依頼命令文であり、プログラム102では、「Func」の処理を示す命令文が記述されてある。そして、「Func(p);」のpが所定パラメータであり、プログラム102では、pを引数とする。引数pはfor文に記述されてあり、ループ回数が引数pによって定まる。
そして、算出装置100は、記憶した処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理のループ回数を特定する。具体的にたとえば、for文の記述形式ごとに計算式を予め算出装置100がアクセス可能な記憶部などに計算式を記憶させておく。たとえば、算出装置100は、処理依頼命令文によって依頼されるデータ処理を示すプログラム102内のループ処理を示すfor文の記述形式に基づく計算式を記憶部から取得する。そして、算出装置100は、処理依頼命令文によって指定された所定パラメータを取得した計算式に与えてループ回数を算出する。
算出装置100は、特定したループ回数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要する処理時間を算出する。また、算出装置100は、特定したループ回数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要するエネルギー量を算出する。
たとえば、ループ回数をパラメータとして処理時間を算出可能な計算式を算出装置100がアクセス可能な記憶部に予め記憶させておき、算出装置100は、記憶部に記憶された処理時間を算出可能な計算式にループ回数を与えて処理時間を算出する。図1の例では、算出装置100は、ループ回数と、係数cTと、に基づいて、処理時間を算出する。係数cTは、たとえば、ループ処理の命令文の数、1サイクル当たりに実行可能な命令文の数などによって定まる。ここでは、ループ回数以外の値を固定値として係数cTにしているが、これに限らず、周波数などを変数としてもよい。また、データ処理に要するエネルギー量についても処理時間と同様に算出可能である。図1の例では、算出装置100は、ループ回数と、係数cEと、に基づいて、エネルギー量を算出する。ここで、消費電力量は、「エネルギー量/処理時間」によって算出可能である。
これにより、図1の例1によれば、算出装置100は、GPU402によるデータ処理に要する推定の処理時間と、推定のエネルギー量を算出することができる。したがって、GPU402のモデルとCPU401のモデルとを用いてプログラム101とプログラム102とを実行させないため、見積もる時間の短縮化を図ることができ、効率のよい見積もりを行うことができる。
図2は、GPUの処理時間およびエネルギーの第2算出例を示す説明図である。算出装置100は、GPU402によって実行されるデータ処理に要する処理時間およびエネルギー量を算出するコンピュータである。図2では、データ処理についてのデータ処理の処理時間を見積もる例を示す。ここでのデータ処理は、ループ処理を含んでいても、ループ処理を含んでいなくてもよい。
CPU401が実行するプログラム101は、データをGPU402へ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文を含む。また、プログラム101は、送信されたデータに基づくデータ処理をGPU402へ依頼することを指示する処理依頼命令文を含む。算出装置100は、プログラム101を取得して記憶部に記憶する。ここでの記憶部としては、たとえば、算出装置100がアクセス可能なRAMなどが挙げられる。
図2の例では、プログラム101内の「Send(DATA2,SIZE0);」、「Send(DATA1,SIZE1);」と「Send(DATA2,SIZE2);」とが送信命令文である。「Send()」の()には、送信されるデータと、送信されるデータ量と、の順でパラメータとして与える情報が設定される。プログラム101内の「Func(DATA2);」が処理依頼命令文である。ここでは、理解の容易化のために、プログラム101が示す実行順ORDERは、プログラム101内の記述順とする。
算出装置100は、記憶部に記憶したプログラム101のうちの処理依頼命令文について、送信されるデータを示す識別情報が処理依頼命令文の所定パラメータに含まれ、かつプログラム101が示す実行順ORDERが処理依頼命令文の直前である送信命令文の記述内容から特定されたデータ量に基づいて、処理時間を算出する。ここでの処理時間は、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要する時間である。算出装置100は、記憶部に記憶したプログラム101のうちの処理依頼命令文について、送信されるデータを示す識別情報が処理依頼命令文の所定パラメータに含まれ、かつプログラム101が示す実行順ORDERが処理依頼命令文の直前である送信命令文の記述内容から特定されたデータ量に基づいて、エネルギー量を算出する。ここでのエネルギー量は、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要するエネルギー量である。
具体的には、たとえば、算出装置100は、処理依頼命令文である「Func(DATA2);」について、送信されるデータにDATA2が含まれ、かつ実行順ORDERが「Func(DATA2);」の直前である送信命令文を特定する。ここでは、「Send(DATA2,SIZE0);」、「Send(DATA1,SIZE1);」と「Send(DATA2,SIZE2);」のうち、送信されるデータにDATA2が含まれ、かつ実行順ORDERが近い「Send(DATA2,SIZE2);」が特定される。そして、算出装置100は、「Send(DATA2,SIZE2);」の記述内容から送信されるデータ量であるSIZE2を特定する。
処理時間とエネルギー量とを算出可能な計算式が予め記憶部に記憶されてあり、算出装置100は、記憶部に記憶された処理時間を算出可能な計算式にデータ量を与えて処理時間を算出する。図1の例では、算出装置100は、送信されるデータ量と、係数cTと、に基づいて、処理時間を算出する。係数cTは、たとえば、データ処理の命令文の数、1サイクル当たりに実行可能な命令文の数などによって定まる。図2の例では、データ量以外の値を固定値として係数cTにしているが、これに限らず、周波数などを変数としてもよい。また、データ処理に要するエネルギー量についても処理時間と同様に算出可能である。図1の例では、算出装置100は、送信されるデータ量と、係数cEと、に基づいて、エネルギー量を算出する。
これにより、図1の例1によれば、算出装置100は、GPU402によるデータ処理に要する推定の処理時間と、推定のエネルギー量を算出することができる。したがって、GPU402のモデルとCPU401のモデルとを用いてプログラム101を実行させないため、見積もる時間の短縮化を図ることができ、効率のよい見積もりを行うことができる。
また、算出装置100は、データを送信することを指示する送信命令がCPU401によって実行された場合のデータの送信に要する送信時間を算出する。また、算出装置100は、データ処理の処理結果の送信をGPU402へ依頼することを指示する送信依頼命令がCPU401によって実行された場合のGPU402からの処理結果の送信に要する送信時間と、を算出する。たとえば、算出装置100は、CPU401が実行可能なプログラム101内の命令文を実行順に選択し、選択した命令文がCPU401に実行された場合に要する時間を算出して、CPU401がプログラム101の実行に要する処理時間を見積もってもよい。
また、算出装置100は、CPU401がプログラム101の実行に要するエネルギー量についても処理時間と同様に見積もってもよい。また、算出装置100は、CPU401がプログラム101の実行に要するエネルギー量および処理時間に基づいて、消費電力量を算出してもよい。
ここで、算出装置100の詳細な説明の前に、CPU401が実行するプログラム101とGPU402が実行するプログラム102との両方を記述可能な記述形式によって記述されたGPGPU(General−Purpose Computing on GPU)プログラムの使用例を簡単に説明する。また、GPGPUプログラムの詳細例と、GPGPUプログラムが実行された場合の動作例と、を簡単に説明する。
図3は、GPGPUプログラムの使用例を示す説明図である。GPU402コンピューティングでは、CPU401とGPU402との両方を用いて計算が行われる。GPGPUプログラム500は、コンパイル前のソースコードであって、たとえば、OpenCL(Computing Language) Cと呼ばれる言語などによって記述される。GPGPUプログラム500には、CPU401が実行するプログラムと、GPU402が実行するプログラムと、を有する。GPU402に実行させるプログラムは、カーネルと称する。また、図3の説明では、CPU401が実行するプログラムは、単にプログラムと称する。
GPGPU実行バイナリ304は、GPGPUプログラム500がGPGPU対応コンパイラ301によってコンパイルされた後の実行コードである。GPGPU実行バイナリ304は、プログラムがコンパイルされることにより得られるCPUコード305と、カーネルがコンパイルされることによって得られるGPUコード306と、を有する。
CPUコード305には、CPU命令列とGPGPU記述とがあって、CPU命令列は、通常の論理、算出、Load/Store、分岐などの命令を含み、GPGPU記述は、GPU402へのデータ送信、データ送信依頼、実行依頼などの命令を含む。
たとえば、算出装置100は、GPGUP実行バイナリまたはGPGPUプログラム500のいずれかによって性能見積結果と電力見積結果とを出力する。
また、CPU401とGPU402を有する実機302や機能シミュレータ303では、GPGPU実行バイナリ304を利用してGPGPUプログラム500にコーディングされた機能を実行する。
図4は、GPGPUプログラムを実行するシステムのハードウェア構成例を示す説明図である。システム400は、CPU401と、CPU401が扱うデータが格納されるCPU MEM403と、GPU402と、GPU402が扱うデータが格納されるGPU MEM404と、を有する。CPU MEM403は、たとえば、RAMであり、GPU MEM404は、たとえば、VRAM(Video RAM)である。また、CPU401と、CPU MEM403と、GPU402と、GPU MEM404とは、バス405によって接続される。バス405の通信プロトコルは、システム400の設計者によって定められる。
CPU401は、システム400全体を制御する。CPU MEM403は、CPU401のワークエリアとして使用される。GPU402は、CPU401から依頼されたデータ処理を実行する。GPU MEM403は、CPU401から送信されたデータ、GPU402が実行する実行コード、GPU402によるデータ処理の処理結果などが記憶され、GPU402のワークエリアとして使用される。
システム400は、他にも磁気ディスクや光ディスクなどのディスク、CPU401の制御にしたがってディスクに対するデータのリード/ライトを制御するディスクドライブ、ネットワークと接続するためのI/F(Inter Face)などを有していてもよいが、ここでは省略する。
図5は、GPGPUプログラム例を示す説明図である。図5で示すGPGPUプログラム500は、上述したように、コンパイル前のソースコードであって、理解の容易化のために、OpenCL Cなどに基づいて設定した言語によって記述されている。ここで、GPGPUプログラム500の詳細について簡単に説明する。
GPGPUプログラム500は、グリッドサイズを設定する記述(図5中「Set Grid Size」と記載の命令文。)と、カーネル(図5中「Compute Kernel」と記載の命令文。)と、メインの関数として記述されたプログラムと、を有する。GPGPUプログラム500には、カーネルの前にある「__kernel__」の記述によって、GPU402のみがカーネル(図5中「void add_matrix」)を実行できる。CPU401は、カーネルを実行することができない。
GPGPUプログラム500は、図5中「CPU MEM Allocation」と、「GPU MEM Allocation」と、「Copy Data To GPU」と、「Execute Kernel」と、の命令文を有する。または、GPGPUプログラム500は、図5中「Copy Result Back To CPU」と、「Clean up and return」と、の命令文を有する。
ここで、プログラムで扱うデータはCPU MEM403に格納される。「CPU MEM Allocation」の命令文に記述された各パラメータはCPU MEM403に格納される。カーネルで扱うデータはCPU MEM403に格納されるため、「GPU MEM Allocation」の命令文に記述された各パラメータはGPU MEM404に格納される。
「Copy Data To GPU」の命令文は、指定されたデータ量のデータを送信する命令を示す送信命令文である。「Execute Kernel」の命令文は、実行順が直前の送信命令文に記述されたデータ量のデータをGPU402に実行させる命令を示す処理依頼命令文である。「Execute Kernel」の命令文では、上述したカーネルを示す「add_matrix」が記述される。この記述文では、CPU401に「add_matrix」を呼び出させているのではなく、GPU402へ「add_matrix」の実行を依頼していることを指示する。「Copy Result Back To CPU」の命令文は、データ処理の処理結果の送信を依頼する命令を示す命令文である。
図6は、GPGPUプログラムによるCPUとGPUの動作例を示す説明図である。CPU401とGPU402とを有するシステムにおいて、CPU401が上述したGPGPUプログラム500を実行すると、CPU401が、GPU402へカーネルのロードを依頼する(ステップS601)。そして、GPU402が、カーネルをロードすると、CPU401に対してロードの完了を応答する。そして、CPU401が、CPU MEM403上にCPU401が扱うパラメータなどのデータの領域を確保する(ステップS602)。ステップS602は、GPGPUプログラム500のうちの「CPU MEM Allocation」の命令文が示す命令である。
そして、CPU401は、GPU MEM404上にGPU402が扱うパラメータなどのデータの領域の確保をGPU402へ依頼し(ステッS603)、GPU402は、GPU MEM404上にデータの領域を確保する。ステップS603は、GPGPUプログラム500のうちの「GPU MEM Allocation」の命令文が示す命令である。
つぎに、CPU401は、CPU MEM403から読み出したデータを、GPU402へ送信し(ステップS604)、GPU402は、受信したデータをGPU MEM404へ格納し、受信したデータの格納完了を応答する。ステップS604は、GPGPUプログラム500のうちの「Copy Data To GPU」の命令文が示す命令である。CPU401は、データ処理の実行依頼を送信し(ステップS605)、GPU402は、受信して格納したデータに基づいて、ロードしたカーネルに基づいてデータ処理を実行し、処理完了を応答する。ステップS605は、GPGPUプログラム500のうちの「Execute Kernel」の命令文が示す命令である。
CPU401は、処理完了の応答を受信すると、処理結果の送信を依頼し(ステップS606)、GPU402は、処理結果をCPU401へ送信する。ステップS606は、GPGPUプログラム500のうちの「Copy Result Back To CPU」の命令文が示す命令である。CPU401は、処理結果を受信すると、GPU402へ後処理を依頼し(ステップS607)、GPU402は、後処理を行い、後処理の完了を応答する。ステップS607は、GPGPUプログラム500のうちの「Clean up and return」の命令文が示す命令である。後処理は、たとえば、GPU402がGPU MEM404内に確保した領域の開放である。
(算出装置100のハードウェア構成例)
図7は、算出装置のハードウェア構成例を示すブロック図である。図7において、算出装置100は、CPU701と、ROM(Read Only Memory)702と、RAM703と、ディスクドライブ704と、ディスク705と、を有する。算出装置100は、I/F(Inter Face)706と、入力装置707と、出力装置708と、を有する。また、各部はバス700によってそれぞれ接続される。
ここで、CPU701は、算出装置100の全体の制御を司る。ROM702は、ブートプログラムなどのプログラムを記憶する。RAM703は、CPU701のワークエリアとして使用される記憶部である。ディスクドライブ704は、CPU701の制御にしたがってディスク705に対するデータのリード/ライトを制御する。ディスク705は、ディスクドライブ704の制御で書き込まれたデータを記憶する。ディスク705としては、磁気ディスク、光ディスクなどが挙げられる。
I/F706は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークNETに接続され、このネットワークNETを介して他の装置に接続される。そして、I/F706は、ネットワークNETと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F706には、たとえばモデムやLANアダプタなどを採用することができる。
入力装置707は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置707は、カメラから画像や動画を取り込むこともできる。また、入力装置707は、マイクから音声を取り込むこともできる。出力装置708は、CPU701の指示により、データを出力するインターフェースである。出力装置708には、ディスプレイやプリンタが挙げられる。
(算出装置100の機能的構成例)
図8は、算出装置の機能的構成例を示すブロック図である。算出装置100は、取得部801と、選択部802と、命令文判断部803と、格納部804と、ループ処理判断部805と、ループ回数特定部806と、入力受付部807と、を有する。算出装置100は、第1算出部808と、第2算出部809と、第3算出部810と、累積算出部811と、消費電力量算出部812と、出力部813と、を有する。各部の処理は、たとえば、CPU701がアクセス可能な記憶装置に記憶された算出プログラムにコーディングされる。そして、CPU701が記憶装置から算出プログラムを読み出して、試験支援プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、たとえば、RAM703、ディスク705などの記憶装置に記憶される。
(実施例1)
実施例1では、GPU402への処理依頼命令文について、プログラムが示す実行順において処理依頼命令文の直前の送信命令文の記述内容から特定されたデータ量に基づき、GPU402によるデータ処理に要する推定の処理時間またはエネルギー量を算出する。これにより、推定の処理時間またはエネルギー量の見積時間を短縮することができる。したがって、CPU401やGPU402などを含むシステム400をモデル化することなく見積もることができ、処理時間または消費電力量の見積もりを効率よく行うことができる。なお、消費電力量は、処理時間およびエネルギー量によって算出される。
取得部801は、プログラムを取得する。ここでのプログラムは、たとえば、上述したGPGPUプログラム500のうちのCPU401が実行するプログラムである。GPGPUプログラム500は、データをGPU402へ送信することを指示する送信命令文と、送信命令文によって送信されるデータに基づくデータ処理をGPU402へ依頼することを指示する処理依頼命令文と、を含む。また、GPGPUプログラム500は、データ処理の処理結果の送信をGPU402へ依頼することを指示する送信依頼命令文を含む。CPU401と、GPU402と、のやり取りでは、主にこの3つの命令文がCPU401によって実行される。また、処理依頼命令文が示す命令が実行される前には、この命令で使用されるデータがCPU401からGPU402へ送信されていることを前提とする。
そして、選択部802は、取得部801によって取得されたプログラムが示す命令群の実行順に命令文を選択する。命令文判断部803は、選択部802によって選択された命令文が送信命令文と、処理依頼命令文と、送信依頼命令文と、のうちのいずれの命令文であるかを判断する。たとえば、命令文判断部803は、選択された命令文が「gpgpuMemcpy(dist,src,size,direction)」の第1形式で記述された命令文であるか、「func_name<<par_num>>(params)」の第2形式で記述された命令文であるかを判断する。
第1形式で記述された命令文は、送信命令文または送信依頼命令文のいずれか一方である。「gpgpuMemcpy()」の各引数を以下に説明する。
dist:送信先のメモリ領域を示すポインタ
src:送信元のメモリ領域を示すポインタ
Size:データ量
Direction:gpgpuMemcpyHostToDevice、またはgpgpuMemcpyDeviceToHost
たとえば、送信命令文の場合、引数distには、GPU402のメモリ領域を示すポインタが与えられ、引数srcには、CPU401のメモリ領域を示すポインタが与えられる。さらに、たとえば、送信命令文の場合、引数Sizeには、CPU401からGPU402に送信されるデータのデータ量が与えられ、引数DirectionにgpgpuMemcpyHostToDeviceが与えられる。
たとえば、送信依頼命令文の場合、引数distには、CPU401のメモリ領域を示すポインタが与えられ、引数srcには、GPU402のメモリ領域を示すポインタが与えられる。さらに、たとえば、送信依頼命令文の場合、引数Sizeには、GPU402からCPU401に送信される処理結果のデータ量が与えられ、引数DirectionにgpgpuMemcpyDeviceToHostが与えられる。
そのため、「gpgpuMemcpy()」の引数DirectionがgpgpuMemcpyHostToDeviceの場合、命令文判断部803は、選択された命令文が送信命令文であると判断する。gpgpuMemcpy()の引数DirectionがgpgpuMemcpyDeviceToHostの場合、命令文判断部803は、選択された命令文が送信依頼命令文であると判断する。
また、命令文判断部803は、選択された命令文が第2形式で記述された命令文であると、選択された命令文が処理依頼命令文であると判断する。「func_name<<par_num>>(params)」の命令文について、簡単に説明する。「func_name」には、カーネルの名称が記述される。上述したように、カーネルは、GPGPUプログラム500中に「__kernel__ void」で宣言された関数であり、GPU402が実行するプログラムである。「par_num」は、並列数を示す情報が記述される。「par_num」は、並列数そのものを示す数値やその数値を表す引数が記述されてもよいし、並列数を算出可能な情報が記述されていてもよいし。通常「par_num」には、並列数を算出可能な情報が記述されるが、ここでは、理解の容易化のために、並列数が記述されることとする。paramsは、「func_name」が示す関数の引数がその関数によって定義された並び順に記述される。
たとえば、GPGPUプログラム500では、第2記述形式によって記述された命令文は「add_matrix<<par_num>>(ad,bd,cd,N))」である。
また、CPU401が実行する命令文には、論理演算、算出演算、Load/Store、または分岐などの通常のCPU401が行う命令文がある。これらの命令文が選択部802によって選択された場合、算出装置100は、これらの命令の実行に要する時間を、通常のISS(Instruction Set Simulation)などによって算出されることとして、ここでの詳細な説明は省略する。
格納部804は、選択した命令文が送信命令文であると判断された場合、選択した命令文の記述内容から特定される識別情報と、選択した命令文の記述内容に基づくデータ量と、を記憶部に記憶する。ここでの記憶部は、たとえば、RAM703やディスク705などの記憶装置である。たとえば、記述内容から特定される識別情報は、「gpgpuMemcpy()」の中で、引数distに対応する位置に記述された情報である。たとえば、記述内容に基づくデータ量は「gpgpuMemcpy()」の引数Sizeに対応する位置に記述された情報が示すサイズである。

格納部804は、当該情報が数値の場合、この数値をデータ量として記憶部に記憶する。または、格納部804は、当該情報が他で定義されたパラメータである場合、当該パラメータの定義文を検出して、定義文に記述された数値をデータ量として記憶部に記憶する。たとえば、格納部804は、記憶部に記憶されたデータ量をあらたな送信命令が選択された際に上書きしてもよい。
そして、第1算出部808は、命令文が送信命令文であると判断された場合、送信命令文の記述内容に基づくデータ量によって、選択した命令文が示す命令がCPU401によって実行された場合にデータの送信に要する第1送信時間を算出する。具体的には、第1算出部808は、以下式(1)のndataに送信命令文の記述内容に基づくデータ量を与えて、第1送信時間を算出する。式(1)中のT1が第1送信時間であり、以下第1送信時間は、第1時間T1と称する。式(1)中のcT1は第1係数であり、第1係数cT1の詳細や各変数については、後述する。
T1=cT1×ndata・・・(1)
また、第1算出部808は、選択された命令文が送信命令文であると判断された場合、送信命令文の記述内容に基づくデータ量によって、選択された命令文が示す命令がCPU401によって実行された場合にデータの送信に要する第1エネルギー量を算出する。具体的には、第1算出部808は、以下式(2)のndataに送信命令文の記述内容に基づくデータ量を与えて、エネルギー量を算出する。式(2)中のE1がエネルギー量であり、以下エネルギー量は、第1エネルギー量E1と称する。cE1は第1係数であり、第1係数cE1の詳細や各変数については、後述する。
E1=cE1×ndata・・・(2)
また、第2算出部809は、選択された命令文が処理依頼命令文であると判断された場合、選択された命令文がCPU401によって実行された場合にGPU402によるデータ処理に要する処理時間を算出する。具体的には、第2算出部809は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、処理時間を算出する。また、GPU402が複数のコアを有する場合、第2算出部809は、命令文判断部803によって命令文が送信命令文であると判断された場合、当該最後に記憶されたデータ量と、選択された命令文の記述内容に基づく並列数と、に基づいて、処理時間を算出する。具体的には、第2算出部809は、以下式(3)のndataに当該最後に記憶されたデータ量を与え、式(3)のnpに並列数を与えて、処理時間を算出する。式(3)中のT2が処理時間であり、以下処理時間は、第2時間T2と称する。cT2は第2係数であり、ninstはGPU命令数であり、npはGPU並列数である。第2係数cT2の詳細については後述する。
T2=cT2×ninst×(ndata/np)・・・(3)
また、選択された命令文が処理依頼命令文であると判断された場合、当該最後に記憶されたデータ量に基づいて、第2算出部809は、選択した命令文がCPU401によって実行された場合にデータの送信に要するエネルギー量を算出する。また、GPU402が複数のコアを有する場合について説明する。この場合、第2算出部809は、選択された命令文が送信命令文であると判断された場合、当該最後に記憶されたデータ量と、選択した命令文の記述内容に基づく並列数と、に基づいて、GPU402によるデータ処理に要するエネルギー量を算出する。具体的には、第2算出部809は、以下式(4)のndataに当該最後に記憶されたデータ量を与え、式(4)のnpに並列数を与えて、エネルギー量を算出する。式(4)中のE2がここで算出されるエネルギー量であり、以下このエネルギー量は、第2エネルギー量E2と称する。cE2は第2係数であり、ninstはGPU命令数であり、npはGPU402並列数である。第2係数cE2の詳細については後述する。
E2=cE2(np)×ninst×(ndata/np)・・・(4)
また、第2算出部809は、選択された命令文によってGPU402に依頼されるデータ処理を示すプログラムからGPU命令数ninstを検出し、式(3)や式(4)に与えることとする。また、第2算出部809は、一度検出したGPU命令数ninstをRAM703などの記憶部に記憶しておくことにより、再度利用する際にはRAM703などの記憶部から取得するだけでよい。
また、第3算出部810は、選択された命令文が送信依頼命令文であると判断された場合、選択された命令文の記述内容に基づくデータ量によって、選択された命令文がCPU401によって実行された場合に処理結果の送信に要する第2送信時間を算出する。具体的には、第3算出部810は、以下式(5)のndataに命令文の記述内容に含まれるデータ量を与えて、第2送信時間を算出する。式(5)中のT3が第2送信時間であり、以下第2送信時間は、第3時間T3と称する。cT3は第3係数であり、第3係数cT3の詳細や各変数については、後述する。
T3=cT3×ndata・・・(5)
また、第3算出部810は、選択された命令文が送信依頼命令文であると判断された場合、選択された命令文の記述内容に基づくデータ量に基づいて、選択された命令文がCPU401によって実行された場合に処理結果の送信に要するエネルギー量を算出する。具体的には、第3算出部810は、以下式(6)のndataに送信命令文の記述内容に基づくデータ量を与えて、エネルギー量を算出する。式(6)中のE3がここで算出されるエネルギー量であり、以下このエネルギー量は、第3エネルギー量E3と称する。cE3は第3係数であり、第3係数cE3の詳細や各変数については、後述する。
E3=cE3×ndata・・・(6)
ここで、各係数の詳細な説明の前に、各係数で用いるパラメータについて簡単に説明する。まず、第1時間および第3時間と第1エネルギー量および第3エネルギー量とに関する各係数で用いるパラメータと係数との説明の後に、第2時間および第2エネルギー量に関する各係数で用いるパラメータと係数とを説明する。
図9は、第1および第3時間と第1および第3エネルギー量の算出に用いる各パラメータの説明図である。図9では、パラメータの名称、パラメータの簡単な説明、および取得方法を示す。図9中の取得方法については、入力、仕様値、または論理合成/レイアウト後の3種類のいずれかである。入力の場合、GPGPUプログラム500から得られるパラメータであったり、タッチパネルやキーボードなどの入力装置を介して利用者によって入力されることによって得られるパラメータであることを示す。仕様値の場合、システムの仕様に記載された値、または仕様決定時に行う簡易的なシミュレーションによって得られるパラメータであることを示す。論理合成/レイアウト後の場合、論理合成後の回路情報から得る、またはレイアウト後の回路情報から得ることが可能なパラメータであることを示す。レイアウト後の回路情報から得る方が、論理合成後の回路情報から得るよりも精度が高い。
データ量ndataは、CPU401からGPU402に送信されるデータのデータ量[Byte]またはGPU402からCPU401に送信される処理結果のデータ量を示す。バス周波数fBは、バス405に供給されるクロックの周波数[Hz]を示す。
バス電圧VBは、バス405に供給される電源の電圧値[V]を示す。サイクル数NBC1は、1転送にかかるサイクル数の平均値を示す。転送量Ndata1は、1回の転送でのデータ量[Byte]である。バス電圧VBと、サイクル数NBC1と、転送量Ndata1と、は、通信プロトコルに関係するパラメータである。
サイクル数NBC2は、転送間隔サイクル数を示し、具体的には転送待ちなどの平均値を示す。バスゲート数NgBは、具体的にはインバータ換算でのバス405に含まれる素子数を示す。バス活性化率αBは、バス405が活性化する確率であって、具体的にはバス405が有する信号線のうちの1サイクル当たりに論理値が変化する信号線の割合の平均値を示す。容量CLBは、バス405の寄生容量の平均値[F]を示す。
つぎに、第1時間T1の第1係数cT1と、第3時間T3の第3係数cT3と、を以下式(7)に示し、第1エネルギー量E1の第1係数cE1と、第2エネルギー量E3の第3係数cE3と、を以下式(8)に示す。ここでは、第1係数cT1と第3係数cT3とを同一にし、第1係数cE1と第3係数cE3とを同一にしているが、バス405の通信プロトコルによって異なる値となっていてもよい。
T1=cT3=NBC1/(Ndata1×fB)・・・(7)
E1=cE3=NgB×((1/2)×αB×CLB×VB 2)×cT1(cT3)・・・(8)
図10は、第1時間の詳細例を示す説明図である。ここでは、バースト転送を例に挙げる。図10に示すように、命令文の記述内容に基づくデータ量のデータをCPU401からGPU402へ送信するためのバス405を介する転送回数は、ndata/Ndata1[回]となる。図10中CPU401からGPU402への矢印が1回の転送を示し、1回の転送に要する時間は、NBC1/fB[sec]である。また、転送の間の待機時間は、サイクル数NBC2/fB[sec]である。そのため、第1時間T1は以下式(9)のように表すことができる。また、第3時間T3についても同様に以下式(9)のように表すことができる。そして、式(9)によって、第1係数cT1や第3係数cT3は、上記式(7)となる。
T1=T3=(NBC1/fB)×(ndata/Ndata1)+(NBC2/fB
≒(NBC1/fB)×(ndata/Ndata1
=(NBC1/(fB×Ndata1))×ndata・・・(9)
また、第1エネルギー量E1は、第1時間T1と、バス405の通信プロトコルやバス405の設計に関するパラメータと、によって表される。そのため、第1エネルギー量T1は以下式(10)のように表すことができる。また、第3エネルギー量E3についても同様に以下式(10)のように表すことができる。そして、式(10)によって、第1係数cE1や第3係数cE3は、上記式(8)となる。
E1=E3≒NgB×[(1/2)×αB×CLB×VB 2]×T1
≒NgB×[(1/2)×αB×CLB×VB 2]×[(NBC1/(fB×Ndata1))×ndata]
=NgB×[(1/2)×αB×CLB×VB 2]×cT1×ndata・・・(10)
図11は、第2時間と第2エネルギー量の算出に用いる各パラメータの説明図である。図11では、パラメータの名称、パラメータの簡単な説明、および取得方法を示す。パラメータの名称、パラメータの簡単な説明、および取得方法は、上述した通りである。
命令数ninstは、GPU命令数を示し、カーネルに記述された命令文の数である。並列数npは、GPU402が複数のコアを有する場合において、複数のコアのうちの処理依頼命令文の実行によってデータ処理が行われる際に使用されるコアの数である。GPU周波数fGは、GPU402に供給されるクロックの周波数[Hz]を示す。
GPU電圧VGは、GPU402に供給される電源電圧値[V]を示す。サイクル数CPIは、GPU402の1命令あたりの実行に要するサイクル数を示し、命令数IPCは、GPU402の1サイクルあたりに実行可能な命令数を示す。なお、CPI=1/IPCである。
最大並列数Npmは、GPU402が有するコアの数を示す。GPUコアゲート数NgG1は、たとえば、インバータ換算でのGPU402の各コアに含まれる素子数である。GPU共通部ゲート数NgGcは、たとえば、インバータ換算でのGPU402の共通部に含まれる素子数である。GPU402の構成例については、後述する。
GPU402活性化率αGは、GPU402が有する信号線のうちの1サイクル当たりに論理値が変化した信号線の割合の平均値を示す。たとえば、6本の信号線のうち1サイクル当たりに3本の信号線の論理値が変化した場合、活性化率は、0.5である。容量CLGは、GPU402の寄生容量の平均値[F]を示す。GPUリーク電流IleakGは、GPU402内を流れるリーク電流の平均値を示す。
つぎに、第2時間T2の第2係数cT2を以下式(11)に示し、第2エネルギー量E2の第2係数cE2を以下式(12)に示す。
T2=CPI/fG(=1/(fG×IPC))・・・(11)
Figure 2014194660
図12は、GPUの構成例を示すブロック図である。GPU402は、コア1〜コアNpmまでの複数のコアと、共通部1201と、を有する。同時にすべてのコアを使用しなくてもよく、コアの並列数については、上述したように、処理依頼命令文の記述内容に基づいて特定可能である。ここで、第2時間T2は、以下式(13)によって表される。nRepは、反復回数であって、以下式(14)によって表される。
T2=(ninst×CPI)/fG×nRep・・・(13)
Rep=ndata/np・・・(14)
また、第2エネルギー量については、並列数によってエネルギー量が変化する。また、処理依頼命令文の記述内容に基づく並列数が最大並列数Npm以下であるか、または最大並列数Npmより多いかによって、エネルギー量が異なる。また、エネルギー量は、以下式(15)のように消費電力量PGと第2時間T2によって表される。式(15)の消費電力量PGは以下式(16)のように表される。
E2=PG×T2・・・(15)
Figure 2014194660
また、式(16)中のGPU402内の1コアあたりの消費電力量PG1と、GPU402内の共通部1201の消費電力量PGcと、がそれぞれ以下式(17)と式(18)によって表される。
G1≒NgG1×((1/2)×αG1×CLG1×VG 2+IleakG1×VG)・・・(17)
Gc≒NgGc×((1/2)×αGc×CLGc×VG 2+IleakGc×VG)・・・(18)
ここで、コア1〜コアNpmと、共通部1201と、でゲート数以外のパラメータが等しいとすると、消費電力量PGは以下式(19)のように表される。
Figure 2014194660
そして、第2エネルギー量E2は、式(15)のように表されるため、第2エネルギー量は、式(19)によって、式(20)とも表される。
Figure 2014194660
そして、第2エネルギー量E2が式(20)のように表されるため、第2係数cE2が上述した式(12)のように表される。
また、入力受付部807は、CPU401と、バス405と、GPU402とに供給する電源の電圧値とクロックの周波数との入力を受け付けてもよい。
図13は、入出力画面例を示す説明図である。入出力画面1300は、算出プログラムであるGPGPUソフトウェアの保存領域を指定する入力欄と、システム400の構成であるSoC(System On Chip)の構成を指定する入力欄と、を有する。また、入出力画面1300は、CPU401と、バス405と、GPU402と、の各々に与えるクロックの周波数と、CPU401に与える電源電圧値と、を指定する入力欄と、GPU402内のコアの最大並列実行数を指定する入力欄を有する。
入出力画面1300は出力装置708によって出力される。入出力画面1300の入力欄に各値が設定されると、入力装置707が入力欄に入力された各値を受け付ける。また、入出力画面1300は、CPU401と、バス405と、GPU402と、Totalと、の各々について、処理時間、エネルギー、電力を出力する出力欄を有する。
入力受付部807によって入力された各値を受け付けると、第1算出部808から第3算出部810は、各係数に入力された各値を上述した係数を表す式に予め代入してもよい。または、たとえば、第1算出部808から第3算出部810は、それぞれの時間およびエネルギー量の算出時に都度、上述した係数を表す式に代入してもよい。
そして、累積算出部811は、各命令文について算出した時間を累積加算することによって、GPGPUプログラム500の実行に要する実行時間を算出する。また、見積もり部は、各命令文について算出したエネルギー量を累積加算することによって、GPGPUプログラム500の実行に要するエネルギー量を算出する。
また、消費電力量算出部812は、GPGPUプログラム500の実行に要するエネルギー量をGPGPUプログラム500の実行に要する実行時間で除算することによって、GPGPUプログラム500の実行における平均の消費電力量を算出してもよい。
また、出力部813は、GPGPUプログラム500の実行に要するエネルギー量と、GPGPUプログラム500の実行に要する実行時間と、GPGPUプログラム500の実行における平均の消費電力量と、を出力する。出力形式としては、たとえば、ディスプレイへの表示、I/Fによる外部装置への送信がある。また、RAM703やディスク705などの記憶装置に記憶することとしてもよい。具体的には図13に示した入出力画面1300のように出力してもよい。
(実施例2)
実施例2では、ループ処理を含むデータ処理のGPU402への依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果によりGPU402の推定処理時間または推定エネルギー量を算出する。これにより、処理時間およびエネルギー量の見積時間を短縮することができる。したがって、CPU401やGPU402をモデル化することなく見積もることができ、処理時間または消費電力量の見積もりを効率よく行うことができる。なお、消費電力量は、処理時間およびエネルギー量によって算出される。
また、実施例2では、第2算出部809に関連する処理が実施例1と異なり、その他の処理については実施例1と同一であるため、実施例1と同一内容については同一符号を付し、詳細な説明を省略する。
たとえば、ループ処理を指示する命令文では、定数によってループ処理のループ回数が指定されていたり、パラメータによってループ処理のループ回数が指定されていたりする。
図14は、定数によるループ回数の記述例を示す説明図である。図14では、定数によるfor文の記述について、C言語のプログラム1400例と、GPU命令列1401例と、を示す。プログラム1400とGPU402命令列には、for文のパラメータから256回繰り返すことが記述されてある。具体的には、プログラム1400には、#defineによってWIDTHが256に設定されてあるため、256回繰り返すこととなる。GPU402命令列内のfor文に対応する命令文は「mov」,「setp」,「@p bra」,「add」,「bra」である。
図15は、定数とみなせる変数によるループ回数の記述例を示す説明図である。図15では、定数によるfor文の記述について、C言語のプログラム1500例と、GPU命令列1501例と、を示す。たとえば、blockDimが、カーネルの引数として変数のように与えられたとしても、CPU401が記述されたプログラムにおいて、blockDimが定数として定義されている場合がある。そのため、GPGPUプログラム500の実行時には、blockDimは定数となる。
本実施例2では、図14と図15のようなfor文についての記述方式についてのテンプレートを利用者によって予め作成しておく。そして、本実施例2では、ループ処理判断部805は、テンプレートと、GPGPUプログラム500の命令文と、を比較することにより、命令文の記述内容を特定してもよい。
図16は、パターンマッチテーブル例を示す説明図である。パターンマッチテーブル1600は、テンプレート、ループ回数のフィールドを有する。たとえば、テンプレートのフィールドには、for文についての記述が設定され、ループ回数のフィールドには、テンプレートに応じたループ回数の算出式が設定される。各フィールドに情報が設定されることにより、レコード(1601−1,1601−2,1601−3,・・・)として登録される。たとえば、レコード1601−1のテンプレートとfor文の記述方式が一致する場合、const1からconst2未満までループ処理が繰り返されるため、ループ回数は、「const2−const1」によって算出可能である。ここでは、理解の容易化のために、ループ処理についてはfor文で記述されたループ処理を例に挙げているが、記述方式はfor文に限らない。
選択された命令文が処理依頼命令文であると判断された場合、ループ処理判断部805は、ループ処理を含むデータ処理を依頼する第1処理依頼命令文であるか、ループ処理を含まないデータ処理を依頼する第2処理依頼命令文であるかを判断する。具体的には、たとえば、ループ処理判断部805は、パターンマッチテーブル1600の中に、データ処理を含むプログラムの記述形式と一致するテンプレートがあるか否かを判断する。ループ処理判断部805によって一致するテンプレートがないと判断された場合、ループ処理判断部805は、ループ処理がない、またはループ処理のループ回数が特定できないと判断する。
ループ回数特定部806は、処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理のループ回数を特定する。また、ループ回数特定部806は、ループ処理を示す命令文に記述された定数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理のループ回数を特定する。
具体的には、パターンマッチテーブル1600の中に一致するテンプレートがあると判断された場合、ループ回数特定部806は、テンプレートに対応するループ回数式をパターンマッチテーブル1600から取得する。そして、ループ回数特定部806は、取得したループ回数式に、所定パラメータまたは定数を与えることにより、ループ回数を与える。
第2算出部809は、ループ回数特定部806によって特定されたループ回数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要する第2時間T2を算出する。第2算出部809は、ループ回数特定部806によって特定されたループ回数に基づいて、処理依頼命令文がCPU401によって実行された場合にGPU402によって実行されるデータ処理に要する第2エネルギー量E2を算出する。実施例2における第2時間T2と第2エネルギー量E2は、たとえば、それぞれ以下式(21)と式(22)によって算出される。ループ回数式(PAR)は、取得したループ回数式に所定パラメータが与えられることにより、ループ回数が得られることを示す。cT2とcE2とninstについては、実施例1で説明した通りである。
T2=cT2×ninst×ループ回数式(PAR)・・・(21)
E2=cE2(np)×ninst×ループ回数式(PAR)・・・(22)
(算出装置100による算出処理手順例)
図17〜図19は、算出装置による算出処理手順例を示すフローチャートである。算出装置100は、GPGPUプログラム500を取得して記憶部に記憶し(ステップS1701)、CPU401とGPU402とバス405とに供給するそれぞれの周波数および電源電圧値の入力を受け付ける(ステップS1702)。たとえば、算出装置100は、図13に示したような入出力画面1300によって入力を受け付ける。
算出装置100は、受け付けた周波数と電源電圧値に基づいて第1係数と第2係数と第3係数を算出する(ステップS1703)。算出装置100は、「第1累積時間=0」、「第1累積エネルギー量=0」、「第2累積時間=0」、「第2累積エネルギー量=0」、「第3累積時間=0」、「第3累積エネルギー量=0」とすることによって、各値を初期化する(ステップS1704)。
算出装置100は、GPGPUプログラム500のうち、未選択の命令文があるか否かを判断する(ステップS1705)。未選択の命令文があると判断された場合(ステップS1705:Yes)、算出装置100は、未選択の命令文から実行順が最も早い命令文を選択する(ステップS1801)。
算出装置100は、選択された命令文が送信命令文であるか否かを判断し(ステップS1802)、送信命令文である場合(ステップS1802:Yes)、第1時間および第1エネルギー量の算出処理を行う(ステップS1803)。そして、算出装置100は、「第1累積時間=第1累積時間+算出した時間」を行い(ステップS1806)、「第1累積エネルギー量=第1累積エネルギー量+算出したエネルギー量」を行い(ステップS1807)、ステップS1705へ戻る。
送信命令文でない場合(ステップS1802:No)、算出装置100は、送信依頼命令文であるか否かを判断する(ステップS1804)。送信依頼命令文である場合(ステップS1804:Yes)、算出装置100は、第3時間および第3エネルギー量の算出処理を行い(ステップS1805)、ステップS1806へ移行する。
送信依頼命令文でない場合(ステップS1804:No)、算出装置100は、処理依頼命令文であるか否かを判断する(ステップS1808)。処理依頼命令文である場合(ステップS1808:Yes)、算出装置100は、第2時間および第2エネルギー量の算出処理を行う(ステップS1809)。そして、算出装置100は、「第2累積時間=第2累積時間+算出した処理時間」を行い(ステップS1810)、「第2累積エネルギー量=第2累積エネルギー量+算出した第2エネルギー量」を行い(ステップS1811)、ステップS1705へ戻る。
処理依頼命令文でない場合(ステップS1808:No)、算出装置100は、CPU401の処理時間とエネルギー量を算出する(ステップS1812)。たとえば、CPU401の処理時間とエネルギー量は、ISSによって算出することが可能である。算出装置100は、「第3累積時間=第3累積時間+CPU401の処理時間」を行い(ステップS1813)、「第3累積エネルギー量=第3累積エネルギー量+算出したエネルギー量」を行い(ステップS1814)、ステップS1705へ戻る。
未選択の命令文がないと判断された場合(ステップS1705:No)、算出装置100は、「第2消費電力量=累積第2エネルギー量/第2累積時間」を行い(ステップS1901)、第2累積時間と第2エネルギー量と第2消費電力量とをGPU402の識別情報に関連付けて出力する(ステップS1902)。
算出装置100は、「第1消費電力量=第1累積エネルギー量/第1累積時間」を行い(ステップS1903)、第1累積時間と第1累積エネルギー量と第1消費電力量とをバス405の識別情報に関連付けて出力する(ステップS1904)。算出装置100は、「第3消費電力量=第3累積エネルギー量/第3累積時間」を行い(ステップS1905)、第3累積時間と第3累積エネルギー量と第3消費電力量とをCPU401の識別情報に関連付けて出力する(ステップS1906)。
算出装置100は、「合計時間=第1累積時間+第2累積時間」を行い(ステップS1907)、「合計エネルギー量=第1累積エネルギー量+第2累積エネルギー量」を行う(ステップS1908)。算出装置100は、「合計電力=第1消費電力量+第2消費電力量+第3消費電力量」を行い(ステップS1909)、合計時間と合計エネルギー量と合計消費電力量とを合計の識別情報に関連付けて出力し(ステップS1910)、一連の処理を終了する。
図19では、図13に示した入出力画面に基づいて出力する例を示したが、出力させる情報については特に限定しない。
図20は、図18で示した第1時間および第1エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置100は、選択した命令文の記述内容から送信されるデータ量を特定して記憶し(ステップS2001)、「第1時間=第1時間に関する第1係数×送信されるデータ量」を行う(ステップS2002)。算出装置100は、「第1エネルギー量=第1エネルギー量に関する第1係数×送信されるデータ量」を行い(ステップS2003)、一連の処理を終了する。
図21は、実施例1にかかる図18で示した第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置100は、GPGPUプログラム500からデータ処理の命令数を検出し(ステップS2101)、選択した命令文の記述内容から並列処理数を特定して記憶する(ステップS2102)。算出装置100は、「第2時間=第2時間に関する第2係数×検出したデータ処理の命令数×データ量/特定した並列処理数」を行う(ステップS2103)。ステップS2103でのデータ量は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量である。算出装置100は、「第2エネルギー量=第2エネルギー量に関する第2係数(特定した並列処理数)×検出したデータ処理の命令数×データ量/特定した並列処理数」を行い(ステップS2104)、一連の処理を終了する。ステップS2104でのデータ量は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量である。
図22は、実施例2にかかる図18で示した第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置100は、処理依頼命令によってGPU402に依頼するデータ処理の記述を検出し(ステップS2201)、パターンマッチテーブル1600を取得して記憶する(ステップS2202)。算出装置100は、検出した記述の記述方式とパターンマッチテーブル1600との各テンプレートとを比較する(ステップS2203)。
算出装置100は、一致するテンプレートがあるか否かを判断する(ステップS2204)。一致するテンプレートがある場合(ステップS2204:Yes)、算出装置100は、テンプレート内のconstが処理依頼命令に指示される起動パラメータまたは数値かを判断する(ステップS2205)。起動パラメータまたは数値である場合(ステップS2205:Yes)、算出装置100は、ループ回数に基づく第2時間および第2エネルギー量の算出処理を行い(ステップS2206)、一連の処理を終了する。
一致するテンプレートがない場合(ステップS2204:No)、または起動パラメータおよび数値でない場合(ステップS2205:No)、算出装置100は、データ量に基づく第2時間および第2エネルギー量の算出処理を行う(ステップS2207)。ここで、ステップS2207は、図21に示した実施例1にかかる図18で示した第2時間および第2エネルギー量の算出処理と同一であるため、詳細な説明を省略する。
図23は、実施例2にかかる図22で示したループ回数に基づく第2時間および第2エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置100は、一致するテンプレートに対応するループ回数式を取得し(ステップS2301)、処理依頼に指示される起動パラメータをループ回数式に与えてループ回数を特定する(ステップS2302)。
算出装置100は、GPGPUプログラム500からデータ処理の命令数を検出し(ステップS2303)、選択した命令文の記述内容から並列処理数を特定して記憶する(ステップS2304)。算出装置100は、「第2時間=第2時間に関する第2係数×検出したデータ処理の命令数×特定したループ回数」を行う(ステップS2305)。そして、算出装置100は、「第2エネルギー量=第2エネルギー量に関する第2係数(特定した並列処理数)×検出したデータ処理の命令数×特定したループ回数」を行い(ステップS2306)、一連の処理を終了する。
図24は、図18で示した第3時間および第3エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置100は、送信依頼命令文の記述内容から処理結果のデータ量を特定し(ステップS2401)、「第3時間=第3時間に関する第3係数×特定したデータ量」を行う(ステップS2402)。そして、算出装置100は、「第3エネルギー量=第3エネルギー量に関する第3係数×特定したデータ量」を行い(ステップS2403)、一連の処理を終了する。
以上実施例1で説明したように、算出装置100は、GPUへの処理依頼命令文について、実行順が直前のデータを送信する送信命令文の記述内容から送信されるデータ量を特定し、特定結果に基づいてGPUの推定の処理時間を算出する。また、算出装置100は、この特定結果により、GPUの推定のエネルギー量を算出する。これにより、CPUのモデルとGPUのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間や消費エネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
また、算出装置100は、プログラムの実行順で順に命令文を選択し、送信命令文の選択時に送信命令文の記述内容から送信されるデータ量を記憶部に記憶しておく。算出装置100は、記憶部に記憶されたデータ量の中で、処理依頼命令文の記述内容から識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づき、GPUの推定の処理時間を算出する。また、算出装置100は、当該最後に記憶されたデータ量に基づきGPUの推定の消費エネルギー量を算出する。これにより、プログラムから処理依頼命令文の直前の送信命令文を検索しなくてよいため、処理時間の算出に要する時間を短縮することができる。
また、算出装置100は、GPUへのデータの送信命令文ついて、送信命令文の記述内容から送信されるデータ量を特定し、特定結果に基づいてCPUからGPUへのデータの推定の送信時間を算出する。また、算出装置は、この特定結果に基づいてCPUからGPUへのデータの送信に要する推定の消費エネルギー量を算出する。また、GPUへの処理結果の送信依頼命令文ついて、送信依頼命令文の記述内容から送信される処理結果のデータ量を特定し、特定結果に基づいてGPUからCPUへの処理結果の推定の送信時間を算出する。また、算出装置は、この特定結果に基づいてGPUからCPUへのデータの送信に要する推定の消費エネルギー量を算出する。これにより、CPUのモデルと、GPUのモデルと、CPUとGPUを接続するバスのモデルと、などを含むシステムのモデルを作成しなくてよいため、処理時間や消費エネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
また、算出装置100は、CPUとGPUを接続するバスに与える電源電圧値およびクロックの周波数の入力を受け付けて、受け付けた電源電圧値およびクロックの周波数を引数とする係数と、送信されるデータ量と、によって送信時間または消費エネルギー量を算出する。これにより、パスに与える電源電圧値とクロックの周波数が可変なシステムのモデルを作成しなくとも、電源電圧値やクロックの周波数の変化に応じた送信時間と消費エネルギー量を見積もることができる。
また、算出装置100は、GPUに供給される電源電圧値の入力を受け付けて、該最後に記憶されたデータ量と、受け付けた電源電圧値によって定まる電流量に基づく係数と、に基づいて、処理時間と消費エネルギー量を算出する。これにより、GPUに供給される電源電圧値が可変なシステムのモデルを作成しなくとも、電源電圧値やクロックの周波数の変化に応じた送信時間と消費エネルギー量を見積もることができる。
また、算出装置100は、GPUが複数のコアを有している場合に、算出装置100は、処理依頼命令文の記述内容から使用するコアの数を特定する。そして、算出装置100は、直前に記憶されたデータ量と、特定結果と、1つのコア当たりのリーク電流量とGPUに与える電源電圧値によって定まる電流量に基づく係数と、に基づいて、GPUの処理時間または消費電力量を算出する。これにより、モデルを作成しなくとも、実行時に動作するコアの数に応じたGPUの処理時間と消費電力量を、を見積もることができる。
また、プログラムには、ループ処理を含むデータ処理の処理依頼命令文と、ループ処理を含まないデータ処理の処理依頼命令文と、が含まれる場合がある。この場合、算出装置は、ループ処理を含むデータ処理のGPUへの依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果に基づいてGPUの推定処理時間を算出する。また、算出装置は、この特定結果により、GPUの推定エネルギー量を算出する。これにより、CPUのモデルとGPUのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間やエネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
また、算出装置100は、算出した処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出することにより、消費電力量の見積もりを効率よく行うことができる。
また、算出装置100は、命令文の各々について算出した前記処理時間、前記第1送信時間、または前記第2送信時間を合計することにより、プログラムの実行に要する処理時間の見積もりを効率よく行うことができる。
また、算出装置100は、処理依頼命令文によって依頼されるデータ処理を示すプログラムに命令文の数を取得し、実行順が処理依頼命令文の直前の送信命令文から特定された送信されるデータ量と、記憶した前記命令文の数と、に基づいて、処理時間または消費エネルギー量を算出する。これにより、1サイクル当たりに実行可能な命令数はGPUの能力によって異なるため、命令文の数を引数として推定の処理時間または消費エネルギー量を算出することにより、算出精度を向上させることができる。
以上実施例2で説明したように、算出装置100は、ループ処理を含むデータ処理のGPUへの依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果に基づいてGPUの推定処理時間を算出する。また、算出装置100は、この特定結果により、GPUの推定エネルギー量を算出する。これにより、CPUのモデルとGPUのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間やエネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
また、算出装置100は、処理時間とエネルギー量に基づいて、消費電力量を算出することにより、消費電力量の見積もりを効率よく行うことができる。
なお、本実施の形態で説明した算出方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本算出プログラムは、ディスクやフラッシュメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本算出プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施例1および実施例2に関し、さらに以下の付記を開示する。
(付記1)コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
(付記2)前記コンピュータが、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出し、
算出した前記処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出する、
処理を実行することを特徴とする付記1に記載の算出方法。
(付記3)コンピュータが、
データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
(付記4)前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第2記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第2記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記処理時間を算出することを特徴とする付記2に記載の算出方法。
(付記5)前記プログラムは、前記データ処理の処理結果の送信を前記第2プロセッサへ依頼することを指示する送信依頼命令文であって、前記第2プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサへの前記データの送信に要する第1送信時間を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによる前記処理結果の送信に要する第2送信時間を算出する、
処理を実行することを特徴とする付記3または4に記載の算出方法。
(付記6)前記コンピュータが、
前記第1プロセッサと前記第2プロセッサとを接続するバスに供給されるクロックの周波数の入力を受け付ける処理を実行し、
前記第1送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第1送信時間を算出し、
前記第2送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第2送信時間を算出することを特徴とする付記5に記載の算出方法。
(付記7)前記コンピュータが、
前記第1プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする付記3〜6のいずれか一つに記載の算出方法。
(付記8)前記第1プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容に基づくコアの数と、前記コアのリーク電流量と前記第1プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする付記3〜7のいずれか一つに記載の算出方法。
(付記9)前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第1プロセッサへ依頼することを指示する第1処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第1プロセッサへ依頼することを指示する第2処理依頼命令文と、を有し、
前記コンピュータが、
選択した前記命令文が前記第1処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記第1処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記処理時間を算出し、選択した前記命令文が前記第2処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記処理時間を算出することを特徴とする付記3〜8のいずれか一つに記載の算出方法。
(付記10)前記コンピュータが、
特定された前記データ量に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出し、
算出した前記処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出する、
処理を実行することを特徴とする付記3に記載の算出方法。
(付記11)前記コンピュータが、
選択した前記命令文の各々について算出した前記処理時間、前記第1送信時間、または前記第2送信時間を合計する、
処理を実行することを特徴とする付記5または6に記載の算出方法。
(付記12)前記コンピュータが、
前記データ処理を前記第1プロセッサに指示するプログラムに含まれる命令文の数を取得して前記記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
特定された前記データ量と、記憶した前記命令文の数と、に基づいて、前記処理時間を算出することを特徴とする付記3に記載の算出方法。
(付記13)コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
(付記14)コンピュータが、
データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
(付記15)前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第2記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第2記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記14に記載の算出方法。
(付記16)前記プログラムは、前記データ処理の処理結果の送信を前記第2プロセッサへ依頼することを指示する送信依頼命令文であって、前記第2プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサへの前記データの送信に要するエネルギー量を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによる前記処理結果の送信に要するエネルギー量を算出する、
処理を実行することを特徴とする付記14または15に記載の算出方法。
(付記17)前記第1プロセッサと前記第2プロセッサとを接続するバスに供給されるクロックの周波数と、前記バスに供給される電源電圧の値と、の入力を受け付ける処理を実行し、
前記データの送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値によって定まる係数と、によって、前記データの送信に要するエネルギー量を算出し、
前記処理結果の送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値とに基づく係数と、によって、前記処理結果の送信に要するエネルギー量を算出することを特徴とする付記16に記載の算出方法。
(付記18)前記コンピュータが、
前記第1プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値に基づく係数と、によって、前記データ処理に要するエネルギー量を算出することを特徴とする付記14〜17のいずれか一つに記載の算出方法。
(付記19)前記第1プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容から特定されたコアの数と、前記コアのリーク電流量と前記第1プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記14〜18のいずれか一つに記載の算出方法。
(付記20)前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第1プロセッサへ依頼することを指示する第1処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第1プロセッサへ依頼することを指示する第2処理依頼命令文と、を含み、
前記コンピュータが、
選択した前記命令文が前記第1処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
選択した前記命令文が前記第1処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記データ処理に要するエネルギー量を算出し、選択した前記命令文が前記第2処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記14〜19のいずれか一つに記載の算出方法。
(付記21)前記コンピュータが、
選択した前記命令文の各々について算出した前記データ処理に要するエネルギー量、前記データの送信に要するエネルギー量、または前記処理結果の送信に要するエネルギー量を合計する、
処理を実行することを特徴とする付記16または17に記載の算出方法。
(付記22)コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行させることを特徴とする算出プログラム。
(付記23)コンピュータに、
データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行させることを特徴とする算出プログラム。
(付記24)コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
(付記25)コンピュータに、
データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報を特定可能な前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
(付記26)所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
前記取得部が記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
(付記27)データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
(付記28)所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
(付記29)データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
(付記30)所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
(付記31)データを第1プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
(付記32)所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
(付記33)データを第1プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
100 算出装置
101,102 プログラム
401 CPU
402 GPU
405 バス
500 GPGPUプログラム
T1 第1時間
E1 第1エネルギー量
T2 第2時間
E2 第2エネルギー量
T3 第3時間
E3 第3エネルギー量
T1,cE1 第1係数
T2,cE2 第2係数
T3,cE3 第3係数

Claims (24)

  1. コンピュータが、
    所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
    記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
    特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
    処理を実行することを特徴とする算出方法。
  2. コンピュータが、
    データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
    処理を実行することを特徴とする算出方法。
  3. 前記コンピュータが、
    記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
    選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第2記憶部に記憶する処理を実行し、
    前記処理時間を算出する処理では、
    選択した前記命令文が前記処理依頼命令文である場合、前記第2記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記処理時間を算出することを特徴とする請求項2に記載の算出方法。
  4. 前記プログラムは、前記データ処理の処理結果の送信を前記第2プロセッサへ依頼することを指示する送信依頼命令文であって、前記第2プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
    前記コンピュータが、
    選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサへの前記データの送信に要する第1送信時間を算出し、
    選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによる前記処理結果の送信に要する第2送信時間を算出する、
    処理を実行することを特徴とする請求項2または3に記載の算出方法。
  5. 前記コンピュータが、
    前記第1プロセッサと前記第2プロセッサとを接続するバスに供給されるクロックの周波数の入力を受け付ける処理を実行し、
    前記第1送信時間を算出する処理では、
    選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第1送信時間を算出し、
    前記第2送信時間を算出する処理では、
    選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第2送信時間を算出することを特徴とする請求項4に記載の算出方法。
  6. 前記コンピュータが、
    前記第1プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
    前記処理時間を算出する処理では、
    前記最後に記憶された前記データ量と、受け付けた前記電源電圧値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする請求項2〜5のいずれか一つに記載の算出方法。
  7. 前記第1プロセッサは複数のコアを有し、
    前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
    前記処理時間を算出する処理では、
    前記最後に記憶された前記データ量と、選択した前記命令文の記述内容に基づくコアの数と、前記コアのリーク電流量と前記第1プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする請求項2〜6のいずれか一つに記載の算出方法。
  8. 前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第1プロセッサへ依頼することを指示する第1処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第1プロセッサへ依頼することを指示する第2処理依頼命令文と、を有し、
    前記コンピュータが、
    選択した前記命令文が前記第1処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
    前記処理時間を算出する処理では、
    選択した前記命令文が前記第1処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記処理時間を算出し、選択した前記命令文が前記第2処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記処理時間を算出することを特徴とする請求項2〜7のいずれか一つに記載の算出方法。
  9. コンピュータが、
    所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
    記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
    特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
    処理を実行することを特徴とする算出方法。
  10. コンピュータが、
    データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
    処理を実行することを特徴とする算出方法。
  11. 前記コンピュータが、
    記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
    選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第2記憶部に記憶する処理を実行し、
    前記処理時間を算出する処理では、
    選択した前記命令文が前記処理依頼命令文である場合、前記第2記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項10に記載の算出方法。
  12. 前記プログラムは、前記データ処理の処理結果の送信を前記第2プロセッサへ依頼することを指示する送信依頼命令文であって、前記第2プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
    前記コンピュータが、
    選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサへの前記データの送信に要するエネルギー量を算出し、
    選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによる前記処理結果の送信に要するエネルギー量を算出する、
    処理を実行することを特徴とする請求項10または11に記載の算出方法。
  13. 前記第1プロセッサと前記第2プロセッサとを接続するバスに供給されるクロックの周波数と、前記バスに供給される電源電圧の値と、の入力を受け付ける処理を実行し、
    前記データの送信に要するエネルギー量を算出する処理では、
    選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値によって定まる係数と、によって、前記データの送信に要するエネルギー量を算出し、
    前記処理結果の送信に要するエネルギー量を算出する処理では、
    選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値とに基づく係数と、によって、前記処理結果の送信に要するエネルギー量を算出することを特徴とする請求項12に記載の算出方法。
  14. 前記コンピュータが、
    前記第1プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
    前記データ処理に要するエネルギー量を算出する処理では、
    前記最後に記憶された前記データ量と、受け付けた前記電源電圧値に基づく係数と、によって、前記データ処理に要するエネルギー量を算出することを特徴とする請求項10〜13のいずれか一つに記載の算出方法。
  15. 前記第1プロセッサは複数のコアを有し、
    前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
    前記データ処理に要するエネルギー量を算出する処理では、
    前記最後に記憶された前記データ量と、選択した前記命令文の記述内容から特定されたコアの数と、前記コアのリーク電流量と前記第1プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項10〜14のいずれか一つに記載の算出方法。
  16. 前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第1プロセッサへ依頼することを指示する第1処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第1プロセッサへ依頼することを指示する第2処理依頼命令文と、を含み、
    前記コンピュータが、
    選択した前記命令文が前記第1処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
    前記データ処理に要するエネルギー量を算出する処理では、
    選択した前記命令文が前記第1処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記データ処理に要するエネルギー量を算出し、選択した前記命令文が前記第2処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項10〜15のいずれか一つに記載の算出方法。
  17. コンピュータに、
    所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
    記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
    特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
    処理を実行させることを特徴とする算出プログラム。
  18. コンピュータに、
    データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する、
    処理を実行することを特徴とする算出プログラム。
  19. コンピュータに、
    所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
    記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
    特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
    処理を実行させることを特徴とする算出プログラム。
  20. コンピュータに、
    データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報を特定可能な前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
    処理を実行させることを特徴とする算出プログラム。
  21. 所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
    前記取得部が記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
    前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
    を有することを特徴とする算出装置。
  22. データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
    を有することを特徴とする算出装置。
  23. 所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第1プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
    記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
    前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
    を有することを特徴とする算出装置。
  24. データを第1プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第1プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
    記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第2プロセッサによって実行された場合に前記第1プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
    を有することを特徴とする算出装置。
JP2013070657A 2013-03-28 2013-03-28 算出方法、算出プログラム、および算出装置 Expired - Fee Related JP6075157B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013070657A JP6075157B2 (ja) 2013-03-28 2013-03-28 算出方法、算出プログラム、および算出装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013070657A JP6075157B2 (ja) 2013-03-28 2013-03-28 算出方法、算出プログラム、および算出装置

Publications (2)

Publication Number Publication Date
JP2014194660A true JP2014194660A (ja) 2014-10-09
JP6075157B2 JP6075157B2 (ja) 2017-02-08

Family

ID=51839872

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013070657A Expired - Fee Related JP6075157B2 (ja) 2013-03-28 2013-03-28 算出方法、算出プログラム、および算出装置

Country Status (1)

Country Link
JP (1) JP6075157B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157636A (zh) * 2021-04-01 2021-07-23 西安邮电大学 协处理器、近数据处理装置和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218731A (ja) * 1996-02-08 1997-08-19 Toshiba Corp マイクロプロセッサのパワーエスティメータ
JPH10254944A (ja) * 1997-01-08 1998-09-25 Toshiba Corp パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JP2012181674A (ja) * 2011-03-01 2012-09-20 Nippon Steel Corp プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09218731A (ja) * 1996-02-08 1997-08-19 Toshiba Corp マイクロプロセッサのパワーエスティメータ
JPH10254944A (ja) * 1997-01-08 1998-09-25 Toshiba Corp パワーシミュレーション装置、パワーシミュレーション方法、及びパワーシミュレーションプログラムを記録した機械読み取り可能な記録媒体
JP2012181674A (ja) * 2011-03-01 2012-09-20 Nippon Steel Corp プログラム作成支援装置、プログラム作成支援方法およびコンピュータプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157636A (zh) * 2021-04-01 2021-07-23 西安邮电大学 协处理器、近数据处理装置和方法

Also Published As

Publication number Publication date
JP6075157B2 (ja) 2017-02-08

Similar Documents

Publication Publication Date Title
EP3757761B1 (en) Methods and apparatus for intentional programming for heterogeneous systems
Silvano et al. Multicube: Multi-objective design space exploration of multi-core architectures
US8886887B2 (en) Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization
JPWO2009037731A1 (ja) 翻訳装置と翻訳方法および翻訳プログラムとプロセッサコアの制御方法およびプロセッサ
CN104572260B (zh) 用于实现事务内存区域提升的代码版本控制的方法和设备
CN103329097A (zh) 工具生成器
CN103098059A (zh) 根据算法和规格的自动最佳集成电路生成器
US20130346926A1 (en) Automatic optimal integrated circuit generator from algorithms and specification
Wang et al. CGPredict: Embedded GPU performance estimation from single-threaded applications
US11860227B2 (en) Machine learning delay estimation for emulation systems
CN103098058A (zh) 根据算法和规格的自动最佳集成电路生成器
US11514219B1 (en) System and method for assertion-based formal verification using cached metadata
WO2021114757A1 (zh) 计算图的优化方法、装置、计算机设备和存储介质
JP6075157B2 (ja) 算出方法、算出プログラム、および算出装置
US9003339B2 (en) Synthesis of clock gated circuit
Oh et al. Efficient execution of stream graphs on coarse-grained reconfigurable architectures
Mallya et al. Flexible timing simulation of RISC-V processors with sniper
Uddin et al. Signature-based high-level simulation of microthreaded many-core architectures
CN108846248B (zh) 一种应用建模及性能预测方法
Knieser et al. COMET: a hardware-software codesign methodology
Gauthier et al. Processor Energy Characterization for Compiler-Assisted Software Energy Reduction.
Wu et al. CTFS: A Configurable Tuning Framework on SHENWEI System
JP6011356B2 (ja) シミュレーションプログラム、シミュレーション方法およびシミュレーション装置
JP6146197B2 (ja) 設計支援方法、設計支援プログラム、および設計支援装置
Whitham et al. Predictable out-of-order execution using virtual traces

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161108

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: 20161213

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161226

R150 Certificate of patent or registration of utility model

Ref document number: 6075157

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees