(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024091036
(43)【公開日】2024-07-04
(54)【発明の名称】情報処理装置,プログラムおよび制御方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20240627BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022207309
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】児玉 宏喜
(72)【発明者】
【氏名】吉川 隆英
(57)【要約】 (修正有)
【課題】アプリケーションから想定を超えるデータ処理がFPGAやGPUに対して要求された場合に、生じる処理の遅延を低減する情報処理装置、プログラム及び制御方法を提供する。
【解決手段】プロセッサと、インターコネクト規格に準拠するインターコネクトスイッチと、プロセッサにインターコネクトスイッチを介して接続される複数のデバイスとを有するコンピュータシステムに備えられる情報処理装置であって、複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、複数のデバイスのうちの第1のデバイスとは異なる第2のデバイスに、処理対象を処理させる。
【選択図】
図5
【特許請求の範囲】
【請求項1】
プロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記プロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスとを有するコンピュータシステムに備えられる情報処理装置であって、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる制御部
を有することを特徴とする情報処理装置。
【請求項2】
前記コンピュータシステムが、
前記インターコネクト規格のパケットに基づいて、前記第2のデバイスを制御するためのデバイス制御パケットを生成するデバイス制御パケット生成部と、
前記複数のデバイスを制御するデバイス制御部とを備え、
前記制御部が、
前記デバイス制御パケット生成部に対して、前記デバイス制御パケットの発行を依頼し、
前記デバイス制御部が、前記デバイス制御パケット生成部が生成した前記デバイス制御パケットに基づいて、前記第2のデバイスを動作可能な状態に設定する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記デバイスがFPGA(Field Programmable Gate Array)であり、前記デバイス制御部が、前記デバイス制御パケットに従って前記FPGAの論理配置を設定する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記デバイスがGPU(Graphics Processing Unit)であり、前記デバイス制御部が、前記デバイス制御パケットに従って前記GPUの初期化を行なう
ことを特徴とする請求項2に記載の情報処理装置。
【請求項5】
第1のプロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記第1のプロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスと、を有するコンピュータシステムに備えられる情報処理装置の第2のプロセッサに、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる
機能を実行させるプログラム。
【請求項6】
プロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記プロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスと、を有するコンピュータシステムに備えられる情報処理装置が、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる
機能を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置,プログラムおよび制御方法に関する。
【背景技術】
【0002】
近年、CPU(Central Processing Unit)の製造プロセスの限界に近づいているために、CPUの計算性能の伸びがこれまでに比べてなくなっている。そのため、システムレベルで性能の向上をはかる取り組みが盛んに行なわれている。
【0003】
例えば、アプリケーションの性能向上手法のひとつに、GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)といった一般的にアクセラレータと呼ばれるハードウェアをCPUの他に用いることが行なわれている(例えば、特許文献1,2参照)。また、CPUの通信機能をSmartNIC(Network Interface Card)と呼ばれるデバイスにオフロードすることも行なわれている。
【0004】
また、近年では、FPGAやGPUといったアクセラレータを、CPUに対してインターコネクトを介して接続することも行なわれている。このようなシステム構成のインターコネクトとして、CXL(Compute Express Link:登録商標)が知られている。例えば、CXLスイッチで接続されたメモリリソースを管理するためのシステムが知られている(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許出願公開第2020/0242724号明細書
【特許文献2】米国特許出願公開第2018/0300238号明細書
【特許文献3】特開2021-190125号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、このような従来のCXLスイッチを用いたインタフェースにおいては、メモリを管理するのみであるので、FPGAやGPUを管理することができない。従って、アプリケーションから想定を超えるデータ処理がFPGAやGPUに対して要求された場合に、処理の遅延が生じるという課題がある。
【0007】
1つの側面では、本発明は、処理遅延を低減することを目的とする。
【課題を解決するための手段】
【0008】
この情報処理装置は、プロセッサと、インターコネクト規格に準拠するインターコネクトスイッチと、前記プロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスとを有するコンピュータシステムに備えられる情報処理装置であって、前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる制御部を有する。
【発明の効果】
【0009】
一実施形態によれば、処理遅延を低減することができる。
【図面の簡単な説明】
【0010】
【
図1】第1実施形態の一例としてのコンピュータシステムの構成を示す図である。
【
図2】第1実施形態の一例としてのコンピュータシステムにおけるCUのハードウェア構成を示す図である。
【
図3】第1実施形態の一例としてのコンピュータシステムのCXL拡張機能部,CUおよびFPGA拡張機能部の機能構成を示す図である。
【
図4】第1実施形態の一例としてのコンピュータシステムにおける並列処理の強化手法を示す図である。
【
図5】第1実施形態の一例としてのコンピュータシステムにおける処理を説明するためのシーケンス図である。
【
図6】
図5のシーケンス図に示す処理の前後のコンピュータシステムの状態を示す図である。
【
図7】第2実施形態の一例としてのコンピュータシステムの構成を示す図である。
【
図8】第2実施形態の一例としてのコンピュータシステムのCXL拡張機能部,CUおよびGPU拡張機能部の機能構成を示す図である。
【
図9】第2実施形態の一例としてのコンピュータシステムにおける処理を示すシーケンス図である。
【発明を実施するための形態】
【0011】
以下、図面を参照して本情報処理装置,プログラムおよび制御方法にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形(実施形態および各変形例を組み合わせる等)して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0012】
(I)第1実施形態の説明
〔A〕構成
〔A-1〕ハードウェア構成例
図1は第1実施形態の一例としてのコンピュータシステム1の構成を示す図である。
【0013】
図1に例示するコンピュータシステム1は、スイッチ2,CXLスイッチ4,CXL拡張機能部5,CU6,ストレージプール10,FPGA拡張機能部7a,FPGAプール8a,メモリプール11,ユーザ端末12および1つ以上(
図1に示す例ではn個)のサーバ3を有する。
【0014】
ユーザ端末12は、ユーザが使用するコンピュータである。ユーザ端末12は、例えば、イーサネット(登録商標)を介してスイッチ2に接続されてよい。ユーザ端末12は、複数あってもよい。スイッチ2には、複数のサーバ3が接続されている。
【0015】
ユーザ端末12はユーザによる操作等に基づいてジョブの投入を行なう。ユーザ端末12から投入されたジョブは、スイッチ2を介して、複数のサーバ3のうちいずれかサーバ3に送信される。
【0016】
スイッチ2は、ユーザ端末装置13と複数のサーバ3との間の通信を制御する。例えば、ユーザ端末12から送信されるジョブを対応するサーバ3に転送する。また、スイッチ2は、サーバ3から応答されるジョブの実行結果をユーザ端末12に転送する。スイッチ2は、例えば、ToR(Top of Rack)スイッチやSmartNICであってよい。スイッチ2と各サーバ3とは、例えば、イーサネットで接続されてよい。
【0017】
ストレージプール10には複数の記憶装置(デバイス)が登録されている。サーバ3からの要求に応じて、ストレージプール10の記憶装置の記憶領域が提供される。メモリプール11には、複数のメモリデバイス(デバイス)が登録されている。サーバ3からの要求に応じて、メモリプール11のメモリデバイスのメモリ領域が提供される。
【0018】
FPGAプール8aには複数のFPGA(デバイス)9が登録されている。ユーザ端末12から投入されたジョブが、サーバ3,CXLスイッチ4およびCU(Control Unit)6を介してFPGAプール8aのFPGA9に送信される。FPGA9は、受信したジョブを処理し、その実行結果をCU6およびCXLスイッチ4を介してサーバ3に応答(結果送信)する。サーバ3は、応答された実行結果をユーザ端末12に送信する。
【0019】
FPGAプール8aに登録された複数のFPGA9の中には、ジョブを処理中でないホットスタンバイ(ホットスペア)状態のFPGA9が含まれていてよい。
【0020】
FPGAプール8aには、FPGA拡張機能部7aが備えられている。FPGA拡張機能部7aは、CU6とFPGAプール8aとの間に介在する。FPGA拡張機能部7aは、CU6(CXLスイッチ4)から送信されるスペシャルパケットに応じて、FPGAプール8aのFPGA9の管理を行なう。FPGA拡張機能部7aの詳細については後述する。
【0021】
サーバ3は、サーバ機能を有するコンピュータである。各サーバ3は図示しないプロセッサを有し、当該プロセッサがプログラムを実行することで各種機能を実現する。サーバ3のプロセッサはCPU(Central Processing Unit)であってよい。サーバ3のプロセッサが第1のプロセッサに相当する。
【0022】
サーバ3は、ユーザ端末12から送信されたジョブを処理するに際して、必要に応じて、FPGAプール8aのFPGA9に対して、ジョブの処理依頼を送信(ジョブ投入)する。
【0023】
ここで、サーバ3が発行するジョブは、複数のタスクを含んでよい。また、これらのタスクは、複数のFPGA9によって処理されてよい。さらに、複数のタスクは、複数のフローに分類されてよく、これらの複数のフローは、複数のFPGA9によって並列に処理されてよい。
【0024】
また、サーバ3は、ストレージプール10やメモリプール11に対して記憶領域やメモリ領域を要求する。
【0025】
CXLスイッチ4は、インターコネクト規格に準拠するインターコネクトスイッチである。CXLスイッチ4は、複数のサーバ3に接続されるとともに、CU6を介してストレージプール10,メモリプール11,FPGAプール8aに接続されている。CXLスイッチ4は、複数のサーバ3と、ストレージプール10に含まれる記憶装置,メモリプール11に含まれるメモリおよびFPGAプール8aに含まれるFPGA9との間における通信を制御する。CXLスイッチ4は、CXL.io,CXL.cacheおよびCXL.memの各プロトコルに従ってパケットの生成や処理を行なう。
【0026】
CXLスイッチ4にはCXL拡張機能部5が付加されている。CXL拡張機能部5は、CXLスイッチ4の機能を拡張する。このCXL拡張機能部5の詳細については後述する。
【0027】
図2は第1実施形態の一例としてのコンピュータシステム1におけるCU6のハードウェア構成を示す図である。
【0028】
CU6は、
図2に例示するように、プロセッサ21,メモリ22,記憶装置23およびインタフェース24を有する情報処理装置であってよい。コンピュータシステム1は、サーバ3のプロセッサ(第1のプロセッサ)と、インターコネクト規格に準拠するCXLスイッチ4(インターコネクトスイッチ)と、サーバ3のプロセッサにCXLスイッチ4を介して接続される複数のデバイスと、を有するコンピュータシステムに相当する。また、CU6はこのコンピュータシステム1に備えられる情報処理装置に相当する。
【0029】
プロセッサ21は、種々の制御や演算を行なう演算処理装置の一例であり、種々の処理を実行する制御部である。プロセッサ21は、CU6内の各ブロックと図示しないバスで相互に通信可能に接続されてよい。なお、プロセッサ21は、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0030】
プロセッサ21としては、例えば、CPU、MPU、APU、DSP、ASIC、FPGA等の集積回路(IC:Integrated Circuit)が挙げられる。なお、プロセッサ21として、これらの集積回路の2以上の組み合わせが用いられてもよい。MPUはMicro Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称である。プロセッサ21が、第2のプロセッサに相当する。
【0031】
メモリ22は、種々のデータやプログラム等の情報を格納するハードウェア(HW)の一例である。メモリ22としては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、および、PM(Persistent Memory)等の不揮発性メモリ、の一方または双方が挙げられる。
【0032】
記憶装置23は、種々のデータやプログラム等の情報を格納するHWの一例である。記憶装置23としては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0033】
記憶装置23は、CU6の各種機能の全部若しくは一部を実現するプログラム(通信制御プログラム:図示省略)を格納してよい。
【0034】
例えば、CU6のプロセッサ21は、記憶装置23に格納されたプログラムをメモリ22に展開して実行することにより、後述する制御機能を実現できる。
【0035】
プログラムを格納した図示しない記録媒体から、プログラムが読み出され記憶装置23に格納されてもよい。
【0036】
記録媒体としては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0037】
インタフェース24は、CU6に対して、CXLスイッチ4,ストレージプール10,メモリプール11およびFPGAプール8aを接続するためのインタフェースである。インタフェース24は、例えば、PCIe(Peripheral Component Interconnect-Express)の規格に基づくインタフェースであってよく、PCIeコネクタを含んでよい。
【0038】
上述したCU6のHW構成は例示である。従って、CU6内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
【0039】
〔A-2〕機能構成例
図3は第1実施形態の一例としてのコンピュータシステム1のCXL拡張機能部5,CU6およびFPGA拡張機能部7aの機能構成を示す図である。
【0040】
CU6は、複数のデバイス(本第1実施形態においては複数のFPGA9)を制御する制御装置であり、サーバ3のプロセッサと通信することなく、FPGAプール8aのFPGA9を自律的に制御する機能を実現する。
【0041】
CU(制御部)6は、複数のFPGA9(デバイス)のうちの処理遅延FPGA9(第1のデバイス)に処理遅延タスク(処理対象)に対する処理遅延を検出した場合に、複数のFPGA9のうちの処理遅延FPGA9とは異なる補助FPGA9(第2のデバイス)に、処理対象である処理遅延タスクを処理させる。
【0042】
CU6は、FPGA9の負荷状況を監視し、FPGA9に処理遅延を検出した場合に、FPGA9を追加して処理を補助実行させることで、処理負荷のバランシングを実現するのである。
【0043】
CU6は、
図3に示すように、監視部61,第一ジョブ送受信部62a,第一スペシャルパケット処理部63および第一FPGA管理部64aとしての機能を有する。
【0044】
監視部61は、FPGAプール8aの各FPGA9の稼働状態の監視および分析を行なう。監視部61は、各FPGA9の稼働状況の監視として、各FPGA9からFPGA9の稼働状態を示す情報を収集してよい。
【0045】
例えば、監視部61は、各FPGA9の稼働状態を示す情報として、各FPGA9におけるジョブの実行状態を取得してよい。ジョブの実行状態は、例えば、FPGA9が処理するジョブの数(カウント),消費電力,実行時間等を含んでよい。FPGA9におけるジョブの実行時間は、FPGA9にジョブが入力されてから応答が出力されるまでの時間であってよい。FPGA9の稼働状況は、FPGA9の負荷状態であるともいえる。
【0046】
各FPGA9の稼働状態を示す情報は、後述するFPGA拡張機能部7aを介して収集される。
【0047】
また、監視部61は、各FPGA9の稼働状況の分析として、稼働状況を示す情報の変化を計測する。
【0048】
例えば、監視部61は、FPGA9におけるジョブの実行時間を、同一のFPGA9による前回の同一ジョブの実行時間と比較する。この比較の結果、ジョブの実行時間が前回の同一ジョブの実行時間よりも所定時間(閾値)以上長い場合に、当該FPGA9における処理遅延を検出する。処理遅延が検出されたFPGA9を、処理遅延FPGA9といってよい。また、処理遅延FPGA9が実行中のタスクを処理遅延タスクといってよい。
【0049】
監視部61が、FPGA9における処理遅延を検出すると、本コンピュータシステム1の動作モードは通常モードから負荷分散モードに移行する。監視部61は、例えば、CU6のメモリ22等の特定の記憶領域に、本コンピュータシステム1の動作モードを示す情報を記憶してよい。動作モードを示す情報は、例えば、フラグであってよく。通常モードにおいては0を、負荷分散モードにおいては1を設定してよい。
【0050】
また、監視部61は、処理遅延FPGA9によるジョブの実行時間を、処理遅延が発生していない状態での同一ジョブの実行時間と比較し、ジョブの実行時間の差が所定時間(閾値)未満の場合に、当該FPGA9における処理遅延の解消を検出する。
【0051】
監視部61は、FPGA9における処理遅延の解消を検出すると、本コンピュータシステム1の動作モードを負荷分散モードから通常モードに移行させる。
【0052】
また、監視部61は、FPGA9における処理遅延を検知した場合に、FPGAプール8aにおける複数のFPGA9の中から、処理遅延FPGA9の処理遅延タスクの処理を補助させるFPGA9を決定する。処理遅延FPGA9の処理遅延タスクの処理を補助させるFPGA9を補助FPGA9といってよい。処理遅延FPGA9の処理遅延タスクの処理を補助FPGA9にも実行(並列処理)させることで、負荷分散を実現することができる。
【0053】
処理遅延FPGA9が、複数のデバイスのうちの第1のデバイスに相当する。また、補助FPGA9が、複数のデバイスのうち第1のデバイスとは異なる第2のデバイスに相当する。
【0054】
監視部61は、処理遅延タスクの特性に応じて、FPGAプール8aにおけるホットスタンバイ状態のFPGA9の中から、補助FPGA9を選択してよい。例えば、監視部61は、以下のルール1~3のいずれかに従って、補助FPGA9の選択を行なってよい。
【0055】
(ルール1)
例えば、処理遅延タスクの特性として、処理遅延タスクがループ処理を多く含む場合に、監視部61は、回路規模が第1の閾値以下である小規模のFPGA9を補助FPGA9としてアペンド(追加)することを決定する。これにより、処理遅延タスクを、処理遅延FPGA9と補助FPGA9とで並列処理させる。
【0056】
なお、処理遅延タスクがループ処理を多く含む場合には、所定数以上のループを含むことや、ループ処理におけるループ回数が多いことが含まれていてよい。
【0057】
(ルール2)
例えば、処理遅延タスクの特性として、処置遅延タスクが高負荷な処理を含む場合に、監視部61は、処理遅延FPGA9よりも処理性能が高いFPGA9を補助FPGA9として決定する。具体的には、監視部61は、回路規模が第1の閾値よりも大きい大規模のFPGA9を補助FPGA9として用いることを決定する。監視部61は、処理遅延FPGA9において実行中の処理遅延タスクの処理を、より高速な補助FPGA9にオフロードさせる。
【0058】
(ルール3)
例えば、処理遅延タスクの特性として、処理遅延タスクが同じ処理を多く含む場合に、監視部61は、処理遅延タスクと回路規模が同等の補助FPGA9を追加することを決定する。これにより、処理遅延タスクを、処理遅延FPGA9と補助FPGA9とで並列処理させる。
【0059】
また、監視部61が、処理遅延FPGA9において、例えば、処理遅延が解消されたことを検出した場合に、本コンピュータシステム1の動作モードを負荷分散モードから通常モードに移行してよい。監視部61は、本コンピュータシステム1の動作モードを示す情報を更新する。
【0060】
監視部61は、FPGAプール8aにおけるホットスタンバイ状態のFPGA9の中から補助FPGA9を選択してよい。監視部61は、例えば、ホットスタンバイ状態にある複数のFPGA9の中から、補助FPGA9をランダムに決定してもよい。また、監視部61は、ホットスタンバイ状態のFPGA9の中から、処理遅延FPGA9と回路規模が同等のFPGA9を優先して補助FPGA9として選択してもよい。さらに、監視部61は、処理遅延FPGA9よりも回路規模が大きいFPGA9を優先して補助FPGA9として選択してもよい。
【0061】
図4は第1実施形態の一例としてのコンピュータシステム1における並列処理の強化手法を示す図である。
【0062】
この
図4においては、タスク#1~#10を含むジョブを処理する例を示している。この
図4においては、タスク#1~#7をフローA,B,Cの3つのフローに分割し、3つのFPGA#1~#3を用いて並列処理している。また、FPGA#4はタスク#8を、FPGA#5はタスク#9を、FPGA#6はタスク#10をそれぞれ処理している。
【0063】
例えば、タスク#2がループ処理を多く含むものであって、監視部61が、FPGA#1における処理遅延を検出した場合に、監視部61は、ルール1に従って、タスク#2の処理を行なう補助FPGA9をアペンドし、タスク#2のループを並列処理させることを決定してよい。
【0064】
また、例えば、タスク#3が高負荷であって、監視部61がFPGA#2における処理遅延を検出した場合に、監視部61は、ルール2に従って、タスク#3の処理をより高速な補助FPGA9にオフロードさせることで、高負荷なタスク#3の処理時間を短縮させることを決定してよい。
【0065】
さらに、例えば、タスク#10が同じ処理を多く含むものであって、監視部61がFPGA#6における処理遅延を検出した場合に、監視部61は、ルール3に従って、FPGA#6と同様の回路規模の補助FPGA9をアペンドし、タスク#10の処理を並列処理させることを決定してよい。
【0066】
第一ジョブ送受信部62aは、CXLスイッチ4(CXL拡張機能部5)を介してサーバ3からジョブを受信する。第一ジョブ送受信部62aはジョブを受信するスレーブとしての機能を実現する。
【0067】
また、第一ジョブ送受信部62aは、FPGA拡張機能部7aを介してFPGA9にジョブを送信する。第一ジョブ送受信部62aは、ジョブを送信(発信)するマスターとしての機能も実現する。
【0068】
第一FPGA管理部64aは、各FPGA9に関する論理配置の情報(コンフィギュレーション情報)を管理する。コンフィギュレーション情報は、例えば、CU6の記憶装置23に予め格納されていてよい。また、FPGA9の用途や仕様等に応じて、FPGA9毎に複数種類のコンフィギュレーション情報を予め用意してよい。
【0069】
第一FPGA管理部64aは、監視部61が決定した補助FPGA9に応じて、当該補助FPGA9に対応するコンフィギュレーション情報を記憶装置23から読み出し、第一スペシャルパケット処理部63に受け渡す。
【0070】
第一スペシャルパケット処理部63は、監視部61がFPGA9における処理遅延を検出すると、後述するCXL拡張機能部5に対して、スペシャルパケットの発行を依頼する。第一スペシャルパケット処理部63は、このCXL拡張機能部5に対するスペシャルパケットの発行依頼とともに、補助FPGA9を特定する情報や補助FPGA9を構成するための情報をCXL拡張機能部5に送信する。
【0071】
スペシャルパケットは、CXLプロトコルに準拠したパケットを拡張したものであって、CXLプロトコルに準拠した既知のパケットに含まれる特定の領域に、FPGA9を制御するための特定の情報が含まれている。スペシャルパケットは、FPGAプール8aのFPGA9(デバイス)を制御するためのデバイス制御パケットに相当する。以下、CXLプロトコルに準拠したパケットをCXLパケットといってよい。
【0072】
CXLパケットにおける特定の領域は、CXLパケットにおける予備領域等の未使用の領域であってよい。
【0073】
FPGA9を制御するための特定の情報は、FPGA9を設定するための情報であってよく、例えば、FPGA9を初期化するための情報(コマンド)や、FPGA9に設定される論理ブロックの種類や配置を示す情報を含んでよい。FPGA9を制御するための特定の情報は、第一FPGA管理部64aから取得した、補助FPGA9に関するコンフィギュレーション情報を含んでよい。
【0074】
また、第一スペシャルパケット処理部63は、CXL拡張機能部5(第二FPGA管理部54a)から送信されるスペシャルパケットを受信するスレーブとしての機能を実現する。
【0075】
第一スペシャルパケット処理部63は、受信したスペシャルパケットをFPGA拡張機能部7aに転送する。このスペシャルパケットは、FPGA拡張機能部7aに対して補助FPGA9の接続,初期化および論理配置を行なわせる、FPGA9を制御するための特定の情報を含む。すなわち、第一スペシャルパケット処理部63は、スペシャルパケットをFPGA拡張機能部7aに転送することで、FPGA拡張機能部7aに対して、補助FPGA9を使用可能な状態にさせるための指示を行なう。
【0076】
CU6は、監視部61によって各FPGA9の稼働状況(負荷状況)を監視し、処理遅延が検出された処理遅延FPGA9の処理遅延タスクの処理を補助FPGA9に補助させることで、FPGA9間において負荷を分散させるロードバランサーとしての機能を実現する。そして、CU6は、このようなFPGA9間における負荷分散(バランシング)をサーバ3のリソースを用いることなく実現する。
【0077】
また、CU6は、第一スペシャルパケット処理部63により、CXL拡張機能部5に対するスペシャルパケットの発行依頼を行なうことで、FPGA9の初期化や論理配置等の制御を実現する。CU6は、このようなFPGA9の制御についても、サーバ3のリソースを用いることなく実現する。
【0078】
CXL拡張機能部5は、CU6(第一スペシャルパケット処理部63)からのスペシャルパケットの発行依頼に基づいて、スペシャルパケットを生成し、発行する。
【0079】
図3に示すように、CXL拡張機能部5は、パケット読込部51,第二ジョブ送受信部52a,第二スペシャルパケット処理部53および第二FPGA管理部54aとしての機能を有する。CXL拡張機能部5としての機能は、例えば、回路装置によって実現されてもよく、また、プロセッサがプログラムを実行することで実現してもよく、適宜変更して実施することができる。
【0080】
パケット読込部51は、サーバ3から送信されたCXLプロトコルのパケットを読込む。
【0081】
第二ジョブ送受信部52aは、CXLスイッチ4を介してサーバ3からジョブを受信する。第二ジョブ送受信部52aはジョブを受信するスレーブとしての機能を実現する。
【0082】
また、第二ジョブ送受信部52aは、CU6を介してFPGA9にジョブを送信する。第二ジョブ送受信部52aは、ジョブを送信(発信)するマスターとしての機能も実現する。
【0083】
第二FPGA管理部54aは、CU6からのスペシャルパケットの発行依頼に応じて、スペシャルパケットを生成するための情報を準備する。
【0084】
スペシャルパケットを生成するための情報は、例えば、補助FPGA9の接続を指示する情報や、補助FPGA9の初期化を指示する情報および補助FPGA9の論理配置を示す情報を含んでよい。
【0085】
補助FPGA9の論理配置を示す情報は、例えば、CU6(第一スペシャルパケット処理部63)からスペシャルの発行依頼とともに送信された情報であってよい。また、第二FPGA管理部54aは、補助FPGA9の論理配置を示す情報を自身で生成もしくは取得してもよい。
【0086】
第二スペシャルパケット処理部53は、CU6からのスペシャルパケットの発行依頼に応じて、スペシャルパケットを生成する。
【0087】
第二スペシャルパケット処理部53は、CXLパケットの所定位置に、第二FPGA管理部54aが準備した、補助FPGA9の接続を指示する情報や、補助FPGA9の初期化を指示する情報および補助FPGA9の論理配置を示す情報を格納することで、スペシャルパケットを生成する。
【0088】
第二スペシャルパケット処理部53は、生成したスペシャルパケットをCU6に送信する。第二スペシャルパケット処理部53は、スペシャルパケットを送信するマスターとして機能を実現する。
【0089】
CXL拡張機能部5は、インターコネクト規格のパケットに基づいて、補助FPGA9(第2のデバイス)を制御するためのスペシャルパケット(デバイス制御パケット)を生成するデバイス制御パケット生成部に相当する。
【0090】
図3に示すように、FPGA拡張機能部7aは、例示的に、第三ジョブ送受信部71aおよび第三FPGA管理部72aとしての機能を有する。FPGA拡張機能部7aとしての機能は、例えば、回路装置によって実現されてもよく、また、プロセッサがプログラムを実行することで実現してもよく、適宜変更して実施することができる。
【0091】
FPGA拡張機能部7aはデバイス制御部に相当し、CXL拡張機能部5(デバイス制御パケット生成部)が生成したスペシャルパケット(デバイス制御パケット)に基づいて、補助FPGA9(第2のデバイス)を動作可能な状態に設定する。
【0092】
第三ジョブ送受信部71aは、FPGA9にジョブを送信し、また、FPGA9からジョブの実行結果を受信する。第三ジョブ送受信部71aは、FPGA9にジョブを送信する場合にはマスターとして機能し、FPGA9からジョブの実行結果を受信する場合にはスレーブとして機能する。
【0093】
第三FPGA管理部72aは、スペシャルパケットに含まれる、補助FPGA9の接続を指示する情報や、補助FPGA9の初期化を指示する情報および補助FPGA9の論理配置を示す情報に基づき、補助FPGA9に対して、接続,初期化および論理配置を行なう。
【0094】
例えば、第三FPGA管理部72aは、スペシャルパケットに含まれる補助FPGA9を特定する情報に基づいて、補助FPGA9を把握する。第三FPGA管理部72aは、この補助FPGA9に対して、初期化を行ない、さらに、補助FPGA9を構成するための情報に基づき論理配置を設定させる。
【0095】
なお、FPGA9に対する接続,初期化および論理配置は、既知の手法で実現することができ、その説明は省略する。
【0096】
〔B〕動作
上述の如く構成された第1実施形態の一例としてのコンピュータシステム1における処理を、
図6を参照しながら、
図5に示すシーケンス図に従って説明する。
【0097】
図6は、
図5のシーケンス図に示す処理の前後のコンピュータシステム1の状態を示す図である。
図6において、符号Aは
図5に示す処理の実行前の状態を示し、符号Bは処理の実行後の状態を示す。
【0098】
処理前においては、
図6の符号Aに示すように、複数のFPGA#1~#7のうち、FPGA#4~#7がホットスタンバイの状態である。また、FPGA#1はサーバ#1と、FPGA#2はサーバ#2と、FPGA#3はサーバ#3と、それぞれ1対1接続されている。
【0099】
また、以下においては、ユーザ端末12が複数のサーバ3のうちのサーバ#1にジョブを投入し、このジョブをFPGA#1が処理する例を示す。さらに、FPGA#1において処理遅延が検出された場合に、監視部61が上記のルール1に従って、FPGA#4を補助FPGA9としてアペンドすることを決定する。これにより、処理遅延タスクを、処理遅延FPGA#1と補助FPGA#4とで並列処理させるものとする。
【0100】
通常モードのコンピュータシステム1において、ユーザ端末12がサーバ#1にジョブを投入すると(
図5の符号A1参照)、このジョブは、CXLスイッチ4,CXL拡張機能部5,CU6およびFPGA拡張機能部7aを介してFPGA#1に投入される(
図5の符号A2参照)。FPGA#1は投入されたジョブを実行する(
図5の符号A3参照)。
【0101】
CU6の監視部61は、FPGA#1によるジョブの実行を監視し、分析を開始する(
図5の符号A4参照)。監視部61はFPGA#1によるジョブの実行時間を計測する(
図5の符号A5)。
【0102】
FPGA#1は、ジョブの実行を完了すると、実行結果をサーバ#1に送信する(
図5の符号A6参照)。
【0103】
CU6の監視部61は、ジョブの実行時間を監視し(
図5の符号A7参照)、測定した実行時間を、同一のFPGA#1による前回の同一ジョブの実行時間と比較する(
図5の符号A8参照)。この比較の結果、監視部61は、ジョブの実行時間が前回の同一ジョブの実行時間よりも所定時間以上長く、当該FPGA#1における処理遅延を検出したものとする。これにより、本コンピュータシステム1は通常モードから負荷分散モードに移行する。
【0104】
サーバ#1がユーザ端末12にジョブの実行結果を送信し、ユーザ端末12はこの実行結果を受信する(
図5の符号A9参照)。
【0105】
その後、ユーザ端末12は、サーバ#1に再度ジョブを投入すると(
図5の符号A10参照)、このジョブは、CXLスイッチ4およびCXL拡張機能部5を介してCU6に送信される。CU6の監視部61は、投入されたジョブの分析を行なう(
図5の符号A11参照)。例えば、監視部61は、補助FPGA9を決定する。
【0106】
CU6において、第一スペシャルパケット処理部63が、スペシャルパケットの発行依頼とともに、補助FPGA9を特定する情報や補助FPGA9を構成するための情報をCXL拡張機能部5に送信する(
図5の符号A12参照)。
【0107】
CXL拡張機能部5においては、第二スペシャルパケット処理部53が、CU6からのスペシャルパケットの発行依頼を受信し(
図5の符号A13参照)、スペシャルパケットを生成する。第二スペシャルパケット処理部53は、生成したスペシャルパケットをCU6に送信する(
図5の符号A14参照)。
【0108】
CU6において、第一スペシャルパケット処理部63は、スペシャルパケットをFPGA拡張機能部7aに転送する。第一FPGA管理部64aは、スペシャルパケットをFPGA拡張機能部7aに転送することで、FPGA拡張機能部7aに対して、補助FPGA9を使用可能な状態にさせるための指示を行なう。補助FPGA9を使用可能な状態にさせるための指示には、補助FPGA9の接続,初期化および論理配置の各指示が含まれる(
図5の符号A15参照)。
【0109】
FPGA拡張機能部7aは、スペシャルパケットを受信し、読み込む(
図5の符号A16参照)。FPGA拡張機能部7aは、スペシャルパケットに含まれる、補助FPGA9を使用可能な状態にさせるための指示に従って、FPGA#4に対して、接続,初期化および論理配置を行なう(
図5の符号A17参照)。これにより、
図6に符号Bで示すように、サーバ#1が、CXLの機能によりFPGA#1とFPGA#4とを使用可能な状態となる。
【0110】
その後、CU6は、FPGA拡張機能部7aに対して、ジョブを投入する(
図5の符号A18参照)。FPGA拡張機能部7aは、FPGA#1およびFPGA#4にジョブを分散配置し、並列処理させる(
図5の符号A19,A20参照)。
【0111】
FPGA#1およびFPGA#4による各ジョブの実行結果は、CU6,CXL拡張機能部5,CXLスイッチ4を介して、それぞれサーバ#1に送信される(
図5の符号A21,A22参照)。
【0112】
CU6の監視部61は、各FPGA#1,#4によるジョブの実行時間を監視し(
図5の符号A23参照)、測定した実行時間を、同一のFPGA#1,#4による前回の同一ジョブの各実行時間と比較する(
図5の符号A24参照)。また、サーバ#1はユーザ端末12にジョブの実行結果を送信する(
図5の符号A25参照)。
【0113】
〔C〕効果
このように、第1実施形態の一例としてのコンピュータシステム1によれば、CU6において、監視部61が各FPGA9によるジョブの実行時間を監視し、FPGA9において処理遅延を検出すると、負荷分散モードに移行し、補助FPGA9を決定する。
【0114】
また、第一スペシャルパケット処理部63が、CXL拡張機能部5に対して、補助FPGA9を特定する情報や補助FPGA9を構成するための情報とともにスペシャルパケットの発行依頼を送信する。
【0115】
そして、CXL拡張機能部5が、CU6(第一スペシャルパケット処理部63)からのスペシャルパケットの発行依頼に基づいて、スペシャルパケットを生成し、発行する。
【0116】
FPGA拡張機能部7aにおいて、第三FPGA管理部72aが、スペシャルパケットに含まれるFPGA9を制御するための特定の情報に基づいて、補助FPGA9の接続、初期化、および論理配置の設定を行なう。
【0117】
このように、FPGA9において処理遅延が発生した場合に、補助FPGA9を使用可能な状態にしてジョブ(処理遅延タスク)を処理させることで、処理遅延FPGA9の負荷を軽減し、ジョブの処理性能を向上させることができる。また、FPGAプール8aにおけるFPGA9の利用効率を向上させることができる。
【0118】
また、この際、FPGA9における処理遅延の検出から、補助FPGA9の決定、補助FPGA9の設定を、CU6,CXL拡張機能部5およびFPGA拡張機能部7aが実現する。これにより、サーバ3のリソースを用いることなく、また、サーバ3との通信も行なわないので、サーバ3等に負荷を与えることもない。
【0119】
CU6において、第一スペシャルパケット処理部63が、CXL拡張機能部5に対して、補助FPGA9を特定する情報や補助FPGA9を構成するための情報とともにスペシャルパケットの発行依頼を送信する。CXL拡張機能部5が、CU6(第一スペシャルパケット処理部63)からのスペシャルパケットの発行依頼に基づいて、スペシャルパケットを生成し、FPGA拡張機能部7aに対して送信する。これにより、CXLプロトコル(インターコネクト規格)上において、CU6とCXL拡張機能部5とFPGAプール8aとFPGA拡張機能部7aとの間でFPGA9の制御を実現することができる。
【0120】
例えば、いずれかのFPGA9に急な処理要求がありシステムのスケールアップが必要な場合に、CU6において監視部61が処理遅延FPGA9における処理遅延を検出する。CU6は、サーバ3を介在させることなく、予め準備された複数のコンフィギュレーションの中から、スケールアップのコンフィギュレーションをスペシャルパケットを介して指示することで、補助FPGA9の増設を実現し、処理遅延タスク(ジョブ)を処理させることができる。
【0121】
(II)第2実施形態の説明
上述した第1実施形態のコンピュータシステム1においては、FPGAプール8aを備え、CU6がFPGAプール8aのFPGA9を制御する機能を実現しているが、これに限定されるものではない。
【0122】
第2実施形態のコンピュータシステム1においては、GPUプール8bを備え、CU6がGPUプール8bのGPU13を制御する。
【0123】
〔A〕構成
〔A-1〕ハードウェア構成例
図7は第2実施形態の一例としてのコンピュータシステム1の構成を示す図である。
【0124】
図7に示すように、第2実施形態のコンピュータシステム1は、第1実施形態のFPGAプール8aに代えてGPUプール8bをそなえるものであり、その他の部分は第1実施形態のコンピュータシステム1と同様に構成されている。
【0125】
GPUプール8bには複数のGPU(デバイス)13が登録されている。ユーザ端末12から投入されたプログラムが、サーバ3,CXLスイッチ4およびCU6を介してGPUプール8bのGPU13に送信される。GPU13は、受信したプログラムを実行し、その実行結果をCU6およびCXLスイッチ4を介してサーバ3に応答(結果送信)する。サーバ3は、応答された実行結果をユーザ端末12に送信する。
【0126】
GPUプール8bに登録された複数のGPU13の中には、プログラムを実行していないホットスタンバイ(ホットスペア)状態のGPU13が含まれていてよい。
【0127】
GPUプール8bには、GPU拡張機能部7bが備えられている。GPU拡張機能部7bは、CU6とGPUプール8bとの間に介在する。GPU拡張機能部7bは、CU6(CXLスイッチ4)から送信されるスペシャルパケットに応じて、GPUプール8bのGPU13の管理を行なう。
【0128】
〔A-2〕機能構成例
図8は第2実施形態の一例としてのコンピュータシステム1のCXL拡張機能部5,CU6およびGPU拡張機能部7bの機能構成を示す図である。
CU6は、複数のデバイス(本第2実施形態においては複数のGPU13)を制御する制御装置であり、サーバ3のプロセッサと通信することなく、GPUプール8bのGPU13を制御する機能を実現する。
【0129】
CU(制御部)6は、複数のGPU13(デバイス)のうちの処理遅延GPU13(第1のデバイス)に処理遅延プログラム(処理対象)に対する処理遅延を検出した場合に、複数のGPU13のうちの処理遅延GPU13とは異なる補助GPU13(第2のデバイス)に、処理対象である処理遅延プログラムを処理させる。
【0130】
CU6は、GPU13の負荷状況を監視し、GPU13に処理遅延を検出した場合に、GPU13を追加して処理(プログラム)を補助実行させることで、処理負荷のバランシングを実現するのである。
【0131】
CU6は、
図8に示すように、監視部61,第一プログラム送受信部62b,第一スペシャルパケット処理部63および第一GPU管理部64bとしての機能を有する。
【0132】
監視部61は、GPUプール8bの各GPU13の稼働状態の監視および分析を行なう。監視部61は、各GPU13の稼働状況の監視として、各GPU13からGPU13の稼働状態を示す情報を収集してよい。
【0133】
例えば、監視部61は、各GPU13の稼働状態を示す情報として、各GPU13におけるプログラムの実行状態を取得してよい。プログラムの実行状態は、例えば、GPU13が処理するプログラムの数(カウント),消費電力,実行時間等を含んでよい。GPU13におけるプログラムの実行時間は、GPU13がプログラムの実行を開始してから実行結果が出力されるまでの時間であってよい。GPU13の稼働状況は、GPU13の負荷状態であるともいえる。
【0134】
各GPU13の稼働状態を示す情報は、後述するGPU拡張機能部7bを介して収集される。
【0135】
また、監視部61は、各GPU13の稼働状況の分析として、稼働状況を示す情報の変化を測定する。
【0136】
例えば、監視部61は、GPU13によるプログラムの実行時間を、同一のGPU13による前回の同一プログラムの実行時間と比較する。この比較の結果、プログラムの実行時間が前回の同一プログラムの実行時間よりも所定時間(閾値)以上長い場合に、当該GPU13における処理遅延を検出する。処理遅延が検出されたGPU13を、処理遅延GPU13といってよい。また、処理遅延GPU13が実行中のプログラムを処理遅延プログラムといってよい。
【0137】
監視部61が、GPU13における処理遅延を検出すると、本コンピュータシステム1の動作モードは通常モードから負荷分散モードに移行する。監視部61は、例えば、CU6のメモリ22等の特定の記憶領域に、本コンピュータシステム1の動作モードを示す情報を記憶してよい。動作モードを示す情報は、例えば、フラグであってよく。通常モードにおいては0を、負荷分散モードにおいては1を設定してよい。
【0138】
また、監視部61は、処理遅延GPU13によるプログラムの実行時間を、処理遅延が発生していない状態での同一プログラムの実行時間と比較し、プログラムの実行時間の差が所定時間(閾値)未満の場合に、当該GPU13における処理遅延の解消を検出する。
【0139】
監視部61は、GPU13における処理遅延の解消を検出すると、本コンピュータシステム1の動作モードを負荷分散モードから通常モードに移行させる。
【0140】
また、監視部61は、GPU13における処理遅延を検知した場合に、GPUプール8bにおける複数のGPU13の中から、処理遅延GPU13による処理遅延プログラムの実行を補助させるGPU13を決定する。処理遅延GPU13の処理遅延プログラムの実行を補助させるGPU13を補助GPU13といってよい。処理遅延GPU13の処理遅延タスクの処理を補助GPU13にも実行させることで、負荷分散を実現することができる。
【0141】
処理遅延GPU13が、複数のデバイスのうちの第1のデバイスに相当する。また、補助GPU13が、複数のデバイスのうち第1のデバイスとは異なる第2のデバイスに相当する。
【0142】
監視部61は、処理遅延プログラムの特性に応じて、GPUプール8bにおけるホットスタンバイ状態のGPU13の中から補助GPU13を選択してよい。
【0143】
例えば、監視部61は、ログにおいて、複数のGPU13によってプログラムを並列実行した場合に処理性能が向上したことが読み取れた場合に、当該プログラムを実行するGPU13(補助GPU13)を増やすことを決定してよい。すなわち、監視部61は、ログに基づいてGPU13のプログラムの並列性を分析し、並列実行により性能向上が予想される場合に、処理遅延GPU13と同等以上のGPU13を補助GPU13として決定してよい。監視部61は、処理遅延GPU13と選択した補助GPU13とによる並列実行を行なわせることを決定してよい。
【0144】
また、監視部61は、処理遅延GPU13よりも性能が高いGPU13がホットスタンバイ状態にあり、且つ、ログに基づいてGPU13のプログラムの並列性を分析した結果、並列実行を行なっても性能向上が期待できない場合に、性能が高いGPU13を補助GPU13として決定し、処理遅延GPU13に替えて補助GPU13に当該プログラムを実行させてもよい。
【0145】
また、監視部61が、処理遅延GPU13において、処理遅延が解消されたことを検出した場合に、本コンピュータシステム1の動作モードを負荷分散モードから通常モードに移行してよい。監視部61は、本コンピュータシステム1の動作モードを示す情報を更新する。
【0146】
監視部61は、GPUプール8bにおけるホットスタンバイ状態のGPU13の中から補助GPU13を選択してよい。監視部61は、例えば、ホットスタンバイ状態にある複数のGPU13の中から、補助GPU13をランダムに決定してもよい。また、監視部61は、ホットスタンバイ状態のGPU13の中から、処理遅延GPU13と演算性能が同等のGPU13を優先して補助GPU13として選択してもよい。さらに、監視部61は、処理遅延GPU13よりも演算性能が高いGPU13を優先して補助GPU13として選択してもよい。
【0147】
第一プログラム送受信部62bは、CXLスイッチ4(CXL拡張機能部5)を介してサーバ3からGPU13に実行させるプログラムを受信する。第一プログラム送受信部62bはプログラムを受信するスレーブとしての機能を実現する。
【0148】
また、第一プログラム送受信部62bは、GPU拡張機能部7bを介してGPU13にプログラムを送信し、このプログラムを実行させる。第一プログラム送受信部62bは、プログラムを送信(発信)するマスターとしての機能も実現する。
【0149】
第一GPU管理部64bは、各GPU13を設定するための情報を管理する。GPU13を設定するための情報には、例えば、GPU13を初期化するためのパラメータ情報が含まれてよい。GPU13を設定するための情報は、例えば、CU6の記憶装置23に予め格納されていてよい。また、GPU13を設定するための情報として、GPU13に実行させるプログラムの種類に応じて、GPU13毎に複数種類の情報を予め用意してよい。
【0150】
第一GPU管理部64bは、監視部61が決定した補助GPU13に応じて、当該補助GPU13に対応する設定するための情報を記憶装置23から読み出し、第一スペシャルパケット処理部63に受け渡す。
【0151】
第一スペシャルパケット処理部63は、監視部61がGPU13における処理遅延を検出すると、後述するCXL拡張機能部5に対して、スペシャルパケットの発行を依頼する。第一スペシャルパケット処理部63は、このCXL拡張機能部5に対するスペシャルパケットの発行依頼とともに、補助GPU13を特定する情報や補助GPU13を設定するための情報をCXL拡張機能部5に送信する。
【0152】
スペシャルパケットは、CXLプロトコルに準拠したパケットを拡張したものであって、CXLプロトコルに準拠した既知のパケットに含まれる特定の領域に、GPU13を制御するための特定の情報が含まれている。
【0153】
CXLパケットにおける特定の領域は、CXLパケットにおける予備領域等の未使用の領域であってよい。
【0154】
GPU13を制御するための特定の情報は、GPU13を設定するための情報であってよく、例えば、GPU13を初期化するための情報(コマンド)を含んでよい。GPU13を制御するための特定の情報は、第一GPU管理部64bから取得した、補助GPU13を設定するための情報を含んでよい。
【0155】
また、第一スペシャルパケット処理部63は、CXL拡張機能部5(第二GPU管理部54b)から送信されるスペシャルパケットを受信するスレーブとしての機能を実現する。
【0156】
第一スペシャルパケット処理部63は、受信したスペシャルパケットをGPU拡張機能部7bに転送する。このスペシャルパケットは、GPU拡張機能部7bに対して補助GPU13の接続および初期化を行なわせる、GPU13を制御するための特定の情報を含む。すなわち、第一スペシャルパケット処理部63は、スペシャルパケットをGPU拡張機能部7bに転送することで、GPU拡張機能部7bに対して、補助GPU13を使用可能な状態にさせるための指示を行なう。
【0157】
CU6は、監視部61によって各GPU13の稼働状況(負荷状況)を監視し、処理遅延が検出された処理遅延GPU13の処理遅延プログラムの実行を補助GPU13に補助させることで、GPU13間において負荷を分散させるロードバランサーとしての機能を実現する。そして、CU6は、このようなGPU13間における負荷分散(バランシング)をサーバ3のリソースを用いることなく実現する。
【0158】
また、CU6は、第一スペシャルパケット処理部63により、CXL拡張機能部5に対するスペシャルパケットの発行依頼を行なうことで、GPU13の接続や初期化等の制御を実現する。CU6は、このようなGPU13の制御についても、サーバ3のリソースを用いることなく実現する。
【0159】
CXL拡張機能部5は、CU6(第一スペシャルパケット処理部63)からのスペシャルパケットの発行依頼に基づいて、スペシャルパケットを生成し、発行する。
【0160】
CXL拡張機能部5は、
図8に示すように、パケット読込部51,第二プログラム送受信部52b,第二スペシャルパケット処理部53および第二GPU管理部54bとしての機能を有する。CXL拡張機能部5としての機能は、例えば、回路装置によって実現されてもよく、また、プロセッサがプログラムを実行することで実現してもよく、適宜変更して実施することができる。
【0161】
第二プログラム送受信部52bは、CXLスイッチ4を介してサーバ3からプログラムを受信する。第二プログラム送受信部52bはプログラムを受信するスレーブとしての機能を実現する。
【0162】
また、第二プログラム送受信部52bは、CU6を介してGPU13にプログラムを送信する。第二プログラム送受信部52bは、プログラムを送信(発信)するマスターとしての機能も実現する。
【0163】
第二GPU管理部54bは、CU6からのスペシャルパケットの発行依頼に応じて、スペシャルパケットを生成するための情報を準備する。
【0164】
スペシャルパケットを生成するための情報は、例えば、補助GPU13の接続を指示する情報や、補助GPU13の初期化を指示する情報を含んでよい。
【0165】
第二スペシャルパケット処理部53は、CU6からのスペシャルパケットの発行依頼に応じて、スペシャルパケットを生成する。
【0166】
第二スペシャルパケット処理部53は、CXLパケットの所定位置に、第二GPU管理部54bが準備した、補助GPU13の接続を指示する情報や、補助GPU13の初期化を指示する情報を格納することで、スペシャルパケットを生成する。
【0167】
第二スペシャルパケット処理部53は、生成したスペシャルパケットをCU6に送信する。第二スペシャルパケット処理部53は、スペシャルパケットを送信するマスターとして機能を実現する。
【0168】
CXL拡張機能部5は、インターコネクト規格のパケットに基づいて、補助GPU13(第2のデバイス)を制御するためのスペシャルパケット(デバイス制御パケット)を生成するデバイス制御パケット生成部に相当する。
【0169】
GPU拡張機能部7bは、
図8に示すように、例示的に、第三プログラム送受信部71bおよび第三GPU管理部72bとしての機能を有する。GPU拡張機能部7bとしての機能は、例えば、回路装置によって実現されてもよく、また、プロセッサがプログラムを実行することで実現してもよく、適宜変更して実施することができる。
【0170】
GPU拡張機能部7bはデバイス制御部に相当し、CXL拡張機能部5(デバイス制御パケット生成部)が生成したスペシャルパケット(デバイス制御パケット)に基づいて、補助GPU13(第2のデバイス)を動作可能な状態に設定する。
【0171】
第三プログラム送受信部71bは、GPU13にプログラムを送信し、また、GPU13からプログラムの実行結果を受信する。第三プログラム送受信部71bは、GPU13にプログラムを送信する場合にはマスターとして機能し、GPU13からプログラムの実行結果を受信する場合にはスレーブとして機能する。
【0172】
第三GPU管理部72bは、スペシャルパケットに含まれる、補助GPU13の接続を指示する情報や補助GPU13の初期化を指示する情報に基づき、補助GPU13に対して、接続および初期化を行なう。
【0173】
例えば、第三GPU管理部72bは、スペシャルパケットに含まれる補助GPU13を特定する情報に基づいて、補助GPU13を把握する。第三GPU管理部72bは、この補助GPU13に対して初期化を行なう。
【0174】
なお、GPU13に対する接続および初期化は、既知の手法で実現することができ、その説明は省略する。
【0175】
また、第三GPU管理部72bは、補助GPU13にプログラムを実行させるために、処理遅延GPU13が実行するプログラムを、補助GPU13が使用するメモリ領域や記憶領域にコピーする。
【0176】
また、第三GPU管理部72bは、サーバ3からGPU13に対してプログラムを実行させる命令が発行された場合に、例えば、プログラムの実行開始位置を指示することで、GPU13にプログラムを実行させる。プログラムの実行開始位置の指示は、例えば、cudaプログラム実行開始位置の指示であってよい。
【0177】
〔B〕動作
上述の如く構成された第2実施形態の一例としてのコンピュータシステム1における処理を、
図9に示すシーケンス図に従って説明する。
【0178】
以下に示す例において、処理前においては、GPU#1がサーバ#1と1対1接続されており、また、GPUプール8bにおける複数のGPU13のうち、GPU#4がホットスタンバイの状態であるものとする。
【0179】
また、以下においては、ユーザ端末12が複数のサーバ3のうちのサーバ#1にプログラムを投入し、このプログラムをGPU#1が実行する例を示す。さらに、GPU#1において処理遅延が検出された場合に、監視部61がGPU#4を補助GPU13としてアペンドすることを決定する。これにより、処理遅延タスクを、処理遅延GPU#1と補助GPU#4とで並列実行させるものとする。
【0180】
通常モードのコンピュータシステム1において、ユーザ端末12がサーバ#1にプログラムを投入すると(
図9の符号B1参照)、このプログラムは、CXLスイッチ4,CXL拡張機能部5,CU6およびGPU拡張機能部7bを介してGPU#1に投入される(
図9の符号B2参照)。GPU#1は投入されたプログラムを実行する(
図9の符号B3参照)。
【0181】
CU6の監視部61は、GPU#1によるプログラムの実行を監視し、分析を開始する(
図9の符号B4参照)。監視部61はGPU#1によるプログラムの実行時間を計測する(
図9の符号B5)。
【0182】
GPU#1は、プログラムの実行を完了すると、実行結果をサーバ#1に送信する(
図9の符号B6参照)。
【0183】
CU6の監視部61は、プログラムの実行時間を監視し(
図9の符号B7参照)、測定した実行時間を、同一のGPU#1による前回の同一プログラムの実行時間と比較する(
図9の符号B8参照)。この比較の結果、監視部61は、プログラムの実行時間が前回の同一プログラムの実行時間よりも所定時間以上長く、当該GPU#1における処理遅延を検出したものとする。これにより、本コンピュータシステム1は通常モードから負荷分散モードに移行する。
【0184】
サーバ#1がユーザ端末12にプログラムの実行結果を送信し、ユーザ端末12はこの実行結果を受信する(
図9の符号B9参照)。
【0185】
その後、ユーザ端末12は、サーバ#1に再度プログラムを投入すると(
図9の符号B10参照)、このプログラムは、CXLスイッチ4およびCXL拡張機能部5を介してCU6に送信される。CU6の監視部61は、投入されたプログラムの分析を行なう(
図9の符号B11参照)。例えば、監視部61は、補助GPU13を決定する。
【0186】
CU6において、第一スペシャルパケット処理部63が、スペシャルパケットの発行依頼とともに、補助GPU13を特定する情報や補助GPU13を設定するための情報をCXL拡張機能部5に送信する(
図9の符号B12参照)。このスペシャルパケットの発行依頼が、補助GPU13の接続依頼として機能する。
【0187】
CXL拡張機能部5においては、第二スペシャルパケット処理部53が、CU6からのスペシャルパケットの発行依頼を受信し(
図9の符号B13参照)、スペシャルパケットを生成する。第二スペシャルパケット処理部53は、生成したスペシャルパケットをCU6に送信する(
図9の符号B14参照)。
【0188】
CU6において、第一スペシャルパケット処理部63は、スペシャルパケットをGPU拡張機能部7bに転送する。第一GPU管理部64bは、スペシャルパケットをGPU拡張機能部7bに転送することで、GPU拡張機能部7bに対して、補助GPU13を使用可能な状態にさせるための指示を行なう。補助GPU13を使用可能な状態にさせるための指示には、補助GPU13の接続および初期化の各指示が含まれる(
図9の符号B15参照)。
【0189】
GPU拡張機能部7bは、スペシャルパケットを受信し、読み込む。GPU拡張機能部7bは、スペシャルパケットに含まれる、補助GPU13を使用可能な状態にさせるための指示に従って、GPU#4に対して、接続および初期化を行なう(
図9の符号B16参照)。これにより、サーバ#1が、CXLの機能によりGPU#1とGPU#4とを使用可能な状態となる。
【0190】
その後、CU6は、GPU拡張機能部7bに対して、プログラムを投入し実行指示を行なう(
図9の符号B18参照)。GPU拡張機能部7bは、GPU#1およびGPU#4にプログラムを並列実行させる(
図9の符号B19,B20参照)。
【0191】
GPU#1およびGPU#4による各プログラムの実行結果は、CU6,CXL拡張機能部5,CXLスイッチ4を介して、それぞれサーバ#1に送信される(
図9の符号B21,B22参照)。
【0192】
CU6の監視部61は、各GPU#1,#4によるジョブの実行時間を監視し(
図9の符号B23参照)、測定した実行時間を、同一のGPU#1,#4による前回の同一ジョブの各実行時間と比較する(
図9の符号B24参照)。また、サーバ#1はユーザ端末12にプログラムの実行結果を送信する(
図9の符号B25参照)。
【0193】
〔C〕効果
このように、第2実施形態の一例としてのコンピュータシステム1によれば、GPU13に関しても、第1実施形態と同様の作用効果を得ることができる。
【0194】
すなわち、GPU13において処理遅延が発生した場合に、補助GPU13を使用可能な状態にしてプログラム(処理遅延プログラム)を行なわせることで、処理遅延GPU13の負荷を軽減し、プログラムの処理性能を向上させることができる。また、GPUプール8bにおけるGPU13の利用効率を向上させることができる。
【0195】
また、この際、GPU13における処理遅延の検出から、補助GPU13の決定、補助GPU13の設定を、CU6,CXL拡張機能部5およびGPU拡張機能部7bが実現する。これにより、サーバ3のリソースを用いることなく、また、サーバ3との通信も行なわないので、サーバ3等に負荷を与えることもない。
【0196】
CU6において、第一スペシャルパケット処理部63が、CXL拡張機能部5に対して、補助GPU13を特定する情報や補助GPU13を設定するための情報とともにスペシャルパケットの発行依頼を送信する。CXL拡張機能部5が、CU6(第一スペシャルパケット処理部63)からのスペシャルパケットの発行依頼に基づいて、スペシャルパケットを生成し、GPU拡張機能部7bに対して送信する。これにより、CXLプロトコル(インターコネクト規格)上において、CU6とCXL拡張機能部5とGPU拡張機能部7bとGPUプール8bとの間でGPU13の制御を実現することができる。
【0197】
例えば、いずれかのGPU13に急な処理要求がありシステムのスケールアップが必要な場合に、CU6において監視部61が処理遅延GPU13における処理遅延を検出する。CU6は、CXL拡張機能部5にスペシャルパケットの発行を指示することで、サーバ3を介在させることなく、補助GPU13の増設を実現し、処理遅延プログラムを処理させることができる。
【0198】
(III)その他
そして、開示の技術は上述した各実施形態に限定されるものではなく、各実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0199】
例えば、上述した第1実施形態のコンピュータシステム1においては、CU6がFPGAプール8aのFPGA9を制御する例を示し、第2実施形態のコンピュータシステム1においては、CU6がGPUプール8bのGPU13を制御する例を示したが、これに限定されるものではない。
【0200】
CU6は、例えば、ストレージプール10の複数の記憶装置や、メモリプール11の複数のメモリデバイスを制御してもよく、適宜変更して実施することができる。
【0201】
また、上述した各実施形態においては、CXLスイッチ4とは独立してCU6が備えられた例を示しているが、これに限定されるものではない。例えば、CXLスイッチ4とCU6とが一体に構成されてもよい。また、CU6にFPGA拡張機能部7aやGPU拡張機能部7bとしての機能を含んでもよい。
【0202】
また、本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0203】
例えば、第1実施形態と第2実施形態とを組み合わせてもよい。すなわち、FPGAプール8aとGPUプール8bとを備え、CU6がFPGAプール8aのFPGA9とGPUプール8bのGPU13とを制御してもよい。
【0204】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0205】
(IV)付記
以上の実施形態に関し、さらに以下の付記を開示する。
【0206】
(付記1)
プロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記プロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスと、を有するコンピュータシステムに備えられる情報処理装置であって、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる制御部
を有することを特徴とする情報処理装置。
【0207】
(付記2)
前記コンピュータシステムが、
前記インターコネクト規格のパケットに基づいて、前記第2のデバイスを制御するためのデバイス制御パケットを生成するデバイス制御パケット生成部と、
前記複数のデバイスを制御するデバイス制御部とを備え、
前記制御部が、前記デバイス制御パケット生成部に対して、前記デバイス制御パケットの発行を依頼し、
前記デバイス制御部が、前記デバイス制御パケット生成部が生成した前記デバイス制御パケットに基づいて、前記第2のデバイスを動作可能な状態に設定する
ことを特徴とする付記1に記載の情報処理装置。
【0208】
(付記3)
前記デバイスがFPGA(Field Programmable Gate Array)であり、前記デバイス制御部が、前記デバイス制御パケットに従って前記FPGAの論理配置を設定する
ことを特徴とする付記2に記載の情報処理装置。
【0209】
(付記4)
前記デバイスがGPU(Graphics Processing Unit)であり、前記デバイス制御部が、前記デバイス制御パケットに従って前記GPUの初期化を行なう
ことを特徴とする付記2に記載の情報処理装置。
【0210】
(付記5)
第1のプロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記第1のプロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスと、を有するコンピュータシステムに備えられる情報処理装置の第2のプロセッサに、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる
機能を実行させるプログラム。
【0211】
(付記6)
前記コンピュータシステムが、
前記インターコネクト規格のパケットに基づいて、前記第2のデバイスを制御するためのデバイス制御パケットを生成するデバイス制御パケット生成部と、
前記複数のデバイスを制御するデバイス制御部と、を備え、
前記第2のプロセッサに、
前記デバイス制御パケット生成部に対して、前記デバイス制御パケットの発行を依頼し、
前記デバイス制御部が、前記デバイス制御パケット生成部が生成した前記デバイス制御パケットに基づいて、前記第2のデバイスを動作可能な状態に設定する
機能を実行させることを特徴とする付記5に記載のプログラム。
【0212】
(付記7)
前記デバイスがFPGAであり、前記デバイス制御部が、前記デバイス制御パケットに従って前記FPGAの論理配置を設定する
ことを特徴とする付記6に記載のプログラム。
【0213】
(付記8)
前記デバイスがGPUであり、前記デバイス制御部が、前記デバイス制御パケットに従って前記GPUの初期化を行なう
ことを特徴とする付記6に記載のプログラム。
【0214】
(付記9)
プロセッサと、
インターコネクト規格に準拠するインターコネクトスイッチと、
前記プロセッサに前記インターコネクトスイッチを介して接続される複数のデバイスと、を有するコンピュータシステムに備えられる情報処理装置が、
前記複数のデバイスのうちの第1のデバイスに処理対象に対する処理遅延を検出した場合に、前記複数のデバイスのうちの前記第1のデバイスとは異なる第2のデバイスに、前記処理対象を処理させる
機能を実行することを特徴とする制御方法。
【0215】
(付記10)
前記コンピュータシステムが、
前記インターコネクト規格のパケットに基づいて、前記第2のデバイスを制御するためのデバイス制御パケットを生成するデバイス制御パケット生成部と、
前記複数のデバイスを制御するデバイス制御部と、を備え、
前記情報処理装置が、前記デバイス制御パケット生成部に対して、前記デバイス制御パケットの発行を依頼し、
前記デバイス制御部が、前記デバイス制御パケット生成部が生成した前記デバイス制御パケットに基づいて、前記第2のデバイスを動作可能な状態に設定する
機能を実行することを特徴とする付記9に記載の制御方法。
【0216】
(付記11)
前記デバイスがFPGAであり、前記デバイス制御部が、前記デバイス制御パケットに従って前記FPGAの論理配置を設定する
ことを特徴とする付記10に記載の制御方法。
【0217】
(付記12)
前記デバイスがGPUであり、前記デバイス制御部が、前記デバイス制御パケットに従って前記GPUの初期化を行なう
ことを特徴とする付記10に記載の制御方法。
【符号の説明】
【0218】
1 コンピュータシステム
2 スイッチ
3 サーバ
4 CXLスイッチ
5 CXL拡張機能部
6 CU
7a FPGA拡張機能部
7b GPU拡張機能部
8a FPGAプール
8b GPUプール
9 FPGA
10 ストレージプール
11 メモリプール
12 ユーザ端末
13 GPU
21 プロセッサ
22 メモリ
23 記憶装置
24 インタフェース
51 パケット読込部
52a 第二ジョブ送受信部
52b 第二プログラム送受信部
53 第二スペシャルパケット処理部
56 第二FPGA管理部
61 監視部
62a 第一ジョブ送受信部
62b 第一プログラム送受信部
63 第一スペシャルパケット処理部
64 第一FPGA管理部
71a 第三ジョブ送受信部
71b 第三プログラム送受信部
72a 第三FPGA管理部
72b 第三GPU管理部