(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-13
(45)【発行日】2022-01-13
(54)【発明の名称】GPU割当プログラム、GPU割当方法、コンピュータ読取可能な記録媒体、および、GPU割当装置
(51)【国際特許分類】
G06F 9/50 20060101AFI20220105BHJP
【FI】
G06F9/50 120A
(21)【出願番号】P 2018000681
(22)【出願日】2018-01-05
【審査請求日】2020-06-26
(73)【特許権者】
【識別番号】000001270
【氏名又は名称】コニカミノルタ株式会社
(74)【代理人】
【識別番号】100067828
【氏名又は名称】小谷 悦司
(74)【代理人】
【識別番号】100115381
【氏名又は名称】小谷 昌崇
(74)【代理人】
【識別番号】100111453
【氏名又は名称】櫻井 智
(72)【発明者】
【氏名】平澤 宏祐
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2012-064206(JP,A)
【文献】国際公開第2014/188561(WO,A1)
【文献】特開2017-091154(JP,A)
【文献】国際公開第2017/029826(WO,A1)
【文献】国際公開第2018/003031(WO,A1)
【文献】特開2016-189125(JP,A)
【文献】特開2010-160552(JP,A)
【文献】張 暁晶 他,GPU Container as a Serviceを実現するための最新OSS徹底比較,[online],エヌ・ティ・ティ・コミュニケーションズ株式会社,2017年07月21日,第0頁-第64頁,[令和3年7月14日検索]、インターネット<URL:https://openstackdays.com/archive/2017/wp-content/uploads/2017/08/4-B4-9.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455ー9/54
(57)【特許請求の範囲】
【請求項1】
複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定ステップと、
前記第1の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当ステップと、
複数の前記ユーザのそれぞれに対して、前記GPUの割り当て数の優先度を設定する第2の設定ステップと、
複数の前記GPUのそれぞれについて、使用時間の履歴を記録する履歴記録ステップとをコンピュータに実行させるGPU割当プログラムであって、
前記第1の割当ステップは、前記第2の設定ステップで設定された前記優先度が高くなるに従って、割り当てる前記GPUの数を多くし、かつ、前記第2の設定ステップで設定された前記優先度が低くなるに従って、割り当てる前記GPUの数を少なくし、
前記第2の設定ステップは、前記履歴に基づいて、前記GPUの合計使用時間を、前記ユーザ毎に算出し、前記GPUの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する、
GPU割当プログラム。
【請求項2】
前記GPUは、第1のGPUと、処理速度が前記第1のGPUより高い第2のGPUとの2種類があり、
前記第1の割当ステップは、複数の前記ユーザのそれぞれに割り当てられる前記第1のGPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記第1のGPUを複数の前記第1のGPUの中から割り当て、かつ、複数の前記ユーザのそれぞれに割り当てられる前記第2のGPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記第2のGPUを複数の前記第2のGPUの中から割り当てる、請求項1に記載のGPU割当プログラム。
【請求項3】
複数の前記ユーザのそれぞれに対して、ニューラルネットワークの設計を含む第1のジョブに1個以上の前記第1のGPUを割り当て、ハイパーパラメーターの調整を含む第2のジョブに1個以上の前記第2のGPUを割り当てる第2の割当ステップをさらに、前記コンピュータに実行させる、請求項2に記載のGPU割当プログラム。
【請求項4】
前記コンピュータは、1個以上の前記GPUを備える計算ノードを複数備えている、請求項1~3のいずれか一項に記載のGPU割当プログラム。
【請求項5】
前記計算ノードには、1個以上の前記第1のGPUを備える第1の計算ノードと、処理速度が前記第1の計算ノードより高く、1個以上の前記第2のGPUを備える第2の計算ノードとの2種類があり、
前記コンピュータは、複数の前記第1の計算ノードと複数の前記第2の計算ノードとを備えている、請求項
2または請求項3を引用する請求項4に記載のGPU割当プログラム。
【請求項6】
複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定ステップと、
前記第1の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当ステップと、
複数の前記ユーザのそれぞれに対して、前記GPUの割り当て数の優先度を設定する第2の設定ステップと、
複数の前記GPUのそれぞれについて、使用時間の履歴を記録する履歴記録ステップとを備え、
前記第1の割当ステップは、前記第2の設定ステップで設定された前記優先度が高くなるに従って、割り当てる前記GPUの数を多くし、かつ、前記第2の設定ステップで設定された前記優先度が低くなるに従って、割り当てる前記GPUの数を少なくし、
前記第2の設定ステップは、前記履歴に基づいて、前記GPUの合計使用時間を、前記ユーザ毎に算出し、前記GPUの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する、
GPU割当方法。
【請求項7】
請求項1~5のいずれか一項に記載のGPU割当プログラムを格納したコンピュータ読取可能な記録媒体。
【請求項8】
複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定部と、
前記第1の設定部で共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当部と、
複数の前記ユーザのそれぞれに対して、前記GPUの割り当て数の優先度を設定する第2の設定部と、
複数の前記GPUのそれぞれについて、使用時間の履歴を記録する履歴記録部とを備え、
前記第1の割当部は、前記第2の設定部で設定された前記優先度が高くなるに従って、割り当てる前記GPUの数を多くし、かつ、前記第2の設定部で設定された前記優先度が低くなるに従って、割り当てる前記GPUの数を少なくし、
前記第2の設定部は、前記履歴に基づいて、前記GPUの合計使用時間を、前記ユーザ毎に算出し、前記GPUの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する、
GPU割当装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のGPU(Graphics Processing Unit)を割り当てる技術に関する。
【背景技術】
【0002】
深層学習の学習モデルを構築(開発)する場合、様々なライブラリー、アプリケーションの組み合わせが使用されるので、ソフトウェアの依存関係が複雑となる。このため、一台のコンピュータ(物理マシン)では、学習モデルの構築が困難である。この問題は、仮想化技術により解決することができる。例えば、コンテナ型の仮想化技術では、開発環境(ミドルウェア、ドライバー、プログラム、設定ファイル等)がコンテナ内に収容されることにより、この開発環境が他の開発環境の影響を受けないようにすることができる。
【0003】
パーソナルコンピュータのように、シングルユーザを対象とするのでなく、複数のユーザを対象とするコンピュータがある(例えば、高性能コンピュータ、スーパーコンピュータ)。一般に、ユーザ毎に開発環境が異なるので、複数のユーザを対象とするコンピュータでは、仮想化技術が適用される。
【0004】
コンテナ型の仮想化技術に適用され、リソースを配分する技術がある(例えば、Kubernetes、Mesos)。この技術は、複数の計算ノードを管理し、各コンテナにおいて、深層学習に必要な数のGPUを割り当てる。
【0005】
リソースを配分する技術として、例えば、非特許文献1は、複数台のサーバを自動で一括に管理・制御することにより、複数の人工知能を開発する期間を短縮できる技術を開示している。
【先行技術文献】
【特許文献】
【0006】
【文献】”(お知らせ)AI開発基盤を実用化”、[online ]、株式会社NTTドコモ、[平成29年12月20日検索]、インターネット〈URL:https://www.nttdocomo.co.jp/info/news_release/2017/07/18_00.html〉
【発明の概要】
【発明が解決しようとする課題】
【0007】
リソースを配分する技術として、複数のGPUを配分する技術を考える。複数のユーザを対象とするコンピュータは、各ユーザの需要を満たせるように、多くのGPUを搭載している。しかし、GPUの割り当てをユーザの自由に任せると、多くのGPUが用意されていても、一部のユーザがこれらのGPUを占有した状態が発生することがある。特に、ユーザが、無償でGPUを使用できる環境にある場合(例えば、社内の高性能コンピュータの使用が許可されたユーザ)、その状態が発生しやすい。
【0008】
本発明の目的は、複数のユーザが複数のGPUを共有している環境下、一部のユーザが複数のGPUを占有した状態を回避できるGPU割当プログラム、GPU割当方法、コンピュータ読取可能な記録媒体、および、GPU割当装置を提供することである。
【課題を解決するための手段】
【0009】
本発明の第1局面に係るGPU割当プログラムは、複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定ステップと、前記第1の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当ステップと、をコンピュータに実行させる。
【0010】
本発明の第1局面に係るGPU割当プログラムは、各ユーザに割り当てられるGPUの数(言い換えれば、各ユーザが使用できるGPUの数)を制限して、各ユーザに1個以上のGPUを割り当てる。このため、複数のユーザが複数のGPUを共有している環境下、一部のユーザが複数のGPUを占有した状態を回避することができる。
【0011】
GPUの割り当て数の制限について具体例を示すと、以下の(1)~(4)である。(1)第1の割当ステップは、複数のGPUの数が複数のユーザの数で割りきれる場合、複数のユーザのそれぞれに割り当てられるGPUの数が同じになるように、複数のユーザのそれぞれに対して、1個以上のGPUを割り当てる。これによれば、各ユーザに平等な数のGPUを割り当てることができる。(2)第1の割当ステップは、複数のGPUの数が複数のユーザの数で割りきれない場合、複数のユーザのそれぞれに割り当てられるGPUの数の差が最も小さくなるように、複数のユーザのそれぞれに対して、1個以上のGPUを割り当てる。これによれば、各ユーザに、ほぼ平等な数のGPUを割り当てることができる。(3)第1の割当ステップは、GPUの割り当て数の上限値を超えないように、複数のユーザのそれぞれに対して、1個以上のGPUを割り当てる。(4)第1の割当ステップは、複数のユーザのうち、GPUの割り当て数が一番多いユーザと一番小さいユーザとの間において、GPUの割り当て数の差が予め定められた値より小さくなるように、複数のユーザのそれぞれに対して、1個以上のGPUを割り当てる。
【0012】
上記構成において、複数の前記ユーザのそれぞれに対して、前記GPUの割り当て数の優先度を設定する第2の設定ステップを、さらに、前記コンピュータに実行させ、前記第1の割当ステップは、前記第2の設定ステップで設定された前記優先度が高くなるに従って、割り当てる前記GPUの数を多くし、かつ、前記第2の設定ステップで設定された前記優先度が低くなるに従って、割り当てる前記GPUの数を少なくする。
【0013】
この構成によれば、複数のユーザが複数のGPUを共有している環境下、一部のユーザが複数のGPUを占有した状態を回避することができると共に、各ユーザの個別の事情に適合するように(使用できるGPUの数が少なくてもジョブの実行に支障が生じないユーザがいる一方で、使用できるGPUの数を多くしないとジョブの実行に支障が生じるユーザがいる)、GPUの割り当て数を調整することができる。
【0014】
上記構成において、複数の前記GPUのそれぞれについて、使用時間の履歴を記録する履歴記録ステップを、さらに、前記コンピュータに実行させ、前記第2の設定ステップは、前記履歴に基づいて、前記GPUの合計使用時間を、前記ユーザ毎に算出し、前記GPUの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する。
【0015】
合計使用時間とは、予め設定された所定の期間において、ユーザに割り当てられたGPUの使用時間の合計である。上述したように、各ユーザには、1個以上のGPUが割り当てられる。2個以上のGPUが割り当てられたユーザの場合、これらのGPUの使用時間を加算した値が合計使用時間である。1個のGPUが割り当てられたユーザの場合、このGPUの使用時間が合計使用時間である。
【0016】
例えば、合計使用時間の長さに応じて、ユーザを3段階に分けた場合(ヘビー、ミドル、ライト)、ヘビーユーザが、合計使用時間が比較的長いユーザであり、ライトユーザが、合計使用時間が比較的短いユーザである。この構成によれば、特定のユーザに対して、優先度が高い設定がされた状態が長期間継続することを防止できる。
【0017】
上記構成において、前記GPUは、第1のGPUと、処理速度が前記第1のGPUより高い第2のGPUとの2種類があり、前記第1の割当ステップは、複数の前記ユーザのそれぞれに割り当てられる前記第1のGPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記第1のGPUを複数の前記第1のGPUの中から割り当て、かつ、複数の前記ユーザのそれぞれに割り当てられる前記第2のGPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記第2のGPUを複数の前記第2のGPUの中から割り当てる。
【0018】
処理速度が異なる2種類のGPU(第1のGPU、第2のGPU)が、複数のユーザによって共有されることがある。この構成によれば、一部のユーザが複数の第1のGPUを占有した状態を回避することができる。第2のGPUについても同様である。第1のGPUおよび第2のGPUの割り当て数の制限の具体例は、上記(1)~(4)と同じである。
【0019】
上記構成において、複数の前記ユーザのそれぞれに対して、ニューラルネットワークの設計を含む第1のジョブに1個以上の前記第1のGPUを割り当て、ハイパーパラメーターの調整を含む第2のジョブに1個以上の前記第2のGPUを割り当てる第2の割当ステップをさらに、前記コンピュータに実行させる。
【0020】
ハイパーパラメータは、機械学習のアルゴリズムにおいて、人が調整する必要があるパラメータである。ハイパーパラメータは、自動調整することができ、これが第2のジョブである。第2のジョブでは、膨大な演算がされるので、GPUの処理速度の高速化が求められる。これに対して、ユーザがコンピュータとインタラクティブしながら、第1のジョブは実行される。このため、第1のジョブは、第2のジョブと比べて、GPUの処理速度の高速化が求められていない。そこで、第2の割当ステップは、第1のGPUを第1のジョブに割り当て、第1のGPUより処理速度が高い第2のGPUを第2のジョブに割り当てる。これにより、処理速度が異なる2種類のGPU(第1のGPU、第2のGPU)が、複数のユーザによって共有されている場合に、ジョブの種類に応じて、適切なGPUを割り当てることができる。
【0021】
上記構成において、前記コンピュータは、1個以上の前記GPUを備える計算ノードを複数備えている。
【0022】
複数のユーザに割り当てる複数のGPUを備えるコンピュータとして、1個以上のGPUを備える計算ノードを複数備えるコンピュータ(例えば、高性能コンピュータ、スーパーコンピュータ)がある。このようなコンピュータとして、第1の計算ノードと第2の計算ノードとを備えるコンピュータがある。第1の計算ノードは、複数の第1のGPUを備える。第2の計算ノードは、処理速度が第1の計算ノードより高く、複数の第2のGPUを備える。
【0023】
本発明の第2局面に係るGPU割当方法は、複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定ステップと、前記第1の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当ステップと、を備える。
【0024】
本発明の第2局面に係るGPU割当方法は、本発明の第1局面に係るGPU割当プログラムを方法の観点から規定しており、本発明の第1局面に係るGPU割当プログラムと同様の作用効果を有する。
【0025】
本発明の第3局面に係るコンピュータ読取可能な記録媒体は、上記GPU割当プログラムを格納したコンピュータ読取可能な記録媒体である。
【0026】
本発明の第3局面に係るコンピュータ読取可能な記録媒体は、本発明の第1局面に係るGPU割当プログラムをコンピュータ読取可能な記録媒体の観点から規定しており、本発明の第1局面に係るGPU割当プログラムと同様の作用効果を有する。
【0027】
本発明の第4局面に係るGPU割当装置は、複数のGPUを、予め定められた複数のユーザの共有にする設定をする第1の設定部と、前記第1の設定部で共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記GPUの数を制限して、複数の前記ユーザのそれぞれに対して、1個以上の前記GPUを複数の前記GPUの中から割り当てる第1の割当部と、を備える。
【0028】
本発明の第4局面に係るGPU割当装置は、本発明の第1局面に係るGPU割当プログラムを装置の観点から規定しており、本発明の第1局面に係るGPU割当プログラムと同様の作用効果を有する。
【発明の効果】
【0029】
本発明によれば、複数のユーザが複数のGPUを共有している環境下、一部のユーザが複数のGPUを占有した状態を回避できる。
【図面の簡単な説明】
【0030】
【
図1】実施形態に係るコンピュータシステムのブロック図である。
【
図2】実施形態に係る管理者用のPCの機能ブロック図である。
【
図3】管理者用のPCのハードウェア構成を示すブロック図である。
【
図4】実施形態に係る管理者用のPCで実行されるGPU割当プログラムの動作を説明するフローチャートである。
【
図5】実施形態において、ユーザに割り当てられたGPUを説明する説明図である。
【
図6】第1変形例に係る管理者用のPCの機能ブロック図である。
【
図7】第1変形例に係る管理者用のPCで実行されるGPU割当プログラムの動作を説明するフローチャートである。
【
図8】第1変形例において、ユーザに割り当てられたGPUを説明する説明図である。
【
図9】第2変形例に係る管理者用のPCの機能ブロック図である。
【
図10】第3変形例に係るコンピュータシステムのブロック図である。
【
図11】第3変形例に係る管理者用のPCの機能ブロック図である。
【
図12】第3変形例に係る管理者用のPCで実行されるGPU割当プログラムの動作を説明するフローチャートである。
【
図13】第3変形例において、ユーザに割り当てられたGPUを説明する説明図である。
【
図14】第4変形例に係る管理者用のPCの機能ブロック図である。
【
図15】第4変形例に係る管理者用のPCで実行されるGPU割当プログラムの動作を説明するフローチャートである。
【
図16】第4変形例において、GPUに割り当てられた第1のジョブおよび第2のジョブを説明する説明図である。
【発明を実施するための形態】
【0031】
以下、図面に基づいて本発明の実施形態を詳細に説明する。各図において、同一符号を付した構成は、同一の構成であることを示し、その構成について、既に説明している内容については、その説明を省略する。本明細書において、総称する場合には添え字を省略した参照符号で示し(例えば、GPU10)、個別の構成を指す場合には添え字を付した参照符号で示す(例えば、GPU10-1~10-24)。
【0032】
図1は、実施形態に係るコンピュータシステムCSのブロック図である。コンピュータシステムCSは、6台の計算ノード1-1~1-6と、ユーザ用の4台のパーソナルコンピュータ2-1~2-4と、管理者用の1台のパーソナルコンピュータ4aと、これらを通信可能に接続するネットワーク6と、を備える。
【0033】
計算ノード1の数は、6台である。計算ノード1の数は、複数であればよく、6台に限定されない。6台の計算ノード1は、同じ構成を有し、処理速度(計算速度)が同じである。計算ノード1とは、1つの管理単位であり、例えば、1つの基本ソフト(OS)が動作しているCPU、メモリ等の塊である。言い換えれば、計算ノード1とは、コンピュータとして機能する1台の物理マシンである。
【0034】
各計算ノード1は、4個のGPU10を備える。各計算ノード1が備えるGPU10の数は、1個以上であればよく、4個に限定されない。各計算ノード1が備えるGPU10の数が同じであるが、同じでなくてもよい。
【0035】
6台の計算ノード1によって、高性能コンピュータ100が構成されている。高性能コンピュータ100は、複数のユーザ3を対象とするコンピュータである。高性能コンピュータ100は、コンテナ型の仮想環境を有する。コンテナ型に限らず、例えば、ホスト型でもよいし、ハイパーバイザー型でもよい。
【0036】
ユーザ用の4台のパーソナルコンピュータ2(以下、PC2)は、高性能コンピュータ100を使用する4人のユーザ3のそれぞれに割り当てられている。詳しくは、PC2-1は、ユーザ3-1によって使用され、PC2-2は、ユーザ3-2によって使用され、PC2-3は、ユーザ3-3によって使用され、PC2-4は、ユーザ3-4によって使用される。各ユーザ3は、PC2を用いて、高性能コンピュータ100にアクセスし、使用することができる。ユーザ用のPC2は、複数であればよく、4台に限定されない。
【0037】
管理者用のパーソナルコンピュータ4a(以下、PC4a)は、コンピュータシステムCSの全体を管理する。実施形態に係る管理者用のPCは、PC4aであるが、後で説明する第1変形例に係る管理者用のPCは、PC4bであり、第2変形例に係る管理者用のPCは、PC4cであり、第3変形例に係る管理者用のPCは、PC4d(
図10)であり、第4変形例に係る管理者用のPCは、PC4e(
図10)である。PC4aについて詳しく説明する。
図2は、管理者用のPC4aの機能ブロック図である。PC4aは、機能ブロックとして、制御処理部41と、通信部42と、操作部43と、表示部44と、第1の設定部46と、第1の割当部47と、を備える。
【0038】
図1および
図2を参照して、制御処理部41は、PC4aの各部(通信部42、操作部43、表示部44、第1の設定部46、第1の割当部47)を当該各部の機能に応じてそれぞれ制御する機能を有する。通信部42は、PC4aがネットワーク6を通して、他の装置(例えば、高性能コンピュータ100、ユーザ用のPC2)と通信する機能を有する。操作部43は、管理者5がPC4aに各種の命令、各種のデータ等を入力する機能を有する。表示部44は、コンピュータシステムCSの管理に必要な各種の情報等を表示する。
【0039】
第1の設定部46は、24個(複数)のGPU10-1~10-24を、4人(予め定められた複数)のユーザ3-1~3-4の共有にする設定をする。管理者5が操作部43を操作して、4人のユーザ3のそれぞれのユーザIDを入力し、そして、GPU10を共有に設定する命令を入力することにより、第1の設定部46は、24個のGPU10を4人のユーザ3の共有にする設定をする。
【0040】
第1の割当部47は、第1の設定部46が共有に設定した4人(複数)のユーザ3のそれぞれに割り当てられるGPU10の数を制限して、4人(複数)のユーザ3のそれぞれに対して、1個以上のGPU10を24個(複数)のGPU10の中から割り当てる。詳しくは、第1の割当部47は、複数のGPU10の数が複数のユーザ3の数で割りきれる場合、複数のユーザ3のそれぞれに割り当てられるGPU10の数が同じになるように、複数のユーザ3のそれぞれに対して、1個以上のGPU10を割り当てる。ユーザ3の数が4人であり、GPU10の数が24個なので、第1の割当部47は、各ユーザ3に6個のGPU10を割り当てる。
【0041】
第1の割当部47は、排他制御をする。すなわち、第1の割当部47は、各ユーザ3に、それぞれ別のGPU10を割り当てる。例えば、GPU10-1がユーザ3-1とユーザ3-2とに割り当てられることはない。従って、第1の割当部47は、複数のGPU10の数が複数のユーザ3の数で割りきれない場合、複数のユーザ3のそれぞれに割り当てられるGPU10の数の差が最も小さくなるように、複数のユーザ3のそれぞれに対して、1個以上のGPU10を割り当てる。例えば、ユーザ3の数が5人であり、GPU10の数が24個の場合、第1の割当部47は、4人のユーザ3のそれぞれに5個のGPU10を割り当て、1人のユーザ3に4個のGPU10を割り当てる。
【0042】
図3は、管理者用のPC4a(4b,4c,4d,4e)のハードウェア構成を示すブロック図である。PC4a(4b,4c,4d,4e)は、CPU(Central Processing Unit)401、RAM(Random Access Memory)402、ROM(Read Only Memory)403、HDD(Hard Disk Drive)404、液晶ディスプレイ405、ネットワークインターフェースカード406、キーボード等407、および、これらを接続するバス408を備える。
【0043】
図2および
図3を参照して、液晶ディスプレイ405は、表示部44を実現するハードウェアである。液晶ディスプレイ405の替わりに、有機ELディスプレイ(Organic Light Emitting Diode display)、プラズマディスプレイ等でもよい。キーボード等407は、操作部43を実現するハードウェアである。キーボードの替わりに、タッチパネルでもよい。ネットワークインターフェースカード406は、通信部42を実現するハードウェアである。
【0044】
HDD404には、制御処理部41、第1の設定部46、第1の割当部47、後述する第2の設定部48(
図6)、履歴記録部49(
図9)、第2の割当部50(
図14)について、これらの機能ブロックをそれぞれ実現するためのプログラムが格納されている。これらのプログラムは、機能ブロックの定義を用いて表現される。第1の設定部46および第1の設定プログラムを例にして説明する。第1の設定部46は、複数のGPU10を、予め定められた複数のユーザ3の共有にする設定をする。第1の設定プログラムは、複数のGPU10を、予め定められた複数のユーザ3の共有にする設定をするプログラムである。
【0045】
これらのプログラムは、HDD404に予め記憶されているが、これに限定されない。例えば、これらのプログラムを記録している、コンピュータ読取可能な記録媒体(例えば、磁気ディスク、光学ディスクのような外部記録媒体)が用意されており、この記録媒体に記憶されているプログラムがHDD404に記憶されてもよい。また、これらのプログラムは、PC4a(4b,4c,4d,4e)とネットワーク接続されたサーバに格納されており、ネットワーク6を介して、これらのプログラムがHDD404に送られ、HDD404に記憶されてもよい。これらのプログラムは、HDD404の替わりにROM403に記憶してもよい。PC4a(4b,4c,4d,4e)は、HDD404の替わりに、フラッシュメモリを備え、これらのプログラムはフラッシュメモリに記憶してもよい。
【0046】
CPU401は、これらのプログラムを、HDD404から読み出してRAM402に展開させ、展開されたプログラムを実行することによって、制御処理部41、第1の設定部46、第1の割当部47、第2の設定部48(
図6)、履歴記録部49(
図9)、第2の割当部50(
図14)が実現される。但し、これらの機能について、各機能の一部又は全部は、CPU401による処理に替えて、又は、これと共に、DSP(Digital Signal Processor)による処理によって実現されてもよい。又、同様に、各機能の一部又は全部は、ソフトウェアによる処理に替えて、又は、これと共に、専用のハードウェア回路による処理によって実現されてもよい。
【0047】
CPU401によって実行されるこれらのプログラム(第1の設定プログラム等)のフローチャートが、後で説明する
図4、
図7、
図12、
図15のフローチャートである。
【0048】
実施形態に係る管理者用のPC4aで実行されるGPU割当プログラムの動作について説明する。
図4は、この動作を説明するフローチャートである。
【0049】
図1、
図2および
図4を参照して、管理者5は、操作部43を操作して、GPU10を共有する4人のユーザ3のそれぞれのユーザIDをPC4aに入力する。第1の設定部46は、入力されたこれらのユーザIDを記憶する(ステップS1)。
【0050】
第1の設定部46は、こられのユーザIDで特定される4人のユーザ3を、24個のGPU10を共有するユーザ3として設定する(ステップS2)。
【0051】
第1の割当部47は、4人のユーザ3のそれぞれに割り当てるGPU10の数を決定する(ステップS3)。ここでは、6個(=24個のGPU10÷4人のユーザ3)となる。
【0052】
第1の割当部47は、24個のGPU10-1~10-24の中から、4人のユーザ3のそれぞれに割り当てるGPU10を設定する(ステップS4)。詳しく説明する。
図5は、実施形態において、ユーザ3に割り当てられたGPU10を説明する説明図である。
図5に示すコンピュータシステムCSは、
図1に示すコンピュータシステムCSと同じである。例えば、第1の割当部47は、ユーザ3-1に割り当てる6個のGPU10として、GPU10-1~10-6を設定し、ユーザ3-2に割り当てる6個のGPU10として、GPU10-7~10-12を設定し、ユーザ3-3に割り当てる6個のGPU10として、GPU10-13~10-18を設定し、ユーザ3-4に割り当てる6個のGPU10として、GPU10-19~10-24を設定する。第1の割当部47は、GPU10を特定する番号順に、割り当てるGPU10を選択しているが、番号順でなくてもよい。例えば、第1の割当部47は、ユーザ3-1に、6個のGPU10-1,10-5,10-9,10-13,10-17,10-21を割り当ててもよい。
【0053】
以上により、4人のユーザ3に対して、GPU10の割り当てが終了する。各ユーザ3は、自身に割り当てられた6個のGPU10を使用することができる。4人のユーザ3のいずれも、6個より多い数のGPU10を使用しようとしても、第1の割当部47は、これを拒否する。
【0054】
実施形態の主な効果を説明する。実施形態に係るGPU割当プログラムは、各ユーザ3に割り当てられるGPU10の数(言い換えれば、各ユーザ3が使用できるGPU10の数)を制限して、各ユーザ3に1個以上のGPU10を割り当てる。このため、複数のユーザ3が複数のGPU10を共有している環境下、一部のユーザ3が複数のGPU10を占有した状態を回避することができる。
【0055】
実施形態の変形例を説明する。まず、第1変形例について、実施形態との相違点を主にして説明する。
図6は、第1変形例に係る管理者用のPC4bの機能ブロック図である。PC4bは、制御処理部41、通信部42、操作部43、表示部44、第1の設定部46および第1の割当部47に加えて、第2の設定部48を備える。
【0056】
第2の設定部48は、4人(複数)のユーザ3のそれぞれに対して、GPU10の割り当て数の優先度を設定する。優先度は、例えば、「優先度:低」、「優先度:中」、「優先度:高」の3種類とする。「優先度:低」のユーザ3には、最低限である1個のGPU10が割り当てられる。「優先度:中」のユーザ3には、実施形態で説明した6個のGPU10(GPU10の総数をユーザ数で割った値の数のGPU10)が割り当てられる。「優先度:高」のユーザ3には、残り全てのGPU10が割り当てられる。
【0057】
第1変形例に係る管理者用のPC4bで実行されるGPU割当プログラムの動作について説明する。
図7は、この動作を説明するフローチャートである。ステップS1およびステップS2は、
図4に示すステップS1およびステップS2と同じなので、説明を省略する。
【0058】
図1、
図6および
図7を参照して、4人のユーザ3は、それぞれ、自己のPC2を操作して、設定したい優先度をPC2に入力する。例えば、ユーザ3-1が「優先度:低」を入力し、ユーザ3-2が「優先度:高」を入力し、ユーザ3-3が「優先度:高」を入力し、ユーザ3-4が「優先度:中」を入力したとする。各PC2は、入力された優先度を示す優先度情報を、ネットワーク6を用いて、管理者用のPC4bに送信する。通信部42は、送られてきた優先度情報を受信し、優先度情報を第2の設定部48に通知する(ステップS11)。
【0059】
第2の設定部48は、第1の設定部46に、共有の設定がされている4人のユーザ3に対して、通知された優先度情報に従った優先度を設定する(ステップS12)。詳しくは、第2の設定部48は、ユーザ3-1に対して、「優先度:低」を設定し、ユーザ3-2に対して、「優先度:高」を設定し、ユーザ3-3に対して、「優先度:高」を設定し、ユーザ3-4に対して、「優先度:中」を設定する。
【0060】
なお、第2の設定部48は、管理者5の承認を条件として、優先度の設定をしてもよい。詳しく説明すると、制御処理部41は、表示部44に優先度情報を表示し、管理者5が操作部43を操作して、優先度情報で示される各ユーザ3に設定される優先度を承認する入力をしたことを条件として、上記設定をするようにしてもよい。また、この過程で、第2の設定部48は、管理者5に優先度を変更する権限を与えてもよい。
【0061】
第1の割当部47は、設定された優先度を基にして、4人のユーザ3のそれぞれに割り当てるGPU10の数を決定する(ステップS13)。第1の割当部47は、「優先度:高」のユーザ3に対して、「優先度:中」のユーザ3に割り当てられる個数のGPU10に加えて、さらにGPU10が追加して割り当てる。GPU10の追加数を「NADD」とする。「NADD」は、下記式で示される。
【0062】
【0063】
「NASIGNE」は、各ユーザ3に平等(平均)にGPU10を割り当てた場合のGPU10の数である。「NUSER_優先度:低」は、「優先度:低」に設定されたユーザ3の数である。「NUSER_優先度:高」は、「優先度:高」に設定されたユーザ3の数である。ここでは、「NASIGNE」が6(=24÷4)であり、「NUSER_優先度:低」が1であり、「NUSER_優先度:高」が2である。従って、「NADD」は、2.5となる。
【0064】
第1の割当部47は、「NADD」が整数でない場合、「NADD」を整数に補正する。例えば、第1の割当部47は、「優先度:高」が設定された順番を優先する。ユーザ3-2がユーザ3-3よりも先に、「優先度:高」の設定がされていたとする。第1の割当部47は、ユーザ3-2に対して、GPU10を追加して割り当てる数を3とし、ユーザ3-3に対して、GPU10を追加して割り当てる数を2とする。これにより、第1の割当部47は、ユーザ3-2に9個のGPU10を割り当て、ユーザ3-3に8個のGPU10を割り当てる。
【0065】
このように、第1の割当部47は、第2の設定部48が設定した優先度が高くなるに従って、割り当てるGPU10の数を多くし、かつ、第2の設定部48が設定した優先度が低くなるに従って、割り当てるGPU10の数を少なくする。
【0066】
第1の割当部47は、24個のGPU10-1~10-24の中から、4人のユーザ3のそれぞれに割り当てるGPU10を設定する(ステップS14)。詳しく説明する。
図8は、第1変形例において、ユーザ3に割り当てられたGPU10を説明する説明図である。
図8に示すコンピュータシステムCSは、
図1に示すコンピュータシステムCSと同じである。例えば、第1の割当部47は、ユーザ3-1に割り当てる1個のGPU10として、GPU10-1を設定し、ユーザ3-2に割り当てる9個のGPU10として、GPU10-2~10-10を設定し、ユーザ3-3に割り当てる8個のGPU10として、GPU10-11~10-18を設定し、ユーザ3-4に割り当てる6個のGPU10として、GPU10-19~10-24を設定する。
【0067】
以上により、4人のユーザ3に対して、GPU10の割り当てが終了する。各ユーザ3は、自身に割り当てられた数のGPU10を使用することができる。第1変形例によれば、複数のユーザ3が複数のGPU10を共有している環境下、一部のユーザ3が複数のGPU10を占有した状態を回避することができると共に、各ユーザ3の個別の事情に適合するように(使用できるGPU10の数が少なくてもジョブの実行に支障が生じないユーザ3がいる一方で、使用できるGPU10の数を多くしないとジョブの実行に支障が生じるユーザ3がいる)、GPU10の割り当て数を調整することができる。
【0068】
第2変形例について、第1変形例との相違点を主にして説明する。
図9は、第2変形例に係る管理者用のPC4cの機能ブロック図である。PC4cは、制御処理部41、通信部42、操作部43、表示部44、第1の設定部46、第1の割当部47および第2の設定部48に加えて、履歴記録部49を備える。
【0069】
履歴記録部49は、24個(複数)のGPU10のそれぞれについて、使用時間の履歴を所定期間の単位で記録する。所定期間の単位とは、例えば、1日単位である。
【0070】
第2の設定部48は、4人(複数)のユーザ3のそれぞれに設定された、GPU10の割り当て数の優先度に有効期限(例えば、1ヶ月)を設けており、有効期限を経過したとき、履歴記録部49に記録された履歴に基づいて、4人(複数)のユーザ3のそれぞれの優先度を再設定する。
【0071】
詳しく説明すると、第2の設定部48は、優先度の有効期間を経過したとき、履歴記録部49に記録されている履歴を参照して、直近の1ヶ月のGPU10の合計使用時間をユーザ3毎に算出する。合計使用時間とは、ユーザ3に割り当てられたGPU10の使用時間の合計である。上述したように、各ユーザ3には1個以上のGPU10が割り当てられる。2個以上のGPU10が割り当てられたユーザ3の場合、これらのGPU10の使用時間を加算した値が合計使用時間である。1個のGPUが割り当てられたユーザ3の場合、このGPU10の使用時間が合計使用時間である。
【0072】
第2の設定部48は、GPU10の合計使用時間が比較的長いユーザ3に対して、優先度が低くなる設定に変更し、かつ、合計使用時間が比較的短いユーザ3に対して、優先度が高くなる設定に変更する(再設定)。例えば、合計使用時間の長さに応じて、ユーザ3を3段階に分けた場合(ヘビー、ミドル、ライト)、ヘビーユーザが、合計使用時間が比較的長いユーザ3であり、ライトユーザが、合計使用時間が比較的短いユーザ3である。
【0073】
第1の割当部47は、この再設定に基づいて、4人(複数)のユーザ3のそれぞれに割り当てるGPU10の数を新たに決定する。
【0074】
第2変形例によれば、特定のユーザ3に対して、優先度が高い設定がされた状態が長期間継続することを防止できる。
【0075】
第3変形例について、実施形態との相違点を主にして説明する。
図10は、第3変形例に係るコンピュータシステムCSのブロック図である。
図1に示すコンピュータシステムCSでは、6個の計算ノード1の処理速度(計算速度)が同じであるが、
図10に示すコンピュータシステムCSは、ハイグレード計算ノード(第2の計算ノード)として機能する計算ノード1-1,1-2と、ノーマル計算ノード(第1の計算ノード)として機能する計算ノード1-3~1-6と、を備える。ハイグレード計算ノードは、ノーマル計算ノードより処理速度が高い。これを実現するために、ハイグレード計算ノードに搭載される第2のGPU(GPU10-1~10-8)は、ノーマル計算ノードに搭載される第1のGPU(GPU10-9~10-24)より処理速度が高い。ハイグレード計算ノードに備えられる第2のGPUが4個を例にしているが、1個以上であればよい。ノーマル計算ノードに備えられる第1のGPUが4個を例にしているが、1個以上であればよい。
【0076】
第3変形例に係る監視者用のPC4dについて説明する。
図11は、第3変形例に係る管理者用のPC4dの機能ブロック図である。PC4dは、制御処理部41、通信部42、操作部43、表示部44、第1の設定部46および第1の割当部47を備える。PC4dと、
図2に示すPC4aとの違いは、第1の割当部47の機能である。
【0077】
PC4dの第1の割当部47は、16個(複数)の第1のGPU(GPU10-9~10-24)と8個(複数)の第2のGPU(GPU10-1~10-8)のそれぞれについて、
図2に示すPC4aの第1の割当部47が実行するGPU10の割当と同じ方法を用いて、GPU10の割り当てを実行する。すなわち、PC4dの第1の割当部47は、4人(複数)のユーザ3のそれぞれに割り当てられる第1のGPUの数を制限して、4人(複数)のユーザ3のそれぞれに対して、1個以上の第1のGPUを16個(複数)の第1のGPUの中から割り当て、かつ、4人(複数)のユーザ3のそれぞれに割り当てられる第2のGPUの数を制限して、4人(複数)のユーザ3のそれぞれに対して、1個以上の第2のGPUを16個(複数)の第2のGPUの中から割り当てる。
【0078】
第3変形例に係る管理者用のPC4dで実行されるGPU割当プログラムの動作について説明する。
図12は、この動作を説明するフローチャートである。
図13は、第3変形例において、ユーザ3に割り当てられたGPU10を説明する説明図である。
図13に示すコンピュータシステムCSは、
図10に示すコンピュータシステムCSと同じである。
【0079】
図11~
図13を参照して、ステップS1およびステップS2は、
図4に示すステップS1およびステップS2と同じなので、説明を省略する。
【0080】
第1の割当部47は、4人のユーザ3のそれぞれに割り当てる第1のGPUの数、および、第2のGPUの数を決定する(ステップS21)。ここでは、第1のGPUの数が4個(=16個の第1のGPU÷4人のユーザ3)となり、第2のGPUの数が2個(=8個の第2のGPU÷4人のユーザ3)となる。
【0081】
第1の割当部47は、16個の第1のGPU(GPU10-9~10-24)の中から、4人のユーザ3のそれぞれに割り当てる第1のGPUを設定し、かつ、8個の第2のGPU(GPU10-1~10-8)の中から、4人のユーザ3のそれぞれに割り当てる第2のGPUを設定する(ステップS22)。詳しく説明する。例えば、第1の割当部47は、ユーザ3-1に割り当てる4個の第1のGPUとして、GPU10-9~10-12を設定し、ユーザ3-2に割り当てる4個の第1のGPUとして、GPU10-13~10-16を設定し、ユーザ3-3に割り当てる4個の第1のGPUとして、GPU10-17~10-20を設定し、ユーザ3-4に割り当てる4個の第1のGPUとして、GPU10-21~10-24を設定する。
【0082】
例えば、第1の割当部47は、ユーザ3-1に割り当てる2個の第2のGPUとして、GPU10-1~10-2を設定し、ユーザ3-2に割り当てる2個の第2のGPUとして、GPU10-3~10-4を設定し、ユーザ3-3に割り当てる2個の第2のGPUとして、GPU10-5~10-6を設定し、ユーザ3-4に割り当てる2個の第2のGPUとして、GPU10-7~10-8を設定する。
【0083】
処理速度が異なる2種類のGPU10(第1のGPU、第2のGPU)が、複数のユーザ3によって共有されることがある。第3変形例によれば、一部のユーザ3が複数の第1のGPUを占有した状態を回避することができる。第2のGPUについても同様である。
【0084】
第4変形例について、第3変形例との相違点を主にして説明する。
図14は、第4変形例に係る管理者用のPC4eの機能ブロック図である。PC4eは、制御処理部41、通信部42、操作部43、表示部44、第1の設定部46および第1の割当部47に加えて、第2の割当部50を備える。
【0085】
第2の割当部50を説明する前に、この前提を説明する。各ユーザ3は、高性能コンピュータ100(
図10)に、深層学習の学習モデルを構築させる。これは、主に、ニューラルネットワークの設計を含む第1のジョブを実行する工程と、ハイパーパラメータの調整(チューニング)を含む第2のジョブを実行する工程と、により構成される。
【0086】
ニューラルネットワークの構造が決まらないと、ハイパーパラメータの調整ができない。そこで、ユーザ3は、ニューラルネットワークを設計することにより、ニューラルネットワークの構造を決める。この設計には、ニューラルネットワークの層の数の決定、および、各層のニューロンの数の決定等が含まれる。ユーザ3は、自己のPC2を用いて、高性能コンピュータ100とインタラクティブをして、高性能コンピュータ100に第1のジョブを実行させる。第1のジョブの工程において、GPU10は常に使用状態となる。ユーザ3が、自己のPC2を用いて、第1のジョブの終了を入力することにより、GPU10は開放され、使用状態でなくなる。
【0087】
これに対して、第2のジョブは、高性能コンピュータ100によって自動的に実行される。高性能コンピュータ100は、第2のジョブの実行が終了したとき、自動的にGPU10を開放する。これにより、GPU10は使用状態でなくなる。
【0088】
第2のジョブでは、膨大な演算がされるので、GPU10の処理速度の高速化が求められる。これに対して、ユーザ3が高性能コンピュータ100とインタラクティブしながら、第1のジョブは実行される。このため、第1のジョブは、第2のジョブと比べて、GPU10の処理速度の高速化が求められていない。
【0089】
第3変形例で説明したように、第2のGPU(
図10に示すGPU10-1~10-8)は、第1のGPU(
図10に示すGPU10-9~10-24)より処理速度が高い。そこで、
図14に示す第2の割当部50は、4人(複数)のユーザ3のそれぞれに対して、ニューラルネットワークの設計を含む第1のジョブに1個以上の第1のGPUを割り当て、ハイパーパラメータの調整を含む第2のジョブに1個以上の第2のGPUを割り当てる。結果として、第2の割当部50は、4人(複数)のユーザ3のそれぞれに対して、第1のジョブにノーマル計算ノード(計算ノード1-3~1-6)を割り当て、第2のジョブにハイグレード計算ノード(計算ノード1-1~1-2)を割り当てる。
【0090】
ノーマル計算ノードは、ニューラルネットワークの設計を含む第1のジョブを実行するので、学習準備サーバとなる。ハイグレード計算ノードは、ハイパーパラメータの調整を含む第2のジョブを実行するので、学習本番サーバとなる。コンテナの場合、ユーザ3は、ノーマル計算ノードに備えられるコンテナに直接アクセスし、ノーマル計算ノードとインタラクティブしながら、ニューラルネットワークの構造を設計し、設計したニューラルネットワークの構造をコンテナに保存する。ハイグレード計算ノードは、このコンテナを起動し、ニューラルネットワークのハイパーパラメータを調整する。
【0091】
第4変形例に係る管理者用のPC4eで実行されるGPU割当プログラムの動作について説明する。
図15は、この動作を説明するフローチャートである。
図16は、第4変形例において、GPU10に割り当てられた第1のジョブおよび第2のジョブを説明する説明図である。
図16に示すコンピュータシステムCSは、
図10に示すコンピュータシステムCSと同じである。
【0092】
図14~
図16を参照して、ステップS1、ステップS2、ステップS21およびステップS22は、
図12に示すステップS1、ステップS2、ステップS21およびステップS22と同じなので、説明を省略する。
【0093】
第2の割当部50は、第1のジョブおよび第2のジョブのそれぞれにGPU10を割り当てる(ステップS31)。詳しく説明する。第2の割当部50は、ユーザ3-1の第1のジョブに対して、ユーザ3-1に割り当てられた第1のGPUおよび第2のGPUの中から、第1のGPUを優先して割り当て、かつ、ユーザ3-1の第2のジョブに対して、ユーザ3-1に割り当てられた第1のGPUおよび第2のGPUの中から、第2のGPUを優先して割り当てる。第2の割当部50は、第1のジョブに対して割り当てる第1のGPUがなくなり、第2のGPUがある場合、第2のGPUを第1のジョブに割り当てる。第2の割当部50は、第2のジョブに対して割り当てる第2のGPUがなくなり、第1のGPUがある場合、第1のGPUを第2のジョブに割り当てる。第2の割当部50は、ユーザ3-2~3-4に対しても、ユーザ3-1と同様にして、第1のジョブおよび第2のジョブに第1のGPUおよび第2のGPUを割り当てる。
【0094】
第4変形例の主な効果を説明する。従来、高性能コンピュータ100に備えられるGPU10の使用のスケジュールは、主に、高性能コンピュータ100の処理時間(計算時間)に従って、設定されていた。第2のジョブは、高性能コンピュータ100によって自動的に実行されるので、第2のジョブに要する時間は、ある程度予測することができる。これに対して、第1のジョブは、ユーザ3が高性能コンピュータ100とインタラクティブしながら実行されるので、第1のジョブに要する時間の予測は困難である。このため、GPU10の使用のスケジュールの対象は、第1のジョブでなく、第2のジョブであった。
【0095】
第4変形例は、複数のユーザ3が複数のGPU10を共有している環境下、一部のユーザ3が複数のGPU10を占有した状態を回避する目的を達成するために、第1のジョブおよび第2のジョブの両方を、GPU10の使用のスケジュールの対象にしている。さらに、計算ノード1として、ノーマル計算ノードとハイグレード計算ノードの両方があるので、処理速度に高速を要求されない第1のジョブにノーマル計算ノードを割り当て、処理速度に高速が要求される第2のジョブにハイグレード計算ノードを割り当てる。従って、第4変形例によれば、学習準備(第1のジョブ)から学習本番(第2のジョブ)まで、効率的に高性能コンピュータ100を使用できると共に、各ユーザ3に第1のGPUおよび第2のGPUを平等に使用させることができる。
【符号の説明】
【0096】
CS コンピュータシステム
2,2-1~2-4 ユーザ用のPC
4a,4b,4c,4d,4e 管理者用のPC
6 ネットワーク
100 高性能コンピュータ