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

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

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

特開2024-110228中継プログラム、中継方法、情報処理装置、並びに、情報処理システム
<>
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図1
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図2
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図3
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図4
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図5
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図6
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図7
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図8
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図9
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図10
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図11
  • 特開-中継プログラム、中継方法、情報処理装置、並びに、情報処理システム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024110228
(43)【公開日】2024-08-15
(54)【発明の名称】中継プログラム、中継方法、情報処理装置、並びに、情報処理システム
(51)【国際特許分類】
   G06F 15/177 20060101AFI20240807BHJP
   G06F 9/50 20060101ALI20240807BHJP
【FI】
G06F15/177 A
G06F9/50 120Z
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2023014694
(22)【出願日】2023-02-02
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】桑村 慎哉
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045HH06
5B045KK06
(57)【要約】
【課題】アプリケーションを実行する情報処理装置にリソースが追加される場合における、アプリケーションの実行時間の短縮を図る。
【解決手段】アプリケーション22が利用するリソースである第1リソースを初期化するための初期化要求を取得し、前記初期化要求に基づき、前記アプリケーションが実行される情報処理装置に前記第1リソースを割り当てるための割当要求を、複数の前記リソースを管理する管理システム6に送信し、前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、前記管理システムからの前記割当要求に対する割当完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する。
【選択図】図6
【特許請求の範囲】
【請求項1】
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1のコンピュータに前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1のコンピュータに割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理をコンピュータに実行させる、中継プログラム。
【請求項2】
前記第1リソースに前記計算要求を送信する処理は、前記アプリケーションから前記計算要求を取得し、且つ、前記第1リソースから前記初期化要求に応じた初期化が完了したことを示す完了応答を受信した場合に、前記第1リソースに前記計算要求を送信する、処理を含む、
請求項1に記載の中継プログラム。
【請求項3】
前記第1のコンピュータである前記コンピュータに、前記アプリケーションよりも下位のレイヤにおいて前記中継処理を実行させ、
前記アプリケーションに前記事前処理を開始させる処理は、前記初期化要求に対する初期化完了応答を前記アプリケーションに送信する、処理を含む、
請求項1又は請求項2に記載の中継プログラム。
【請求項4】
前記第1のコンピュータである前記コンピュータに、前記アプリケーションの一部の機能として、前記中継処理を実行させる、
請求項1又は請求項2に記載の中継プログラム。
【請求項5】
前記複数のハードウェアリソースのうちの前記第1リソースを備える第2のコンピュータである前記コンピュータに、前記中継処理を実行させる、
請求項1又は請求項2に記載の中継プログラム。
【請求項6】
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1のコンピュータに前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1のコンピュータに割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理をコンピュータが実行する、中継方法。
【請求項7】
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1の情報処理装置に前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1の情報処理装置に割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理を実行する制御部を備える、情報処理装置。
【請求項8】
アプリケーションを実行する第1の情報処理装置と、
複数のハードウェアリソースを備える複数の第2の情報処理装置と、
前記複数のハードウェアリソースを管理する管理システムと、
中継処理を実行する制御部と、を備え、
前記制御部は、
前記アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記第1の情報処理装置に前記第1リソースを割り当てるための割り当て要求を、前記管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1の情報処理装置に割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中継プログラム、中継方法、情報処理装置、並びに、情報処理システムに関する。
【背景技術】
【0002】
ハードウェアリソースの利用効率の向上、柔軟な構成の物理サーバの提供、等を実現するための技術として、コンポーザブルインフラ(Composable Infrastructure:CI、又は、Composable Disaggregated Infrastructure:CDI)が知られている。
【0003】
コンポーザブルインフラは、サーバ等の情報処理装置と、サーバから分離した複数のハードウェアリソースを含むリソースプールと、を高速なインターコネクトで接続するアーキテクチャによって実現される。ハードウェアリソースとしては、GPU(Graphics Processing Unit)及びアクセラレータ等の処理装置(処理ユニット)、並びに、メモリ及びストレージ等の記憶装置、等の種々のリソース(資源)が挙げられる。
【0004】
コンポーザブルインフラにより、サーバで実行されるアプリケーションにおいてリソース(一例としてGPU)が必要になった時点で、サーバに当該リソース(GPU)を追加できる。このように、コンポーザブルインフラでは、サーバへの動的なリソースの追加が可能である。
【0005】
コンポーザブルインフラは、管理システムを備える。管理システムは、サーバへのリソースの割り当てを管理する。例えば、管理システムは、リソースの割り当て要求の受信に応じて、インターコネクトの接続の切り替えを行なうスイッチを制御し、サーバにリソースを認識させることで、サーバへのリソースの割り当てを実現する。
【0006】
以下、コンポーザブルインフラの運用形態の一例として、以下の(1)~(5)の処理を説明する。
【0007】
(1)アプリケーションがGPUを必要とする場合、例えば画像に対する物体検出等のAI(Artificial Intelligence)タスクが実行される場合、アプリケーションは、管理システムにリソース割り当て要求を発行し、動作(例えばAIタスク)を中断する。
【0008】
(2)管理システムは、リソース割り当て要求の受信に応じてサーバにGPUを割り当て、サーバ(アプリケーション)にリソース割り当ての完了応答を発行する。
【0009】
(3)アプリケーションは、完了応答の受信に応じて、割り当てられたGPUを認識し、当該GPUを初期化するための初期化要求を当該GPU(リソースプール)に発行する。
【0010】
(4)アプリケーションは、初期化要求に対する初期化の完了応答の受信に応じて、中断していた動作(例えばAIタスク)を再開し、計算要求をGPUに発行し、GPUから計算結果を受信する。
【0011】
(5)アプリケーションによるGPUの利用(計算)が終了すると、管理システムは、サーバへのGPUの割り当てを解放する。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2012-32873号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
アプリケーションの実行中にリソースプールからサーバにGPU等のリソースを割り当てる(追加する)運用形態においては、サーバへのリソースの割り当てが完了するまで、アプリケーションの実行が中断される。
【0014】
例えば、リソースの割り当てを含むハードウェアの構成変更には、数十秒程度の時間がかかることがあるため、アプリケーションの実行は、数十秒程度の時間に亘って中断される。また、追加されるリソースの数が増加すると、中断時間はさらに長くなる。
【0015】
このように、コンポーザブルインフラの上述した運用形態においては、アプリケーションの実行の開始から終了までの実行時間が長期化することがある。
【0016】
1つの側面では、本発明は、アプリケーションを実行する情報処理装置にリソースが追加される場合における、アプリケーションの実行時間の短縮を図ることを目的の1つとする。
【課題を解決するための手段】
【0017】
1つの側面では、中継プログラムは、中継処理をコンピュータに実行させる。前記中継処理は、アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得する処理を含んでよい。また、前記中継処理は、前記初期化要求に基づき、前記アプリケーションが実行される第1のコンピュータに前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信する処理を含んでよい。さらに、前記中継処理は、前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させる処理を含んでよい。また、前記中継処理は、前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1のコンピュータに割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信する処理を含んでよい。さらに、前記中継処理は、前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する処理を含んでよい。
【発明の効果】
【0018】
1つの側面では、本発明は、アプリケーションを実行する情報処理装置にリソースが追加される場合における、アプリケーションの実行時間を短縮することができる。
【図面の簡単な説明】
【0019】
図1】一実施形態に係るシステムのハードウェア構成例を示すブロック図である。
図2】一実施形態に係るサーバの一例としてのコンピュータのハードウェア構成例を示すブロック図である。
図3図1に示すサーバのソフトウェア構成例を示すブロック図である。
図4】中継モジュールの実装例を説明するための図である。
図5】中継モジュールの実装例を説明するための図である。
図6】一実施形態に係るシステムの動作例を説明するためのシーケンス図である。
図7】一実施形態に係る中継モジュールの初期化制御部の動作例を説明するフローチャートである。
図8】一実施形態に係る中継モジュールの割り当て判定部の動作例を説明するフローチャートである。
図9】一実施形態に係る中継モジュールの計算制御部の動作例を説明するフローチャートである。
図10】一実施形態の変形例に係るサーバのソフトウェア構成例を示すブロック図である。
図11】一実施形態の変形例に係る初期化制御部の実装例を説明するための図である。
図12】一実施形態の変形例に係るシステムの動作例を説明するためのシーケンス図である。
【発明を実施するための形態】
【0020】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0021】
〔A〕ハードウェア構成例
図1は、一実施形態に係るシステム1のハードウェア構成例を示すブロック図である。図1に示すように、システム1は、例示的に、複数(図1では3台)のサーバ2(図1ではサーバ#0~#2と表記),リソースプール3,インターコネクト4,スイッチ5,及び管理システム6を備えてよい。
【0022】
システム1は、サーバ2にリソースプール3内のリソースを割り当て、サーバ2にリソースを用いた処理を実行させる情報処理システムの一例である。
【0023】
複数のサーバ2の各々は、情報処理装置(第1の情報処理装置)又はコンピュータの一例である。サーバ2は、ハードウェアリソースとして、少なくともCPU(Central Processing Unit)2aを備えてよい。CPU2aは、プロセッサの一例であり、アプリケーションを含む種々のソフトウェアを実行する。
【0024】
サーバ2は、汎用コンピュータであってもよいし、リソースプール3を利用することを前提として、コンピュータを構成するハードウェアリソースのうちの少なくとも一部の実装を省略したコンピュータであってもよい。
【0025】
一実施形態では、サーバ2は、例えば、CPU2a以外に、サーバ2が単独で動作可能な最低限のハードウェアリソースを備える汎用コンピュータであるものとして説明する。以下、ハードウェアリソースを、単にハードウェア(HW)又はリソースと表記する場合がある。
【0026】
図2は、一実施形態に係るサーバ2の一例としてのコンピュータ10のハードウェア構成例を示すブロック図である。図2に示すように、コンピュータ10は、ハードウェア構成として、例示的に、プロセッサ10a,グラフィック処理装置10b,メモリ10c,記憶部10d,IF(Interface)部10e,IO(Input / Output)部10f,及び読取部10gを備えてよい。
【0027】
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10jで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
【0028】
プロセッサ10aとしては、例えば、図1に示すCPU2aが挙げられる。また、プロセッサ10aの他の例としては、MPU,APU,DSP,ASIC,FPGA等の集積回路(IC;integrated circuit)が挙げられる。なお、プロセッサ10aとして、これらの集積回路の2以上の組み合わせが用いられてもよい。MPUはMicro Processing Unitの略称である。APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
【0029】
グラフィック処理装置10bは、IO部10fのうちのモニタ等の出力装置に対する画面表示制御を行なう。また、グラフィック処理装置10bは、機械学習モデルを利用した機械学習処理及び推論処理を実行するアクセラレータとしての構成を有してもよい。グラフィック処理装置10bとしては、種々の演算処理装置、例えば、GPU(Graphics Processing Unit),APU,DSP,ASIC又はFPGA等の集積回路(IC)が挙げられる。
【0030】
メモリ10cは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。メモリ10cとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ,PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
【0031】
記憶部10dは、種々のデータやプログラム等の情報を格納するハードウェアの一例である。記憶部10dとしては、HDD(Hard Disk Drive)等の磁気ディスク装置,SSD等の半導体ドライブ装置,不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ,SCM(Storage Class Memory),ROM(Read Only Memory)等が挙げられる。
【0032】
記憶部10dは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10h(中継プログラム)を格納してよい。
【0033】
例えば、サーバ2のプロセッサ10aは、記憶部10dに格納されたプログラム10hをメモリ10cに展開して実行することにより、後述するサーバ2又は2A(例えば、図3に示す制御部24又は図10に示す制御部24A)としての機能を実現できる。
【0034】
IF部10eは、サーバ2とリソースプール3又は管理システム6との間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10eは、PCIe(Peripheral Component Interconnect express),イーサネット(登録商標),インフィニバンド(InfiniBand),ミリネット(Myrinet)等の、インターコネクト4の通信規格に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。また、当該アダプタは、例えば、FC(Fibre Channel)等の光通信に準拠してもよい。
【0035】
例えば、サーバ2は、IF部10e及びインターコネクト4を介して、リソースプール3及び管理システム6のそれぞれと相互に通信可能に接続されてよい。なお、プログラム10hは、当該通信IFを介して、インターコネクト4又は図示しないネットワークからコンピュータ10にダウンロードされ、記憶部10dに格納されてもよい。
【0036】
IO部10fは、入力装置及び出力装置の一方又は双方を含んでよい。入力装置としては、例えば、キーボード,マウス,タッチパネル等が挙げられる。出力装置としては、例えば、モニタ,プロジェクタ,プリンタ等の表示装置が挙げられる。また、IO部10fは、入力装置及び出力装置が一体となったタッチパネル等を含んでもよい。出力装置は、グラフィック処理装置10bに接続されてもよい。
【0037】
読取部10gは、記録媒体10iに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10gは、記録媒体10iを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10gとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ,記録ディスクへのアクセスを行なうドライブ装置,SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10iにはプログラム10hが格納されてもよく、読取部10gが記録媒体10iからプログラム10hを読み出して記憶部10dに格納してもよい。
【0038】
記録媒体10iとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク,CD(Compact Disc),DVD(Digital Versatile Disc),ブルーレイディスク,HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
【0039】
上述したコンピュータ10のハードウェア構成は例示である。従って、コンピュータ10内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。
【0040】
図1の説明に戻り、リソースプール3は、1種類以上のハードウェアのプールを備えてよい。例えば、リソースプール3は、複数のメモリ30aを備えるメモリプール31,複数のGPU30bを備えるGPUプール32,並びに複数のSSD30cを備えるSSDプール33を備えてよい。以下、メモリプール31,GPUプール32及びSSDプール33をプール30と表記する場合がある。
【0041】
各プール30は、特定の種類のハードウェアを複数搭載した情報処理装置(第2の情報処理装置)又はコンピュータの一例である。特定の種類のハードウェアとは、プール30がリソースプール3として提供するハードウェアである。例えば、特定の種類のハードウェアは、メモリプール31ではメモリ30aであり、GPUプール32ではGPU30bであり、SSDプール33ではSSD30cである。特定の種類のハードウェアとしては、図1に示すハードウェアに限定されるものではなく、例えば、アクセラレータや、その他の種々のハードウェアが挙げられる。
【0042】
各プール30は、例えば、特定の種類のハードウェアを多く搭載した汎用コンピュータであってもよい。或いは、各プール30は、リソースプール3として利用されることを前提として、コンピュータを構成するハードウェアリソースのうちの少なくとも一部の実装を省略したコンピュータであってもよい。一実施形態では、各プール30は、例えば、リソースプール3として利用されることを前提としたコンピュータであるものとして説明する。
【0043】
各プール30は、図2に示すコンピュータ10と同様のハードウェア構成を備えてもよい。この場合、各プール30のコンピュータ10内でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。なお、メモリ30aは、図2に示すメモリ10cと同様であってもよく、GPU30bは、図2に示すグラフィック処理装置10bと同様であってもよく、SSD30cは、図2に示す記憶部10dと同様であってもよい。
【0044】
インターコネクト4は、スイッチ5の切り替えに応じて、サーバ2,リソースプール3及び管理システム6を相互に通信可能に接続するネットワーク(高速インターコネクト)である。インターコネクト4は、例えば、PCIe,イーサネット(登録商標),インフィニバンド,ミリネット等の高速なバスアーキテクチャに対応したネットワークであってよい。
【0045】
スイッチ5は、サーバ2,リソースプール3及び管理システム6間の接続の切り替え(オン/オフ)を行なう。例えば、スイッチ5は、管理システム6からの制御に応じて、インターコネクト4におけるサーバ2,リソースプール3及び管理システム6間の接続を切り替えてよい。
【0046】
管理システム6は、リソースプール3内の複数のハードウェアリソースの管理,サーバ2への複数のハードウェアリソースの割り当て(追加)及び割り当て解除(削除)の管理,等のシステム1全体の管理を行なう。例えば、管理システム6は、サーバ2からのリソースの割り当て要求の受信に応じて、スイッチ5を制御してサーバ2にリソースを認識させることで、サーバ2へのリソースの割り当てを実現してよい。管理システム6による、ハードウェアリソースの管理、並びに、サーバ2へのハードウェアリソースの割り当ての管理は、例えば、既知の種々の手法が用いられてよい。
【0047】
〔B〕ソフトウェア構成例
図3は、図1に示すサーバ2のソフトウェア構成例を示すブロック図である。図3に示すように、サーバ2は、例示的に、メモリ部21,アプリケーション22,及び中継モジュール23を備えてよい。アプリケーション22及び中継モジュール23は、制御部24の一例である。
【0048】
メモリ部21は、記憶領域の一例であり、サーバ2が利用する種々のデータを記憶する。メモリ部21は、例えば、図2に示すメモリ10c及び記憶部10dのうちの一方又は双方が有する記憶領域により実現されてもよい。
【0049】
図3に示すように、メモリ部21は、例示的に、複数の画像21a,複数の変換済画像21b,及び複数のコマンド21cを記憶可能であってよい。
【0050】
アプリケーション22は、サーバ2が有するハードウェアリソース及びリソースプール3内のハードウェアリソースの一方又は双方を利用した、種々の処理を実行するプログラム(アプリケーションプログラム)である。図3では図示を省略するが、アプリケーション22は、サーバ2のCPU2aにより実行されるOS(Operating System)上で実行されてもよい。
【0051】
一実施形態では、アプリケーション22は、画像21aを用いたAIタスク、例えば画像解析処理を実行するものとする。例えば、アプリケーション22は、リソースプール3のGPUプール32を利用して、画像解析処理を行なうための機械学習モデルの訓練(機械学習処理)を実行する。訓練に先立ち、アプリケーション22は、複数の画像21aの各々の画像サイズ,形式等を変換して変換済画像21bを取得する前処理を行なう。そして、アプリケーション22は、変換済画像21bをGPUプール32のGPU30bに送信し、GPU30bから受信する訓練結果を用いて機械学習モデルのパラメータを更新することで、機械学習モデルを訓練する。
【0052】
中継モジュール23は、アプリケーション22と、管理システム6又はリソースプール3との間で通信される種々のコマンド(要求及び応答)を中継するソフトウェアモジュールである。
【0053】
例えば、中継モジュール23は、管理システム6によるアプリケーション22へのリソースの割り当て状況に応じて、アプリケーション22から発行されるハードウェアリソースの初期化コマンドを遅延させてよい。中継モジュール23による中継処理の詳細は後述する。
【0054】
中継モジュール23は、種々の形態でサーバ2に実装されてよい。一例として、中継モジュール23は、アプリケーション22とは別体のソフトウェアとしてサーバ2に実装されてもよい。例えば、中継モジュール23は、ミドルウェア,ライブラリ,ドライバのいずれかに実装されてもよく、或いは、これらの2つ以上に跨がって又は分散して実装されてもよい。
【0055】
図4及び図5は、中継モジュール23の実装例を説明するための図である。図4は、中継モジュール23がアプリケーション22とライブラリ20cとの間、例えばミドルウェア又はライブラリ20cに実装される例を示す。図5は、中継モジュール23がドライバ20bとリソース20aとの間、例えばドライバ20bに実装される例を示す。
【0056】
なお、リソース20aは、サーバ2が有するハードウェアリソースであり、CPU2aを含んでよい。
【0057】
ドライバ20b及びライブラリ20cは、アプリケーション22がリソース20aを利用するために用いられるモジュールであり、これらの少なくとも一部はOSに実装されてもよい。
【0058】
図4又は図5に例示するように、中継モジュール23は、アプリケーション22の下位の階層(レイヤ)に実装されてよい。これにより、中継モジュール23は、アプリケーション22の動作に起因する種々のコマンド21cを取得できる。図4の例では、中継モジュール23は、アプリケーション22又はライブラリ20cが発行するコマンド21c、或いは、アプリケーション22又はライブラリ20c宛のコマンド21cを受け取る。また、図5の例では、中継モジュール23は、ドライバ20bからリソース20aに対する操作内容(コマンド21c)を受け取り、ドライバ20bの代わりにリソース20aに対する操作を行なう。
【0059】
このように、中継モジュール23は、コマンド21cの取得を通じて、リソースプール3の初期化の遅延を実現する。なお、サーバ2では、既存のソフトウェアスタックを維持しつつ(換言すれば、サーバ2の他のソフトウェアコンポーネントについては既存の構成を利用しつつ)、中継モジュール23の追加によって、一実施形態に係る手法を実現することができる。
【0060】
図3の説明に戻り、中継モジュール23は、例示的に、初期化制御部23a,割り当て判定部23b,及び計算制御部23cを備えてよい。
【0061】
以下、図6を参照して、初期化制御部23a,割り当て判定部23b,及び計算制御部23cの処理の一例を説明する。図6は、一実施形態に係るシステム1の動作例を説明するためのシーケンス図である。
【0062】
初期化制御部23aは、リソースプール3内のリソース(第1リソース)の初期化に関する初期化コマンドをアプリケーション22から取得する。初期化コマンドは、アプリケーション22が利用するハードウェアリソースである第1リソースを初期化するための初期化要求の一例である。
【0063】
なお、以下、1つのリソースを対象とする初期化コマンドを例に挙げ、中継モジュール23による1つ(1組)の初期化コマンドに対する中継処理の一例を説明する。複数のリソースを対象とする複数(複数組)の初期化コマンドが発行された場合、中継モジュール23は、初期化コマンドごとに中継処理を実行してよい。
【0064】
初期化コマンドは、例えば、リソース認識コマンドと、リソース初期化コマンドとを含んでよい。
【0065】
リソース認識コマンドは、アプリケーション22(サーバ2)が認識可能なリソースをアプリケーション22が検出するためのコマンドである。リソース認識コマンドは、例えばアプリケーション22又はライブラリ20cから管理システム6に発行される。リソース認識コマンドには、アプリケーション22が利用しようとするハードウェアリソースの情報、例えばメモリ30a,GPU30b,SSD30c等の種別を示す情報が含まれてもよい。或いは、リソース認識コマンドには、リソースプール3内の特定のハードウェアリソースを示す情報が含まれてもよい。
【0066】
リソース初期化コマンドは、アプリケーション22が認識したリソースに対する初期化を行なうコマンドである。リソース初期化コマンドは、例えばアプリケーション22からリソースプール3のリソースに発行される。初期化コマンドは、例えばリソースに設定する初期値等の情報を含んでもよい。一例として、初期化コマンドは、リソースがGPU30bである場合、GPU30bに確保するメモリサイズ等の情報を含んでもよい。
【0067】
アプリケーション22は、初期化コマンドのうちのリソース認識コマンドを発行する(図6の処理P1)。
【0068】
初期化制御部23aは、リソース認識コマンドを取得すると、当該リソース認識コマンドに基づき、サーバ2にリソースを割り当てるためのリソース割り当てコマンドを、管理システム6に送信する(図6の処理P2)。リソース割り当てコマンドは、サーバ2にリソースを割り当てるための割り当て要求の一例である。なお、初期化制御部23aは、リソース認識コマンド(コマンド21c)をメモリ部21に格納(記録)してよい。
【0069】
管理システム6は、初期化制御部23a(サーバ2)からリソース割り当てコマンドを受信すると、リソース割り当てコマンドに基づき、リソースプール3の中からサーバ2にリソースを割り当てる。管理システム6によるリソースの割り当て処理は、上述したように、1つのリソースあたり数十秒程度の時間がかかる場合がある。
【0070】
初期化制御部23aは、リソース割り当てコマンドを管理システム6に送信すると、管理システム6からの完了の応答を待たずに、アプリケーション22にリソース割り当ての完了応答を通知する(図6の処理P3)。例えば、初期化制御部23aは、完了応答に、割り当てられたリソースの情報として、擬似的なハードウェアリソースの情報を含めてもよい。
【0071】
完了応答をアプリケーション22に送信すると、アプリケーション22からリソース初期化コマンドが発行される(図6の処理P4)。
【0072】
初期化制御部23aは、アプリケーション22から発行されたリソース初期化コマンドを取得すると、当該リソース初期化コマンド(コマンド21c)をメモリ部21に格納(記録)し、アプリケーション22にリソースの初期化処理の完了応答を通知する(図6の処理P5)。リソースの初期化処理は、初期化要求に対する初期化完了応答の一例である。
【0073】
アプリケーション22は、初期化制御部23aからリソースの初期化処理の完了応答を受信すると、リソースを用いた処理、例えば機械学習処理を開始する。例えば、アプリケーション22は、機械学習処理の前処理を実行する(図6の処理P6)。前処理は、第1リソースに実行させる計算処理の前に行なう事前処理の一例である。
【0074】
一例として、AIタスクが画像認識である場合、アプリケーション22は、前処理において、画像21aをメモリ部21から読み出し、変換済画像21bに変換してメモリ部21に格納する。例えば、前処理では、画像21aの明るさ及び彩度等の色の調整,画像21aのリサイズ,画像21aの画素のパラメータの正規化,機械学習モデルが受け付けるデータ形式への変換等が行なわれてよい。リサイズでは、画像21aを機械学習モデルが受け付ける画像のサイズに合わせるための拡大又は縮小等が行なわれてよい。正規化では、画像21aの画素のパラメータを0~255の間に収めるための変換処理が行なわれてよい。
【0075】
例えば機械学習処理に用いられる画像21aの場合、複数枚の画像21aに対してまとめて前処理が行なわれるため、数十秒程度の処理時間がかかることがある。また、複数の画像21aが動画像のデータである場合、前処理では、さらに動画像のデコード処理が発生するため、さらに処理時間が増加する。
【0076】
このように、アプリケーション22による「前処理」は、管理システム6による「リソース割り当て処理」と同程度の時間的スケール(オーダー)を持つ。
【0077】
そこで、初期化制御部23aは、初期化コマンドの受信に応じて、アプリケーション22に前処理を開始させる。例えば、一実施形態に係る初期化制御部23aは、初期化コマンドの受信に応じて、リソース割り当ての完了応答及びリソース初期化処理の完了応答を投機的にアプリケーション22に通知する。アプリケーション22は、これらの完了応答の受信と、前処理の完了とに応じて計算コマンドを発行するように設計されているため、アプリケーション22に変更を加えずに、実際のリソースの割り当て及び初期化に先んじて、前処理の開始を実現できる。
【0078】
これにより、リソース割り当て処理と前処理とを略並行して実行させることができる。従って、前処理の処理時間が十分に長い場合、前処理の処理時間により、リソース割り当て処理の処理時間を相殺することができる、換言すれば、リソース割り当て処理の処理時間を隠蔽することができる。これにより、アプリケーション22の実行時間の短縮を実現できる。
【0079】
割り当て判定部23bは、管理システム6によるリソース割り当て処理が完了したか否かを判定する。
【0080】
例えば、割り当て判定部23bは、メモリ部21にリソース認識コマンドが格納されている場合に、リソース割り当て処理が未完了であると判定してよい。また、割り当て判定部23bは、管理システム6から、割り当て要求に対する割り当て完了応答であって、第1リソースをサーバ2に割り当てたことを示す割り当て完了応答を受信すると(図6の処理P7)、リソース割り当てが完了したと判定するとともに、メモリ部21に格納されたリソース認識コマンドを削除してよい。
【0081】
初期化制御部23aは、割り当て判定部23bによるリソース割り当て処理の完了の判定に応じて、換言すれば、割り当て完了応答の受信に応じて、割り当てられたリソースに対して、メモリ部21に格納したリソース初期化コマンドを発行する(図6の処理P8)。なお、初期化制御部23aは、メモリ部21に格納したリソース初期化コマンドを、処理P7で実際にサーバ2に割り当てられたリソースの初期化に適した形式,情報等に変換してから、割り当てられたリソースに送信してもよい。
【0082】
また、初期化制御部23aは、リソースから、リソース初期化コマンドに応じた初期化が完了したことを示す完了応答を受信すると(図6の処理P9)、メモリ部21に格納されたリソース初期化コマンドを削除してよい。
【0083】
アプリケーション22は、前処理が完了すると、計算コマンドを発行する(図6の処理P10)。
【0084】
計算制御部23cは、アプリケーション22からの計算コマンドの取得に応じて、割り当てられたリソースに計算コマンドを送信する(図6の処理P11)。計算コマンドは、第1リソースに実行させる計算要求の一例であり、例えば、前処理により変換された変換済画像21bを含んでよい。
【0085】
例えば、計算制御部23cは、アプリケーション22から計算コマンドが発行されると、当該計算コマンド(コマンド21c)をメモリ部21に格納(記録)してよい。
【0086】
計算制御部23cは、割り当て判定部23bによりリソース割り当て処理が完了したと判定され、且つ、初期化制御部23aが第1リソースから初期化の完了応答を受信すると、メモリ部21に格納された計算コマンドを当該第1リソースに送信してよい。これにより、実際にサーバ2に割り当てられ、且つ、実際に初期化が完了した第1リソースに、確実に計算コマンドを渡すことができる。
【0087】
また、計算制御部23cは、計算コマンドを第1リソースに送信すると、メモリ部21から計算コマンドを削除してよい。
【0088】
以上のように、中継モジュール23は、アプリケーション22がリソースの初期化処理を開始後(初期化コマンドを発行後)に、サーバ2へのリソースの割り当ての開始をトリガし、割り当ての完了を待たずにアプリケーション22に初期化の完了を通知する。そして、中継モジュール23は、リソースの割り当て完了後に、割り当てられたリソースの初期化の開始をトリガする。このように、中継モジュール23は、リソースの初期化を遅延させる。
【0089】
これにより、アプリケーション22は、リソース(例えばGPU)の割り当て完了及び初期化完了を待たずに、リソースを利用した処理(例えば前処理)を開始できる。従って、リソースの割り当てが完了してから処理を開始する場合(例えば上述した(1)~(5)の処理)と比較して、アプリケーション22の実行時間を短縮できる。また、前処理の処理時間の長さによっては、リソースの初期化の完了タイミングと、リソースを用いた計算処理の実行タイミングとを合わせる(又は近付ける)ことができ、リソースの初期化にかかる処理時間を隠蔽することが可能となる。
【0090】
〔C〕動作例
次に、図7図9を参照して、一実施形態に係るシステム1(中継モジュール23)の動作例を説明する。
【0091】
〔C-1〕初期化制御の動作例
図7は、一実施形態に係る中継モジュール23の初期化制御部23aの動作例を説明するフローチャートである。なお、図7では、1つ(1組)の初期化コマンドがアプリケーション22から発行される場合の動作例を示す。アプリケーション22から複数(複数組)の初期化コマンドが発行される場合には、図7に示す処理が初期化コマンドごとに実行されてよい。
【0092】
図7に例示するように、初期化制御部23aは、アプリケーション22から初期化コマンドのうちのリソース認識コマンドを取得すると(ステップS1)、リソース認識コマンドをメモリ部21に格納する(ステップS2)。
【0093】
初期化制御部23aは、リソース認識コマンドに基づき、管理システム6にリソース割り当てコマンドを発行する(ステップS3)。
【0094】
初期化制御部23aは、リソース割り当ての完了を待たずに、アプリケーション22にリソース割り当ての完了応答を通知する(ステップS4)。
【0095】
初期化制御部23aは、アプリケーション22から初期化コマンドのうちのリソース初期化コマンドを取得すると(ステップS5)、リソース初期化コマンドをメモリ部21に格納する(ステップS6)。
【0096】
初期化制御部23aは、リソース初期化の完了を待たずに、アプリケーション22にリソース初期化の完了応答を通知する(ステップS7)。
【0097】
初期化制御部23aは、リソースの割り当ての完了を待ち合わせる(ステップS8,ステップS8でNO)。
【0098】
リソースの割り当てが完了した場合(ステップS8でYES)、例えば割り当て判定部23bから完了済みを示す通知を取得した場合、初期化制御部23aは、サーバ2に割り当てられたリソースに、メモリ部21に格納されたリソース初期化コマンドを送信する(ステップS9)。
【0099】
初期化制御部23aは、リソースの初期化の完了を待ち合わせる(ステップS10,ステップS10でNO)。
【0100】
リソースの初期化が完了した場合(ステップS10でYES)、例えば初期化制御部23aがリソースから初期化の完了応答を受信した場合、初期化制御部23aは、メモリ部21に格納されたリソース初期化コマンドを削除し(ステップS11)、初期化制御が終了する。
【0101】
なお、図7に示すステップS4の処理は、ステップS1~S5の間のいずれのタイミングで実行されてもよい。また、図7に示すステップS7の処理は、ステップS5~S8の間のいずれのタイミングで実行されてもよい。ステップS7の処理がステップS8以降に実行されてもよいが、この場合、アプリケーション22の実行時間の短縮効果は減少する。
【0102】
〔C-2〕割り当て判定処理の動作例
図8は、一実施形態に係る中継モジュール23の割り当て判定部23bの動作例を説明するフローチャートである。なお、図8では、初期化制御部23aが1つのリソース割り当てコマンドを管理システム6に送信した場合の動作例を示す。初期化制御部23aが複数のリソース割り当てコマンドを管理システム6に送信した場合には、図8に示す処理がリソース割り当てコマンドごとに実行されてよい。
【0103】
図8に例示するように、割り当て判定部23bは、管理システム6からリソース割り当ての完了応答を受信する(ステップS21)。
【0104】
割り当て判定部23bは、メモリ部21に格納されたリソース認識コマンドを削除し(ステップS22)、初期化制御部23aに割り当て完了済みを通知して(ステップS23)、割り当て判定処理が終了する。
【0105】
なお、ステップS22,S23の処理は、逆順であってもよいし、並行して実行されてもよい。
【0106】
〔C-3〕計算制御の動作例
図9は、一実施形態に係る中継モジュール23の計算制御部23cの動作例を説明するフローチャートである。なお、図9では、1つ(1組)以上の初期化コマンドにより、1つ以上のリソースがアプリケーション22に割り当てられる場合の動作例を示す。
【0107】
計算制御部23cは、アプリケーション22から計算コマンドを取得すると(ステップS31)、計算コマンドをメモリ部21に格納する(ステップS32)。
【0108】
計算制御部23cは、全てのリソースの割り当てが完了したか否かを判定する(ステップS33)。例えば、計算制御部23cは、計算コマンドを発行したアプリケーション22が要求した全てのリソースから割り当ての完了応答を受信した場合に、全てのリソースの割り当てが完了したと判定してもよい。或いは、計算制御部23cは、計算コマンドを発行したアプリケーション22から発行されたリソース認識コマンドがメモリ部21に存在しない(残っていない)場合に、全てのリソースの割り当てが完了したと判定してもよい。
【0109】
少なくとも1つのリソースの割り当てが完了していない場合(ステップS33でNO)、計算制御部23cは、全てのリソースの割り当ての完了を待ち合わせる。
【0110】
全てのリソースの割り当てが完了した場合(ステップS33でYES)、計算制御部23cは、未送信のリソース初期化コマンドが有るか否かを判定する(ステップS34)。
【0111】
未送信のリソース初期化コマンドが有る場合(ステップS34でYES)、計算制御部23cは、初期化制御部23aに、割り当てられたリソースに未送信のリソース初期化コマンドを送信させ(ステップS35)、処理がステップS36に移行する。
【0112】
未送信のリソース初期化コマンドが無い場合(ステップS34でNO)、計算制御部23cは、全てのリソースが初期化済みか否かを判定する(ステップS36)。例えば、計算制御部23cは、計算コマンドを発行したアプリケーション22が要求した全てのリソースから初期化の完了応答を受信した場合に、全てのリソースの初期化が完了したと判定してもよい。或いは、計算制御部23cは、計算コマンドを発行したアプリケーション22から発行されたリソース初期化コマンドがメモリ部21に存在しない(残っていない)場合に、全てのリソースの初期化が完了したと判定してもよい。
【0113】
少なくとも1つのリソースの初期化が完了していない場合(ステップS36でNO)、計算制御部23cは、全てのリソースの初期化の完了を待ち合わせる。
【0114】
全てのリソースの初期化が完了した場合(ステップS36でYES)、計算制御部23cは、サーバ2に割り当てられ、初期化が完了したリソースに計算コマンドを送信し(ステップS37)、メモリ部21に格納された計算コマンドを削除する(ステップS38)。
【0115】
計算制御部23cは、リソースからの計算コマンドに対する計算結果の受信を待ち合わせる(ステップS39,ステップS39でNO)。
【0116】
リソースから計算結果を受信すると(ステップS39でYES)、計算制御部23cは、アプリケーション22に計算結果を通知し(ステップS40)、計算制御が終了する。
【0117】
〔D〕変形例
一実施形態では、中継モジュール23が、アプリケーション22の下位の階層(レイヤ)に実装されるものとして説明したが、これに限定されるものではない。中継モジュール23の少なくとも一部の機能は、例えば、アプリケーション22の一部の機能として、アプリケーション22と同じ階層(レイヤ)に実装されてもよい。
【0118】
図10は、一実施形態の変形例に係るサーバ2Aのソフトウェア構成例を示すブロック図であり、図11は、一実施形態の変形例に係る初期化制御部23Aの実装例を説明するための図である。図10及び図11は、初期化制御部23Aがアプリケーション22に実装される例を示す。
【0119】
図10及び図11に示すように、変形例に係るサーバ2Aは、一実施形態に係るサーバ2(図3参照)と比較して、中継モジュール23に代えて、アプリケーション22A内に初期化制御部23Aを備える点が異なる。初期化制御部23Aは、中継処理を行なう中継モジュールの一例である。初期化制御部23Aを備えるアプリケーション22Aは、制御部24Aの一例である。なお、システム1A及びサーバ2Aのハードウェア構成例は、図1及び図2に示すシステム1及びサーバ2のハードウェア構成例と同様であってよい。
【0120】
初期化制御部23Aは、一実施形態に係る初期化制御部23a及び割り当て判定部23b(図3参照)の少なくとも一部の機能を備えてよい。
【0121】
変形例に係るアプリケーション22Aは、初期化コマンドを発行すると、初期化コマンドに対する完了応答の受信を待たずに、前処理を開始する。また、アプリケーション22Aは、前処理の完了後、且つ、初期化制御部23Aからの初期化コマンドに対する完了応答の通知後に、計算コマンドを発行する。
【0122】
初期化制御部23Aは、初期化コマンド、すなわちリソース認識コマンド及びリソース初期化コマンドの各々を取得すると、管理システム6及びリソースに対して、一実施形態に係る初期化制御部23aと同様の処理を行なってよい。
【0123】
一方、初期化制御部23Aは、リソース認識コマンド及びリソース初期化コマンドの各々について、アプリケーション22Aに対しては、完了応答の投機的な通知を抑制してよい。アプリケーション22Aは、初期化制御部23Aを備えることで、初期化コマンドの発行後、初期化制御部23Aからの通知を待たずに、前処理を開始するからである。
【0124】
このように、アプリケーション22Aでは、初期化制御部23Aによるリソースの初期化処理と、アプリケーション22Aによる前処理とが並行して動作可能である。従って、変形例では、初期化制御部23Aにより、完了応答の投機的な通知を省略しつつ、アプリケーション22Aに前処理を開始させることができる。
【0125】
なお、アプリケーション22Aは、リソースの割り当て及び初期化が実際に完了したことを示す完了応答を初期化制御部23Aから通知される。このため、前処理の完了後、且つ、完了応答の取得後にアプリケーション22から発行される計算コマンドは、初期化制御部23Aにおいて中継(遅延)されずに、リソースに送信されてよい。換言すれば、初期化制御部23Aでは、一実施形態に係る計算制御部23cの機能が省略されてもよい。
【0126】
図12は、一実施形態の変形例に係るシステム1Aの動作例を説明するためのシーケンス図である。
【0127】
図12に示すように、アプリケーション22Aは、初期化コマンドのうちのリソース認識コマンドを発行する(図12の処理P21)。また、アプリケーション22Aは、リソース認識コマンドの発行後(又は発行前)より、前処理を開始する(処理P22)。
【0128】
初期化制御部23Aは、リソース認識コマンドを取得すると、当該リソース認識コマンドに基づき、サーバ2Aにリソースを割り当てるためのリソース割り当てコマンドを、管理システム6に送信する(図12の処理P23)。なお、初期化制御部23Aは、リソース認識コマンド(コマンド21c)をメモリ部21に格納(記録)してもよい。
【0129】
管理システム6は、初期化制御部23A(サーバ2)からリソース割り当てコマンドを受信すると、リソース割り当てコマンドに基づき、リソースプール3の中からサーバ2Aにリソースを割り当てる。
【0130】
初期化制御部23Aは、管理システム6によるリソース割り当て処理が完了したか否かを判定する。当該判定手法は、一実施形態に係る割り当て判定部23bと同様であってよい。
【0131】
初期化制御部23Aは、管理システム6から、リソースの割り当て完了応答を受信すると(図12の処理P24)、リソース割り当てが完了したと判定する。なお、初期化制御部23Aは、メモリ部21に格納されたリソース認識コマンドを削除してもよい。
【0132】
初期化制御部23Aは、リソースの割り当て完了応答をアプリケーション22Aに通知する(図12の処理P25)。
【0133】
アプリケーション22Aは、完了応答を取得すると、リソース初期化コマンドを発行する(図12の処理P26)。
【0134】
初期化制御部23Aは、アプリケーション22Aから発行されたリソース初期化コマンドを取得すると、当該リソース初期化コマンドをリソースに送信する(図12の処理P27)。なお、初期化制御部23Aは、当該リソース初期化コマンド(コマンド21c)をメモリ部21に格納(記録)してもよい。
【0135】
初期化制御部23Aは、リソースから、リソース初期化コマンドに応じた初期化が完了したことを示す完了応答を受信すると(図12の処理P28)、アプリケーション22Aにリソースの初期化処理の完了応答を通知する(図12の処理P29)。なお、初期化制御部23Aは、メモリ部21に格納されたリソース初期化コマンドを削除してもよい。
【0136】
アプリケーション22Aは、前処理が完了し、且つ、初期化制御部23Aからリソースの初期化処理の完了応答を取得すると、計算コマンドを発行する(図12の処理P30)。計算コマンドは、前処理で変換した変換済画像21bを含んでよい。
【0137】
以上のように、変形例に係るシステム1Aによっても、リソース割り当て処理と前処理とを略並行して実行させることができる。従って、前処理の処理時間が十分に長い場合、前処理の処理時間により、リソース割り当て処理の処理時間を相殺することができる、換言すれば、リソース割り当て処理の処理時間を隠蔽することができる。これにより、アプリケーション22Aの実行時間の短縮を実現できる。
【0138】
〔E〕その他
上述した実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
【0139】
例えば、図3に示す中継モジュール23が備える機能ブロック23a~23cは、任意の組み合わせで併合してもよく、それぞれ分割してもよい。また、例えば、図10に示す初期化制御部23Aの機能は、分割してもよい。
【0140】
また、図4及び図5に示す例では、中継モジュール23がサーバ2に実装される例を示すが、これに限定されるものではない。中継モジュール23は、例えば、リソースプール3の少なくとも1つのプール30を実現するコンピュータ、一例として、アプリケーション22が利用する第1リソースを備えるコンピュータ(第2の情報処理装置)に実装されてもよい。
【0141】
また、一実施形態及び変形例では、アプリケーション22又は22Aがリソース認識コマンド及びリソース初期化コマンドを発行するものとしたが、これに限定されるものではない。例えば、ライブラリ20cがリソース認識コマンド及びリソース初期化コマンドの一方又は双方を発行してもよい。
【0142】
さらに、一実施形態及び変形例では、アプリケーション22又は22Aが実行されている状態で(実行中に)、サーバ2又は2Aにリソースを追加する運用形態を例に挙げたが、運用形態はこれに限定されるものではない。
【0143】
例えば、アプリケーション22又は22Aの実行前にリソースをサーバ2又は2Aに追加し、リソースの追加後に、アプリケーション22又は22Aの実行を開始する、という運用形態においても、一実施形態又は変形例に係る手法を適用可能である。
【0144】
このような運用形態では、サーバ2又は2Aへのリソースの割り当てが完了している。このため、中継モジュール23又は初期化制御部23Aは、アプリケーション22又は22Aからのリソース認識コマンドに対して、実際に第1リソースの割り当てが完了したことを示す完了応答をアプリケーション22又は22Aに通知すればよい。完了応答の通知後の処理は、一実施形態又は変形例に係る処理と同様である。
【0145】
このような運用形態においても、アプリケーション22は、リソース初期化コマンドの完了応答の受信前に前処理を開始でき、アプリケーション22Aは、リソース認識コマンドの送信後(又は送信前)に前処理を開始できる。従って、アプリケーション22又は22Aの実行時間の短縮を実現できる。
【0146】
〔F〕付記
以上の実施形態及び変形例に関し、さらに以下の付記を開示する。
【0147】
(付記1)
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1のコンピュータに前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1のコンピュータに割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理をコンピュータに実行させる、中継プログラム。
【0148】
(付記2)
前記第1リソースに前記計算要求を送信する処理は、前記アプリケーションから前記計算要求を取得し、且つ、前記第1リソースから前記初期化要求に応じた初期化が完了したことを示す完了応答を受信した場合に、前記第1リソースに前記計算要求を送信する、処理を含む、
付記1に記載の中継プログラム。
【0149】
(付記3)
前記第1のコンピュータである前記コンピュータに、前記アプリケーションよりも下位のレイヤにおいて前記中継処理を実行させ、
前記アプリケーションに前記事前処理を開始させる処理は、前記初期化要求に対する初期化完了応答を前記アプリケーションに送信する、処理を含む、
付記1又は付記2に記載の中継プログラム。
【0150】
(付記4)
前記第1のコンピュータである前記コンピュータに、前記アプリケーションの一部の機能として、前記中継処理を実行させる、
付記1又は付記2に記載の中継プログラム。
【0151】
(付記5)
前記複数のハードウェアリソースのうちの前記第1リソースを備える第2のコンピュータである前記コンピュータに、前記中継処理を実行させる、
付記1又は付記2に記載の中継プログラム。
【0152】
(付記6)
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1のコンピュータに前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1のコンピュータに割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理をコンピュータが実行する、中継方法。
【0153】
(付記7)
前記第1リソースに前記計算要求を送信する処理は、前記アプリケーションから前記計算要求を取得し、且つ、前記第1リソースから前記初期化要求に応じた初期化が完了したことを示す完了応答を受信した場合に、前記第1リソースに前記計算要求を送信する、処理を含む、
付記6に記載の中継方法。
【0154】
(付記8)
前記第1のコンピュータである前記コンピュータが、前記アプリケーションよりも下位のレイヤにおいて前記中継処理を実行し、
前記アプリケーションに前記事前処理を開始させる処理は、前記初期化要求に対する初期化完了応答を前記アプリケーションに送信する、処理を含む、
付記6又は付記7に記載の中継方法。
【0155】
(付記9)
前記第1のコンピュータである前記コンピュータが、前記アプリケーションの一部の機能として、前記中継処理を実行する、
付記6又は付記7に記載の中継方法。
【0156】
(付記10)
前記複数のハードウェアリソースのうちの前記第1リソースを備える第2のコンピュータである前記コンピュータが、前記中継処理を実行する、
付記6又は付記7に記載の中継方法。
【0157】
(付記11)
アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記アプリケーションが実行される第1の情報処理装置に前記第1リソースを割り当てるための割り当て要求を、複数の前記ハードウェアリソースを管理する管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1の情報処理装置に割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
中継処理を実行する制御部を備える、情報処理装置。
【0158】
(付記12)
前記制御部は、前記第1リソースに前記計算要求を送信する処理において、前記アプリケーションから前記計算要求を取得し、且つ、前記第1リソースから前記初期化要求に応じた初期化が完了したことを示す完了応答を受信した場合に、前記第1リソースに前記計算要求を送信する、
付記11に記載の情報処理装置。
【0159】
(付記13)
前記情報処理装置は、前記第1の情報処理装置であり、
前記制御部は、
前記アプリケーションよりも下位のレイヤに実装される中継モジュールにより前記中継処理を実行し、
前記アプリケーションに前記事前処理を開始させる処理において、前記初期化要求に対する初期化完了応答を前記アプリケーションに送信する、
付記11又は付記12に記載の情報処理装置。
【0160】
(付記14)
前記情報処理装置は、前記第1の情報処理装置であり、
前記制御部は、前記アプリケーションの一部の機能として実装される中継モジュールにより前記中継処理を実行する、
付記11又は付記12に記載の情報処理装置。
【0161】
(付記15)
前記情報処理装置は、前記複数のハードウェアリソースのうちの前記第1リソースを備える第2の情報処理装置である、
付記11又は付記12に記載の情報処理装置。
【0162】
(付記16)
アプリケーションを実行する第1の情報処理装置と、
複数のハードウェアリソースを備える複数の第2の情報処理装置と、
前記複数のハードウェアリソースを管理する管理システムと、
中継処理を実行する制御部と、を備え、
前記制御部は、
前記アプリケーションが利用するハードウェアリソースである第1リソースを初期化するための初期化要求を、前記アプリケーションから取得し、
前記初期化要求に基づき、前記第1の情報処理装置に前記第1リソースを割り当てるための割り当て要求を、前記管理システムに送信し、
前記アプリケーションに、前記第1リソースに実行させる計算処理の前に行なう事前処理を開始させ、
前記管理システムからの前記割り当て要求に対する割り当て完了応答であって、前記複数のハードウェアリソースから前記第1リソースを前記第1の情報処理装置に割り当てたことを示す前記割り当て完了応答の受信に応じて、前記第1リソースに前記初期化要求を送信し、
前記事前処理の完了後の前記アプリケーションからの前記計算処理の計算要求の取得に応じて、前記第1リソースに前記計算要求を送信する、
情報処理システム。
【0163】
(付記17)
前記制御部は、前記第1リソースに前記計算要求を送信する処理において、前記アプリケーションから前記計算要求を取得し、且つ、前記第1リソースから前記初期化要求に応じた初期化が完了したことを示す完了応答を受信した場合に、前記第1リソースに前記計算要求を送信する、
付記16に記載の情報処理システム。
【0164】
(付記18)
前記制御部は、
前記第1の情報処理装置に備えられ、
前記アプリケーションよりも下位のレイヤに実装される中継モジュールにより前記中継処理を実行し、
前記アプリケーションに前記事前処理を開始させる処理において、前記初期化要求に対する初期化完了応答を前記アプリケーションに送信する、
付記16又は付記17に記載の情報処理システム。
【0165】
(付記19)
前記制御部は、
前記第1の情報処理装置に備えられ、
前記アプリケーションの一部の機能として実装される中継モジュールにより前記中継処理を実行する、
付記16又は付記17に記載の情報処理システム。
【0166】
(付記20)
前記制御部は、前記複数の第2の情報処理装置のうちの前記第1リソースを備える前記第2の情報処理装置に備えられる、
付記16又は付記17に記載の情報処理システム。
【符号の説明】
【0167】
1、1A システム
10 コンピュータ
2、2A サーバ
20a リソース
20b ドライバ
20c ライブラリ
21 メモリ部
21a 画像
21b 変換済画像
21c コマンド
22、22A アプリケーション
23 中継モジュール
23a、23A 初期化制御部
23b 割り当て判定部
23c 計算制御部
24、24A 制御部
3 リソースプール
30 プール
30a メモリ
30b GPU
30c SSD
31 メモリプール
32 GPUプール
33 SSDプール
4 インターコネクト
5 スイッチ
6 管理システム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12