IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 富士通株式会社の特許一覧

特開2024-50143量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置
<>
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図1
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図2
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図3
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図4
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図5
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図6
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図7
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図8A
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図8B
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図9
  • 特開-量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024050143
(43)【公開日】2024-04-10
(54)【発明の名称】量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240403BHJP
   G06N 10/80 20220101ALI20240403BHJP
【FI】
G06F9/50 150Z
G06N10/80
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022156808
(22)【出願日】2022-09-29
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】大辻 弘貴
(57)【要約】
【課題】量子シミュレーション実行時のノード群の利用効率を向上させること。
【解決手段】情報処理装置101は、量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部110を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定する。情報処理装置101は、第2の量子回路を用いた第2の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部120を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の第1の量子シミュレーションの予測実行時間を算出する。情報処理装置101は、ノード群における量子シミュレーションの割り当て状況に応じて、算出した予測実行時間に基づいて、複数のノード数から、第1の量子シミュレーションに割り当てるノード数を決定する。
【選択図】図1
【特許請求の範囲】
【請求項1】
量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
処理をコンピュータに実行させることを特徴とする量子シミュレーション実行時のノード割当プログラム。
【請求項2】
前記決定する処理は、
算出した前記予測実行時間に基づいて、前記複数のノード数のうち、前記第1の量子シミュレーションの実行開始時刻が最も早くなるノード数を、前記第1の量子シミュレーションに割り当てるノード数に決定する、ことを特徴とする請求項1に記載の量子シミュレーション実行時のノード割当プログラム。
【請求項3】
前記第2の記憶部は、前記第2の量子回路に関する誤差係数を記憶しており、
前記算出する処理は、
前記第2の記憶部に記憶された前記第2の量子回路に関する誤差係数に基づいて、算出した前記予測実行時間を補正し、
前記決定する処理は、
補正した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定し、
前記誤差係数は、前記第2の量子回路を用いた量子シミュレーションについて、第1のノード数を割り当てた場合の実測実行時間と、前記第1のノード数とは異なる第2のノード数を割り当てた場合の実測実行時間を用いて予測された、前記第1のノード数を割り当てた場合の予測実行時間との誤差を表す第1係数、および、前記第1のノード数と前記第2のノード数との誤差を表す第2係数を含む、
ことを特徴とする請求項1に記載の量子シミュレーション実行時のノード割当プログラム。
【請求項4】
前記算出する処理は、
前記第1の量子回路と前記第2の量子回路との通信に関する特徴量の誤差に基づいて、算出した前記予測実行時間を補正し、
前記決定する処理は、
補正した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
ことを特徴とする請求項1に記載の量子シミュレーション実行時のノード割当プログラム。
【請求項5】
前記量子回路の通信に関する特徴量は、前記量子シミュレーションの実行に要するノード間の通信量を表す、ことを特徴とする請求項1に記載の量子シミュレーション実行時のノード割当プログラム。
【請求項6】
決定した前記ノード数のノードを割り当てて前記第1の量子シミュレーションを実行させる、処理を前記コンピュータに実行させることを特徴とする請求項1に記載の量子シミュレーション実行時のノード割当プログラム。
【請求項7】
前記第2の記憶部に前記第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されているか否かを判断する、処理を前記コンピュータに実行させ、
前記算出する処理は、
前記過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されている場合、前記第2の記憶部に記憶された当該ノード数別の実測実行時間に基づいて、前記複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出する、ことを特徴とする請求項1~6のいずれか一つに記載の量子シミュレーション実行時のノード割当プログラム。
【請求項8】
量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
処理をコンピュータが実行することを特徴とする量子シミュレーション実行時のノード割当方法。
【請求項9】
量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置に関する。
【背景技術】
【0002】
近年、量子コンピュータの登場に備えて、従来のコンピュータ上でシミュレーションを行って、量子計算向けの技術開発が行われている。量子シミュレーションは、量子状態を通常のコンピュータ上で再現し、量子ビットの相互作用などを計算することにより、量子計算を行うものである(state-vector方式)。
【0003】
関連する先行技術としては、例えば、複数のノードを用いた並列計算によって実行されるプログラムを複数のジョブで実行し、一定経過時間ごとに各ジョブの計算結果を解析して、解析結果から得られる各ジョブの残り実行時間に基づいて全ジョブの終了が揃うように各ジョブの並列度を調整するものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2013-140490号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、複数のユーザで共有されるような計算機(ノード)群において、複数の量子シミュレーションを実行するにあたり、計算機群を効率よく利用することが難しい。
【0006】
一つの側面では、本発明は、量子シミュレーション実行時のノード群の利用効率を向上させることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様では、量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、量子シミュレーション実行時のノード割当プログラムが提供される。
【発明の効果】
【0008】
本発明の一側面によれば、量子シミュレーション実行時のノード群の利用効率を向上させることができるという効果を奏する。
【図面の簡単な説明】
【0009】
図1図1は、量子シミュレーション実行時のノード割当方法の一実施例を示す説明図である。
図2図2は、量子シミュレーションのスケールアウト例を示す説明図である。
図3図3は、スケジューリングシステム300のシステム構成例を示す説明図である。
図4図4は、スケジューリング装置301のハードウェア構成例を示すブロック図である。
図5図5は、実行時間記録テーブル320の記憶内容の一例を示す説明図である。
図6図6は、回路特徴量テーブル330の記憶内容の一例を示す説明図である。
図7図7は、スケジューリング装置301の機能的構成例を示すブロック図である。
図8A図8Aは、予測実行時間テーブル800の記憶内容の一例を示す説明図(その1)である。
図8B図8Bは、予測実行時間テーブル800の記憶内容の一例を示す説明図(その2)である。
図9図9は、スケジューリング装置301の量子シミュレーション実行時のノード割当処理手順の一例を示すフローチャート(その1)である。
図10図10は、スケジューリング装置301の量子シミュレーション実行時のノード割当処理手順の一例を示すフローチャート(その2)である。
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかる量子シミュレーション実行時のノード割当プログラム、量子シミュレーション実行時のノード割当方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態)
図1は、量子シミュレーション実行時のノード割当方法の一実施例を示す説明図である。図1において、情報処理装置101は、量子シミュレーションに割り当てるノード数を決定するコンピュータである。ノードは、通常のコンピュータ(計算機)、いわゆる、古典コンピュータである。
【0012】
量子シミュレーションは、量子ビットの状態をコンピュータ(古典コンピュータ)のメモリ上に保持することで、量子計算をシミュレーションする。量子シミュレーションでは、シミュレーションする対象の量子ビットが1増えると、必要なメモリ量が倍になる。このため、必要な量子ビット数が多い場合、複数の計算機を並列動作させて、量子シミュレーションが実行される。必要な量子ビット数は、例えば、用途によって変化する。
【0013】
また、量子シミュレーションを行う計算機群は、複数のユーザで共有することが多い。複数のユーザで計算機群を共有するシステムでは、各ユーザに対して必要な台数の計算機を必要な時間割り当てることになる。また、できる限り多くの計算機が稼働している状況が、設備の利用効率上望ましい。
【0014】
従来、スーパーコンピュータなどの超並列計算機には、例えば、複数のユーザで共有するためのジョブスケジューラが備わっている。ユーザが計算機を利用する場合には、一連のプログラムの動作を記述した「ジョブ」を投入する。ジョブはキューに積まれ、計算機が空き次第実行される。ジョブには、占有ノード数と見込みの処理時間が設定される。
【0015】
量子シミュレーションも実態としては並列計算機の上で動作するプログラムである。このため、量子シミュレーションのスケジューリングに、既存のスケジューラが使用されることがある。既存のスケジューラでは、例えば、投入されたジョブを投入順に実行するFIFO(First In First Out)方式でスケジューリングが行われる。
【0016】
また、既存のスケジューラには、後に投入されたジョブを、先に投入されたジョブよりも先に実行するためのバックフィル(Back Fill)と呼ばれる機能がある。バックフィルでは、優先度の低いジョブが、優先度の高いジョブを邪魔しない場合に限って、横入りして実行される。
【0017】
例えば、投入順(優先度の高い順)にジョブを実行すると、ジョブの占有ノード数によっては、計算機群のすべてを使用することができず、一部の計算機が待機(空き)状態となることがある。そのような、一部の計算機が待機状態となっている時間を隙間時間という。バックフィルによれば、ジョブの予測完了時間(見込みの処理時間)をもとに、現状の隙間時間において実行が可能と判断されると、その隙間時間にジョブを挿入して処理することができる。
【0018】
なお、予測完了時間までに処理が終わらない場合、その処理は強制終了される。このため、予測の精度が低い場合には、例えば、予測完了時間を長めに設定することが行われる。一方で、予測完了時間を長くするほど、バックフィルは行われにくくなるため、むやみに長くするべきではない。
【0019】
バックフィルは、計算機群の利用効率を上げるために有効な機能といえる。しかしながら、量子シミュレーションは、用途によっては通常のスーパーコンピュータなどと比べると、大規模の利用が生じやすい。大規模の利用とは、例えば、計算機群のすべてを使用して量子シミュレーションを実行することである(全体利用)。
【0020】
このため、量子シミュレーションは、バックフィル可能な隙間時間に制約が生じる傾向がある。したがって、既存のスケジューラでは、複数の量子シミュレーションを実行するにあたり、バックフィルが効果的に行われず、量子シミュレーション実行時の計算機群の利用効率を高めることが難しい。
【0021】
ここで、並列アプリケーションは、処理内容によってスケーラビリティが変化する。スケーラビリティは、例えば、使用する計算機の台数を増やした際の性能の向上度合いである。例えば、10倍の計算機台数を使用した際に8倍の性能になった場合、80%のスケーラビリティといえる。
【0022】
量子シミュレーションは、量子回路内における相互作用の計算を行うものであり、定義された回路に応じて通信パターンなどが定まる。このため、量子シミュレーションは、通常のアプリケーションに比べて、スケーラビリティを予測しやすい。
【0023】
例えば、通常のアプリケーションは、計算機台数を変えると、問題(計算)を分割する境界が変化するなどして、特性が読みにくい傾向がある。一方、量子シミュレーションは、入力の変化などではなく、与えられた量子回路に依存するため、量子回路ごとにスケーラビリティを予測しやすい。
【0024】
そこで、本実施の形態では、量子シミュレーションの並列実行におけるスケーラビリティが量子回路の構成に依存することを利用して、量子シミュレーション実行時のノード群の利用効率を向上させるノード割当方法について説明する。ここで、情報処理装置101の処理例について説明する。
【0025】
(1)情報処理装置101は、第1の記憶部110を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定する。ここで、第1の記憶部110は、量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する。
【0026】
第1の量子シミュレーションは、実行対象となる量子シミュレーションであり、例えば、ユーザから実行要求された量子シミュレーションである。量子回路は、量子計算を行うための計算モデルである。量子回路は、量子シミュレーションでどのような処理(例えば、ある分子のエネルギーを求める)をするのかによって決まる。
【0027】
量子シミュレーションは、量子回路に応じて通信パターンなどが定まるため、使用するノード数を増減させた場合の性能の変化度合いを予測しやすい。また、ある量子回路と通信パターンなどが類似する量子回路は、ある量子回路を用いた量子シミュレーションとスケーラビリティが似ているといえる。
【0028】
このため、情報処理装置101は、例えば、第1の記憶部110を参照して、スケーラビリティが既知の量子回路のうち、第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定する。なお、第1の量子回路の通信に関する特徴量は、例えば、第1の記憶部110に記憶されていてもよく、また、第1の量子回路(計算モデル)から抽出されてもよい。
【0029】
特徴量は、量子回路の通信に関する特徴を表す指標値である。例えば、通信パターンによって、量子シミュレーションの実行に要するノード間の通信量が変化する傾向がある。このため、ある2つの量子シミュレーションについて、実行に要するノード間の通信量が似ていると、通信パターンが似ているといえる。
【0030】
そこで、特徴量は、量子シミュレーションの実行に要するノード間の通信量(の多さ)を表すものであってもよい。より詳細に説明すると、例えば、特徴量は、特定のノード数で量子シミュレーションを実行する場合のノード間の通信量であってもよい。また、特徴量は、複数のノード数それぞれのノード数について、当該ノード数で量子シミュレーションを実行する場合のノード間の通信量であってもよい。また、特徴量は、複数のノード数それぞれのノード数で量子シミュレーションを実行する場合のノード間の通信量の平均値であってもよい。なお、特徴量は、実際に量子シミュレーションを実行しなくても、量子回路(計算モデル)の内容を解析することで抽出可能である。
【0031】
図1の例では、第1の量子シミュレーションに用いる第1の量子回路q1と通信に関する特徴量が類似する第2の量子回路q2が特定された場合を想定する。
【0032】
(2)情報処理装置101は、第2の記憶部120を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の第1の量子シミュレーションの予測実行時間を算出する。ここで、複数のノード数は、第1の量子シミュレーションに利用可能なノード群のノード数(最大ノード数)に応じて任意に設定される。
【0033】
例えば、最大ノード数を「5」とすると、複数のノード数は「1,2,3,4,5」であってもよい。また、最大ノード数を「10」とすると、複数のノード数は「1,2,4,6,8,10」であってもよい。また、最大ノード数を「32」とすると、複数のノード数は「1,2,4,8,16,32」であってもよい。
【0034】
また、第2の記憶部120は、第2の量子回路を用いた第2の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する。実測実行時間は、あるノード数のノードを第2の量子シミュレーションに割り当てて、第2の量子シミュレーションを実行した場合に実測された実行時間である。第2の記憶部120には、ノード数と実測実行時間との組が2組以上記憶される。
【0035】
第1の量子シミュレーションの予測実行時間は、例えば、実測実行時間をもとに線形近似や曲線近似によって算出される。ここで、複数のノード数を「1,2,4,8,16,32」とする。また、第2の記憶部120に、第2の量子シミュレーションに2台のノードを割り当てたときの実測実行時間と、第2の量子シミュレーションに8台のノードを割り当てたときの実測実行時間とが記憶されているとする。
【0036】
この場合、情報処理装置101は、ノード数「2」の実測実行時間と、ノード数「8」の実測実行時間とから、線形近似や曲線近似によって、各ノード数「1,2,4,8,16,32」を割り当てた場合の第1の量子シミュレーションの予測実行時間を算出する。
【0037】
図1の例では、予測実行時間130が算出された場合を想定する。予測実行時間130は、各ノード数「1,2,4,8,16,32」を割り当てた場合の第1の量子シミュレーションの予測実行時間を示す。
【0038】
(3)情報処理装置101は、ノード群における量子シミュレーションの割り当て状況に応じて、算出した予測実行時間に基づいて、複数のノード数から、第1の量子シミュレーションに割り当てるノード数を決定する。この際、情報処理装置101は、例えば、第1の量子シミュレーションの実行開始時刻が早くなるように、第1の量子シミュレーションに割り当てるノード数を決定する。
【0039】
ここで、ノード群は、第1の量子シミュレーションに利用可能な計算機群(例えば、図3に示すノードN1~Nn)である。また、第1の量子シミュレーションの実行開始時刻は、第1の量子シミュレーションの実行が開始される予定時刻である。第1の量子シミュレーションの実行開始時刻は、ノード群における他の量子シミュレーション(ジョブ)の割り当て状況に応じて変化する。
【0040】
例えば、他の量子シミュレーションの割り当て状況によって、隙間時間が生じることがある。第1の量子シミュレーションが隙間時間に収まる場合、バックフィルが行われ、隙間時間に収まらない場合に比べて実行開始時刻が早くなる。しかし、第1の量子シミュレーションに割り当てるノード数と予測実行時間によっては、第1の量子シミュレーションが隙間時間に収まる場合と隙間時間に収まらない場合がある。
【0041】
そこで、情報処理装置101は、例えば、第1の量子シミュレーションに割り当てるノード数と予測実行時間との組をスケジューラ102に通知して、第1の量子シミュレーションの実行開始時刻を問い合わせる。スケジューラ102は、ノード群の利用状況に応じて、量子シミュレーションのスケジューリングを行う。
【0042】
例えば、スケジューラ102は、既存のジョブスケジューラと同様の機能を有する。具体的には、例えば、スケジューラ102は、投入された量子シミュレーション(ジョブ)を投入順に実行するFIFO方式でスケジューリングを行う。また、スケジューラ102は、バックフィルの機能を有する。
【0043】
具体的には、例えば、情報処理装置101は、予測実行時間130を参照して、複数のノード数「1,2,4,8,16,32」それぞれのノード数について、当該ノード数と予測実行時間との組をスケジューラ102に通知する。これにより、情報処理装置101は、ノード数と予測実行時間との組ごとに、ノード群における量子シミュレーションの割り当て状況に応じた、第1の量子シミュレーションの実行開始時刻を問い合わせる。そして、情報処理装置101は、複数のノード数「1,2,4,8,16,32」のうち、第1の量子シミュレーションの実行開始時刻が最も早くなるノード数を、第1の量子シミュレーションに割り当てるノード数に決定してもよい。
【0044】
図1の例では、複数のノード数「1,2,4,8,16,32」のうち、第1の量子シミュレーションの実行開始時刻が最も早くなるノード数「16」が、第1の量子シミュレーションに割り当てるノード数に決定された場合を想定する。この場合、情報処理装置101は、決定したノード数「16」のノードを割り当てて、第1の量子シミュレーションを実行させる。
【0045】
具体的には、例えば、情報処理装置101は、決定したノード数「16」の使用をスケジューラ102に指示して、第1の量子シミュレーション(ジョブ)を投入する。例えば、第1の量子シミュレーションの実行要求において指定されたノード数が「4」であったとする。この場合、第1の量子シミュレーションに使用するノード数が「4」から「16」にスケールアウトされて、第1の量子シミュレーションが実行される。
【0046】
なお、スケジューラ102は、情報処理装置101により実現されてもよく、また、情報処理装置101とは異なる他のコンピュータにより実現されてもよい。
【0047】
このように、情報処理装置101によれば、量子シミュレーションの並列実行におけるスケーラビリティが量子回路の構成に依存することを利用して、第1の量子シミュレーションのスケーラビリティ特性(複数のノード数それぞれのノード数についての予測実行時間)を予測することができる。また、情報処理装置101によれば、第1の量子回路を用いた量子シミュレーションの実績がないような場合であっても、第1の量子回路と同様のスケーラビリティ特性を有する第2の量子回路を用いた量子シミュレーションの実績を利用して、第1の量子シミュレーションのスケーラビリティ特性を予測することができる。
【0048】
また、情報処理装置101によれば、予測したスケーラビリティ特性をもとに、第1の量子シミュレーションの実行開始時刻が早くなるように、第1の量子シミュレーションに割り当てるノード数を決定することができる。これにより、情報処理装置101は、バックフィル率を高めて、量子シミュレーション実行時のノード群の利用効率を向上させることができる。
【0049】
ここで、図2を用いて、量子シミュレーションのスケールアウト例について説明する。
【0050】
図2は、量子シミュレーションのスケールアウト例を示す説明図である。図2において、グラフ200は、第1の量子シミュレーションに割り当て可能なノード群における他の量子シミュレーション(ジョブ)割り当て状況を示す。縦軸は、ノード数を示す。横軸は、時間の経過を示す。
【0051】
ここでは、第1の量子シミュレーションを「ジョブJ4」と表記する。ジョブJ1~J3は、第1の量子シミュレーションとは異なる他の量子シミュレーションをそれぞれ表す。図2中、各ジョブJ1~J4内の数字は、投入順を示す。投入順が早いほど、優先度が高い。
【0052】
ここで、ジョブJ1は、10台のノードを使用して実行されるとする(全体利用)。ジョブJ2は、2台のノードを使用して実行されるとする。ジョブJ3は、10台のノードを使用して実行されるとする(全体利用)。この結果、時刻t1から時刻t2の間に、隙間時間210が生じている。
【0053】
隙間時間210は、8台のノードが100秒間、空き状態であることを示す。隙間時間210のサイズは、「ノード数8×100秒」である。ここでは、ジョブJ4(第1の量子シミュレーション)の実行要求において、ノード数「3」が指定されたとする。ノード数「3」は、例えば、メモリ使用量によって決まる、ジョブJ4の実行に最低限必要となるノード数である。
【0054】
また、ノード数「3」のときのジョブJ4の予測実行時間を「150秒」とする。この場合、隙間時間210にジョブ4が収まらない。したがって、既存のスケジューラでは、バックフィルが行われず、ジョブJ4の実行開始時刻は、例えば、ジョブJ3の実行が完了する時刻t3となる。
【0055】
これに対して、情報処理装置101は、ジョブJ4(第1の量子シミュレーション)を実行するにあたり、ノード数別のジョブJ4の予測実行時間を算出する。そして、情報処理装置101は、算出した予測実行時間に基づいて、ジョブJ4の実行開始時刻が早くなるように、ジョブJ4に割り当てるノード数を決定する。
【0056】
ここでは、8台のときのジョブJ4の予測実行時間を「90秒」とする。この場合、ジョブJ4に使用するノード数が「3」から「8」にスケールアウトすることによって、予測実行時間が「150秒」から「90秒」に短縮され(縦横比が変形)、隙間時間210にジョブ4が収まるようになる。
【0057】
このため、スケジューラ102から、ノード数「8」および予測実行時間「90秒」のときの実行開始時刻t1が得られる。実行開始時刻t1は、ノード数「3」のときのジョブJ4の実行開始時刻t3よりも早くなっている。
【0058】
情報処理装置101は、ノード数「8」を、ジョブJ4に割り当てるノード数に決定する。この結果、例えば、情報処理装置101がノード数「8」の使用をスケジューラ102に指示してジョブJ4を投入すると、バックフィルが行われてジョブJ4がジョブJ3を追い越して実行される。
【0059】
(スケジューリングシステム300のシステム構成例)
つぎに、図1に示した情報処理装置101を含むスケジューリングシステム300のシステム構成例について説明する。ここでは、図1に示した情報処理装置101を、スケジューリングシステム300内のスケジューリング装置301に適用した場合を例に挙げて説明する。スケジューリングシステム300は、例えば、量子シミュレーションを実行するスーパーコンピュータに適用される。
【0060】
図3は、スケジューリングシステム300のシステム構成例を示す説明図である。図3において、スケジューリングシステム300は、スケジューリング装置301と、クライアント装置302と、ノード群N1~Nn(n:2以上の自然数)と、を含む。スケジューリングシステム300において、スケジューリング装置301、クライアント装置302およびノード群N1~Nnは、有線または無線のネットワーク310を介して接続される。ネットワーク310は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0061】
以下の説明では、ノード群N1~Nnのうちの任意のノードを「ノードNi」と表記する場合がある(i=1,2,…,n)。
【0062】
ここで、スケジューリング装置301は、実行時間記録テーブル320および回路特徴量テーブル330を有し、量子シミュレーションに割り当てるノード数を決定するコンピュータである。実行時間記録テーブル320および回路特徴量テーブル330の記憶内容については、図5および図6を用いて後述する。
【0063】
また、スケジューリング装置301は、スケジューラSCを有する。スケジューラSCは、量子シミュレーションのスケジューリングを行うソフトウェアである。具体的には、例えば、スケジューラSCは、投入された量子シミュレーション(ジョブ)を投入順に実行するFIFO方式でスケジューリングを行う。また、スケジューラSCは、バックフィルの機能を有する。図1に示したスケジューラ102は、例えば、スケジューラSCに対応する。スケジューリング装置301は、例えば、サーバである。
【0064】
クライアント装置302は、スケジューリングシステム300のユーザが使用するコンピュータである。例えば、ユーザは、クライアント装置302からスケジューリング装置301にアクセスして、量子シミュレーション(ジョブ)の実行要求などを行う。クライアント装置302は、例えば、PC(Personal Computer)、タブレットPCなどである。
【0065】
ノード群N1~Nnは、量子シミュレーションの割当先となるコンピュータである。ノード群N1~Nnそれぞれの性能は、例えば、同一である。各ノードN1~Nnは、例えば、サーバである。
【0066】
なお、ここではスケジューリング装置301がスケジューラSCを有することにしたが、これに限らない。例えば、スケジューラSCは、スケジューリング装置301とネットワーク310を介して接続可能な他のコンピュータが有していてもよい。また、スケジューリング装置301は、クライアント装置302により実現されてもよい。また、スケジューリングシステム300には、複数のクライアント装置302が含まれていてもよい。
【0067】
(スケジューリング装置301のハードウェア構成例)
つぎに、スケジューリング装置301のハードウェア構成例について説明する。
【0068】
図4は、スケジューリング装置301のハードウェア構成例を示すブロック図である。図4において、スケジューリング装置301は、CPU(Central Processing Unit)401と、メモリ402と、ディスクドライブ403と、ディスク404と、通信I/F(Interface)405と、可搬型記録媒体I/F406と、可搬型記録媒体407と、を有する。また、各構成部は、バス400によってそれぞれ接続される。
【0069】
ここで、CPU401は、スケジューリング装置301の全体の制御を司る。CPU401は、複数のコアを有していてもよい。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0070】
ディスクドライブ403は、CPU401の制御に従ってディスク404に対するデータのリード/ライトを制御する。ディスク404は、ディスクドライブ403の制御で書き込まれたデータを記憶する。ディスク404としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0071】
通信I/F405は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して外部のコンピュータ(例えば、図3に示したクライアント装置302、ノード群N1~Nn)に接続される。そして、通信I/F405は、ネットワーク310と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F405には、例えば、モデムやLANアダプタなどを採用することができる。
【0072】
可搬型記録媒体I/F406は、CPU401の制御に従って可搬型記録媒体407に対するデータのリード/ライトを制御する。可搬型記録媒体407は、可搬型記録媒体I/F406の制御で書き込まれたデータを記憶する。可搬型記録媒体407としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0073】
なお、スケジューリング装置301は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有してもよい。また、スケジューリング装置301は、上述した構成部のうち、例えば、可搬型記録媒体I/F406、可搬型記録媒体407を有さなくてもよい。また、図3に示したクライアント装置302およびノード群N1~Nnについても、スケジューリング装置301と同様のハードウェア構成により実現することができる。ただし、クライアント装置302は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
【0074】
(実行時間記録テーブル320および回路特徴量テーブル330の記憶内容)
つぎに、図5および図6を用いて、スケジューリング装置301が有する実行時間記録テーブル320および回路特徴量テーブル330の記憶内容について説明する。実行時間記録テーブル320および回路特徴量テーブル330は、例えば、図4に示したメモリ402、ディスク404などの記憶装置により実現される。
【0075】
図5は、実行時間記録テーブル320の記憶内容の一例を示す説明図である。図5において、実行時間記録テーブル320は、量子回路ID、使用計算機台数、実行時間および誤差係数のフィールドを有し、各フィールドに情報を設定することで、実行時間情報(例えば、実行時間情報500-1~500-3)をレコードとして記憶する。
【0076】
ここで、量子回路IDは、量子シミュレーションに用いられる量子回路を一意に識別する識別子である。使用計算機台数は、量子シミュレーションに使用されたノード(計算機)の台数である。実行時間は、量子シミュレーションの実行にかかった時間(実測値)である(単位:[秒])。
【0077】
誤差係数は、予測実行時間を補正する際に用いる係数である。誤差係数は、予測誤差量と実測処理時間誤差とを含む。予測誤差量は、量子シミュレーション(ジョブ)を投入する際に指定したノード数(計算機台数)と実測済み計算機台数との比率を表す。実測処理時間誤差は、予測実行時間と実測実行時間との誤差を表す。N/Aは、該当なしを示す。
【0078】
図6は、回路特徴量テーブル330の記憶内容の一例を示す説明図である。図6において、回路特徴量テーブル330は、量子回路IDおよび特徴量のフィールドを有し、各フィールドに情報を設定することで、回路特徴量情報(例えば、回路特徴量情報600-1,600-2)をレコードとして記憶する。
【0079】
ここで、量子回路IDは、量子シミュレーションに用いられる量子回路を一意に識別する識別子である。特徴量は、量子回路の通信に関する特徴量である。特徴量は、1または複数の要素によって表される。要素は、例えば、量子回路を用いた量子シミュレーションの実行に要するノード間の通信量(の多さ)を表す値である。
【0080】
また、要素は、量子シミュレーション内で実行される処理間の依存度合い、例えば、各ノードで実行されるプロセス間の依存度合いを表す値であってもよい。なお、処理間の依存関係とは、あるノードにおいて、他のノードでの処理結果を受信しないと、次の処理に進めないといった関係である。
【0081】
(スケジューリング装置301の機能的構成例)
図7は、スケジューリング装置301の機能的構成例を示すブロック図である。図7において、スケジューリング装置301は、受付部701と、特定部702と、算出部703と、決定部704と、実行部705と、記録部706と、記憶部710と、を含む。受付部701~記録部706は制御部となる機能であり、具体的には、例えば、図4に示したメモリ402、ディスク404、可搬型記録媒体407などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、または、通信I/F405により、その機能を実現する。各機能部の処理結果は、例えば、メモリ402、ディスク404などの記憶装置に記憶される。また、記憶部710は、メモリ402、ディスク404などの記憶装置により実現される。具体的には、例えば、記憶部710は、図5に示した実行時間記録テーブル320と、図6に示した回路特徴量テーブル330とを記憶する。
【0082】
受付部701は、量子シミュレーション要求を受け付ける。ここで、量子シミュレーション要求は、量子シミュレーションの実行を要求するものである。量子シミュレーション要求は、例えば、量子回路ID、指定ノード数を含む。量子回路IDは、量子シミュレーションに用いる量子回路を一意に識別する識別子である。
【0083】
指定ノード数は、ユーザによって指定された、量子シミュレーションに割り当てるノード数である。指定ノード数は、例えば、量子シミュレーションに必要なメモリ量に応じて指定される。なお、量子シミュレーション要求には、指定予測実行時間が含まれていてもよい。指定予測実行時間は、ユーザによって指定された、量子シミュレーションの実行にかかる予測実行時間である。
【0084】
具体的には、例えば、受付部701は、図3に示したクライアント装置302から受信することにより、量子シミュレーション要求を受け付ける。また、受付部701は、不図示の入力装置を用いたユーザの操作入力により、量子シミュレーション要求を受け付けてもよい。
【0085】
以下の説明では、量子シミュレーション要求により実行を要求された量子シミュレーション(第1の量子シミュレーション)を「実行対象の量子シミュレーション」と表記する場合がある。また、実行対象の量子シミュレーションに用いる量子回路を「第1の量子回路」と表記する場合がある。
【0086】
特定部702は、記憶部710を参照して、実行対象の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定する。記憶部710は、量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する。
【0087】
特徴量は、例えば、量子シミュレーションの実行に要するノード間の通信量(の多さ)を表す指標値を含む。また、特徴量は、量子シミュレーションにおいて各ノードで実行される処理間の依存度合いを表すものであってもよい。特徴量は、例えば、量子回路(計算モデル)の内容を解析することによって抽出することができる。
【0088】
具体的には、例えば、特定部702は、図5に示した回路特徴量テーブル330を参照して、第1の量子回路と他の量子回路との通信に関する特徴量の誤差を算出する。特徴量の誤差は、例えば、特徴量同士の距離(ユークリッド距離、コサイン類似度など)によって表すことができる。
【0089】
第1の量子回路の通信に関する特徴量は、例えば、回路特徴量テーブル330に記憶されていてもよい。また、第1の量子回路の通信に関する特徴量は、特定部702が第1の量子回路の内容を解析することによって抽出してもよい。回路特徴量テーブル330は、図1に示した第1の記憶部110の一例である。
【0090】
より詳細に説明すると、例えば、特定部702は、第1の量子回路の通信に関する特徴量と、回路特徴量テーブル330内の他の量子回路の通信に関する特徴量とを比較して、特徴量同士の距離を算出する。そして、特定部702は、算出した距離が最も小さい他の量子回路(類似度が最も高い量子回路)を、第2の量子回路として特定する。また、特定部702は、算出した距離が閾値以下の他の量子回路を、第2の量子回路として特定してもよい。
【0091】
算出部703は、記憶部710を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出する。記憶部710は、第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する。
【0092】
複数のノード数は、実行対象の量子シミュレーションに割り当て可能な最大ノード数に応じて任意に設定される。割り当て可能な最大ノード数は、例えば、図2に示したノード群N1~Nnのノード数に相当する。例えば、「n=32」とすると、複数のノード数は「1,2,4,8,16,32」であってもよい。
【0093】
以下の説明では、複数のノード数を「ノード数#1~#m」と表記し、ノード数#1~#mのうちの任意のノード数を「ノード数#i」と表記する場合がある(i=1,2,…,m)。
【0094】
具体的には、例えば、算出部703は、図5に示した実行時間記録テーブル320から、特定された第2の量子回路の量子回路IDに対応する実行時間情報を取得する。この際、算出部703は、第2の量子回路の量子回路IDに対応する実行時間情報を2以上取得する。
【0095】
取得された実行時間情報が示す使用計算機台数と実行時間は、第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を示す。例えば、実行時間情報500-1(図5参照)は、量子回路ID「0x0000」の量子回路を用いた量子シミュレーションに4台のノードを割り当てたときの実測実行時間「300[秒]」を示す。実行時間記録テーブル320は、図1に示した第2の記憶部120の一例である。
【0096】
そして、算出部703は、取得した実行時間情報それぞれの使用計算機台数と実行時間とに基づいて、ノード数#1~#mの各ノード数#iについて、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出する。実行対象の量子シミュレーションの予測実行時間は、例えば、既存の線形近似や曲線近似によって算出される。
【0097】
また、特定部702は、記憶部710に第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されているか否かを判断してもよい。具体的には、例えば、特定部702は、実行時間記録テーブル320から、第1の量子回路の量子回路IDに対応する実行時間情報を検索する。第1の量子回路の量子回路IDは、例えば、量子シミュレーション要求に含まれる。
【0098】
ここで、2以上の実行時間情報が検索された場合、特定部702は、過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されていると判断する。一方、2以上の実行時間情報が検索されなかった場合、特定部702は、過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されていないと判断する。
【0099】
そして、特定部702は、過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されていない場合に、実行対象の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定してもよい。
【0100】
これにより、スケジューリング装置301は、実行対象の量子シミュレーションと同じ量子回路(第1の量子回路)を用いた過去の量子シミュレーションの実績がない場合に、第1の量子回路と特徴量が類似する第2の量子回路を用いた量子シミュレーションの実績を利用して、実行対象の量子シミュレーションの予測実行時間を算出することができる。
【0101】
また、算出部703は、第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されている場合、記憶部710に記憶された当該ノード数別の実測実行時間に基づいて、各ノード数#iについて、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出してもよい。
【0102】
具体的には、例えば、算出部703は、実行時間記録テーブル320から、第1の量子回路の量子回路IDに対応する実行時間情報を取得する。この際、算出部703は、第1の量子回路の量子回路IDに対応する実行時間情報を2以上取得する。取得された実行時間情報が示す使用計算機台数と実行時間は、第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を示す。
【0103】
そして、算出部703は、取得した実行時間情報それぞれの使用計算機台数と実行時間とに基づいて、各ノード数#iについて、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出する。
【0104】
これにより、スケジューリング装置301は、実行対象の量子シミュレーションと同じ量子回路(第1の量子回路)を用いた過去の量子シミュレーションの実績がある場合には、その実績を利用して、実行対象の量子シミュレーションの予測実行時間を算出することができる。
【0105】
算出された実行対象の量子シミュレーションの予測実行時間は、例えば、ノード数と対応付けて、図8Aおよび図8Bに示すような予測実行時間テーブル800に記憶される。予測実行時間テーブル800は、例えば、メモリ402、ディスク404などの記憶装置により実現される。
【0106】
図8Aおよび図8Bは、予測実行時間テーブル800の記憶内容の一例を示す説明図である。図8Aにおいて、予測実行時間テーブル800は、計算機台数、実行時間および予測誤差量のフィールドを有し、各フィールドに情報を設定することで、予測実行時間情報800-1~800-6をレコードとして記憶する。
【0107】
ここで、計算機台数は、量子シミュレーション(ジョブ)に割り当てられるノード数である。実行時間は、量子シミュレーションの実行にかかる予測実行時間である。予測誤差量は、実行時間(予測実行時間)に含まれる誤差の大きさを表す。予測誤差量は、例えば、実行時間(予測実行時間)を補正する際に使用される。
【0108】
図8Aの(8-1)において、計算機台数「2」の実行時間「555」と、計算機台数「8」の実行時間「171」とが示されている。計算機台数「2,8」は、量子シミュレーション実行時の実際の実行時間が計測された実測済み計算機台数である。各計算機台数「2,8」の実行時間「555,171」は、実行時間情報から特定された実測実行時間である。実測済み計算機台数「2,8」には、下線が付されている。
【0109】
図8Aの(8-2)において、実測済み計算機台数以外の各計算機台数「1,4,16,32」の実行時間「1000,308,95,52」が示されている。各計算機台数「1,4,16,32」の実行時間「1000,308,95,52」は、実測済み計算機台数「2,8」の実行時間「555,171」をもとに予測されたものである。
【0110】
具体的には、例えば、算出部703は、実測済み計算機台数「2」の実行時間「555」と、実測済み計算機台数「8」の実行時間「171」とから、計算機台数を4倍にしたときの性能の向上度合いを算出する。ここでは、計算機台数を4倍にしたときの性能の向上度合いは、例えば、「555/171」となる。
【0111】
つぎに、算出部703は、計算機台数を4倍にしたときの性能の向上度合い「555/171」の平方根をとることにより、計算機台数を2倍にしたときの性能の向上度合いを算出する。ここでは、計算機台数を2倍にしたときの性能の向上度合いは、例えば、「(555/171)1/2」となる。
【0112】
そして、算出部703は、計算機台数を2倍にしたときの性能の向上度合い「(555/171)1/2」に基づいて、各計算機台数「1,4,16,32」の実行時間を算出する。計算機台数「1」の実行時間は、実測済み計算機台数「2」の実行時間「555」に「(555/171)1/2」を乗算することにより、「1000」となる。
【0113】
計算機台数「4」の実行時間は、実測済み計算機台数「2」の実行時間「555」を「(555/171)1/2」で除算することにより、「308」となる。計算機台数「16」の実行時間は、実測済み計算機台数「8」の実行時間「171」を「(555/171)1/2」で除算することにより、「95」となる。計算機台数「32」の実行時間は、実測済み計算機台数「8」の実行時間「171」を「(555/171)」で除算することにより、「52」となる。
【0114】
ただし、各計算機台数「1,4,16,32」の実行時間は、一例であり、説明上図8Aおよび図8Bに示すような値としている。既知の実行時間(実測済み計算機台数「2,8」の実行時間)から、未知の実行時間(各計算機台数「1,4,16,32」の実行時間)を予測する手法として、既存のいかなる手法を用いてもよい。
【0115】
図7の説明に戻り、算出部703は、算出した実行対象の量子シミュレーションの予測実行時間に関する予測誤差量を算出してもよい。ここで、予測誤差量は、算出された予測実行時間に含まれる誤差の大きさを表す。誤差は、実際の実行時間に対する予測実行時間の誤差である。
【0116】
ここで、実行対象の量子シミュレーションの予測実行時間に対応するノード数と実測済み計算機台数との差が大きいほど、予測実行時間に含まれる誤差が大きいことが想定される。このため、算出部703は、例えば、実行対象の量子シミュレーションの予測実行時間に対応するノード数と、当該予測実行時間の算出に用いられた実測実行時間に対応するノード数(実測済み計算機台数)との距離を、予測誤差量として算出してもよい。
【0117】
ここで、図8Aおよび図8Bを用いて、予測誤差量の算出例について説明する。
【0118】
図8Aの例では、実測済み計算機台数は、計算機台数「2,8」である。この場合、算出部703は、例えば、計算機台数「2,8」に対応する予測誤差量を「1」とする。
【0119】
つぎに、算出部703は、実測済み計算機台数以外の各計算機台数「1,4,16,32」に対応する予測誤差量として、各計算機台数と実測済み計算機台数との距離を算出する。算出部703は、距離を算出するにあたり、実測済み計算機台数「2,8」のうち、各計算機台数と近い実測済み計算機台数を用いる。
【0120】
また、距離は、例えば、各計算機台数と実測済み計算機台数との比率によって表される。例えば、計算機台数が実測済み計算機台数より小さい場合、距離は、「実測済み計算機台数/計算機台数」によって表される。一方、計算機台数が実測済み計算機台数より大きい場合、距離は、「計算機台数/実測済み計算機台数」によって表される。
【0121】
ここで、実測済み計算機台数「2,8」のうち、計算機台数「1」と近い実測済み計算機台数は「2」である。この場合、算出部703は、実測済み計算機台数「2」を計算機台数「1」で除算することにより、計算機台数「1」に対応する予測誤差量「2」を算出する。
【0122】
また、実測済み計算機台数「2,8」のうち、計算機台数「4」と近い実測済み計算機台数は「2」である。この場合、算出部703は、計算機台数「4」を実測済み計算機台数「2」で除算することにより、計算機台数「4」に対応する予測誤差量「2」を算出する。
【0123】
また、実測済み計算機台数「2,8」のうち、計算機台数「16」と近い実測済み計算機台数は「8」である。この場合、算出部703は、計算機台数「16」を実測済み計算機台数「8」で除算することにより、計算機台数「16」に対応する予測誤差量「2」を算出する。
【0124】
また、実測済み計算機台数「2,8」のうち、計算機台数「32」と近い実測済み計算機台数は「8」である。この場合、算出部703は、計算機台数「32」を実測済み計算機台数「8」で除算することにより、計算機台数「32」に対応する予測誤差量「4」を算出する。
【0125】
予測誤差量は、値が大きいほど、予測実行時間に含まれる誤差が大きいことを意味する。算出された予測誤差量は、例えば、ノード数と対応付けて、予測実行時間テーブル800に記憶される。図8Bの(8-3)では、各計算機台数「1,2,4,8,16,32」の予測誤差量「2,1,2,1,2,4」が示されている。
【0126】
決定部704は、ノード群N1~Nnにおける量子シミュレーションの割り当て状況に応じて、算出された予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションに割り当てるノード数を決定する。ここで、実行対象の量子シミュレーションの実行開始時刻は、例えば、ノード数#1~#mにおける他の量子シミュレーションの割り当て状況に応じて決まる。
【0127】
このため、決定部704は、例えば、ノード数#1~#mにおける他の量子シミュレーションの割り当て状況に応じて、実行対象の量子シミュレーションの実行開始時刻が早くなるように、実行対象の量子シミュレーションに割り当てるノード数を決定する。実行対象の量子シミュレーションの実行開始時刻は、例えば、図3に示したスケジューラSCに問い合わせることにより特定することができる。
【0128】
具体的には、例えば、決定部704は、各ノード数#iについて、ノード数#iと、ノード数#iについて算出された予測実行時間を指定して、実行対象の量子シミュレーションの実行開始時刻をスケジューラSCに問い合わせる。そして、決定部704は、ノード数#1~#mのうち、実行開始時刻が最も早くなるノード数#iを、実行対象の量子シミュレーションに割り当てるノード数に決定してもよい。
【0129】
より詳細に説明すると、例えば、決定部704は、ノード数#1~#mのうち少ないノード数#iから順に、スケジューラSCに対してノード数#iと予測実行時間とを指定して、ジョブ(実行対象の量子シミュレーション)の投入を試みる。このあと、決定部704は、スケジューラSCからジョブの実行開始時刻を取得した場合、そのジョブをキャンセルする。
【0130】
このように、ノード数#1~#mのうち少ないノード数#iから順に、「ジョブを投入→実行開始時刻を取得→ジョブをキャンセル」を繰り返すことにより、各ノード数#iについて実行開始時刻を取得する。そして、決定部704は、ノード数#1~#mのうち、実行開始時刻が最も早くなるノード数#iを、実行対象の量子シミュレーションに割り当てるノード数に決定してもよい。
【0131】
なお、ジョブの投入を試みた際に、ノード数#1~#mにおける他の量子シミュレーションの割り当て状況によっては、即座にジョブが実行される場合がある。この場合、スケジューリング装置301は、現在時刻をジョブ(実行対象の量子シミュレーション)の実行開始時刻とし、ジョブの投入が完了したと判断する。
【0132】
また、決定部704は、各ノード数#iについての実行開始時刻を取得するにあたり、ノード数#1~#mのうち指定ノード数未満のノード数を除外してもよい。指定ノード数は、例えば、量子シミュレーション要求に含まれる。具体的には、例えば、決定部704は、ノード数#1~#mのうち指定ノード数以上の各ノード数#iについて、各ノード数#iと予測実行時間とを指定して、実行対象の量子シミュレーションの実行開始時刻をスケジューラSCに問い合わせてもよい。
【0133】
これにより、スケジューリング装置301は、ジョブ(実行対象の量子シミュレーション)の実行に必要となるメモリ量を確保できず、ジョブがエラーとなることを防ぐことができる。
【0134】
また、決定部704は、ノード数#1~#mのうち、実行開始時刻が指定ノード数のときよりも早くなるノード数#iを、実行対象の量子シミュレーションに割り当てるノード数に決定してもよい。具体的には、例えば、決定部704は、各ノード数#iについての実行開始時刻を順に取得中に、指定ノード数のときよりも実行開始時刻が早くなるノード数#iが見つかった時点で、そのノード数#iを、実行対象の量子シミュレーションに割り当てるノード数に決定してもよい。
【0135】
また、スケジューリング装置301は、ジョブを投入することなく、各ノード数#iについてのジョブの実行開始時刻を取得可能にしてもよい。例えば、決定部704は、スケジューラSCと連携するなどして、ノード数#1~#mにおける量子シミュレーションの割り当て状況を把握する。そして、決定部704は、スケジューラSCと同様に、ノード数#1~#mにおける量子シミュレーションの割り当て状況に応じて、ジョブ(実行対象の量子シミュレーション)のノード数#iと予測実行時間とからスケジューリングを行って、ジョブの実行開始時刻を判断してもよい。
【0136】
実行部705は、決定されたノード数#iのノードを割り当てて実行対象の量子シミュレーションを実行させる。具体的には、例えば、実行部705は、スケジューラSCに対して、決定されたノード数#iと、そのノード数#iについての予測実行時間を指定して、ジョブ(実行対象の量子シミュレーション)を投入する。
【0137】
記録部706は、決定されたノード数#iのノードを割り当てて実行対象の量子シミュレーションを実行させた結果、決定されたノード数#iおよび第1の量子回路と対応付けて、実行対象の量子シミュレーションの実測実行時間を記憶部710に記憶する。
【0138】
具体的には、例えば、記録部706は、ノード数#iを指定したジョブ(実行対象の量子シミュレーション)の実行が完了したことに応じて、スケジューラSCから、ジョブの実測実行時間を取得する。そして、記録部706は、第1の量子回路の量子回路IDおよびノード数#iと対応付けて、取得した実測実行時間を実行時間記録テーブル320に記録する。
【0139】
例えば、ノード数「4」を指定して量子回路ID「0x0001」の第1の量子回路を用いた量子シミュレーションが実行された結果、実測実行時間「500」が取得されたとする。この場合、記録部706は、量子回路ID「0x0001」およびノード数「4」と対応付けて、実測実行時間「500」を実行時間記録テーブル320に記録する。これにより、例えば、図5に示したような実行時間情報500-3が新たなレコードとして記憶される。
【0140】
また、記録部706は、決定されたノード数#iのノードを割り当てて実行対象の量子シミュレーションを実行させた結果、決定されたノード数#iおよび第1の量子回路と対応付けて、第1の量子回路に関する誤差係数を記憶部710に記憶してもよい。ここで、誤差係数は、第1係数と第2係数とを含む。
【0141】
第1係数は、第1の量子回路を用いた量子シミュレーションについて、第1のノード数を割り当てた場合の実測実行時間と、第1のノード数を割り当てた場合の予測実行時間との誤差を表す。第1のノード数を割り当てた場合の予測実行時間は、第1のノード数とは異なる第2のノード数を割り当てた場合の実測実行時間を用いて予測された実行時間である。
【0142】
第1係数は、予測された実行時間と実測された実行時間とのずれ量に相当する。第2係数は、第1のノード数と第2のノード数との誤差を表す。第1係数は、例えば、下記式(1)を用いて算出することができる。第2係数は、予測誤差量に相当する。
【0143】
第1係数=|予測実行時間/実測実行時間-1| ・・・(1)
【0144】
一例として、量子回路ID「0x0000」の量子回路を用いた量子シミュレーションについて、第1のノード数「8」を割り当てた場合の実測実行時間を「180」とし、第1のノード数「8」を割り当てた場合の予測実行時間を「216」とする。また、予測実行時間を「216」は、第2のノード数「4」を割り当てた場合の実測実行時間を用いて予測された実行時間とする。予測実行時間は、例えば、予測実行時間テーブル800から特定される。
【0145】
この場合、記録部706は、例えば、上記式(1)を用いて、予測実行時間「216」と実測実行時間「180」とから、第1係数「0.2」を算出することができる。また、第2係数は、例えば、第1のノード数「8」を第2のノード数「4」で除算した値「2」である。第2係数(予測誤差量)は、例えば、図8Bに示したような予測実行時間テーブル800から特定される。
【0146】
そして、記録部706は、量子回路ID「0x0000」およびノード数「8」と対応付けて、第1係数「0.2」および第2係数「2」を実行時間記録テーブル320に記録する。第1係数「0.2」は、実測処理時間誤差に対応する。第2係数「2」は、予測誤差量に相当する。これにより、例えば、図5に示したような実行時間情報500-2が新たなレコードとして記憶される。
【0147】
実行時間情報500-2は、例えば、量子回路ID「0x0000」の量子回路を用いた量子シミュレーションの予測実行時間を算出したり補正したりするのに使用される。また、実行時間情報500-2は、例えば、量子回路ID「0x0000」の量子回路と通信に関する特徴量が類似する量子回路を用いた量子シミュレーションの予測実行時間を算出したり補正したりするのに使用される。
【0148】
また、算出部703は、算出した実行対象の量子シミュレーションの予測実行時間を補正してもよい。まず、実行対象の量子シミュレーションの予測実行時間が、第1の量子回路と特徴量が類似する第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間に基づいて算出された場合を想定する。
【0149】
この場合、算出部703は、記憶部710に記憶された第2の量子回路に関する誤差係数に基づいて、実行対象の量子シミュレーションの予測実行時間を補正する。具体的には、例えば、算出部703は、第2の量子回路の量子回路IDに対応する実行時間情報に含まれる誤差係数を用いて、予測実行時間を補正する。
【0150】
また、算出部703は、第1の量子回路と第2の量子回路との通信に関する特徴量の誤差に基づいて、算出した実行対象の量子シミュレーションの予測実行時間を補正してもよい。具体的には、例えば、特徴量の誤差の大きさに応じて、予測実行時間が大きくなるように補正してもよい。
【0151】
より詳細に説明すると、例えば、算出部703は、特徴量の誤差の大きさに応じた係数(1以上の値)を予め設定してもよい。そして、算出部703は、第1の量子回路と第2の量子回路との通信に関する特徴量の誤差に対応する係数を予測実行時間に乗算することにより、予測実行時間を補正してもよい。
【0152】
つぎに、実行対象の量子シミュレーションの予測実行時間が、第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間に基づいて算出された場合を想定する。この場合、算出部703は、記憶部710に記憶された第1の量子回路に関する誤差係数に基づいて、実行対象の量子シミュレーションの予測実行時間を補正する。具体的には、例えば、算出部703は、第1の量子回路の量子回路IDに対応する実行時間情報に含まれる誤差係数を用いて、予測実行時間を補正する。
【0153】
なお、実行対象の量子シミュレーションの予測実行時間の補正例については後述する。
【0154】
また、決定部704は、ノード群N1~Nnにおける量子シミュレーションの割り当て状況に応じて、補正された予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションに割り当てるノード数を決定してもよい。
【0155】
(実行対象の量子シミュレーションの予測実行時間の補正例)
つぎに、実行対象の量子シミュレーションの予測実行時間の補正例について説明する。
【0156】
ここでは、実行時間記録テーブル320内の量子回路ID「0x0000」に対応する実行時間情報に含まれる誤差係数を用いて、実行対象の量子シミュレーションの予測実行時間を補正する場合を想定する。実行対象の量子シミュレーションは、量子回路ID「0x0000」の量子回路(第1の量子回路)を用いた量子シミュレーション、または、量子回路ID「0x0000」の量子回路(第2の量子回路)と特徴量が類似する量子回路(第1の量子回路)を用いた量子シミュレーションである。
【0157】
まず、算出部703は、実行時間記録テーブル320内の量子回路ID「0x0000」に対応する実行時間情報に含まれる誤差係数(N,d)を特定する。ここで、Nは、予測誤差(第2係数)に対応する。dは、実測処理時間誤差(第1係数)に対応する。つぎに、算出部703は、特定した誤差係数(N,d)から、「D=d/N」を算出する。
【0158】
また、量子回路ID「0x0000」に対応する実行時間情報が複数存在し、誤差係数(N,d)が複数特定される場合がある。この場合、算出部703は、特定した複数の誤差係数(N,d)から、「d/N」の平均値を求め、その値をDとする。
【0159】
ここでは、実行時間記録テーブル320内の量子回路ID「0x0000」に対応する実行時間情報500-2に含まれる誤差係数(2,0.2)が特定された場合を想定する。この場合、算出部703は、誤差係数(2,0.2)から、「D=0.2/2=0.1」を算出する。
【0160】
ここで、実行対象の量子シミュレーションに割り当てるノード数#iを「ノード数X」とする。また、実測済み計算機台数を「ノードY」とする。ただし、実測済み計算機台数は、ノード数Xに最も近い実測済み計算機台数である。
【0161】
この場合、算出部703は、「X>Y」の場合、例えば、下記式(2)を用いて、マージン率αを算出する。また、算出部703は、「X<Y」の場合、例えば、下記式(3)を用いて、マージン率αを算出する。マージン率αは、補正のために予測実行時間に乗算するための係数である。
【0162】
α=(X/Y)*D+1 ・・・(2)
α=(Y/X)*D+1 ・・・(3)
【0163】
なお、算出部703は、例えば、ノード数#1~#mのうち、実測済み計算機台数と同一のノード数#iの予測実行時間については補正を行わなくてもよい。
【0164】
そして、算出部703は、算出したノード数Xについての予測実行時間にマージン率αを乗算することにより、予測実行時間を補正する。例えば、Dを「D=0.1」とし、ノード数Xを「X=8」とし、ノード数Yを「Y=4」とする。また、ノード数Xについての予測実行時間を「300[秒]」とする。
【0165】
この場合、算出部703は、上記式(2)を用いて、マージン率αを算出する。ここでは、マージン率αは、「α=1.2」となる。そして、算出部703は、算出したマージン率「1.2」を予測実行時間に乗算することにより、予測実行時間を補正する。ここでは、予測実行時間は、「360[秒]」となる。
【0166】
ただし、実行時間記録テーブル320から量子回路ID「0x0000」に対応する実行時間情報に含まれる誤差係数が特定されない場合がある。例えば、ノード数#iについて、予測実行時間を指定してジョブを実行した結果、その実測値(実測実行時間)が得られていなければ、誤差係数は「N/A」のままである。
【0167】
この場合、算出部703は、ノード数Xについての予測実行時間にマージン率βを乗算することにより、予測実行時間を補正してもよい。マージン率βは、予め設定された係数である。マージン率βは、1より大きい値である。例えば、マージン率βを「β=1.1」とし、ノード数Xについての予測実行時間を「300[秒]」とする。算出部703は、予測実行時間にマージン率「1.1」を乗算することにより、予測実行時間を補正する。ここでは、予測実行時間は、「330[秒]」となる。
【0168】
また、上記式(2)および(3)では、誤差係数(N,d)の両方を考慮して、予測実行時間を補正することにしたが、これに限らない。例えば、算出部703は、N(予測誤差)のみに応じて、予測実行時間を補正してもよい。また、算出部703は、d(実測処理時間誤差)のみに応じて、予測実行時間を補正してもよい。
【0169】
具体的には、例えば、算出部703は、N(予測誤差)が予め決められた閾値以上の場合に、ノード数Xについての予測実行時間にマージン率βを乗算することにより、予測実行時間を補正してもよい。また、算出部703は、d(実測処理時間誤差)が予め決められた閾値以上の場合に、ノード数Xについての予測実行時間にマージン率βを乗算することにより、予測実行時間を補正してもよい。
【0170】
(スケジューリング装置301の量子シミュレーション実行時のノード割当処理手順)
つぎに、図9および図10を用いて、スケジューリング装置301の量子シミュレーション実行時のノード割当処理手順について説明する。
【0171】
図9および図10は、スケジューリング装置301の量子シミュレーション実行時のノード割当処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、スケジューリング装置301は、量子シミュレーション要求を受け付けたか否かを判断する(ステップS901)。
【0172】
ここで、スケジューリング装置301は、量子シミュレーション要求を受け付けるのを待つ(ステップS901:No)。スケジューリング装置301は、量子シミュレーション要求を受け付けた場合(ステップS901:Yes)、実行時間記録テーブル320から、量子シミュレーション要求に含まれる第1の量子回路の量子回路IDに対応する実行時間情報を検索する(ステップS902)。第1の量子回路は、実行対象の量子シミュレーションに用いられる量子回路である。
【0173】
そして、スケジューリング装置301は、2以上の実行時間情報が検索されたか否かを判断する(ステップS903)。ここで、2以上の実行時間情報が検索されなかった場合(ステップS903:No)、スケジューリング装置301は、回路特徴量テーブル330を参照して、第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定する(ステップS904)。
【0174】
そして、スケジューリング装置301は、第2の量子回路が特定されたか否かを判断する(ステップS905)。ここで、第2の量子回路が特定されなかった場合(ステップS905:No)、スケジューリング装置301は、ステップS908に移行する。
【0175】
一方、第2の量子回路が特定された場合(ステップS905:Yes)、スケジューリング装置301は、実行時間記録テーブル320から、検索した第2の量子回路の量子回路IDに対応する実行時間情報を検索する(ステップS906)。
【0176】
そして、スケジューリング装置301は、2以上の実行時間情報が検索されたか否かを判断する(ステップS907)。ここで、2以上の実行時間情報が検索されなかった場合(ステップS907:No)、スケジューリング装置301は、量子シミュレーション要求に含まれる指定ノード数から、実行対象の量子シミュレーションの割当ノード数を決定して(ステップS908)、図10に示すステップS1005に移行する。
【0177】
割当ノード数は、実行対象の量子シミュレーションに割り当てるノード数である。具体的には、例えば、スケジューリング装置301は、第1の量子回路を用いた量子シミュレーションの初回の実行の場合、指定ノード数を割当ノード数に決定する。また、スケジューリング装置301は、第1の量子回路を用いた量子シミュレーションの2回目の実行の場合、指定ノード数を倍にしたノード数を割当ノード数に決定する。
【0178】
また、ステップS903において、2以上の実行時間情報が検索された場合(ステップS903:Yes)、スケジューリング装置301は、取得した実行時間情報それぞれの使用計算機台数と実行時間とに基づいて、各ノード数#iの予測実行時間および予測実行時間に関する予測誤差量を算出して(ステップS909)、図10に示すステップS1001に移行する。
【0179】
予測実行時間は、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの実行時間の予測値である。算出された各ノード数#iの予測実行時間および予測誤差量は、例えば、図8Aおよび図8Bに示したような予測実行時間テーブル800に記憶される。
【0180】
また、ステップS907において、2以上の実行時間情報が検索された場合(ステップS907:Yes)、スケジューリング装置301は、取得した実行時間情報それぞれの使用計算機台数と実行時間とに基づいて、各ノード数#iの予測実行時間および予測実行時間に関する予測誤差量を算出して(ステップS910)、図10に示すステップS1001に移行する。算出された各ノード数#iの予測実行時間および予測誤差量は、例えば、予測実行時間テーブル800に記憶される。
【0181】
図10のフローチャートにおいて、まず、スケジューリング装置301は、ステップS902またはS906において検索された実行時間情報に誤差係数が含まれるか否かを判断する(ステップS1001)。ここで、誤差係数が含まれる場合(ステップS1001:Yes)、スケジューリング装置301は、実行時間情報に含まれる誤差係数を用いて、各ノード数#iの予測実行時間を補正して(ステップS1002)、ステップS1004に移行する。
【0182】
一方、誤差係数が含まれない場合(ステップS1001:No)、スケジューリング装置301は、予め設定されたマージン率βを用いて、各ノード数#iの予測実行時間を補正する(ステップS1003)。そして、スケジューリング装置301は、補正した各ノード数#iの予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションの実行開始時刻が早くなるように割当ノード数を決定する(ステップS1004)。具体的には、例えば、スケジューリング装置301は、ノード数#1~#mのうち、実行開始時刻が最も早くなるノード数#iを割当ノード数に決定する。
【0183】
つぎに、スケジューリング装置301は、スケジューラSCに対して、決定した割当ノード数と、割当ノード数についての補正した予測実行時間とを指定して、ジョブ(実行対象の量子シミュレーション)を投入する(ステップS1005)。この際、スケジューリング装置301は、決定した割当ノード数についての補正した予測実行時間を指定する。また、図9に示したステップS908から移行した場合、スケジューリング装置301は、例えば、量子シミュレーション要求に含まれる指定予測実行時間を予測実行時間として指定してもよい。また、図9に示したステップS908から移行した場合、スケジューリング装置301は、予め決められた予測実行時間を指定してもよい。
【0184】
そして、スケジューリング装置301は、投入したジョブが完了したか否かを判断する(ステップS1006)。ここで、スケジューリング装置301は、投入したジョブが完了するのを待つ(ステップS1006:No)。投入したジョブが完了した場合(ステップS1006:Yes)、スケジューリング装置301は、スケジューラSCからジョブの実測実行時間を取得する(ステップS1007)。
【0185】
つぎに、スケジューリング装置301は、予測実行時間テーブル800を参照して、取得した実測実行時間に基づいて、第1の量子回路についての割当ノード数に対応する実測処理時間誤差(第1係数)を算出する(ステップS1008)。つぎに、スケジューリング装置301は、予測実行時間テーブル800を参照して、第1の量子回路についての割当ノード数に対応する予測誤差量(第2係数)を特定する(ステップS1009)。
【0186】
そして、スケジューリング装置301は、第1の量子回路の量子回路IDと対応付けて、割当ノード数、実測実行時間および誤差係数(実測処理時間誤差、予測誤差量)を実行時間記録テーブル320に記録して(ステップS1010)、本フローチャートによる一連の処理を終了する。なお、割当ノード数は、実行時間記録テーブル320内の使用計算機台数に相当する。実測実行時間は、実行時間記録テーブル320内の実行時間に相当する。
【0187】
これにより、スケジューリング装置301は、ジョブ(実行対象の量子シミュレーション)のスケーラビリティ特性(ノード数別の予測実行時間に相当)を予測し、実行開始時刻が早くなるように割当ノード数を決定して、ジョブを投入することができる。
【0188】
以上説明したように、実施の形態にかかるスケジューリング装置301によれば、記憶部710(例えば、回路特徴量テーブル330)を参照して、実行対象の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定することができる。量子回路の通信に関する特徴量は、例えば、量子シミュレーションの実行に要するノード間の通信量を表す。
【0189】
これにより、スケジューリング装置301は、実行対象の量子シミュレーションに用いる第1の量子回路と同様のスケーラビリティ特性を有する第2の量子回路を特定することができる。
【0190】
また、スケジューリング装置301によれば、第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する記憶部710(例えば、実行時間記録テーブル320)を参照して、ノード数#1~#mの各ノード数#iについて、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出することができる。そして、スケジューリング装置301によれば、ノード群N1~Nnにおける量子シミュレーションの割り当て状況に応じて、算出した予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションの割当ノード数を決定することができる。また、スケジューリング装置301によれば、決定した割当ノード数のノードを割り当てて実行対象の量子シミュレーションを実行させることができる。
【0191】
これにより、スケジューリング装置301は、量子シミュレーションの並列実行におけるスケーラビリティが量子回路の構成に依存することを利用して、実行対象の量子シミュレーションのスケーラビリティ特性を予測することができる。また、スケジューリング装置301は、第1の量子回路を用いた量子シミュレーションの実績がないような場合であっても、第1の量子回路と同様のスケーラビリティ特性を有する第2の量子回路を用いた量子シミュレーションの実績を利用して、実行対象の量子シミュレーションのスケーラビリティ特性を予測することができる。また、スケジューリング装置301によれば、予測したスケーラビリティ特性をもとに、実行対象の量子シミュレーションの実行開始時刻が早くなるように割当ノード数を決定することができる。この結果、スケジューリング装置301は、バックフィル率を高めて、量子シミュレーション実行時のノード群N1~Nnの利用効率を向上させることができる。
【0192】
また、スケジューリング装置301によれば、ノード群N1~Nnにおける量子シミュレーションの割り当て状況に応じて、算出した予測実行時間に基づいて、ノード数#1~#mのうち、実行対象の量子シミュレーションの実行開始時刻が最も早くなるノード数を割当ノード数に決定することができる。
【0193】
これにより、スケジューリング装置301は、量子シミュレーション実行時のノード群N1~Nnの利用効率を向上させるとともに、実行対象の量子シミュレーションの実行が完了までの時間を短縮することができる。
【0194】
また、スケジューリング装置301によれば、記憶部710に記憶された第2の量子回路に関する誤差係数に基づいて、算出した予測実行時間を補正し、補正した予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションの実行開始時刻が早くなるように割当ノード数を決定することができる。誤差係数は、実測処理時間誤差(第1係数)および予測誤差量(第2係数)を含む。
【0195】
これにより、スケジューリング装置301は、過去の予測時における実測値との誤差(予測精度)を考慮して、量子シミュレーションの実行時間の予測精度を高めることができる。例えば、スケジューリング装置301は、予測精度に応じて予測実行時間を増やすように補正することで、予測実行時間が短すぎて、処理が途中で強制終了されるのを防ぐことができる。この際、スケジューリング装置301は、予測精度に応じて予測実行時間の増加分を決めることで、予測実行時間が長くなりすぎないようにすることができる。
【0196】
また、スケジューリング装置301によれば、第1の量子回路と第2の量子回路との通信に関する特徴量の誤差に基づいて、算出した予測実行時間を補正し、補正した予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションの実行開始時刻が早くなるように割当ノード数を決定することができる。
【0197】
これにより、スケジューリング装置301は、量子回路同士の通信に関する特徴量の誤差の大きさを考慮して、量子シミュレーションの実行時間の予測精度を高めることができる。例えば、スケジューリング装置301は、特徴量の誤差が大きいほど、予測実行時間が長くなるように補正することで、予測実行時間が短すぎて、処理が途中で強制終了されるのを防ぐことができる。
【0198】
また、スケジューリング装置301によれば、記憶部710に第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されているか否かを判断することができる。そして、スケジューリング装置301によれば、過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されている場合、記憶部710に記憶された当該ノード数別の実測実行時間に基づいて、各ノード数#iを割り当てた場合の実行対象の量子シミュレーションの予測実行時間を算出することができる。
【0199】
これにより、スケジューリング装置301は、実行対象の量子シミュレーションと同じ量子回路(第1の量子回路)を用いた過去の量子シミュレーションの実績がある場合には、その実績を利用して、実行対象の量子シミュレーションの予測実行時間を算出することができる。
【0200】
また、スケジューリング装置301によれば、決定した割当ノード数のノードを割り当てて実行対象の量子シミュレーションを実行させた結果、第1の量子回路と対応付けて、決定した割当ノード数および実行対象の量子シミュレーションの実測実行時間を記憶部710(例えば、実行時間記録テーブル320)に記憶することができる。
【0201】
これにより、スケジューリング装置301は、第1の量子回路を用いた量子シミュレーションの実績(ノード数別の実測実行時間)を記録することができる。
【0202】
また、スケジューリング装置301によれば、記憶部710に記憶された第1の量子回路に関する誤差係数に基づいて、算出した予測実行時間を補正し、補正した予測実行時間に基づいて、ノード数#1~#mから、実行対象の量子シミュレーションの実行開始時刻が早くなるように割当ノード数を決定することができる。
【0203】
これにより、スケジューリング装置301は、過去の予測時における実測値との誤差(予測精度)を考慮して、量子シミュレーションの実行時間の予測精度を高めることができる。
【0204】
これらのことから、スケジューリング装置301によれば、ノード群N1~Nnにおいて量子シミュレーションを実行するにあたり、バックフィル率を高めることで、ノード群N1~Nnの利用効率を向上させ、全体の処理時間を短縮することができる。
【0205】
なお、本実施の形態で説明した量子シミュレーション実行時のノード割当方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本量子シミュレーション実行時のノード割当プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本量子シミュレーション実行時のノード割当プログラムは、インターネット等のネットワークを介して配布してもよい。
【0206】
また、本実施の形態で説明した情報処理装置101(スケジューリング装置301)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
【0207】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0208】
(付記1)量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
処理をコンピュータに実行させることを特徴とする量子シミュレーション実行時のノード割当プログラム。
【0209】
(付記2)前記決定する処理は、
算出した前記予測実行時間に基づいて、前記複数のノード数のうち、前記第1の量子シミュレーションの実行開始時刻が最も早くなるノード数を、前記第1の量子シミュレーションに割り当てるノード数に決定する、ことを特徴とする付記1に記載の量子シミュレーション実行時のノード割当プログラム。
【0210】
(付記3)前記第2の記憶部は、前記第2の量子回路に関する誤差係数を記憶しており、
前記算出する処理は、
前記第2の記憶部に記憶された前記第2の量子回路に関する誤差係数に基づいて、算出した前記予測実行時間を補正し、
前記決定する処理は、
補正した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定し、
前記誤差係数は、前記第2の量子回路を用いた量子シミュレーションについて、第1のノード数を割り当てた場合の実測実行時間と、前記第1のノード数とは異なる第2のノード数を割り当てた場合の実測実行時間を用いて予測された、前記第1のノード数を割り当てた場合の予測実行時間との誤差を表す第1係数、および、前記第1のノード数と前記第2のノード数との誤差を表す第2係数を含む、
ことを特徴とする付記1または2に記載の量子シミュレーション実行時のノード割当プログラム。
【0211】
(付記4)前記算出する処理は、
前記第1の量子回路と前記第2の量子回路との通信に関する特徴量の誤差に基づいて、算出した前記予測実行時間を補正し、
前記決定する処理は、
補正した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
ことを特徴とする付記1~3のいずれか一つに記載の量子シミュレーション実行時のノード割当プログラム。
【0212】
(付記5)前記量子回路の通信に関する特徴量は、前記量子シミュレーションの実行に要するノード間の通信量を表す、ことを特徴とする付記1~4のいずれか一つに記載の量子シミュレーション実行時のノード割当プログラム。
【0213】
(付記6)決定した前記ノード数のノードを割り当てて前記第1の量子シミュレーションを実行させる、処理を前記コンピュータに実行させることを特徴とする付記1~5のいずれか一つに記載の量子シミュレーション実行時のノード割当プログラム。
【0214】
(付記7)前記第2の記憶部に前記第1の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されているか否かを判断する、処理を前記コンピュータに実行させ、
前記算出する処理は、
前記過去の量子シミュレーションに割り当てたノード数別の実測実行時間が記憶されている場合、前記第2の記憶部に記憶された当該ノード数別の実測実行時間に基づいて、前記複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出する、ことを特徴とする付記1~6のいずれか一つに記載の量子シミュレーション実行時のノード割当プログラム。
【0215】
(付記8)決定した前記ノード数のノードを割り当てて前記第1の量子シミュレーションを実行させた結果、前記第1の量子回路と対応付けて、決定した前記ノード数および前記第1の量子シミュレーションの実測実行時間を前記第2の記憶部に記憶する、処理を前記コンピュータに実行させることを特徴とする付記7に記載の量子シミュレーション実行時のノード割当プログラム。
【0216】
(付記9)前記第2の記憶部は、前記第1の量子回路に関する誤差係数を記憶しており、
前記算出する処理は、
前記第2の記憶部に記憶された前記第1の量子回路に関する誤差係数に基づいて、算出した前記予測実行時間を補正し、
前記決定する処理は、
補正した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定し、
前記誤差係数は、前記第1の量子回路を用いた量子シミュレーションについて、第1のノード数を割り当てた場合の実測実行時間と、前記第1のノード数とは異なる第2のノード数を割り当てた場合の実測実行時間を用いて予測された、前記第1のノード数を割り当てた場合の予測実行時間との誤差を表す第1係数、および、前記第1のノード数と前記第2のノード数との誤差を表す第2係数を含む、ことを特徴とする付記8に記載の量子シミュレーション実行時のノード割当プログラム。
【0217】
(付記10)量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
処理をコンピュータが実行することを特徴とする量子シミュレーション実行時のノード割当方法。
【0218】
(付記11)量子シミュレーションに用いる量子回路ごとに、当該量子回路の通信に関する特徴量を記憶する第1の記憶部を参照して、第1の量子シミュレーションに用いる第1の量子回路と通信に関する特徴量が類似する第2の量子回路を特定し、
特定した前記第2の量子回路を用いた過去の量子シミュレーションに割り当てたノード数別の実測実行時間を記憶する第2の記憶部を参照して、複数のノード数それぞれのノード数について、当該ノード数を割り当てた場合の前記第1の量子シミュレーションの予測実行時間を算出し、
前記第1の量子シミュレーションに利用可能なノード群における量子シミュレーションの割り当て状況に応じて、算出した前記予測実行時間に基づいて、前記複数のノード数から、前記第1の量子シミュレーションに割り当てるノード数を決定する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0219】
101 情報処理装置
102 スケジューラ
110,120,710 記憶部
130 予測実行時間
200 グラフ
210 隙間時間
300 スケジューリングシステム
301 スケジューリング装置
302 クライアント装置
310 ネットワーク
320 実行時間記録テーブル
330 回路特徴量テーブル
400 バス
401 CPU
402 メモリ
403 ディスクドライブ
404 ディスク
405 通信I/F
406 可搬型記録媒体I/F
407 可搬型記録媒体
701 受付部
702 特定部
703 算出部
704 決定部
705 実行部
706 記録部
800 予測実行時間テーブル
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図9
図10