(57)【要約】【課題】効率のよい見積もりを行うことができる。【解決手段】算出装置１００は、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文である「Ｆｕｎｃ（ｐ）；」を取得して記憶部に記憶する。「Ｆｕｎｃ（ｐ）；」のｐが所定パラメータである。算出装置１００は、記憶した処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理のループ回数を特定する。算出装置１００は、特定したループ回数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要する処理時間またはエネルギー量を算出する。【選択図】図１
2014194660.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
【請求項２】
コンピュータが、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
【請求項３】
前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第２記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第２記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記処理時間を算出することを特徴とする請求項２に記載の算出方法。
【請求項４】
前記プログラムは、前記データ処理の処理結果の送信を前記第２プロセッサへ依頼することを指示する送信依頼命令文であって、前記第２プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサへの前記データの送信に要する第１送信時間を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによる前記処理結果の送信に要する第２送信時間を算出する、
処理を実行することを特徴とする請求項２または３に記載の算出方法。
【請求項５】
前記コンピュータが、
前記第１プロセッサと前記第２プロセッサとを接続するバスに供給されるクロックの周波数の入力を受け付ける処理を実行し、
前記第１送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第１送信時間を算出し、
前記第２送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第２送信時間を算出することを特徴とする請求項４に記載の算出方法。
【請求項６】
前記コンピュータが、
前記第１プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする請求項２〜５のいずれか一つに記載の算出方法。
【請求項７】
前記第１プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容に基づくコアの数と、前記コアのリーク電流量と前記第１プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする請求項２〜６のいずれか一つに記載の算出方法。
【請求項８】
前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第１プロセッサへ依頼することを指示する第１処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第１プロセッサへ依頼することを指示する第２処理依頼命令文と、を有し、
前記コンピュータが、
選択した前記命令文が前記第１処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記第１処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記処理時間を算出し、選択した前記命令文が前記第２処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記処理時間を算出することを特徴とする請求項２〜７のいずれか一つに記載の算出方法。
【請求項９】
コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
【請求項１０】
コンピュータが、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
【請求項１１】
前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第２記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第２記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項１０に記載の算出方法。
【請求項１２】
前記プログラムは、前記データ処理の処理結果の送信を前記第２プロセッサへ依頼することを指示する送信依頼命令文であって、前記第２プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサへの前記データの送信に要するエネルギー量を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによる前記処理結果の送信に要するエネルギー量を算出する、
処理を実行することを特徴とする請求項１０または１１に記載の算出方法。
【請求項１３】
前記第１プロセッサと前記第２プロセッサとを接続するバスに供給されるクロックの周波数と、前記バスに供給される電源電圧の値と、の入力を受け付ける処理を実行し、
前記データの送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値によって定まる係数と、によって、前記データの送信に要するエネルギー量を算出し、
前記処理結果の送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値とに基づく係数と、によって、前記処理結果の送信に要するエネルギー量を算出することを特徴とする請求項１２に記載の算出方法。
【請求項１４】
前記コンピュータが、
前記第１プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値に基づく係数と、によって、前記データ処理に要するエネルギー量を算出することを特徴とする請求項１０〜１３のいずれか一つに記載の算出方法。
【請求項１５】
前記第１プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容から特定されたコアの数と、前記コアのリーク電流量と前記第１プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項１０〜１４のいずれか一つに記載の算出方法。
【請求項１６】
前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第１プロセッサへ依頼することを指示する第１処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第１プロセッサへ依頼することを指示する第２処理依頼命令文と、を含み、
前記コンピュータが、
選択した前記命令文が前記第１処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
選択した前記命令文が前記第１処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記データ処理に要するエネルギー量を算出し、選択した前記命令文が前記第２処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする請求項１０〜１５のいずれか一つに記載の算出方法。
【請求項１７】
コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行させることを特徴とする算出プログラム。
【請求項１８】
コンピュータに、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出プログラム。
【請求項１９】
コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
【請求項２０】
コンピュータに、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報を特定可能な前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
【請求項２１】
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
前記取得部が記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
【請求項２２】
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
【請求項２３】
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
【請求項２４】
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、算出方法、算出プログラム、および算出装置に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によるプログラムの実行に要する消費電力量を見積もるための技術が知られている（たとえば、下記特許文献１，２）。
【０００３】
また、従来、ＣＰＵのモデルと、プログラムと、によってＣＰＵの動作を論理シミュレーションすることにより、プログラムの実行に要するサイクル数に基づいてＣＰＵによるプログラムの実行に要する処理時間を見積もることが知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−８３８０４号公報
【特許文献２】特開平１０−２５４９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＣＰＵとＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とを用いるプログラムにおいて、ＣＰＵからの依頼によるＧＰＵのデータ処理に要する処理時間または消費電力量の見積もりに論理シミュレーションを用いると、論理シミュレーションのためのモデルの開発に時間がかかる。そのため、見積もりを効率よく行うことができないという問題点がある。
【０００６】
１つの側面では、本発明は、効率のよい見積もりを行うことができる算出方法、算出プログラム、および算出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一の側面によれば、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出方法、算出プログラム、および算出装置が提案される。
【０００８】
本発明の他の側面によれば、データを第１プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出方法、算出プログラム、および算出装置が提案される。
【発明の効果】
【０００９】
本発明の一態様によれば、効率のよい見積もりを行うことができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、ＧＰＵの処理時間およびエネルギーの第１算出例を示す説明図である。
【図２】図２は、ＧＰＵの処理時間およびエネルギーの第２算出例を示す説明図である。
【図３】図３は、ＧＰＧＰＵプログラムの使用例を示す説明図である。
【図４】図４は、ＧＰＧＰＵプログラムを実行するシステムのハードウェア構成例を示す説明図である。
【図５】図５は、ＧＰＧＰＵプログラム例を示す説明図である。
【図６】図６は、ＧＰＧＰＵプログラムによるＣＰＵとＧＰＵの動作例を示す説明図である。
【図７】図７は、算出装置のハードウェア構成例を示すブロック図である。
【図８】図８は、算出装置の機能的構成例を示すブロック図である。
【図９】図９は、第１および第３時間と第１および第３エネルギー量の算出に用いる各パラメータの説明図である。
【図１０】図１０は、第１時間の詳細例を示す説明図である。
【図１１】図１１は、第２時間と第２エネルギー量の算出に用いる各パラメータの説明図である。
【図１２】図１２は、ＧＰＵの構成例を示すブロック図である。
【図１３】図１３は、入出力画面例を示す説明図である。
【図１４】図１４は、定数によるループ回数の記述例を示す説明図である。
【図１５】図１５は、定数とみなせる変数によるループ回数の記述例を示す説明図である。
【図１６】図１６は、パターンマッチテーブル例を示す説明図である。
【図１７】図１７は、算出装置による算出処理手順例を示すフローチャート（その１）である。
【図１８】図１８は、算出装置による算出処理手順例を示すフローチャート（その２）である。
【図１９】図１９は、算出装置による算出処理手順例を示すフローチャート（その３）である。
【図２０】図２０は、図１８で示した第１時間および第１エネルギー量の算出処理の詳細な説明を示すフローチャートである。
【図２１】図２１は、実施例１にかかる図１８で示した第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。
【図２２】図２２は、実施例２にかかる図１８で示した第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。
【図２３】図２３は、実施例２にかかる図２２で示したループ回数に基づく第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。
【図２４】図２４は、図１８で示した第３時間および第３エネルギー量の算出処理の詳細な説明を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、本発明にかかる算出方法、算出プログラム、および算出装置の実施の形態を詳細に説明する。
【００１２】
図１は、ＧＰＵの処理時間およびエネルギーの第１算出例を示す説明図である。算出装置１００は、第１プロセッサによって実行されるデータ処理に要する処理時間およびエネルギー量を算出するコンピュータである。ここで、第１プロセッサは、第２プロセッサからの依頼によってデータ処理を実行する。本実施の形態では、第１プロセッサがＧＰＵ４０２であり、第２プロセッサがＣＰＵ４０１である。そのため、ＣＰＵ４０１が実行するプログラム１０１と、ＧＰＵ４０２が実行するデータ処理を示すプログラム１０２と、がある。図１では、ループ処理を含むデータ処理についてのデータ処理の処理時間を見積もる例を示す。また、本実施の形態では、ＧＰＵ４０２での処理結果が、ＣＰＵ４０１が実行するループ処理などのループ回数に影響しないことを前提とする。
【００１３】
算出装置１００は、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する。記憶部としては、たとえば、算出装置１００が有するＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一時記憶装置が挙げられる。プログラム１０１では、「Ｆｕｎｃ（ｐ）；」が処理依頼命令文であり、プログラム１０２では、「Ｆｕｎｃ」の処理を示す命令文が記述されてある。そして、「Ｆｕｎｃ（ｐ）；」のｐが所定パラメータであり、プログラム１０２では、ｐを引数とする。引数ｐはｆｏｒ文に記述されてあり、ループ回数が引数ｐによって定まる。
【００１４】
そして、算出装置１００は、記憶した処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理のループ回数を特定する。具体的にたとえば、ｆｏｒ文の記述形式ごとに計算式を予め算出装置１００がアクセス可能な記憶部などに計算式を記憶させておく。たとえば、算出装置１００は、処理依頼命令文によって依頼されるデータ処理を示すプログラム１０２内のループ処理を示すｆｏｒ文の記述形式に基づく計算式を記憶部から取得する。そして、算出装置１００は、処理依頼命令文によって指定された所定パラメータを取得した計算式に与えてループ回数を算出する。
【００１５】
算出装置１００は、特定したループ回数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要する処理時間を算出する。また、算出装置１００は、特定したループ回数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要するエネルギー量を算出する。
【００１６】
たとえば、ループ回数をパラメータとして処理時間を算出可能な計算式を算出装置１００がアクセス可能な記憶部に予め記憶させておき、算出装置１００は、記憶部に記憶された処理時間を算出可能な計算式にループ回数を与えて処理時間を算出する。図１の例では、算出装置１００は、ループ回数と、係数ｃTと、に基づいて、処理時間を算出する。係数ｃTは、たとえば、ループ処理の命令文の数、１サイクル当たりに実行可能な命令文の数などによって定まる。ここでは、ループ回数以外の値を固定値として係数ｃTにしているが、これに限らず、周波数などを変数としてもよい。また、データ処理に要するエネルギー量についても処理時間と同様に算出可能である。図１の例では、算出装置１００は、ループ回数と、係数ｃEと、に基づいて、エネルギー量を算出する。ここで、消費電力量は、「エネルギー量／処理時間」によって算出可能である。
【００１７】
これにより、図１の例１によれば、算出装置１００は、ＧＰＵ４０２によるデータ処理に要する推定の処理時間と、推定のエネルギー量を算出することができる。したがって、ＧＰＵ４０２のモデルとＣＰＵ４０１のモデルとを用いてプログラム１０１とプログラム１０２とを実行させないため、見積もる時間の短縮化を図ることができ、効率のよい見積もりを行うことができる。
【００１８】
図２は、ＧＰＵの処理時間およびエネルギーの第２算出例を示す説明図である。算出装置１００は、ＧＰＵ４０２によって実行されるデータ処理に要する処理時間およびエネルギー量を算出するコンピュータである。図２では、データ処理についてのデータ処理の処理時間を見積もる例を示す。ここでのデータ処理は、ループ処理を含んでいても、ループ処理を含んでいなくてもよい。
【００１９】
ＣＰＵ４０１が実行するプログラム１０１は、データをＧＰＵ４０２へ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文を含む。また、プログラム１０１は、送信されたデータに基づくデータ処理をＧＰＵ４０２へ依頼することを指示する処理依頼命令文を含む。算出装置１００は、プログラム１０１を取得して記憶部に記憶する。ここでの記憶部としては、たとえば、算出装置１００がアクセス可能なＲＡＭなどが挙げられる。
【００２０】
図２の例では、プログラム１０１内の「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ０）；」、「Ｓｅｎｄ（ＤＡＴＡ１，ＳＩＺＥ１）；」と「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ２）；」とが送信命令文である。「Ｓｅｎｄ（）」の（）には、送信されるデータと、送信されるデータ量と、の順でパラメータとして与える情報が設定される。プログラム１０１内の「Ｆｕｎｃ（ＤＡＴＡ２）；」が処理依頼命令文である。ここでは、理解の容易化のために、プログラム１０１が示す実行順ＯＲＤＥＲは、プログラム１０１内の記述順とする。
【００２１】
算出装置１００は、記憶部に記憶したプログラム１０１のうちの処理依頼命令文について、送信されるデータを示す識別情報が処理依頼命令文の所定パラメータに含まれ、かつプログラム１０１が示す実行順ＯＲＤＥＲが処理依頼命令文の直前である送信命令文の記述内容から特定されたデータ量に基づいて、処理時間を算出する。ここでの処理時間は、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要する時間である。算出装置１００は、記憶部に記憶したプログラム１０１のうちの処理依頼命令文について、送信されるデータを示す識別情報が処理依頼命令文の所定パラメータに含まれ、かつプログラム１０１が示す実行順ＯＲＤＥＲが処理依頼命令文の直前である送信命令文の記述内容から特定されたデータ量に基づいて、エネルギー量を算出する。ここでのエネルギー量は、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要するエネルギー量である。
【００２２】
具体的には、たとえば、算出装置１００は、処理依頼命令文である「Ｆｕｎｃ（ＤＡＴＡ２）；」について、送信されるデータにＤＡＴＡ２が含まれ、かつ実行順ＯＲＤＥＲが「Ｆｕｎｃ（ＤＡＴＡ２）；」の直前である送信命令文を特定する。ここでは、「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ０）；」、「Ｓｅｎｄ（ＤＡＴＡ１，ＳＩＺＥ１）；」と「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ２）；」のうち、送信されるデータにＤＡＴＡ２が含まれ、かつ実行順ＯＲＤＥＲが近い「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ２）；」が特定される。そして、算出装置１００は、「Ｓｅｎｄ（ＤＡＴＡ２，ＳＩＺＥ２）；」の記述内容から送信されるデータ量であるＳＩＺＥ２を特定する。
【００２３】
処理時間とエネルギー量とを算出可能な計算式が予め記憶部に記憶されてあり、算出装置１００は、記憶部に記憶された処理時間を算出可能な計算式にデータ量を与えて処理時間を算出する。図１の例では、算出装置１００は、送信されるデータ量と、係数ｃTと、に基づいて、処理時間を算出する。係数ｃTは、たとえば、データ処理の命令文の数、１サイクル当たりに実行可能な命令文の数などによって定まる。図２の例では、データ量以外の値を固定値として係数ｃTにしているが、これに限らず、周波数などを変数としてもよい。また、データ処理に要するエネルギー量についても処理時間と同様に算出可能である。図１の例では、算出装置１００は、送信されるデータ量と、係数ｃEと、に基づいて、エネルギー量を算出する。
【００２４】
これにより、図１の例１によれば、算出装置１００は、ＧＰＵ４０２によるデータ処理に要する推定の処理時間と、推定のエネルギー量を算出することができる。したがって、ＧＰＵ４０２のモデルとＣＰＵ４０１のモデルとを用いてプログラム１０１を実行させないため、見積もる時間の短縮化を図ることができ、効率のよい見積もりを行うことができる。
【００２５】
また、算出装置１００は、データを送信することを指示する送信命令がＣＰＵ４０１によって実行された場合のデータの送信に要する送信時間を算出する。また、算出装置１００は、データ処理の処理結果の送信をＧＰＵ４０２へ依頼することを指示する送信依頼命令がＣＰＵ４０１によって実行された場合のＧＰＵ４０２からの処理結果の送信に要する送信時間と、を算出する。たとえば、算出装置１００は、ＣＰＵ４０１が実行可能なプログラム１０１内の命令文を実行順に選択し、選択した命令文がＣＰＵ４０１に実行された場合に要する時間を算出して、ＣＰＵ４０１がプログラム１０１の実行に要する処理時間を見積もってもよい。
【００２６】
また、算出装置１００は、ＣＰＵ４０１がプログラム１０１の実行に要するエネルギー量についても処理時間と同様に見積もってもよい。また、算出装置１００は、ＣＰＵ４０１がプログラム１０１の実行に要するエネルギー量および処理時間に基づいて、消費電力量を算出してもよい。
【００２７】
ここで、算出装置１００の詳細な説明の前に、ＣＰＵ４０１が実行するプログラム１０１とＧＰＵ４０２が実行するプログラム１０２との両方を記述可能な記述形式によって記述されたＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  Ｃｏｍｐｕｔｉｎｇ  ｏｎ  ＧＰＵ）プログラムの使用例を簡単に説明する。また、ＧＰＧＰＵプログラムの詳細例と、ＧＰＧＰＵプログラムが実行された場合の動作例と、を簡単に説明する。
【００２８】
図３は、ＧＰＧＰＵプログラムの使用例を示す説明図である。ＧＰＵ４０２コンピューティングでは、ＣＰＵ４０１とＧＰＵ４０２との両方を用いて計算が行われる。ＧＰＧＰＵプログラム５００は、コンパイル前のソースコードであって、たとえば、ＯｐｅｎＣＬ（Ｃｏｍｐｕｔｉｎｇ  Ｌａｎｇｕａｇｅ）  Ｃと呼ばれる言語などによって記述される。ＧＰＧＰＵプログラム５００には、ＣＰＵ４０１が実行するプログラムと、ＧＰＵ４０２が実行するプログラムと、を有する。ＧＰＵ４０２に実行させるプログラムは、カーネルと称する。また、図３の説明では、ＣＰＵ４０１が実行するプログラムは、単にプログラムと称する。
【００２９】
ＧＰＧＰＵ実行バイナリ３０４は、ＧＰＧＰＵプログラム５００がＧＰＧＰＵ対応コンパイラ３０１によってコンパイルされた後の実行コードである。ＧＰＧＰＵ実行バイナリ３０４は、プログラムがコンパイルされることにより得られるＣＰＵコード３０５と、カーネルがコンパイルされることによって得られるＧＰＵコード３０６と、を有する。
【００３０】
ＣＰＵコード３０５には、ＣＰＵ命令列とＧＰＧＰＵ記述とがあって、ＣＰＵ命令列は、通常の論理、算出、Ｌｏａｄ／Ｓｔｏｒｅ、分岐などの命令を含み、ＧＰＧＰＵ記述は、ＧＰＵ４０２へのデータ送信、データ送信依頼、実行依頼などの命令を含む。
【００３１】
たとえば、算出装置１００は、ＧＰＧＵＰ実行バイナリまたはＧＰＧＰＵプログラム５００のいずれかによって性能見積結果と電力見積結果とを出力する。
【００３２】
また、ＣＰＵ４０１とＧＰＵ４０２を有する実機３０２や機能シミュレータ３０３では、ＧＰＧＰＵ実行バイナリ３０４を利用してＧＰＧＰＵプログラム５００にコーディングされた機能を実行する。
【００３３】
図４は、ＧＰＧＰＵプログラムを実行するシステムのハードウェア構成例を示す説明図である。システム４００は、ＣＰＵ４０１と、ＣＰＵ４０１が扱うデータが格納されるＣＰＵ  ＭＥＭ４０３と、ＧＰＵ４０２と、ＧＰＵ４０２が扱うデータが格納されるＧＰＵ  ＭＥＭ４０４と、を有する。ＣＰＵ  ＭＥＭ４０３は、たとえば、ＲＡＭであり、ＧＰＵ  ＭＥＭ４０４は、たとえば、ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）である。また、ＣＰＵ４０１と、ＣＰＵ  ＭＥＭ４０３と、ＧＰＵ４０２と、ＧＰＵ  ＭＥＭ４０４とは、バス４０５によって接続される。バス４０５の通信プロトコルは、システム４００の設計者によって定められる。
【００３４】
ＣＰＵ４０１は、システム４００全体を制御する。ＣＰＵ  ＭＥＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ＧＰＵ４０２は、ＣＰＵ４０１から依頼されたデータ処理を実行する。ＧＰＵ  ＭＥＭ４０３は、ＣＰＵ４０１から送信されたデータ、ＧＰＵ４０２が実行する実行コード、ＧＰＵ４０２によるデータ処理の処理結果などが記憶され、ＧＰＵ４０２のワークエリアとして使用される。
【００３５】
システム４００は、他にも磁気ディスクや光ディスクなどのディスク、ＣＰＵ４０１の制御にしたがってディスクに対するデータのリード／ライトを制御するディスクドライブ、ネットワークと接続するためのＩ／Ｆ（Ｉｎｔｅｒ  Ｆａｃｅ）などを有していてもよいが、ここでは省略する。
【００３６】
図５は、ＧＰＧＰＵプログラム例を示す説明図である。図５で示すＧＰＧＰＵプログラム５００は、上述したように、コンパイル前のソースコードであって、理解の容易化のために、ＯｐｅｎＣＬ  Ｃなどに基づいて設定した言語によって記述されている。ここで、ＧＰＧＰＵプログラム５００の詳細について簡単に説明する。
【００３７】
ＧＰＧＰＵプログラム５００は、グリッドサイズを設定する記述（図５中「Ｓｅｔ  Ｇｒｉｄ  Ｓｉｚｅ」と記載の命令文。）と、カーネル（図５中「Ｃｏｍｐｕｔｅ  Ｋｅｒｎｅｌ」と記載の命令文。）と、メインの関数として記述されたプログラムと、を有する。ＧＰＧＰＵプログラム５００には、カーネルの前にある「＿＿ｋｅｒｎｅｌ＿＿」の記述によって、ＧＰＵ４０２のみがカーネル（図５中「ｖｏｉｄ  ａｄｄ＿ｍａｔｒｉｘ」）を実行できる。ＣＰＵ４０１は、カーネルを実行することができない。
【００３８】
ＧＰＧＰＵプログラム５００は、図５中「ＣＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」と、「ＧＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」と、「Ｃｏｐｙ  Ｄａｔａ  Ｔｏ  ＧＰＵ」と、「Ｅｘｅｃｕｔｅ  Ｋｅｒｎｅｌ」と、の命令文を有する。または、ＧＰＧＰＵプログラム５００は、図５中「Ｃｏｐｙ  Ｒｅｓｕｌｔ  Ｂａｃｋ  Ｔｏ  ＣＰＵ」と、「Ｃｌｅａｎ  ｕｐ  ａｎｄ  ｒｅｔｕｒｎ」と、の命令文を有する。
【００３９】
ここで、プログラムで扱うデータはＣＰＵ  ＭＥＭ４０３に格納される。「ＣＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」の命令文に記述された各パラメータはＣＰＵ  ＭＥＭ４０３に格納される。カーネルで扱うデータはＣＰＵ  ＭＥＭ４０３に格納されるため、「ＧＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」の命令文に記述された各パラメータはＧＰＵ  ＭＥＭ４０４に格納される。
【００４０】
「Ｃｏｐｙ  Ｄａｔａ  Ｔｏ  ＧＰＵ」の命令文は、指定されたデータ量のデータを送信する命令を示す送信命令文である。「Ｅｘｅｃｕｔｅ  Ｋｅｒｎｅｌ」の命令文は、実行順が直前の送信命令文に記述されたデータ量のデータをＧＰＵ４０２に実行させる命令を示す処理依頼命令文である。「Ｅｘｅｃｕｔｅ  Ｋｅｒｎｅｌ」の命令文では、上述したカーネルを示す「ａｄｄ＿ｍａｔｒｉｘ」が記述される。この記述文では、ＣＰＵ４０１に「ａｄｄ＿ｍａｔｒｉｘ」を呼び出させているのではなく、ＧＰＵ４０２へ「ａｄｄ＿ｍａｔｒｉｘ」の実行を依頼していることを指示する。「Ｃｏｐｙ  Ｒｅｓｕｌｔ  Ｂａｃｋ  Ｔｏ  ＣＰＵ」の命令文は、データ処理の処理結果の送信を依頼する命令を示す命令文である。
【００４１】
図６は、ＧＰＧＰＵプログラムによるＣＰＵとＧＰＵの動作例を示す説明図である。ＣＰＵ４０１とＧＰＵ４０２とを有するシステムにおいて、ＣＰＵ４０１が上述したＧＰＧＰＵプログラム５００を実行すると、ＣＰＵ４０１が、ＧＰＵ４０２へカーネルのロードを依頼する（ステップＳ６０１）。そして、ＧＰＵ４０２が、カーネルをロードすると、ＣＰＵ４０１に対してロードの完了を応答する。そして、ＣＰＵ４０１が、ＣＰＵ  ＭＥＭ４０３上にＣＰＵ４０１が扱うパラメータなどのデータの領域を確保する（ステップＳ６０２）。ステップＳ６０２は、ＧＰＧＰＵプログラム５００のうちの「ＣＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」の命令文が示す命令である。
【００４２】
そして、ＣＰＵ４０１は、ＧＰＵ  ＭＥＭ４０４上にＧＰＵ４０２が扱うパラメータなどのデータの領域の確保をＧＰＵ４０２へ依頼し（ステッＳ６０３）、ＧＰＵ４０２は、ＧＰＵ  ＭＥＭ４０４上にデータの領域を確保する。ステップＳ６０３は、ＧＰＧＰＵプログラム５００のうちの「ＧＰＵ  ＭＥＭ  Ａｌｌｏｃａｔｉｏｎ」の命令文が示す命令である。
【００４３】
つぎに、ＣＰＵ４０１は、ＣＰＵ  ＭＥＭ４０３から読み出したデータを、ＧＰＵ４０２へ送信し（ステップＳ６０４）、ＧＰＵ４０２は、受信したデータをＧＰＵ  ＭＥＭ４０４へ格納し、受信したデータの格納完了を応答する。ステップＳ６０４は、ＧＰＧＰＵプログラム５００のうちの「Ｃｏｐｙ  Ｄａｔａ  Ｔｏ  ＧＰＵ」の命令文が示す命令である。ＣＰＵ４０１は、データ処理の実行依頼を送信し（ステップＳ６０５）、ＧＰＵ４０２は、受信して格納したデータに基づいて、ロードしたカーネルに基づいてデータ処理を実行し、処理完了を応答する。ステップＳ６０５は、ＧＰＧＰＵプログラム５００のうちの「Ｅｘｅｃｕｔｅ  Ｋｅｒｎｅｌ」の命令文が示す命令である。
【００４４】
ＣＰＵ４０１は、処理完了の応答を受信すると、処理結果の送信を依頼し（ステップＳ６０６）、ＧＰＵ４０２は、処理結果をＣＰＵ４０１へ送信する。ステップＳ６０６は、ＧＰＧＰＵプログラム５００のうちの「Ｃｏｐｙ  Ｒｅｓｕｌｔ  Ｂａｃｋ  Ｔｏ  ＣＰＵ」の命令文が示す命令である。ＣＰＵ４０１は、処理結果を受信すると、ＧＰＵ４０２へ後処理を依頼し（ステップＳ６０７）、ＧＰＵ４０２は、後処理を行い、後処理の完了を応答する。ステップＳ６０７は、ＧＰＧＰＵプログラム５００のうちの「Ｃｌｅａｎ  ｕｐ  ａｎｄ  ｒｅｔｕｒｎ」の命令文が示す命令である。後処理は、たとえば、ＧＰＵ４０２がＧＰＵ  ＭＥＭ４０４内に確保した領域の開放である。
【００４５】
（算出装置１００のハードウェア構成例）
図７は、算出装置のハードウェア構成例を示すブロック図である。図７において、算出装置１００は、ＣＰＵ７０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）７０２と、ＲＡＭ７０３と、ディスクドライブ７０４と、ディスク７０５と、を有する。算出装置１００は、Ｉ／Ｆ（Ｉｎｔｅｒ  Ｆａｃｅ）７０６と、入力装置７０７と、出力装置７０８と、を有する。また、各部はバス７００によってそれぞれ接続される。
【００４６】
ここで、ＣＰＵ７０１は、算出装置１００の全体の制御を司る。ＲＯＭ７０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ７０３は、ＣＰＵ７０１のワークエリアとして使用される記憶部である。ディスクドライブ７０４は、ＣＰＵ７０１の制御にしたがってディスク７０５に対するデータのリード／ライトを制御する。ディスク７０５は、ディスクドライブ７０４の制御で書き込まれたデータを記憶する。ディスク７０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００４７】
Ｉ／Ｆ７０６は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークＮＥＴに接続され、このネットワークＮＥＴを介して他の装置に接続される。そして、Ｉ／Ｆ７０６は、ネットワークＮＥＴと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ７０６には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００４８】
入力装置７０７は、キーボード、マウス、タッチパネルなど利用者の操作により、各種データの入力を行うインターフェースである。また、入力装置７０７は、カメラから画像や動画を取り込むこともできる。また、入力装置７０７は、マイクから音声を取り込むこともできる。出力装置７０８は、ＣＰＵ７０１の指示により、データを出力するインターフェースである。出力装置７０８には、ディスプレイやプリンタが挙げられる。
【００４９】
（算出装置１００の機能的構成例）
図８は、算出装置の機能的構成例を示すブロック図である。算出装置１００は、取得部８０１と、選択部８０２と、命令文判断部８０３と、格納部８０４と、ループ処理判断部８０５と、ループ回数特定部８０６と、入力受付部８０７と、を有する。算出装置１００は、第１算出部８０８と、第２算出部８０９と、第３算出部８１０と、累積算出部８１１と、消費電力量算出部８１２と、出力部８１３と、を有する。各部の処理は、たとえば、ＣＰＵ７０１がアクセス可能な記憶装置に記憶された算出プログラムにコーディングされる。そして、ＣＰＵ７０１が記憶装置から算出プログラムを読み出して、試験支援プログラムにコーディングされている処理を実行する。これにより、各部の処理が実現される。また、各部の処理結果は、たとえば、ＲＡＭ７０３、ディスク７０５などの記憶装置に記憶される。
【００５０】
（実施例１）
実施例１では、ＧＰＵ４０２への処理依頼命令文について、プログラムが示す実行順において処理依頼命令文の直前の送信命令文の記述内容から特定されたデータ量に基づき、ＧＰＵ４０２によるデータ処理に要する推定の処理時間またはエネルギー量を算出する。これにより、推定の処理時間またはエネルギー量の見積時間を短縮することができる。したがって、ＣＰＵ４０１やＧＰＵ４０２などを含むシステム４００をモデル化することなく見積もることができ、処理時間または消費電力量の見積もりを効率よく行うことができる。なお、消費電力量は、処理時間およびエネルギー量によって算出される。
【００５１】
取得部８０１は、プログラムを取得する。ここでのプログラムは、たとえば、上述したＧＰＧＰＵプログラム５００のうちのＣＰＵ４０１が実行するプログラムである。ＧＰＧＰＵプログラム５００は、データをＧＰＵ４０２へ送信することを指示する送信命令文と、送信命令文によって送信されるデータに基づくデータ処理をＧＰＵ４０２へ依頼することを指示する処理依頼命令文と、を含む。また、ＧＰＧＰＵプログラム５００は、データ処理の処理結果の送信をＧＰＵ４０２へ依頼することを指示する送信依頼命令文を含む。ＣＰＵ４０１と、ＧＰＵ４０２と、のやり取りでは、主にこの３つの命令文がＣＰＵ４０１によって実行される。また、処理依頼命令文が示す命令が実行される前には、この命令で使用されるデータがＣＰＵ４０１からＧＰＵ４０２へ送信されていることを前提とする。
【００５２】
そして、選択部８０２は、取得部８０１によって取得されたプログラムが示す命令群の実行順に命令文を選択する。命令文判断部８０３は、選択部８０２によって選択された命令文が送信命令文と、処理依頼命令文と、送信依頼命令文と、のうちのいずれの命令文であるかを判断する。たとえば、命令文判断部８０３は、選択された命令文が「ｇｐｇｐｕＭｅｍｃｐｙ（ｄｉｓｔ，ｓｒｃ，ｓｉｚｅ，ｄｉｒｅｃｔｉｏｎ）」の第１形式で記述された命令文であるか、「ｆｕｎｃ＿ｎａｍｅ＜＜ｐａｒ＿ｎｕｍ＞＞（ｐａｒａｍｓ）」の第２形式で記述された命令文であるかを判断する。
【００５３】
第１形式で記述された命令文は、送信命令文または送信依頼命令文のいずれか一方である。「ｇｐｇｐｕＭｅｍｃｐｙ（）」の各引数を以下に説明する。
ｄｉｓｔ：送信先のメモリ領域を示すポインタ
ｓｒｃ：送信元のメモリ領域を示すポインタ
Ｓｉｚｅ：データ量
Ｄｉｒｅｃｔｉｏｎ：ｇｐｇｐｕＭｅｍｃｐｙＨｏｓｔＴｏＤｅｖｉｃｅ、またはｇｐｇｐｕＭｅｍｃｐｙＤｅｖｉｃｅＴｏＨｏｓｔ
【００５４】
たとえば、送信命令文の場合、引数ｄｉｓｔには、ＧＰＵ４０２のメモリ領域を示すポインタが与えられ、引数ｓｒｃには、ＣＰＵ４０１のメモリ領域を示すポインタが与えられる。さらに、たとえば、送信命令文の場合、引数Ｓｉｚｅには、ＣＰＵ４０１からＧＰＵ４０２に送信されるデータのデータ量が与えられ、引数ＤｉｒｅｃｔｉｏｎにｇｐｇｐｕＭｅｍｃｐｙＨｏｓｔＴｏＤｅｖｉｃｅが与えられる。
【００５５】
たとえば、送信依頼命令文の場合、引数ｄｉｓｔには、ＣＰＵ４０１のメモリ領域を示すポインタが与えられ、引数ｓｒｃには、ＧＰＵ４０２のメモリ領域を示すポインタが与えられる。さらに、たとえば、送信依頼命令文の場合、引数Ｓｉｚｅには、ＧＰＵ４０２からＣＰＵ４０１に送信される処理結果のデータ量が与えられ、引数ＤｉｒｅｃｔｉｏｎにｇｐｇｐｕＭｅｍｃｐｙＤｅｖｉｃｅＴｏＨｏｓｔが与えられる。
【００５６】
そのため、「ｇｐｇｐｕＭｅｍｃｐｙ（）」の引数ＤｉｒｅｃｔｉｏｎがｇｐｇｐｕＭｅｍｃｐｙＨｏｓｔＴｏＤｅｖｉｃｅの場合、命令文判断部８０３は、選択された命令文が送信命令文であると判断する。ｇｐｇｐｕＭｅｍｃｐｙ（）の引数ＤｉｒｅｃｔｉｏｎがｇｐｇｐｕＭｅｍｃｐｙＤｅｖｉｃｅＴｏＨｏｓｔの場合、命令文判断部８０３は、選択された命令文が送信依頼命令文であると判断する。
【００５７】
また、命令文判断部８０３は、選択された命令文が第２形式で記述された命令文であると、選択された命令文が処理依頼命令文であると判断する。「ｆｕｎｃ＿ｎａｍｅ＜＜ｐａｒ＿ｎｕｍ＞＞（ｐａｒａｍｓ）」の命令文について、簡単に説明する。「ｆｕｎｃ＿ｎａｍｅ」には、カーネルの名称が記述される。上述したように、カーネルは、ＧＰＧＰＵプログラム５００中に「＿＿ｋｅｒｎｅｌ＿＿  ｖｏｉｄ」で宣言された関数であり、ＧＰＵ４０２が実行するプログラムである。「ｐａｒ＿ｎｕｍ」は、並列数を示す情報が記述される。「ｐａｒ＿ｎｕｍ」は、並列数そのものを示す数値やその数値を表す引数が記述されてもよいし、並列数を算出可能な情報が記述されていてもよいし。通常「ｐａｒ＿ｎｕｍ」には、並列数を算出可能な情報が記述されるが、ここでは、理解の容易化のために、並列数が記述されることとする。ｐａｒａｍｓは、「ｆｕｎｃ＿ｎａｍｅ」が示す関数の引数がその関数によって定義された並び順に記述される。
【００５８】
たとえば、ＧＰＧＰＵプログラム５００では、第２記述形式によって記述された命令文は「ａｄｄ＿ｍａｔｒｉｘ＜＜ｐａｒ＿ｎｕｍ＞＞（ａｄ，ｂｄ，ｃｄ，Ｎ））」である。
【００５９】
また、ＣＰＵ４０１が実行する命令文には、論理演算、算出演算、Ｌｏａｄ／Ｓｔｏｒｅ、または分岐などの通常のＣＰＵ４０１が行う命令文がある。これらの命令文が選択部８０２によって選択された場合、算出装置１００は、これらの命令の実行に要する時間を、通常のＩＳＳ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｉｏｎ）などによって算出されることとして、ここでの詳細な説明は省略する。
【００６０】
格納部８０４は、選択した命令文が送信命令文であると判断された場合、選択した命令文の記述内容から特定される識別情報と、選択した命令文の記述内容に基づくデータ量と、を記憶部に記憶する。ここでの記憶部は、たとえば、ＲＡＭ７０３やディスク７０５などの記憶装置である。たとえば、記述内容から特定される識別情報は、「ｇｐｇｐｕＭｅｍｃｐｙ（）」の中で、引数ｄｉｓｔに対応する位置に記述された情報である。たとえば、記述内容に基づくデータ量は「ｇｐｇｐｕＭｅｍｃｐｙ（）」の引数Ｓｉｚｅに対応する位置に記述された情報が示すサイズである。
格納部８０４は、当該情報が数値の場合、この数値をデータ量として記憶部に記憶する。または、格納部８０４は、当該情報が他で定義されたパラメータである場合、当該パラメータの定義文を検出して、定義文に記述された数値をデータ量として記憶部に記憶する。たとえば、格納部８０４は、記憶部に記憶されたデータ量をあらたな送信命令が選択された際に上書きしてもよい。
【００６１】
そして、第１算出部８０８は、命令文が送信命令文であると判断された場合、送信命令文の記述内容に基づくデータ量によって、選択した命令文が示す命令がＣＰＵ４０１によって実行された場合にデータの送信に要する第１送信時間を算出する。具体的には、第１算出部８０８は、以下式（１）のｎdataに送信命令文の記述内容に基づくデータ量を与えて、第１送信時間を算出する。式（１）中のＴ１が第１送信時間であり、以下第１送信時間は、第１時間Ｔ１と称する。式（１）中のｃT1は第１係数であり、第１係数ｃT1の詳細や各変数については、後述する。
【００６２】
Ｔ１＝ｃT1×ｎdata・・・（１）
【００６３】
また、第１算出部８０８は、選択された命令文が送信命令文であると判断された場合、送信命令文の記述内容に基づくデータ量によって、選択された命令文が示す命令がＣＰＵ４０１によって実行された場合にデータの送信に要する第１エネルギー量を算出する。具体的には、第１算出部８０８は、以下式（２）のｎdataに送信命令文の記述内容に基づくデータ量を与えて、エネルギー量を算出する。式（２）中のＥ１がエネルギー量であり、以下エネルギー量は、第１エネルギー量Ｅ１と称する。ｃE1は第１係数であり、第１係数ｃE1の詳細や各変数については、後述する。
【００６４】
Ｅ１＝ｃE1×ｎdata・・・（２）
【００６５】
また、第２算出部８０９は、選択された命令文が処理依頼命令文であると判断された場合、選択された命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によるデータ処理に要する処理時間を算出する。具体的には、第２算出部８０９は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、処理時間を算出する。また、ＧＰＵ４０２が複数のコアを有する場合、第２算出部８０９は、命令文判断部８０３によって命令文が送信命令文であると判断された場合、当該最後に記憶されたデータ量と、選択された命令文の記述内容に基づく並列数と、に基づいて、処理時間を算出する。具体的には、第２算出部８０９は、以下式（３）のｎdataに当該最後に記憶されたデータ量を与え、式（３）のｎpに並列数を与えて、処理時間を算出する。式（３）中のＴ２が処理時間であり、以下処理時間は、第２時間Ｔ２と称する。ｃT2は第２係数であり、ｎinstはＧＰＵ命令数であり、ｎpはＧＰＵ並列数である。第２係数ｃT2の詳細については後述する。
【００６６】
Ｔ２＝ｃT2×ｎinst×（ｎdata／ｎp）・・・（３）
【００６７】
また、選択された命令文が処理依頼命令文であると判断された場合、当該最後に記憶されたデータ量に基づいて、第２算出部８０９は、選択した命令文がＣＰＵ４０１によって実行された場合にデータの送信に要するエネルギー量を算出する。また、ＧＰＵ４０２が複数のコアを有する場合について説明する。この場合、第２算出部８０９は、選択された命令文が送信命令文であると判断された場合、当該最後に記憶されたデータ量と、選択した命令文の記述内容に基づく並列数と、に基づいて、ＧＰＵ４０２によるデータ処理に要するエネルギー量を算出する。具体的には、第２算出部８０９は、以下式（４）のｎdataに当該最後に記憶されたデータ量を与え、式（４）のｎpに並列数を与えて、エネルギー量を算出する。式（４）中のＥ２がここで算出されるエネルギー量であり、以下このエネルギー量は、第２エネルギー量Ｅ２と称する。ｃE2は第２係数であり、ｎinstはＧＰＵ命令数であり、ｎpはＧＰＵ４０２並列数である。第２係数ｃE2の詳細については後述する。
【００６８】
Ｅ２＝ｃE2（ｎp）×ｎinst×（ｎdata／ｎp）・・・（４）
【００６９】
また、第２算出部８０９は、選択された命令文によってＧＰＵ４０２に依頼されるデータ処理を示すプログラムからＧＰＵ命令数ｎinstを検出し、式（３）や式（４）に与えることとする。また、第２算出部８０９は、一度検出したＧＰＵ命令数ｎinstをＲＡＭ７０３などの記憶部に記憶しておくことにより、再度利用する際にはＲＡＭ７０３などの記憶部から取得するだけでよい。
【００７０】
また、第３算出部８１０は、選択された命令文が送信依頼命令文であると判断された場合、選択された命令文の記述内容に基づくデータ量によって、選択された命令文がＣＰＵ４０１によって実行された場合に処理結果の送信に要する第２送信時間を算出する。具体的には、第３算出部８１０は、以下式（５）のｎdataに命令文の記述内容に含まれるデータ量を与えて、第２送信時間を算出する。式（５）中のＴ３が第２送信時間であり、以下第２送信時間は、第３時間Ｔ３と称する。ｃT3は第３係数であり、第３係数ｃT3の詳細や各変数については、後述する。
【００７１】
Ｔ３＝ｃT3×ｎdata・・・（５）
【００７２】
また、第３算出部８１０は、選択された命令文が送信依頼命令文であると判断された場合、選択された命令文の記述内容に基づくデータ量に基づいて、選択された命令文がＣＰＵ４０１によって実行された場合に処理結果の送信に要するエネルギー量を算出する。具体的には、第３算出部８１０は、以下式（６）のｎdataに送信命令文の記述内容に基づくデータ量を与えて、エネルギー量を算出する。式（６）中のＥ３がここで算出されるエネルギー量であり、以下このエネルギー量は、第３エネルギー量Ｅ３と称する。ｃE3は第３係数であり、第３係数ｃE3の詳細や各変数については、後述する。
【００７３】
Ｅ３＝ｃE3×ｎdata・・・（６）
【００７４】
ここで、各係数の詳細な説明の前に、各係数で用いるパラメータについて簡単に説明する。まず、第１時間および第３時間と第１エネルギー量および第３エネルギー量とに関する各係数で用いるパラメータと係数との説明の後に、第２時間および第２エネルギー量に関する各係数で用いるパラメータと係数とを説明する。
【００７５】
図９は、第１および第３時間と第１および第３エネルギー量の算出に用いる各パラメータの説明図である。図９では、パラメータの名称、パラメータの簡単な説明、および取得方法を示す。図９中の取得方法については、入力、仕様値、または論理合成／レイアウト後の３種類のいずれかである。入力の場合、ＧＰＧＰＵプログラム５００から得られるパラメータであったり、タッチパネルやキーボードなどの入力装置を介して利用者によって入力されることによって得られるパラメータであることを示す。仕様値の場合、システムの仕様に記載された値、または仕様決定時に行う簡易的なシミュレーションによって得られるパラメータであることを示す。論理合成／レイアウト後の場合、論理合成後の回路情報から得る、またはレイアウト後の回路情報から得ることが可能なパラメータであることを示す。レイアウト後の回路情報から得る方が、論理合成後の回路情報から得るよりも精度が高い。
【００７６】
データ量ｎdataは、ＣＰＵ４０１からＧＰＵ４０２に送信されるデータのデータ量［Ｂｙｔｅ］またはＧＰＵ４０２からＣＰＵ４０１に送信される処理結果のデータ量を示す。バス周波数ｆBは、バス４０５に供給されるクロックの周波数［Ｈｚ］を示す。
【００７７】
バス電圧ＶBは、バス４０５に供給される電源の電圧値［Ｖ］を示す。サイクル数ＮBC1は、１転送にかかるサイクル数の平均値を示す。転送量Ｎdata1は、１回の転送でのデータ量［Ｂｙｔｅ］である。バス電圧ＶBと、サイクル数ＮBC1と、転送量Ｎdata1と、は、通信プロトコルに関係するパラメータである。
【００７８】
サイクル数ＮBC2は、転送間隔サイクル数を示し、具体的には転送待ちなどの平均値を示す。バスゲート数ＮgBは、具体的にはインバータ換算でのバス４０５に含まれる素子数を示す。バス活性化率αBは、バス４０５が活性化する確率であって、具体的にはバス４０５が有する信号線のうちの１サイクル当たりに論理値が変化する信号線の割合の平均値を示す。容量ＣLBは、バス４０５の寄生容量の平均値［Ｆ］を示す。
【００７９】
つぎに、第１時間Ｔ１の第１係数ｃT1と、第３時間Ｔ３の第３係数ｃT3と、を以下式（７）に示し、第１エネルギー量Ｅ１の第１係数ｃE1と、第２エネルギー量Ｅ３の第３係数ｃE3と、を以下式（８）に示す。ここでは、第１係数ｃT1と第３係数ｃT3とを同一にし、第１係数ｃE1と第３係数ｃE3とを同一にしているが、バス４０５の通信プロトコルによって異なる値となっていてもよい。
【００８０】
ｃT1＝ｃT3＝ＮBC1／（Ｎdata1×ｆB）・・・（７）
ｃE1＝ｃE3＝ＮgB×（（１／２）×αB×ＣLB×ＶB2）×ｃT1（ｃT3）・・・（８）
【００８１】
図１０は、第１時間の詳細例を示す説明図である。ここでは、バースト転送を例に挙げる。図１０に示すように、命令文の記述内容に基づくデータ量のデータをＣＰＵ４０１からＧＰＵ４０２へ送信するためのバス４０５を介する転送回数は、ｎdata／Ｎdata1［回］となる。図１０中ＣＰＵ４０１からＧＰＵ４０２への矢印が１回の転送を示し、１回の転送に要する時間は、ＮBC1／ｆB［ｓｅｃ］である。また、転送の間の待機時間は、サイクル数ＮBC2／ｆB［ｓｅｃ］である。そのため、第１時間Ｔ１は以下式（９）のように表すことができる。また、第３時間Ｔ３についても同様に以下式（９）のように表すことができる。そして、式（９）によって、第１係数ｃT1や第３係数ｃT3は、上記式（７）となる。
【００８２】
Ｔ１＝Ｔ３＝（ＮBC1／ｆB）×（ｎdata／Ｎdata1）＋（ＮBC2／ｆB）
≒（ＮBC1／ｆB）×（ｎdata／Ｎdata1）
＝（ＮBC1／（ｆB×Ｎdata1））×ｎdata・・・（９）
【００８３】
また、第１エネルギー量Ｅ１は、第１時間Ｔ１と、バス４０５の通信プロトコルやバス４０５の設計に関するパラメータと、によって表される。そのため、第１エネルギー量Ｔ１は以下式（１０）のように表すことができる。また、第３エネルギー量Ｅ３についても同様に以下式（１０）のように表すことができる。そして、式（１０）によって、第１係数ｃE1や第３係数ｃE3は、上記式（８）となる。
【００８４】
Ｅ１＝Ｅ３≒ＮgB×［（１／２）×αB×ＣLB×ＶB2］×Ｔ１
≒ＮgB×［（１／２）×αB×ＣLB×ＶB2］×[（ＮBC1／（ｆB×Ｎdata1））×ｎdata]
＝ＮgB×［（１／２）×αB×ＣLB×ＶB2］×ｃT1×ｎdata・・・（１０）
【００８５】
図１１は、第２時間と第２エネルギー量の算出に用いる各パラメータの説明図である。図１１では、パラメータの名称、パラメータの簡単な説明、および取得方法を示す。パラメータの名称、パラメータの簡単な説明、および取得方法は、上述した通りである。
【００８６】
命令数ｎinstは、ＧＰＵ命令数を示し、カーネルに記述された命令文の数である。並列数ｎpは、ＧＰＵ４０２が複数のコアを有する場合において、複数のコアのうちの処理依頼命令文の実行によってデータ処理が行われる際に使用されるコアの数である。ＧＰＵ周波数ｆGは、ＧＰＵ４０２に供給されるクロックの周波数［Ｈｚ］を示す。
【００８７】
ＧＰＵ電圧ＶGは、ＧＰＵ４０２に供給される電源電圧値［Ｖ］を示す。サイクル数ＣＰＩは、ＧＰＵ４０２の１命令あたりの実行に要するサイクル数を示し、命令数ＩＰＣは、ＧＰＵ４０２の１サイクルあたりに実行可能な命令数を示す。なお、ＣＰＩ＝１／ＩＰＣである。
【００８８】
最大並列数Ｎpmは、ＧＰＵ４０２が有するコアの数を示す。ＧＰＵコアゲート数ＮgG1は、たとえば、インバータ換算でのＧＰＵ４０２の各コアに含まれる素子数である。ＧＰＵ共通部ゲート数ＮgGcは、たとえば、インバータ換算でのＧＰＵ４０２の共通部に含まれる素子数である。ＧＰＵ４０２の構成例については、後述する。
【００８９】
ＧＰＵ４０２活性化率αGは、ＧＰＵ４０２が有する信号線のうちの１サイクル当たりに論理値が変化した信号線の割合の平均値を示す。たとえば、６本の信号線のうち１サイクル当たりに３本の信号線の論理値が変化した場合、活性化率は、０．５である。容量ＣLGは、ＧＰＵ４０２の寄生容量の平均値[Ｆ]を示す。ＧＰＵリーク電流ＩleakGは、ＧＰＵ４０２内を流れるリーク電流の平均値を示す。
【００９０】
つぎに、第２時間Ｔ２の第２係数ｃT2を以下式（１１）に示し、第２エネルギー量Ｅ２の第２係数ｃE2を以下式（１２）に示す。
【００９１】
ｃT2＝ＣＰＩ／ｆG（＝１／（ｆG×ＩＰＣ））・・・（１１）
【００９２】
【数１】
2014194660.tif 000003
【００９３】
図１２は、ＧＰＵの構成例を示すブロック図である。ＧＰＵ４０２は、コア１〜コアＮpmまでの複数のコアと、共通部１２０１と、を有する。同時にすべてのコアを使用しなくてもよく、コアの並列数については、上述したように、処理依頼命令文の記述内容に基づいて特定可能である。ここで、第２時間Ｔ２は、以下式（１３）によって表される。ｎRepは、反復回数であって、以下式（１４）によって表される。
【００９４】
Ｔ２＝（ｎinst×ＣＰＩ）／ｆG×ｎRep・・・（１３）
ｎRep＝ｎdata／ｎp・・・（１４）
【００９５】
また、第２エネルギー量については、並列数によってエネルギー量が変化する。また、処理依頼命令文の記述内容に基づく並列数が最大並列数Ｎpm以下であるか、または最大並列数Ｎpmより多いかによって、エネルギー量が異なる。また、エネルギー量は、以下式（１５）のように消費電力量ＰGと第２時間Ｔ２によって表される。式（１５）の消費電力量ＰGは以下式（１６）のように表される。
【００９６】
Ｅ２＝ＰG×Ｔ２・・・（１５）
【００９７】
【数２】
2014194660.tif 000004
【００９８】
また、式（１６）中のＧＰＵ４０２内の１コアあたりの消費電力量ＰG1と、ＧＰＵ４０２内の共通部１２０１の消費電力量ＰGcと、がそれぞれ以下式（１７）と式（１８）によって表される。
【００９９】
ＰG1≒ＮgG1×（（１／２）×αG1×ＣLG1×ＶG2＋ＩleakG1×ＶG）・・・（１７）
ＰGc≒ＮgGc×（（１／２）×αGc×ＣLGc×ＶG2＋ＩleakGc×ＶG）・・・（１８）
【０１００】
ここで、コア１〜コアＮpmと、共通部１２０１と、でゲート数以外のパラメータが等しいとすると、消費電力量ＰGは以下式（１９）のように表される。
【０１０１】
【数３】
2014194660.tif 000005
【０１０２】
そして、第２エネルギー量Ｅ２は、式（１５）のように表されるため、第２エネルギー量は、式（１９）によって、式（２０）とも表される。
【０１０３】
【数４】
2014194660.tif 000006
【０１０４】
そして、第２エネルギー量Ｅ２が式（２０）のように表されるため、第２係数ｃE2が上述した式（１２）のように表される。
【０１０５】
また、入力受付部８０７は、ＣＰＵ４０１と、バス４０５と、ＧＰＵ４０２とに供給する電源の電圧値とクロックの周波数との入力を受け付けてもよい。
【０１０６】
図１３は、入出力画面例を示す説明図である。入出力画面１３００は、算出プログラムであるＧＰＧＰＵソフトウェアの保存領域を指定する入力欄と、システム４００の構成であるＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）の構成を指定する入力欄と、を有する。また、入出力画面１３００は、ＣＰＵ４０１と、バス４０５と、ＧＰＵ４０２と、の各々に与えるクロックの周波数と、ＣＰＵ４０１に与える電源電圧値と、を指定する入力欄と、ＧＰＵ４０２内のコアの最大並列実行数を指定する入力欄を有する。
【０１０７】
入出力画面１３００は出力装置７０８によって出力される。入出力画面１３００の入力欄に各値が設定されると、入力装置７０７が入力欄に入力された各値を受け付ける。また、入出力画面１３００は、ＣＰＵ４０１と、バス４０５と、ＧＰＵ４０２と、Ｔｏｔａｌと、の各々について、処理時間、エネルギー、電力を出力する出力欄を有する。
【０１０８】
入力受付部８０７によって入力された各値を受け付けると、第１算出部８０８から第３算出部８１０は、各係数に入力された各値を上述した係数を表す式に予め代入してもよい。または、たとえば、第１算出部８０８から第３算出部８１０は、それぞれの時間およびエネルギー量の算出時に都度、上述した係数を表す式に代入してもよい。
【０１０９】
そして、累積算出部８１１は、各命令文について算出した時間を累積加算することによって、ＧＰＧＰＵプログラム５００の実行に要する実行時間を算出する。また、見積もり部は、各命令文について算出したエネルギー量を累積加算することによって、ＧＰＧＰＵプログラム５００の実行に要するエネルギー量を算出する。
【０１１０】
また、消費電力量算出部８１２は、ＧＰＧＰＵプログラム５００の実行に要するエネルギー量をＧＰＧＰＵプログラム５００の実行に要する実行時間で除算することによって、ＧＰＧＰＵプログラム５００の実行における平均の消費電力量を算出してもよい。
【０１１１】
また、出力部８１３は、ＧＰＧＰＵプログラム５００の実行に要するエネルギー量と、ＧＰＧＰＵプログラム５００の実行に要する実行時間と、ＧＰＧＰＵプログラム５００の実行における平均の消費電力量と、を出力する。出力形式としては、たとえば、ディスプレイへの表示、Ｉ／Ｆによる外部装置への送信がある。また、ＲＡＭ７０３やディスク７０５などの記憶装置に記憶することとしてもよい。具体的には図１３に示した入出力画面１３００のように出力してもよい。
【０１１２】
（実施例２）
実施例２では、ループ処理を含むデータ処理のＧＰＵ４０２への依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果によりＧＰＵ４０２の推定処理時間または推定エネルギー量を算出する。これにより、処理時間およびエネルギー量の見積時間を短縮することができる。したがって、ＣＰＵ４０１やＧＰＵ４０２をモデル化することなく見積もることができ、処理時間または消費電力量の見積もりを効率よく行うことができる。なお、消費電力量は、処理時間およびエネルギー量によって算出される。
【０１１３】
また、実施例２では、第２算出部８０９に関連する処理が実施例１と異なり、その他の処理については実施例１と同一であるため、実施例１と同一内容については同一符号を付し、詳細な説明を省略する。
【０１１４】
たとえば、ループ処理を指示する命令文では、定数によってループ処理のループ回数が指定されていたり、パラメータによってループ処理のループ回数が指定されていたりする。
【０１１５】
図１４は、定数によるループ回数の記述例を示す説明図である。図１４では、定数によるｆｏｒ文の記述について、Ｃ言語のプログラム１４００例と、ＧＰＵ命令列１４０１例と、を示す。プログラム１４００とＧＰＵ４０２命令列には、ｆｏｒ文のパラメータから２５６回繰り返すことが記述されてある。具体的には、プログラム１４００には、＃ｄｅｆｉｎｅによってＷＩＤＴＨが２５６に設定されてあるため、２５６回繰り返すこととなる。ＧＰＵ４０２命令列内のｆｏｒ文に対応する命令文は「ｍｏｖ」，「ｓｅｔｐ」，「＠ｐ  ｂｒａ」，「ａｄｄ」，「ｂｒａ」である。
【０１１６】
図１５は、定数とみなせる変数によるループ回数の記述例を示す説明図である。図１５では、定数によるｆｏｒ文の記述について、Ｃ言語のプログラム１５００例と、ＧＰＵ命令列１５０１例と、を示す。たとえば、ｂｌｏｃｋＤｉｍが、カーネルの引数として変数のように与えられたとしても、ＣＰＵ４０１が記述されたプログラムにおいて、ｂｌｏｃｋＤｉｍが定数として定義されている場合がある。そのため、ＧＰＧＰＵプログラム５００の実行時には、ｂｌｏｃｋＤｉｍは定数となる。
【０１１７】
本実施例２では、図１４と図１５のようなｆｏｒ文についての記述方式についてのテンプレートを利用者によって予め作成しておく。そして、本実施例２では、ループ処理判断部８０５は、テンプレートと、ＧＰＧＰＵプログラム５００の命令文と、を比較することにより、命令文の記述内容を特定してもよい。
【０１１８】
図１６は、パターンマッチテーブル例を示す説明図である。パターンマッチテーブル１６００は、テンプレート、ループ回数のフィールドを有する。たとえば、テンプレートのフィールドには、ｆｏｒ文についての記述が設定され、ループ回数のフィールドには、テンプレートに応じたループ回数の算出式が設定される。各フィールドに情報が設定されることにより、レコード（１６０１−１，１６０１−２，１６０１−３，・・・）として登録される。たとえば、レコード１６０１−１のテンプレートとｆｏｒ文の記述方式が一致する場合、ｃｏｎｓｔ１からｃｏｎｓｔ２未満までループ処理が繰り返されるため、ループ回数は、「ｃｏｎｓｔ２−ｃｏｎｓｔ１」によって算出可能である。ここでは、理解の容易化のために、ループ処理についてはｆｏｒ文で記述されたループ処理を例に挙げているが、記述方式はｆｏｒ文に限らない。
【０１１９】
選択された命令文が処理依頼命令文であると判断された場合、ループ処理判断部８０５は、ループ処理を含むデータ処理を依頼する第１処理依頼命令文であるか、ループ処理を含まないデータ処理を依頼する第２処理依頼命令文であるかを判断する。具体的には、たとえば、ループ処理判断部８０５は、パターンマッチテーブル１６００の中に、データ処理を含むプログラムの記述形式と一致するテンプレートがあるか否かを判断する。ループ処理判断部８０５によって一致するテンプレートがないと判断された場合、ループ処理判断部８０５は、ループ処理がない、またはループ処理のループ回数が特定できないと判断する。
【０１２０】
ループ回数特定部８０６は、処理依頼命令文によって指定された所定パラメータに基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理のループ回数を特定する。また、ループ回数特定部８０６は、ループ処理を示す命令文に記述された定数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理のループ回数を特定する。
【０１２１】
具体的には、パターンマッチテーブル１６００の中に一致するテンプレートがあると判断された場合、ループ回数特定部８０６は、テンプレートに対応するループ回数式をパターンマッチテーブル１６００から取得する。そして、ループ回数特定部８０６は、取得したループ回数式に、所定パラメータまたは定数を与えることにより、ループ回数を与える。
【０１２２】
第２算出部８０９は、ループ回数特定部８０６によって特定されたループ回数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要する第２時間Ｔ２を算出する。第２算出部８０９は、ループ回数特定部８０６によって特定されたループ回数に基づいて、処理依頼命令文がＣＰＵ４０１によって実行された場合にＧＰＵ４０２によって実行されるデータ処理に要する第２エネルギー量Ｅ２を算出する。実施例２における第２時間Ｔ２と第２エネルギー量Ｅ２は、たとえば、それぞれ以下式（２１）と式（２２）によって算出される。ループ回数式（ＰＡＲ）は、取得したループ回数式に所定パラメータが与えられることにより、ループ回数が得られることを示す。ｃT2とｃE2とｎinstについては、実施例１で説明した通りである。
【０１２３】
Ｔ２＝ｃT2×ｎinst×ループ回数式（ＰＡＲ）・・・（２１）
Ｅ２＝ｃE2（ｎp）×ｎinst×ループ回数式（ＰＡＲ）・・・（２２）
【０１２４】
（算出装置１００による算出処理手順例）
図１７〜図１９は、算出装置による算出処理手順例を示すフローチャートである。算出装置１００は、ＧＰＧＰＵプログラム５００を取得して記憶部に記憶し（ステップＳ１７０１）、ＣＰＵ４０１とＧＰＵ４０２とバス４０５とに供給するそれぞれの周波数および電源電圧値の入力を受け付ける（ステップＳ１７０２）。たとえば、算出装置１００は、図１３に示したような入出力画面１３００によって入力を受け付ける。
【０１２５】
算出装置１００は、受け付けた周波数と電源電圧値に基づいて第１係数と第２係数と第３係数を算出する（ステップＳ１７０３）。算出装置１００は、「第１累積時間＝０」、「第１累積エネルギー量＝０」、「第２累積時間＝０」、「第２累積エネルギー量＝０」、「第３累積時間＝０」、「第３累積エネルギー量＝０」とすることによって、各値を初期化する（ステップＳ１７０４）。
【０１２６】
算出装置１００は、ＧＰＧＰＵプログラム５００のうち、未選択の命令文があるか否かを判断する（ステップＳ１７０５）。未選択の命令文があると判断された場合（ステップＳ１７０５：Ｙｅｓ）、算出装置１００は、未選択の命令文から実行順が最も早い命令文を選択する（ステップＳ１８０１）。
【０１２７】
算出装置１００は、選択された命令文が送信命令文であるか否かを判断し（ステップＳ１８０２）、送信命令文である場合（ステップＳ１８０２：Ｙｅｓ）、第１時間および第１エネルギー量の算出処理を行う（ステップＳ１８０３）。そして、算出装置１００は、「第１累積時間＝第１累積時間＋算出した時間」を行い（ステップＳ１８０６）、「第１累積エネルギー量＝第１累積エネルギー量＋算出したエネルギー量」を行い（ステップＳ１８０７）、ステップＳ１７０５へ戻る。
【０１２８】
送信命令文でない場合（ステップＳ１８０２：Ｎｏ）、算出装置１００は、送信依頼命令文であるか否かを判断する（ステップＳ１８０４）。送信依頼命令文である場合（ステップＳ１８０４：Ｙｅｓ）、算出装置１００は、第３時間および第３エネルギー量の算出処理を行い（ステップＳ１８０５）、ステップＳ１８０６へ移行する。
【０１２９】
送信依頼命令文でない場合（ステップＳ１８０４：Ｎｏ）、算出装置１００は、処理依頼命令文であるか否かを判断する（ステップＳ１８０８）。処理依頼命令文である場合（ステップＳ１８０８：Ｙｅｓ）、算出装置１００は、第２時間および第２エネルギー量の算出処理を行う（ステップＳ１８０９）。そして、算出装置１００は、「第２累積時間＝第２累積時間＋算出した処理時間」を行い（ステップＳ１８１０）、「第２累積エネルギー量＝第２累積エネルギー量＋算出した第２エネルギー量」を行い（ステップＳ１８１１）、ステップＳ１７０５へ戻る。
【０１３０】
処理依頼命令文でない場合（ステップＳ１８０８：Ｎｏ）、算出装置１００は、ＣＰＵ４０１の処理時間とエネルギー量を算出する（ステップＳ１８１２）。たとえば、ＣＰＵ４０１の処理時間とエネルギー量は、ＩＳＳによって算出することが可能である。算出装置１００は、「第３累積時間＝第３累積時間＋ＣＰＵ４０１の処理時間」を行い（ステップＳ１８１３）、「第３累積エネルギー量＝第３累積エネルギー量＋算出したエネルギー量」を行い（ステップＳ１８１４）、ステップＳ１７０５へ戻る。
【０１３１】
未選択の命令文がないと判断された場合（ステップＳ１７０５：Ｎｏ）、算出装置１００は、「第２消費電力量＝累積第２エネルギー量／第２累積時間」を行い（ステップＳ１９０１）、第２累積時間と第２エネルギー量と第２消費電力量とをＧＰＵ４０２の識別情報に関連付けて出力する（ステップＳ１９０２）。
【０１３２】
算出装置１００は、「第１消費電力量＝第１累積エネルギー量／第１累積時間」を行い（ステップＳ１９０３）、第１累積時間と第１累積エネルギー量と第１消費電力量とをバス４０５の識別情報に関連付けて出力する（ステップＳ１９０４）。算出装置１００は、「第３消費電力量＝第３累積エネルギー量／第３累積時間」を行い（ステップＳ１９０５）、第３累積時間と第３累積エネルギー量と第３消費電力量とをＣＰＵ４０１の識別情報に関連付けて出力する（ステップＳ１９０６）。
【０１３３】
算出装置１００は、「合計時間＝第１累積時間＋第２累積時間」を行い（ステップＳ１９０７）、「合計エネルギー量＝第１累積エネルギー量＋第２累積エネルギー量」を行う（ステップＳ１９０８）。算出装置１００は、「合計電力＝第１消費電力量＋第２消費電力量＋第３消費電力量」を行い（ステップＳ１９０９）、合計時間と合計エネルギー量と合計消費電力量とを合計の識別情報に関連付けて出力し（ステップＳ１９１０）、一連の処理を終了する。
【０１３４】
図１９では、図１３に示した入出力画面に基づいて出力する例を示したが、出力させる情報については特に限定しない。
【０１３５】
図２０は、図１８で示した第１時間および第１エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置１００は、選択した命令文の記述内容から送信されるデータ量を特定して記憶し（ステップＳ２００１）、「第１時間＝第１時間に関する第１係数×送信されるデータ量」を行う（ステップＳ２００２）。算出装置１００は、「第１エネルギー量＝第１エネルギー量に関する第１係数×送信されるデータ量」を行い（ステップＳ２００３）、一連の処理を終了する。
【０１３６】
図２１は、実施例１にかかる図１８で示した第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置１００は、ＧＰＧＰＵプログラム５００からデータ処理の命令数を検出し（ステップＳ２１０１）、選択した命令文の記述内容から並列処理数を特定して記憶する（ステップＳ２１０２）。算出装置１００は、「第２時間＝第２時間に関する第２係数×検出したデータ処理の命令数×データ量／特定した並列処理数」を行う（ステップＳ２１０３）。ステップＳ２１０３でのデータ量は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量である。算出装置１００は、「第２エネルギー量＝第２エネルギー量に関する第２係数（特定した並列処理数）×検出したデータ処理の命令数×データ量／特定した並列処理数」を行い（ステップＳ２１０４）、一連の処理を終了する。ステップＳ２１０４でのデータ量は、記憶部に記憶されたデータ量の中で、選択された命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量である。
【０１３７】
図２２は、実施例２にかかる図１８で示した第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置１００は、処理依頼命令によってＧＰＵ４０２に依頼するデータ処理の記述を検出し（ステップＳ２２０１）、パターンマッチテーブル１６００を取得して記憶する（ステップＳ２２０２）。算出装置１００は、検出した記述の記述方式とパターンマッチテーブル１６００との各テンプレートとを比較する（ステップＳ２２０３）。
【０１３８】
算出装置１００は、一致するテンプレートがあるか否かを判断する（ステップＳ２２０４）。一致するテンプレートがある場合（ステップＳ２２０４：Ｙｅｓ）、算出装置１００は、テンプレート内のｃｏｎｓｔが処理依頼命令に指示される起動パラメータまたは数値かを判断する（ステップＳ２２０５）。起動パラメータまたは数値である場合（ステップＳ２２０５：Ｙｅｓ）、算出装置１００は、ループ回数に基づく第２時間および第２エネルギー量の算出処理を行い（ステップＳ２２０６）、一連の処理を終了する。
【０１３９】
一致するテンプレートがない場合（ステップＳ２２０４：Ｎｏ）、または起動パラメータおよび数値でない場合（ステップＳ２２０５：Ｎｏ）、算出装置１００は、データ量に基づく第２時間および第２エネルギー量の算出処理を行う（ステップＳ２２０７）。ここで、ステップＳ２２０７は、図２１に示した実施例１にかかる図１８で示した第２時間および第２エネルギー量の算出処理と同一であるため、詳細な説明を省略する。
【０１４０】
図２３は、実施例２にかかる図２２で示したループ回数に基づく第２時間および第２エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置１００は、一致するテンプレートに対応するループ回数式を取得し（ステップＳ２３０１）、処理依頼に指示される起動パラメータをループ回数式に与えてループ回数を特定する（ステップＳ２３０２）。
【０１４１】
算出装置１００は、ＧＰＧＰＵプログラム５００からデータ処理の命令数を検出し（ステップＳ２３０３）、選択した命令文の記述内容から並列処理数を特定して記憶する（ステップＳ２３０４）。算出装置１００は、「第２時間＝第２時間に関する第２係数×検出したデータ処理の命令数×特定したループ回数」を行う（ステップＳ２３０５）。そして、算出装置１００は、「第２エネルギー量＝第２エネルギー量に関する第２係数（特定した並列処理数）×検出したデータ処理の命令数×特定したループ回数」を行い（ステップＳ２３０６）、一連の処理を終了する。
【０１４２】
図２４は、図１８で示した第３時間および第３エネルギー量の算出処理の詳細な説明を示すフローチャートである。算出装置１００は、送信依頼命令文の記述内容から処理結果のデータ量を特定し（ステップＳ２４０１）、「第３時間＝第３時間に関する第３係数×特定したデータ量」を行う（ステップＳ２４０２）。そして、算出装置１００は、「第３エネルギー量＝第３エネルギー量に関する第３係数×特定したデータ量」を行い（ステップＳ２４０３）、一連の処理を終了する。
【０１４３】
以上実施例１で説明したように、算出装置１００は、ＧＰＵへの処理依頼命令文について、実行順が直前のデータを送信する送信命令文の記述内容から送信されるデータ量を特定し、特定結果に基づいてＧＰＵの推定の処理時間を算出する。また、算出装置１００は、この特定結果により、ＧＰＵの推定のエネルギー量を算出する。これにより、ＣＰＵのモデルとＧＰＵのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間や消費エネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
【０１４４】
また、算出装置１００は、プログラムの実行順で順に命令文を選択し、送信命令文の選択時に送信命令文の記述内容から送信されるデータ量を記憶部に記憶しておく。算出装置１００は、記憶部に記憶されたデータ量の中で、処理依頼命令文の記述内容から識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づき、ＧＰＵの推定の処理時間を算出する。また、算出装置１００は、当該最後に記憶されたデータ量に基づきＧＰＵの推定の消費エネルギー量を算出する。これにより、プログラムから処理依頼命令文の直前の送信命令文を検索しなくてよいため、処理時間の算出に要する時間を短縮することができる。
【０１４５】
また、算出装置１００は、ＧＰＵへのデータの送信命令文ついて、送信命令文の記述内容から送信されるデータ量を特定し、特定結果に基づいてＣＰＵからＧＰＵへのデータの推定の送信時間を算出する。また、算出装置は、この特定結果に基づいてＣＰＵからＧＰＵへのデータの送信に要する推定の消費エネルギー量を算出する。また、ＧＰＵへの処理結果の送信依頼命令文ついて、送信依頼命令文の記述内容から送信される処理結果のデータ量を特定し、特定結果に基づいてＧＰＵからＣＰＵへの処理結果の推定の送信時間を算出する。また、算出装置は、この特定結果に基づいてＧＰＵからＣＰＵへのデータの送信に要する推定の消費エネルギー量を算出する。これにより、ＣＰＵのモデルと、ＧＰＵのモデルと、ＣＰＵとＧＰＵを接続するバスのモデルと、などを含むシステムのモデルを作成しなくてよいため、処理時間や消費エネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
【０１４６】
また、算出装置１００は、ＣＰＵとＧＰＵを接続するバスに与える電源電圧値およびクロックの周波数の入力を受け付けて、受け付けた電源電圧値およびクロックの周波数を引数とする係数と、送信されるデータ量と、によって送信時間または消費エネルギー量を算出する。これにより、パスに与える電源電圧値とクロックの周波数が可変なシステムのモデルを作成しなくとも、電源電圧値やクロックの周波数の変化に応じた送信時間と消費エネルギー量を見積もることができる。
【０１４７】
また、算出装置１００は、ＧＰＵに供給される電源電圧値の入力を受け付けて、該最後に記憶されたデータ量と、受け付けた電源電圧値によって定まる電流量に基づく係数と、に基づいて、処理時間と消費エネルギー量を算出する。これにより、ＧＰＵに供給される電源電圧値が可変なシステムのモデルを作成しなくとも、電源電圧値やクロックの周波数の変化に応じた送信時間と消費エネルギー量を見積もることができる。
【０１４８】
また、算出装置１００は、ＧＰＵが複数のコアを有している場合に、算出装置１００は、処理依頼命令文の記述内容から使用するコアの数を特定する。そして、算出装置１００は、直前に記憶されたデータ量と、特定結果と、１つのコア当たりのリーク電流量とＧＰＵに与える電源電圧値によって定まる電流量に基づく係数と、に基づいて、ＧＰＵの処理時間または消費電力量を算出する。これにより、モデルを作成しなくとも、実行時に動作するコアの数に応じたＧＰＵの処理時間と消費電力量を、を見積もることができる。
【０１４９】
また、プログラムには、ループ処理を含むデータ処理の処理依頼命令文と、ループ処理を含まないデータ処理の処理依頼命令文と、が含まれる場合がある。この場合、算出装置は、ループ処理を含むデータ処理のＧＰＵへの依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果に基づいてＧＰＵの推定処理時間を算出する。また、算出装置は、この特定結果により、ＧＰＵの推定エネルギー量を算出する。これにより、ＣＰＵのモデルとＧＰＵのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間やエネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
【０１５０】
また、算出装置１００は、算出した処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出することにより、消費電力量の見積もりを効率よく行うことができる。
【０１５１】
また、算出装置１００は、命令文の各々について算出した前記処理時間、前記第１送信時間、または前記第２送信時間を合計することにより、プログラムの実行に要する処理時間の見積もりを効率よく行うことができる。
【０１５２】
また、算出装置１００は、処理依頼命令文によって依頼されるデータ処理を示すプログラムに命令文の数を取得し、実行順が処理依頼命令文の直前の送信命令文から特定された送信されるデータ量と、記憶した前記命令文の数と、に基づいて、処理時間または消費エネルギー量を算出する。これにより、１サイクル当たりに実行可能な命令数はＧＰＵの能力によって異なるため、命令文の数を引数として推定の処理時間または消費エネルギー量を算出することにより、算出精度を向上させることができる。
【０１５３】
以上実施例２で説明したように、算出装置１００は、ループ処理を含むデータ処理のＧＰＵへの依頼を指示する命令文により指定されたパラメータに基づいてループ回数を特定し、特定結果に基づいてＧＰＵの推定処理時間を算出する。また、算出装置１００は、この特定結果により、ＧＰＵの推定エネルギー量を算出する。これにより、ＣＰＵのモデルとＧＰＵのモデルなどを含むシステムのモデルを作成しなくてよいため、処理時間やエネルギー量の見積もりを短縮することができる。したがって、効率のよい見積もりを行うことができる。
【０１５４】
また、算出装置１００は、処理時間とエネルギー量に基づいて、消費電力量を算出することにより、消費電力量の見積もりを効率よく行うことができる。
【０１５５】
なお、本実施の形態で説明した算出方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本算出プログラムは、ディスクやフラッシュメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本算出プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１５６】
上述した実施例１および実施例２に関し、さらに以下の付記を開示する。
【０１５７】
（付記１）コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
【０１５８】
（付記２）前記コンピュータが、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出し、
算出した前記処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出する、
処理を実行することを特徴とする付記１に記載の算出方法。
【０１５９】
（付記３）コンピュータが、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行することを特徴とする算出方法。
【０１６０】
（付記４）前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第２記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第２記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記処理時間を算出することを特徴とする付記２に記載の算出方法。
【０１６１】
（付記５）前記プログラムは、前記データ処理の処理結果の送信を前記第２プロセッサへ依頼することを指示する送信依頼命令文であって、前記第２プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサへの前記データの送信に要する第１送信時間を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づくデータ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによる前記処理結果の送信に要する第２送信時間を算出する、
処理を実行することを特徴とする付記３または４に記載の算出方法。
【０１６２】
（付記６）前記コンピュータが、
前記第１プロセッサと前記第２プロセッサとを接続するバスに供給されるクロックの周波数の入力を受け付ける処理を実行し、
前記第１送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第１送信時間を算出し、
前記第２送信時間を算出する処理では、
選択した前記命令文の記述内容に基づく前記データ量と、前記バスの通信プロトコルおよび受け付けた前記周波数に基づく係数と、に基づいて、前記第２送信時間を算出することを特徴とする付記５に記載の算出方法。
【０１６３】
（付記７）前記コンピュータが、
前記第１プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする付記３〜６のいずれか一つに記載の算出方法。
【０１６４】
（付記８）前記第１プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記処理時間を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容に基づくコアの数と、前記コアのリーク電流量と前記第１プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記処理時間を算出することを特徴とする付記３〜７のいずれか一つに記載の算出方法。
【０１６５】
（付記９）前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第１プロセッサへ依頼することを指示する第１処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第１プロセッサへ依頼することを指示する第２処理依頼命令文と、を有し、
前記コンピュータが、
選択した前記命令文が前記第１処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記第１処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記処理時間を算出し、選択した前記命令文が前記第２処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記処理時間を算出することを特徴とする付記３〜８のいずれか一つに記載の算出方法。
【０１６６】
（付記１０）前記コンピュータが、
特定された前記データ量に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出し、
算出した前記処理時間と算出した前記エネルギー量とに基づいて、前記データ処理に要する消費電力量を算出する、
処理を実行することを特徴とする付記３に記載の算出方法。
【０１６７】
（付記１１）前記コンピュータが、
選択した前記命令文の各々について算出した前記処理時間、前記第１送信時間、または前記第２送信時間を合計する、
処理を実行することを特徴とする付記５または６に記載の算出方法。
【０１６８】
（付記１２）前記コンピュータが、
前記データ処理を前記第１プロセッサに指示するプログラムに含まれる命令文の数を取得して前記記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
特定された前記データ量と、記憶した前記命令文の数と、に基づいて、前記処理時間を算出することを特徴とする付記３に記載の算出方法。
【０１６９】
（付記１３）コンピュータが、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
【０１７０】
（付記１４）コンピュータが、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行することを特徴とする算出方法。
【０１７１】
（付記１５）前記コンピュータが、
記憶した前記プログラムから、前記プログラムが示す実行順に命令文を選択し、
選択した前記命令文が前記送信命令文である場合、選択した前記命令文の記述内容から特定されたデータ量と選択した前記命令文の記述内容から特定された識別情報とを関連付けて第２記憶部に記憶する処理を実行し、
前記処理時間を算出する処理では、
選択した前記命令文が前記処理依頼命令文である場合、前記第２記憶部に記憶されたデータ量の中で、選択した前記命令文の記述内容から特定された識別情報に関連付けられたデータ量のうち、最後に記憶されたデータ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記１４に記載の算出方法。
【０１７２】
（付記１６）前記プログラムは、前記データ処理の処理結果の送信を前記第２プロセッサへ依頼することを指示する送信依頼命令文であって、前記第２プロセッサから送信されるデータ量が記述内容によって特定可能な送信依頼命令文を含み、
前記コンピュータが、
選択した前記命令文が前記送信命令文である場合、さらに、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサへの前記データの送信に要するエネルギー量を算出し、
選択した前記命令文が前記送信依頼命令文である場合、選択した前記命令文の記述内容に基づく前記データ量に基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによる前記処理結果の送信に要するエネルギー量を算出する、
処理を実行することを特徴とする付記１４または１５に記載の算出方法。
【０１７３】
（付記１７）前記第１プロセッサと前記第２プロセッサとを接続するバスに供給されるクロックの周波数と、前記バスに供給される電源電圧の値と、の入力を受け付ける処理を実行し、
前記データの送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値によって定まる係数と、によって、前記データの送信に要するエネルギー量を算出し、
前記処理結果の送信に要するエネルギー量を算出する処理では、
選択した前記命令文の記述内容に基づくデータ量と、前記バスの通信プロトコルおよび受け付けた前記周波数と前記電源電圧の値とに基づく係数と、によって、前記処理結果の送信に要するエネルギー量を算出することを特徴とする付記１６に記載の算出方法。
【０１７４】
（付記１８）前記コンピュータが、
前記第１プロセッサに供給される電源電圧値の入力を受け付ける処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、受け付けた前記電源電圧値に基づく係数と、によって、前記データ処理に要するエネルギー量を算出することを特徴とする付記１４〜１７のいずれか一つに記載の算出方法。
【０１７５】
（付記１９）前記第１プロセッサは複数のコアを有し、
前記処理依頼命令文は、前記複数のコアのうち前記データ処理を依頼するコアの数を特定可能な記述内容であって、
前記データ処理に要するエネルギー量を算出する処理では、
前記最後に記憶された前記データ量と、選択した前記命令文の記述内容から特定されたコアの数と、前記コアのリーク電流量と前記第１プロセッサに与える電源電圧の値によって定まる電流量に基づく係数と、に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記１４〜１８のいずれか一つに記載の算出方法。
【０１７６】
（付記２０）前記プログラムは、所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して前記第１プロセッサへ依頼することを指示する第１処理依頼命令文と、前記ループ処理を含まないデータ処理を前記第１プロセッサへ依頼することを指示する第２処理依頼命令文と、を含み、
前記コンピュータが、
選択した前記命令文が前記第１処理依頼命令文である場合、選択した前記命令文によって指定された前記所定パラメータに基づいて、選択した前記命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって前記データ処理が実行された場合の前記ループ回数を特定する処理を実行し、
前記データ処理に要するエネルギー量を算出する処理では、
選択した前記命令文が前記第１処理依頼命令文である場合、特定した前記ループ回数に基づいて、前記データ処理に要するエネルギー量を算出し、選択した前記命令文が前記第２処理依頼命令文である場合、前記最後に記憶された前記データ量に基づいて、前記データ処理に要するエネルギー量を算出することを特徴とする付記１４〜１９のいずれか一つに記載の算出方法。
【０１７７】
（付記２１）前記コンピュータが、
選択した前記命令文の各々について算出した前記データ処理に要するエネルギー量、前記データの送信に要するエネルギー量、または前記処理結果の送信に要するエネルギー量を合計する、
処理を実行することを特徴とする付記１６または１７に記載の算出方法。
【０１７８】
（付記２２）コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行させることを特徴とする算出プログラム。
【０１７９】
（付記２３）コンピュータに、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理を実行させることを特徴とする算出プログラム。
【０１８０】
（付記２４）コンピュータに、
所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
【０１８１】
（付記２５）コンピュータに、
データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報を特定可能な前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理を実行させることを特徴とする算出プログラム。
【０１８２】
（付記２６）所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
前記取得部が記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
【０１８３】
（付記２７）データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する算出部と、
を有することを特徴とする算出装置。
【０１８４】
（付記２８）所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶する取得部と、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定する特定部と、
前記特定部が特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
【０１８５】
（付記２９）データを第１プロセッサへ送信することを指示する送信命令文であって、前記データを示す識別情報と送信されるデータ量とが記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文であって、前記データを示す識別情報が記述内容によって特定可能な処理依頼命令文と、を含むプログラムを取得して記憶部に記憶する取得部と、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムに含まれる前記送信命令文の中で、前記処理依頼命令文の記述内容から特定された識別情報と同一の識別情報が特定される前記送信命令文のうち、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する算出部と、
を有することを特徴とする算出装置。
【０１８６】
（付記３０）所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
【０１８７】
（付記３１）データを第１プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要する処理時間を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
【０１８８】
（付記３２）所定パラメータに基づきループ回数が定まるループ処理を含むデータ処理を、前記所定パラメータを指定して第１プロセッサへ依頼することを指示する処理依頼命令文を取得して記憶部に記憶し、
記憶した前記処理依頼命令文によって指定された前記所定パラメータに基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理の前記ループ回数を特定し、
特定した前記ループ回数に基づいて、前記処理依頼命令文が前記第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
【０１８９】
（付記３３）データを第１プロセッサへ送信することを指示する送信命令文であって、送信されるデータ量が記述内容によって特定可能な送信命令文と、前記データに基づくデータ処理を前記第１プロセッサへ依頼することを指示する処理依頼命令文と、を含むプログラムを取得して記憶部に記憶し、
記憶した前記プログラムのうちの前記処理依頼命令文について、前記プログラムが示す実行順が前記処理依頼命令文の直前である前記送信命令文の記述内容から特定されたデータ量に基づいて、前記処理依頼命令文が第２プロセッサによって実行された場合に前記第１プロセッサによって実行される前記データ処理に要するエネルギー量を算出する、
処理をコンピュータに実行させる算出プログラムを記録したことを特徴とする記録媒体。
【符号の説明】
【０１９０】
１００  算出装置
１０１，１０２  プログラム
４０１  ＣＰＵ
４０２  ＧＰＵ
４０５  バス
５００  ＧＰＧＰＵプログラム
Ｔ１  第１時間
Ｅ１  第１エネルギー量
Ｔ２  第２時間
Ｅ２  第２エネルギー量
Ｔ３  第３時間
Ｅ３  第３エネルギー量
ｃT1，ｃE1  第１係数
ｃT2，ｃE2  第２係数
ｃT3，ｃE3  第３係数
【図１】
2014194660.tif 000007
【図２】
2014194660.tif 000008
【図３】
2014194660.tif 000009
【図４】
2014194660.tif 000010
【図５】
2014194660.tif 000011
【図６】
2014194660.tif 000012
【図７】
2014194660.tif 000013
【図８】
2014194660.tif 000014
【図９】
2014194660.tif 000015
【図１０】
2014194660.tif 000016
【図１１】
2014194660.tif 000017
【図１２】
2014194660.tif 000018
【図１３】
2014194660.tif 000019
【図１４】
2014194660.tif 000020
【図１５】
2014194660.tif 000021
【図１６】
2014194660.tif 000022
【図１７】
2014194660.tif 000023
【図１８】
2014194660.tif 000024
【図１９】
2014194660.tif 000025
【図２０】
2014194660.tif 000026
【図２１】
2014194660.tif 000027
【図２２】
2014194660.tif 000028
【図２３】
2014194660.tif 000029
【図２４】
2014194660.tif 000030