(57)【要約】【課題】複数のユーザが複数のＧＰＵを共有している環境下、一部のユーザが複数のＧＰＵを占有した状態を回避する。【解決手段】ＧＰＵ割当プログラムは、複数のＧＰＵ１０を、予め定められた複数のユーザ３の共有にする設定をする第１の設定ステップと、第１の設定ステップで共有の設定がされた複数のユーザ３のそれぞれに割り当てられるＧＰＵ１０の数を制限して、複数のユーザ３のそれぞれに対して、１個以上のＧＰＵ１０を複数のＧＰＵ１０の中から割り当てる第１の割当ステップと、をコンピュータ４ａに実行させる。【選択図】図５
2019121185.tif 000002
【特許請求の範囲】
【請求項１】
複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定ステップと、
前記第１の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当ステップと、をコンピュータに実行させるＧＰＵ割当プログラム。
【請求項２】
複数の前記ユーザのそれぞれに対して、前記ＧＰＵの割り当て数の優先度を設定する第２の設定ステップを、さらに、前記コンピュータに実行させ、
前記第１の割当ステップは、前記第２の設定ステップで設定された前記優先度が高くなるに従って、割り当てる前記ＧＰＵの数を多くし、かつ、前記第２の設定ステップで設定された前記優先度が低くなるに従って、割り当てる前記ＧＰＵの数を少なくする、請求項１に記載のＧＰＵ割当プログラム。
【請求項３】
複数の前記ＧＰＵのそれぞれについて、使用時間の履歴を記録する履歴記録ステップを、さらに、前記コンピュータに実行させ、
前記第２の設定ステップは、前記履歴に基づいて、前記ＧＰＵの合計使用時間を、前記ユーザ毎に算出し、前記ＧＰＵの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する、請求項２に記載のＧＰＵ割当プログラム。
【請求項４】
前記ＧＰＵは、第１のＧＰＵと、処理速度が前記第１のＧＰＵより高い第２のＧＰＵとの２種類があり、
前記第１の割当ステップは、複数の前記ユーザのそれぞれに割り当てられる前記第１のＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記第１のＧＰＵを複数の前記第１のＧＰＵの中から割り当て、かつ、複数の前記ユーザのそれぞれに割り当てられる前記第２のＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記第２のＧＰＵを複数の前記第２のＧＰＵの中から割り当てる、請求項１〜３のいずれか一項に記載のＧＰＵ割当プログラム。
【請求項５】
複数の前記ユーザのそれぞれに対して、ニューラルネットワークの設計を含む第１のジョブに１個以上の前記第１のＧＰＵを割り当て、ハイパーパラメーターの調整を含む第２のジョブに１個以上の前記第２のＧＰＵを割り当てる第２の割当ステップをさらに、前記コンピュータに実行させる、請求項４に記載のＧＰＵ割当プログラム。
【請求項６】
前記コンピュータは、１個以上の前記ＧＰＵを備える計算ノードを複数備えている、請求項１〜５のいずれか一項に記載のＧＰＵ割当プログラム。
【請求項７】
前記計算ノードには、１個以上の前記第１のＧＰＵを備える第１の計算ノードと、処理速度が前記第１の計算ノードより高く、１個以上の前記第２のＧＰＵを備える第２の計算ノードとの２種類があり、
前記コンピュータは、複数の前記第１の計算ノードと複数の前記第２の計算ノードとを備えている、請求項４または５を引用する請求項６に記載のＧＰＵ割当プログラム。
【請求項８】
複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定ステップと、
前記第１の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当ステップと、を備えるＧＰＵ割当方法。
【請求項９】
請求項１〜７のいずれか一項に記載のＧＰＵ割当プログラムを格納したコンピュータ読取可能な記録媒体。
【請求項１０】
複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定部と、
前記第１の設定部で共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当部と、を備えるＧＰＵ割当装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を割り当てる技術に関する。
【背景技術】
【０００２】
深層学習の学習モデルを構築（開発）する場合、様々なライブラリー、アプリケーションの組み合わせが使用されるので、ソフトウェアの依存関係が複雑となる。このため、一台のコンピュータ（物理マシン）では、学習モデルの構築が困難である。この問題は、仮想化技術により解決することができる。例えば、コンテナ型の仮想化技術では、開発環境（ミドルウェア、ドライバー、プログラム、設定ファイル等）がコンテナ内に収容されることにより、この開発環境が他の開発環境の影響を受けないようにすることができる。
【０００３】
パーソナルコンピュータのように、シングルユーザを対象とするのでなく、複数のユーザを対象とするコンピュータがある（例えば、高性能コンピュータ、スーパーコンピュータ）。一般に、ユーザ毎に開発環境が異なるので、複数のユーザを対象とするコンピュータでは、仮想化技術が適用される。
【０００４】
コンテナ型の仮想化技術に適用され、リソースを配分する技術がある（例えば、Ｋｕｂｅｒｎｅｔｅｓ、Ｍｅｓｏｓ）。この技術は、複数の計算ノードを管理し、各コンテナにおいて、深層学習に必要な数のＧＰＵを割り当てる。
【０００５】
リソースを配分する技術として、例えば、非特許文献１は、複数台のサーバを自動で一括に管理・制御することにより、複数の人工知能を開発する期間を短縮できる技術を開示している。
【先行技術文献】
【特許文献】
【０００６】
【非特許文献１】”（お知らせ）ＡＩ開発基盤を実用化”、［ｏｎｌｉｎｅ ］、株式会社ＮＴＴドコモ、［平成２９年１２月２０日検索］、インターネット〈ＵＲＬ：ｈｔｔｐｓ：／／ｗｗｗ．ｎｔｔｄｏｃｏｍｏ．ｃｏ．ｊｐ／ｉｎｆｏ／ｎｅｗｓ＿ｒｅｌｅａｓｅ／２０１７／０７／１８＿００．ｈｔｍｌ〉
【発明の概要】
【発明が解決しようとする課題】
【０００７】
リソースを配分する技術として、複数のＧＰＵを配分する技術を考える。複数のユーザを対象とするコンピュータは、各ユーザの需要を満たせるように、多くのＧＰＵを搭載している。しかし、ＧＰＵの割り当てをユーザの自由に任せると、多くのＧＰＵが用意されていても、一部のユーザがこれらのＧＰＵを占有した状態が発生することがある。特に、ユーザが、無償でＧＰＵを使用できる環境にある場合（例えば、社内の高性能コンピュータの使用が許可されたユーザ）、その状態が発生しやすい。
【０００８】
本発明の目的は、複数のユーザが複数のＧＰＵを共有している環境下、一部のユーザが複数のＧＰＵを占有した状態を回避できるＧＰＵ割当プログラム、ＧＰＵ割当方法、コンピュータ読取可能な記録媒体、および、ＧＰＵ割当装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の第１局面に係るＧＰＵ割当プログラムは、複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定ステップと、前記第１の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当ステップと、をコンピュータに実行させる。
【００１０】
本発明の第１局面に係るＧＰＵ割当プログラムは、各ユーザに割り当てられるＧＰＵの数（言い換えれば、各ユーザが使用できるＧＰＵの数）を制限して、各ユーザに１個以上のＧＰＵを割り当てる。このため、複数のユーザが複数のＧＰＵを共有している環境下、一部のユーザが複数のＧＰＵを占有した状態を回避することができる。
【００１１】
ＧＰＵの割り当て数の制限について具体例を示すと、以下の（１）〜（４）である。（１）第１の割当ステップは、複数のＧＰＵの数が複数のユーザの数で割りきれる場合、複数のユーザのそれぞれに割り当てられるＧＰＵの数が同じになるように、複数のユーザのそれぞれに対して、１個以上のＧＰＵを割り当てる。これによれば、各ユーザに平等な数のＧＰＵを割り当てることができる。（２）第１の割当ステップは、複数のＧＰＵの数が複数のユーザの数で割りきれない場合、複数のユーザのそれぞれに割り当てられるＧＰＵの数の差が最も小さくなるように、複数のユーザのそれぞれに対して、１個以上のＧＰＵを割り当てる。これによれば、各ユーザに、ほぼ平等な数のＧＰＵを割り当てることができる。（３）第１の割当ステップは、ＧＰＵの割り当て数の上限値を超えないように、複数のユーザのそれぞれに対して、１個以上のＧＰＵを割り当てる。（４）第１の割当ステップは、複数のユーザのうち、ＧＰＵの割り当て数が一番多いユーザと一番小さいユーザとの間において、ＧＰＵの割り当て数の差が予め定められた値より小さくなるように、複数のユーザのそれぞれに対して、１個以上のＧＰＵを割り当てる。
【００１２】
上記構成において、複数の前記ユーザのそれぞれに対して、前記ＧＰＵの割り当て数の優先度を設定する第２の設定ステップを、さらに、前記コンピュータに実行させ、前記第１の割当ステップは、前記第２の設定ステップで設定された前記優先度が高くなるに従って、割り当てる前記ＧＰＵの数を多くし、かつ、前記第２の設定ステップで設定された前記優先度が低くなるに従って、割り当てる前記ＧＰＵの数を少なくする。
【００１３】
この構成によれば、複数のユーザが複数のＧＰＵを共有している環境下、一部のユーザが複数のＧＰＵを占有した状態を回避することができると共に、各ユーザの個別の事情に適合するように（使用できるＧＰＵの数が少なくてもジョブの実行に支障が生じないユーザがいる一方で、使用できるＧＰＵの数を多くしないとジョブの実行に支障が生じるユーザがいる）、ＧＰＵの割り当て数を調整することができる。
【００１４】
上記構成において、複数の前記ＧＰＵのそれぞれについて、使用時間の履歴を記録する履歴記録ステップを、さらに、前記コンピュータに実行させ、前記第２の設定ステップは、前記履歴に基づいて、前記ＧＰＵの合計使用時間を、前記ユーザ毎に算出し、前記ＧＰＵの合計使用時間が比較的長い前記ユーザに対して、前記優先度が低くなる設定に変更し、かつ、前記合計使用時間が比較的短い前記ユーザに対して、前記優先度が高くなる設定に変更する。
【００１５】
合計使用時間とは、予め設定された所定の期間において、ユーザに割り当てられたＧＰＵの使用時間の合計である。上述したように、各ユーザには、１個以上のＧＰＵが割り当てられる。２個以上のＧＰＵが割り当てられたユーザの場合、これらのＧＰＵの使用時間を加算した値が合計使用時間である。１個のＧＰＵが割り当てられたユーザの場合、このＧＰＵの使用時間が合計使用時間である。
【００１６】
例えば、合計使用時間の長さに応じて、ユーザを３段階に分けた場合（ヘビー、ミドル、ライト）、ヘビーユーザが、合計使用時間が比較的長いユーザであり、ライトユーザが、合計使用時間が比較的短いユーザである。この構成によれば、特定のユーザに対して、優先度が高い設定がされた状態が長期間継続することを防止できる。
【００１７】
上記構成において、前記ＧＰＵは、第１のＧＰＵと、処理速度が前記第１のＧＰＵより高い第２のＧＰＵとの２種類があり、前記第１の割当ステップは、複数の前記ユーザのそれぞれに割り当てられる前記第１のＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記第１のＧＰＵを複数の前記第１のＧＰＵの中から割り当て、かつ、複数の前記ユーザのそれぞれに割り当てられる前記第２のＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記第２のＧＰＵを複数の前記第２のＧＰＵの中から割り当てる。
【００１８】
処理速度が異なる２種類のＧＰＵ（第１のＧＰＵ、第２のＧＰＵ）が、複数のユーザによって共有されることがある。この構成によれば、一部のユーザが複数の第１のＧＰＵを占有した状態を回避することができる。第２のＧＰＵについても同様である。第１のＧＰＵおよび第２のＧＰＵの割り当て数の制限の具体例は、上記（１）〜（４）と同じである。
【００１９】
上記構成において、複数の前記ユーザのそれぞれに対して、ニューラルネットワークの設計を含む第１のジョブに１個以上の前記第１のＧＰＵを割り当て、ハイパーパラメーターの調整を含む第２のジョブに１個以上の前記第２のＧＰＵを割り当てる第２の割当ステップをさらに、前記コンピュータに実行させる。
【００２０】
ハイパーパラメータは、機械学習のアルゴリズムにおいて、人が調整する必要があるパラメータである。ハイパーパラメータは、自動調整することができ、これが第２のジョブである。第２のジョブでは、膨大な演算がされるので、ＧＰＵの処理速度の高速化が求められる。これに対して、ユーザがコンピュータとインタラクティブしながら、第１のジョブは実行される。このため、第１のジョブは、第２のジョブと比べて、ＧＰＵの処理速度の高速化が求められていない。そこで、第２の割当ステップは、第１のＧＰＵを第１のジョブに割り当て、第１のＧＰＵより処理速度が高い第２のＧＰＵを第２のジョブに割り当てる。これにより、処理速度が異なる２種類のＧＰＵ（第１のＧＰＵ、第２のＧＰＵ）が、複数のユーザによって共有されている場合に、ジョブの種類に応じて、適切なＧＰＵを割り当てることができる。
【００２１】
上記構成において、前記コンピュータは、１個以上の前記ＧＰＵを備える計算ノードを複数備えている。
【００２２】
複数のユーザに割り当てる複数のＧＰＵを備えるコンピュータとして、１個以上のＧＰＵを備える計算ノードを複数備えるコンピュータ（例えば、高性能コンピュータ、スーパーコンピュータ）がある。このようなコンピュータとして、第１の計算ノードと第２の計算ノードとを備えるコンピュータがある。第１の計算ノードは、複数の第１のＧＰＵを備える。第２の計算ノードは、処理速度が第１の計算ノードより高く、複数の第２のＧＰＵを備える。
【００２３】
本発明の第２局面に係るＧＰＵ割当方法は、複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定ステップと、前記第１の設定ステップで共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当ステップと、を備える。
【００２４】
本発明の第２局面に係るＧＰＵ割当方法は、本発明の第１局面に係るＧＰＵ割当プログラムを方法の観点から規定しており、本発明の第１局面に係るＧＰＵ割当プログラムと同様の作用効果を有する。
【００２５】
本発明の第３局面に係るコンピュータ読取可能な記録媒体は、上記ＧＰＵ割当プログラムを格納したコンピュータ読取可能な記録媒体である。
【００２６】
本発明の第３局面に係るコンピュータ読取可能な記録媒体は、本発明の第１局面に係るＧＰＵ割当プログラムをコンピュータ読取可能な記録媒体の観点から規定しており、本発明の第１局面に係るＧＰＵ割当プログラムと同様の作用効果を有する。
【００２７】
本発明の第４局面に係るＧＰＵ割当装置は、複数のＧＰＵを、予め定められた複数のユーザの共有にする設定をする第１の設定部と、前記第１の設定部で共有の設定がされた複数の前記ユーザのそれぞれに割り当てられる前記ＧＰＵの数を制限して、複数の前記ユーザのそれぞれに対して、１個以上の前記ＧＰＵを複数の前記ＧＰＵの中から割り当てる第１の割当部と、を備える。
【００２８】
本発明の第４局面に係るＧＰＵ割当装置は、本発明の第１局面に係るＧＰＵ割当プログラムを装置の観点から規定しており、本発明の第１局面に係るＧＰＵ割当プログラムと同様の作用効果を有する。
【発明の効果】
【００２９】
本発明によれば、複数のユーザが複数のＧＰＵを共有している環境下、一部のユーザが複数のＧＰＵを占有した状態を回避できる。
【図面の簡単な説明】
【００３０】
【図１】実施形態に係るコンピュータシステムのブロック図である。
【図２】実施形態に係る管理者用のＰＣの機能ブロック図である。
【図３】管理者用のＰＣのハードウェア構成を示すブロック図である。
【図４】実施形態に係る管理者用のＰＣで実行されるＧＰＵ割当プログラムの動作を説明するフローチャートである。
【図５】実施形態において、ユーザに割り当てられたＧＰＵを説明する説明図である。
【図６】第１変形例に係る管理者用のＰＣの機能ブロック図である。
【図７】第１変形例に係る管理者用のＰＣで実行されるＧＰＵ割当プログラムの動作を説明するフローチャートである。
【図８】第１変形例において、ユーザに割り当てられたＧＰＵを説明する説明図である。
【図９】第２変形例に係る管理者用のＰＣの機能ブロック図である。
【図１０】第３変形例に係るコンピュータシステムのブロック図である。
【図１１】第３変形例に係る管理者用のＰＣの機能ブロック図である。
【図１２】第３変形例に係る管理者用のＰＣで実行されるＧＰＵ割当プログラムの動作を説明するフローチャートである。
【図１３】第３変形例において、ユーザに割り当てられたＧＰＵを説明する説明図である。
【図１４】第４変形例に係る管理者用のＰＣの機能ブロック図である。
【図１５】第４変形例に係る管理者用のＰＣで実行されるＧＰＵ割当プログラムの動作を説明するフローチャートである。
【図１６】第４変形例において、ＧＰＵに割り当てられた第１のジョブおよび第２のジョブを説明する説明図である。
【発明を実施するための形態】
【００３１】
以下、図面に基づいて本発明の実施形態を詳細に説明する。各図において、同一符号を付した構成は、同一の構成であることを示し、その構成について、既に説明している内容については、その説明を省略する。本明細書において、総称する場合には添え字を省略した参照符号で示し（例えば、ＧＰＵ１０）、個別の構成を指す場合には添え字を付した参照符号で示す（例えば、ＧＰＵ１０−１〜１０−２４）。
【００３２】
図１は、実施形態に係るコンピュータシステムＣＳのブロック図である。コンピュータシステムＣＳは、６台の計算ノード１−１〜１−６と、ユーザ用の４台のパーソナルコンピュータ２−１〜２−４と、管理者用の１台のパーソナルコンピュータ４ａと、これらを通信可能に接続するネットワーク６と、を備える。
【００３３】
計算ノード１の数は、６台である。計算ノード１の数は、複数であればよく、６台に限定されない。６台の計算ノード１は、同じ構成を有し、処理速度（計算速度）が同じである。計算ノード１とは、１つの管理単位であり、例えば、１つの基本ソフト（ＯＳ）が動作しているＣＰＵ、メモリ等の塊である。言い換えれば、計算ノード１とは、コンピュータとして機能する１台の物理マシンである。
【００３４】
各計算ノード１は、４個のＧＰＵ１０を備える。各計算ノード１が備えるＧＰＵ１０の数は、１個以上であればよく、４個に限定されない。各計算ノード１が備えるＧＰＵ１０の数が同じであるが、同じでなくてもよい。
【００３５】
６台の計算ノード１によって、高性能コンピュータ１００が構成されている。高性能コンピュータ１００は、複数のユーザ３を対象とするコンピュータである。高性能コンピュータ１００は、コンテナ型の仮想環境を有する。コンテナ型に限らず、例えば、ホスト型でもよいし、ハイパーバイザー型でもよい。
【００３６】
ユーザ用の４台のパーソナルコンピュータ２（以下、ＰＣ２）は、高性能コンピュータ１００を使用する４人のユーザ３のそれぞれに割り当てられている。詳しくは、ＰＣ２−１は、ユーザ３−１によって使用され、ＰＣ２−２は、ユーザ３−２によって使用され、ＰＣ２−３は、ユーザ３−３によって使用され、ＰＣ２−４は、ユーザ３−４によって使用される。各ユーザ３は、ＰＣ２を用いて、高性能コンピュータ１００にアクセスし、使用することができる。ユーザ用のＰＣ２は、複数であればよく、４台に限定されない。
【００３７】
管理者用のパーソナルコンピュータ４ａ（以下、ＰＣ４ａ）は、コンピュータシステムＣＳの全体を管理する。実施形態に係る管理者用のＰＣは、ＰＣ４ａであるが、後で説明する第１変形例に係る管理者用のＰＣは、ＰＣ４ｂであり、第２変形例に係る管理者用のＰＣは、ＰＣ４ｃであり、第３変形例に係る管理者用のＰＣは、ＰＣ４ｄ（図１０）であり、第４変形例に係る管理者用のＰＣは、ＰＣ４ｅ（図１０）である。ＰＣ４ａについて詳しく説明する。図２は、管理者用のＰＣ４ａの機能ブロック図である。ＰＣ４ａは、機能ブロックとして、制御処理部４１と、通信部４２と、操作部４３と、表示部４４と、第１の設定部４６と、第１の割当部４７と、を備える。
【００３８】
図１および図２を参照して、制御処理部４１は、ＰＣ４ａの各部（通信部４２、操作部４３、表示部４４、第１の設定部４６、第１の割当部４７）を当該各部の機能に応じてそれぞれ制御する機能を有する。通信部４２は、ＰＣ４ａがネットワーク６を通して、他の装置（例えば、高性能コンピュータ１００、ユーザ用のＰＣ２）と通信する機能を有する。操作部４３は、管理者５がＰＣ４ａに各種の命令、各種のデータ等を入力する機能を有する。表示部４４は、コンピュータシステムＣＳの管理に必要な各種の情報等を表示する。
【００３９】
第１の設定部４６は、２４個（複数）のＧＰＵ１０−１〜１０−２４を、４人（予め定められた複数）のユーザ３−１〜３−４の共有にする設定をする。管理者５が操作部４３を操作して、４人のユーザ３のそれぞれのユーザＩＤを入力し、そして、ＧＰＵ１０を共有に設定する命令を入力することにより、第１の設定部４６は、２４個のＧＰＵ１０を４人のユーザ３の共有にする設定をする。
【００４０】
第１の割当部４７は、第１の設定部４６が共有に設定した４人（複数）のユーザ３のそれぞれに割り当てられるＧＰＵ１０の数を制限して、４人（複数）のユーザ３のそれぞれに対して、１個以上のＧＰＵ１０を２４個（複数）のＧＰＵ１０の中から割り当てる。詳しくは、第１の割当部４７は、複数のＧＰＵ１０の数が複数のユーザ３の数で割りきれる場合、複数のユーザ３のそれぞれに割り当てられるＧＰＵ１０の数が同じになるように、複数のユーザ３のそれぞれに対して、１個以上のＧＰＵ１０を割り当てる。ユーザ３の数が４人であり、ＧＰＵ１０の数が２４個なので、第１の割当部４７は、各ユーザ３に６個のＧＰＵ１０を割り当てる。
【００４１】
第１の割当部４７は、排他制御をする。すなわち、第１の割当部４７は、各ユーザ３に、それぞれ別のＧＰＵ１０を割り当てる。例えば、ＧＰＵ１０−１がユーザ３−１とユーザ３−２とに割り当てられることはない。従って、第１の割当部４７は、複数のＧＰＵ１０の数が複数のユーザ３の数で割りきれない場合、複数のユーザ３のそれぞれに割り当てられるＧＰＵ１０の数の差が最も小さくなるように、複数のユーザ３のそれぞれに対して、１個以上のＧＰＵ１０を割り当てる。例えば、ユーザ３の数が５人であり、ＧＰＵ１０の数が２４個の場合、第１の割当部４７は、４人のユーザ３のそれぞれに５個のＧＰＵ１０を割り当て、１人のユーザ３に４個のＧＰＵ１０を割り当てる。
【００４２】
図３は、管理者用のＰＣ４ａ（４ｂ，４ｃ，４ｄ，４ｅ）のハードウェア構成を示すブロック図である。ＰＣ４ａ（４ｂ，４ｃ，４ｄ，４ｅ）は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４０４、液晶ディスプレイ４０５、ネットワークインターフェースカード４０６、キーボード等４０７、および、これらを接続するバス４０８を備える。
【００４３】
図２および図３を参照して、液晶ディスプレイ４０５は、表示部４４を実現するハードウェアである。液晶ディスプレイ４０５の替わりに、有機ＥＬディスプレイ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ  ｄｉｓｐｌａｙ）、プラズマディスプレイ等でもよい。キーボード等４０７は、操作部４３を実現するハードウェアである。キーボードの替わりに、タッチパネルでもよい。ネットワークインターフェースカード４０６は、通信部４２を実現するハードウェアである。
【００４４】
ＨＤＤ４０４には、制御処理部４１、第１の設定部４６、第１の割当部４７、後述する第２の設定部４８（図６）、履歴記録部４９（図９）、第２の割当部５０（図１４）について、これらの機能ブロックをそれぞれ実現するためのプログラムが格納されている。これらのプログラムは、機能ブロックの定義を用いて表現される。第１の設定部４６および第１の設定プログラムを例にして説明する。第１の設定部４６は、複数のＧＰＵ１０を、予め定められた複数のユーザ３の共有にする設定をする。第１の設定プログラムは、複数のＧＰＵ１０を、予め定められた複数のユーザ３の共有にする設定をするプログラムである。
【００４５】
これらのプログラムは、ＨＤＤ４０４に予め記憶されているが、これに限定されない。例えば、これらのプログラムを記録している、コンピュータ読取可能な記録媒体（例えば、磁気ディスク、光学ディスクのような外部記録媒体）が用意されており、この記録媒体に記憶されているプログラムがＨＤＤ４０４に記憶されてもよい。また、これらのプログラムは、ＰＣ４ａ（４ｂ，４ｃ，４ｄ，４ｅ）とネットワーク接続されたサーバに格納されており、ネットワーク６を介して、これらのプログラムがＨＤＤ４０４に送られ、ＨＤＤ４０４に記憶されてもよい。これらのプログラムは、ＨＤＤ４０４の替わりにＲＯＭ４０３に記憶してもよい。ＰＣ４ａ（４ｂ，４ｃ，４ｄ，４ｅ）は、ＨＤＤ４０４の替わりに、フラッシュメモリを備え、これらのプログラムはフラッシュメモリに記憶してもよい。
【００４６】
ＣＰＵ４０１は、これらのプログラムを、ＨＤＤ４０４から読み出してＲＡＭ４０２に展開させ、展開されたプログラムを実行することによって、制御処理部４１、第１の設定部４６、第１の割当部４７、第２の設定部４８（図６）、履歴記録部４９（図９）、第２の割当部５０（図１４）が実現される。但し、これらの機能について、各機能の一部又は全部は、ＣＰＵ４０１による処理に替えて、又は、これと共に、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）による処理によって実現されてもよい。又、同様に、各機能の一部又は全部は、ソフトウェアによる処理に替えて、又は、これと共に、専用のハードウェア回路による処理によって実現されてもよい。
【００４７】
ＣＰＵ４０１によって実行されるこれらのプログラム（第１の設定プログラム等）のフローチャートが、後で説明する図４、図７、図１２、図１５のフローチャートである。
【００４８】
実施形態に係る管理者用のＰＣ４ａで実行されるＧＰＵ割当プログラムの動作について説明する。図４は、この動作を説明するフローチャートである。
【００４９】
図１、図２および図４を参照して、管理者５は、操作部４３を操作して、ＧＰＵ１０を共有する４人のユーザ３のそれぞれのユーザＩＤをＰＣ４ａに入力する。第１の設定部４６は、入力されたこれらのユーザＩＤを記憶する（ステップＳ１）。
【００５０】
第１の設定部４６は、こられのユーザＩＤで特定される４人のユーザ３を、２４個のＧＰＵ１０を共有するユーザ３として設定する（ステップＳ２）。
【００５１】
第１の割当部４７は、４人のユーザ３のそれぞれに割り当てるＧＰＵ１０の数を決定する（ステップＳ３）。ここでは、６個（＝２４個のＧＰＵ１０÷４人のユーザ３）となる。
【００５２】
第１の割当部４７は、２４個のＧＰＵ１０−１〜１０−２４の中から、４人のユーザ３のそれぞれに割り当てるＧＰＵ１０を設定する（ステップＳ４）。詳しく説明する。図５は、実施形態において、ユーザ３に割り当てられたＧＰＵ１０を説明する説明図である。図５に示すコンピュータシステムＣＳは、図１に示すコンピュータシステムＣＳと同じである。例えば、第１の割当部４７は、ユーザ３−１に割り当てる６個のＧＰＵ１０として、ＧＰＵ１０−１〜１０−６を設定し、ユーザ３−２に割り当てる６個のＧＰＵ１０として、ＧＰＵ１０−７〜１０−１２を設定し、ユーザ３−３に割り当てる６個のＧＰＵ１０として、ＧＰＵ１０−１３〜１０−１８を設定し、ユーザ３−４に割り当てる６個のＧＰＵ１０として、ＧＰＵ１０−１９〜１０−２４を設定する。第１の割当部４７は、ＧＰＵ１０を特定する番号順に、割り当てるＧＰＵ１０を選択しているが、番号順でなくてもよい。例えば、第１の割当部４７は、ユーザ３−１に、６個のＧＰＵ１０−１，１０−５，１０−９，１０−１３，１０−１７，１０−２１を割り当ててもよい。
【００５３】
以上により、４人のユーザ３に対して、ＧＰＵ１０の割り当てが終了する。各ユーザ３は、自身に割り当てられた６個のＧＰＵ１０を使用することができる。４人のユーザ３のいずれも、６個より多い数のＧＰＵ１０を使用しようとしても、第１の割当部４７は、これを拒否する。
【００５４】
実施形態の主な効果を説明する。実施形態に係るＧＰＵ割当プログラムは、各ユーザ３に割り当てられるＧＰＵ１０の数（言い換えれば、各ユーザ３が使用できるＧＰＵ１０の数）を制限して、各ユーザ３に１個以上のＧＰＵ１０を割り当てる。このため、複数のユーザ３が複数のＧＰＵ１０を共有している環境下、一部のユーザ３が複数のＧＰＵ１０を占有した状態を回避することができる。
【００５５】
実施形態の変形例を説明する。まず、第１変形例について、実施形態との相違点を主にして説明する。図６は、第１変形例に係る管理者用のＰＣ４ｂの機能ブロック図である。ＰＣ４ｂは、制御処理部４１、通信部４２、操作部４３、表示部４４、第１の設定部４６および第１の割当部４７に加えて、第２の設定部４８を備える。
【００５６】
第２の設定部４８は、４人（複数）のユーザ３のそれぞれに対して、ＧＰＵ１０の割り当て数の優先度を設定する。優先度は、例えば、「優先度：低」、「優先度：中」、「優先度：高」の３種類とする。「優先度：低」のユーザ３には、最低限である１個のＧＰＵ１０が割り当てられる。「優先度：中」のユーザ３には、実施形態で説明した６個のＧＰＵ１０（ＧＰＵ１０の総数をユーザ数で割った値の数のＧＰＵ１０）が割り当てられる。「優先度：高」のユーザ３には、残り全てのＧＰＵ１０が割り当てられる。
【００５７】
第１変形例に係る管理者用のＰＣ４ｂで実行されるＧＰＵ割当プログラムの動作について説明する。図７は、この動作を説明するフローチャートである。ステップＳ１およびステップＳ２は、図４に示すステップＳ１およびステップＳ２と同じなので、説明を省略する。
【００５８】
図１、図６および図７を参照して、４人のユーザ３は、それぞれ、自己のＰＣ２を操作して、設定したい優先度をＰＣ２に入力する。例えば、ユーザ３−１が「優先度：低」を入力し、ユーザ３−２が「優先度：高」を入力し、ユーザ３−３が「優先度：高」を入力し、ユーザ３−４が「優先度：中」を入力したとする。各ＰＣ２は、入力された優先度を示す優先度情報を、ネットワーク６を用いて、管理者用のＰＣ４ｂに送信する。通信部４２は、送られてきた優先度情報を受信し、優先度情報を第２の設定部４８に通知する（ステップＳ１１）。
【００５９】
第２の設定部４８は、第１の設定部４６に、共有の設定がされている４人のユーザ３に対して、通知された優先度情報に従った優先度を設定する（ステップＳ１２）。詳しくは、第２の設定部４８は、ユーザ３−１に対して、「優先度：低」を設定し、ユーザ３−２に対して、「優先度：高」を設定し、ユーザ３−３に対して、「優先度：高」を設定し、ユーザ３−４に対して、「優先度：中」を設定する。
【００６０】
なお、第２の設定部４８は、管理者５の承認を条件として、優先度の設定をしてもよい。詳しく説明すると、制御処理部４１は、表示部４４に優先度情報を表示し、管理者５が操作部４３を操作して、優先度情報で示される各ユーザ３に設定される優先度を承認する入力をしたことを条件として、上記設定をするようにしてもよい。また、この過程で、第２の設定部４８は、管理者５に優先度を変更する権限を与えてもよい。
【００６１】
第１の割当部４７は、設定された優先度を基にして、４人のユーザ３のそれぞれに割り当てるＧＰＵ１０の数を決定する（ステップＳ１３）。第１の割当部４７は、「優先度：高」のユーザ３に対して、「優先度：中」のユーザ３に割り当てられる個数のＧＰＵ１０に加えて、さらにＧＰＵ１０が追加して割り当てる。ＧＰＵ１０の追加数を「ＮＡＤＤ」とする。「ＮＡＤＤ」は、下記式で示される。
【００６２】
【数１】
2019121185.tif 000003
【００６３】
「ＮＡＳＩＧＮＥ」は、各ユーザ３に平等（平均）にＧＰＵ１０を割り当てた場合のＧＰＵ１０の数である。「ＮＵＳＥＲ_優先度：低」は、「優先度：低」に設定されたユーザ３の数である。「ＮＵＳＥＲ_優先度：高」は、「優先度：高」に設定されたユーザ３の数である。ここでは、「ＮＡＳＩＧＮＥ」が６（＝２４÷４）であり、「ＮＵＳＥＲ_優先度：低」が１であり、「ＮＵＳＥＲ_優先度：高」が２である。従って、「ＮＡＤＤ」は、２．５となる。
【００６４】
第１の割当部４７は、「ＮＡＤＤ」が整数でない場合、「ＮＡＤＤ」を整数に補正する。例えば、第１の割当部４７は、「優先度：高」が設定された順番を優先する。ユーザ３−２がユーザ３−３よりも先に、「優先度：高」の設定がされていたとする。第１の割当部４７は、ユーザ３−２に対して、ＧＰＵ１０を追加して割り当てる数を３とし、ユーザ３−３に対して、ＧＰＵ１０を追加して割り当てる数を２とする。これにより、第１の割当部４７は、ユーザ３−２に９個のＧＰＵ１０を割り当て、ユーザ３−３に８個のＧＰＵ１０を割り当てる。
【００６５】
このように、第１の割当部４７は、第２の設定部４８が設定した優先度が高くなるに従って、割り当てるＧＰＵ１０の数を多くし、かつ、第２の設定部４８が設定した優先度が低くなるに従って、割り当てるＧＰＵ１０の数を少なくする。
【００６６】
第１の割当部４７は、２４個のＧＰＵ１０−１〜１０−２４の中から、４人のユーザ３のそれぞれに割り当てるＧＰＵ１０を設定する（ステップＳ１４）。詳しく説明する。図８は、第１変形例において、ユーザ３に割り当てられたＧＰＵ１０を説明する説明図である。図８に示すコンピュータシステムＣＳは、図１に示すコンピュータシステムＣＳと同じである。例えば、第１の割当部４７は、ユーザ３−１に割り当てる１個のＧＰＵ１０として、ＧＰＵ１０−１を設定し、ユーザ３−２に割り当てる９個のＧＰＵ１０として、ＧＰＵ１０−２〜１０−１０を設定し、ユーザ３−３に割り当てる８個のＧＰＵ１０として、ＧＰＵ１０−１１〜１０−１８を設定し、ユーザ３−４に割り当てる６個のＧＰＵ１０として、ＧＰＵ１０−１９〜１０−２４を設定する。
【００６７】
以上により、４人のユーザ３に対して、ＧＰＵ１０の割り当てが終了する。各ユーザ３は、自身に割り当てられた数のＧＰＵ１０を使用することができる。第１変形例によれば、複数のユーザ３が複数のＧＰＵ１０を共有している環境下、一部のユーザ３が複数のＧＰＵ１０を占有した状態を回避することができると共に、各ユーザ３の個別の事情に適合するように（使用できるＧＰＵ１０の数が少なくてもジョブの実行に支障が生じないユーザ３がいる一方で、使用できるＧＰＵ１０の数を多くしないとジョブの実行に支障が生じるユーザ３がいる）、ＧＰＵ１０の割り当て数を調整することができる。
【００６８】
第２変形例について、第１変形例との相違点を主にして説明する。図９は、第２変形例に係る管理者用のＰＣ４ｃの機能ブロック図である。ＰＣ４ｃは、制御処理部４１、通信部４２、操作部４３、表示部４４、第１の設定部４６、第１の割当部４７および第２の設定部４８に加えて、履歴記録部４９を備える。
【００６９】
履歴記録部４９は、２４個（複数）のＧＰＵ１０のそれぞれについて、使用時間の履歴を所定期間の単位で記録する。所定期間の単位とは、例えば、１日単位である。
【００７０】
第２の設定部４８は、４人（複数）のユーザ３のそれぞれに設定された、ＧＰＵ１０の割り当て数の優先度に有効期限（例えば、１ヶ月）を設けており、有効期限を経過したとき、履歴記録部４９に記録された履歴に基づいて、４人（複数）のユーザ３のそれぞれの優先度を再設定する。
【００７１】
詳しく説明すると、第２の設定部４８は、優先度の有効期間を経過したとき、履歴記録部４９に記録されている履歴を参照して、直近の１ヶ月のＧＰＵ１０の合計使用時間をユーザ３毎に算出する。合計使用時間とは、ユーザ３に割り当てられたＧＰＵ１０の使用時間の合計である。上述したように、各ユーザ３には１個以上のＧＰＵ１０が割り当てられる。２個以上のＧＰＵ１０が割り当てられたユーザ３の場合、これらのＧＰＵ１０の使用時間を加算した値が合計使用時間である。１個のＧＰＵが割り当てられたユーザ３の場合、このＧＰＵ１０の使用時間が合計使用時間である。
【００７２】
第２の設定部４８は、ＧＰＵ１０の合計使用時間が比較的長いユーザ３に対して、優先度が低くなる設定に変更し、かつ、合計使用時間が比較的短いユーザ３に対して、優先度が高くなる設定に変更する（再設定）。例えば、合計使用時間の長さに応じて、ユーザ３を３段階に分けた場合（ヘビー、ミドル、ライト）、ヘビーユーザが、合計使用時間が比較的長いユーザ３であり、ライトユーザが、合計使用時間が比較的短いユーザ３である。
【００７３】
第１の割当部４７は、この再設定に基づいて、４人（複数）のユーザ３のそれぞれに割り当てるＧＰＵ１０の数を新たに決定する。
【００７４】
第２変形例によれば、特定のユーザ３に対して、優先度が高い設定がされた状態が長期間継続することを防止できる。
【００７５】
第３変形例について、実施形態との相違点を主にして説明する。図１０は、第３変形例に係るコンピュータシステムＣＳのブロック図である。図１に示すコンピュータシステムＣＳでは、６個の計算ノード１の処理速度（計算速度）が同じであるが、図１０に示すコンピュータシステムＣＳは、ハイグレード計算ノード（第２の計算ノード）として機能する計算ノード１−１，１−２と、ノーマル計算ノード（第１の計算ノード）として機能する計算ノード１−３〜１−６と、を備える。ハイグレード計算ノードは、ノーマル計算ノードより処理速度が高い。これを実現するために、ハイグレード計算ノードに搭載される第２のＧＰＵ（ＧＰＵ１０−１〜１０−８）は、ノーマル計算ノードに搭載される第１のＧＰＵ（ＧＰＵ１０−９〜１０−２４）より処理速度が高い。ハイグレード計算ノードに備えられる第２のＧＰＵが４個を例にしているが、１個以上であればよい。ノーマル計算ノードに備えられる第１のＧＰＵが４個を例にしているが、１個以上であればよい。
【００７６】
第３変形例に係る監視者用のＰＣ４ｄについて説明する。図１１は、第３変形例に係る管理者用のＰＣ４ｄの機能ブロック図である。ＰＣ４ｄは、制御処理部４１、通信部４２、操作部４３、表示部４４、第１の設定部４６および第１の割当部４７を備える。ＰＣ４ｄと、図２に示すＰＣ４ａとの違いは、第１の割当部４７の機能である。
【００７７】
ＰＣ４ｄの第１の割当部４７は、１６個（複数）の第１のＧＰＵ（ＧＰＵ１０−９〜１０−２４）と８個（複数）の第２のＧＰＵ（ＧＰＵ１０−１〜１０−８）のそれぞれについて、図２に示すＰＣ４ａの第１の割当部４７が実行するＧＰＵ１０の割当と同じ方法を用いて、ＧＰＵ１０の割り当てを実行する。すなわち、ＰＣ４ｄの第１の割当部４７は、４人（複数）のユーザ３のそれぞれに割り当てられる第１のＧＰＵの数を制限して、４人（複数）のユーザ３のそれぞれに対して、１個以上の第１のＧＰＵを１６個（複数）の第１のＧＰＵの中から割り当て、かつ、４人（複数）のユーザ３のそれぞれに割り当てられる第２のＧＰＵの数を制限して、４人（複数）のユーザ３のそれぞれに対して、１個以上の第２のＧＰＵを１６個（複数）の第２のＧＰＵの中から割り当てる。
【００７８】
第３変形例に係る管理者用のＰＣ４ｄで実行されるＧＰＵ割当プログラムの動作について説明する。図１２は、この動作を説明するフローチャートである。図１３は、第３変形例において、ユーザ３に割り当てられたＧＰＵ１０を説明する説明図である。図１３に示すコンピュータシステムＣＳは、図１０に示すコンピュータシステムＣＳと同じである。
【００７９】
図１１〜図１３を参照して、ステップＳ１およびステップＳ２は、図４に示すステップＳ１およびステップＳ２と同じなので、説明を省略する。
【００８０】
第１の割当部４７は、４人のユーザ３のそれぞれに割り当てる第１のＧＰＵの数、および、第２のＧＰＵの数を決定する（ステップＳ２１）。ここでは、第１のＧＰＵの数が４個（＝１６個の第１のＧＰＵ÷４人のユーザ３）となり、第２のＧＰＵの数が２個（＝８個の第２のＧＰＵ÷４人のユーザ３）となる。
【００８１】
第１の割当部４７は、１６個の第１のＧＰＵ（ＧＰＵ１０−９〜１０−２４）の中から、４人のユーザ３のそれぞれに割り当てる第１のＧＰＵを設定し、かつ、８個の第２のＧＰＵ（ＧＰＵ１０−１〜１０−８）の中から、４人のユーザ３のそれぞれに割り当てる第２のＧＰＵを設定する（ステップＳ２２）。詳しく説明する。例えば、第１の割当部４７は、ユーザ３−１に割り当てる４個の第１のＧＰＵとして、ＧＰＵ１０−９〜１０−１２を設定し、ユーザ３−２に割り当てる４個の第１のＧＰＵとして、ＧＰＵ１０−１３〜１０−１６を設定し、ユーザ３−３に割り当てる４個の第１のＧＰＵとして、ＧＰＵ１０−１７〜１０−２０を設定し、ユーザ３−４に割り当てる４個の第１のＧＰＵとして、ＧＰＵ１０−２１〜１０−２４を設定する。
【００８２】
例えば、第１の割当部４７は、ユーザ３−１に割り当てる２個の第２のＧＰＵとして、ＧＰＵ１０−１〜１０−２を設定し、ユーザ３−２に割り当てる２個の第２のＧＰＵとして、ＧＰＵ１０−３〜１０−４を設定し、ユーザ３−３に割り当てる２個の第２のＧＰＵとして、ＧＰＵ１０−５〜１０−６を設定し、ユーザ３−４に割り当てる２個の第２のＧＰＵとして、ＧＰＵ１０−７〜１０−８を設定する。
【００８３】
処理速度が異なる２種類のＧＰＵ１０（第１のＧＰＵ、第２のＧＰＵ）が、複数のユーザ３によって共有されることがある。第３変形例によれば、一部のユーザ３が複数の第１のＧＰＵを占有した状態を回避することができる。第２のＧＰＵについても同様である。
【００８４】
第４変形例について、第３変形例との相違点を主にして説明する。図１４は、第４変形例に係る管理者用のＰＣ４ｅの機能ブロック図である。ＰＣ４ｅは、制御処理部４１、通信部４２、操作部４３、表示部４４、第１の設定部４６および第１の割当部４７に加えて、第２の割当部５０を備える。
【００８５】
第２の割当部５０を説明する前に、この前提を説明する。各ユーザ３は、高性能コンピュータ１００（図１０）に、深層学習の学習モデルを構築させる。これは、主に、ニューラルネットワークの設計を含む第１のジョブを実行する工程と、ハイパーパラメータの調整（チューニング）を含む第２のジョブを実行する工程と、により構成される。
【００８６】
ニューラルネットワークの構造が決まらないと、ハイパーパラメータの調整ができない。そこで、ユーザ３は、ニューラルネットワークを設計することにより、ニューラルネットワークの構造を決める。この設計には、ニューラルネットワークの層の数の決定、および、各層のニューロンの数の決定等が含まれる。ユーザ３は、自己のＰＣ２を用いて、高性能コンピュータ１００とインタラクティブをして、高性能コンピュータ１００に第１のジョブを実行させる。第１のジョブの工程において、ＧＰＵ１０は常に使用状態となる。ユーザ３が、自己のＰＣ２を用いて、第１のジョブの終了を入力することにより、ＧＰＵ１０は開放され、使用状態でなくなる。
【００８７】
これに対して、第２のジョブは、高性能コンピュータ１００によって自動的に実行される。高性能コンピュータ１００は、第２のジョブの実行が終了したとき、自動的にＧＰＵ１０を開放する。これにより、ＧＰＵ１０は使用状態でなくなる。
【００８８】
第２のジョブでは、膨大な演算がされるので、ＧＰＵ１０の処理速度の高速化が求められる。これに対して、ユーザ３が高性能コンピュータ１００とインタラクティブしながら、第１のジョブは実行される。このため、第１のジョブは、第２のジョブと比べて、ＧＰＵ１０の処理速度の高速化が求められていない。
【００８９】
第３変形例で説明したように、第２のＧＰＵ（図１０に示すＧＰＵ１０−１〜１０−８）は、第１のＧＰＵ（図１０に示すＧＰＵ１０−９〜１０−２４）より処理速度が高い。そこで、図１４に示す第２の割当部５０は、４人（複数）のユーザ３のそれぞれに対して、ニューラルネットワークの設計を含む第１のジョブに１個以上の第１のＧＰＵを割り当て、ハイパーパラメータの調整を含む第２のジョブに１個以上の第２のＧＰＵを割り当てる。結果として、第２の割当部５０は、４人（複数）のユーザ３のそれぞれに対して、第１のジョブにノーマル計算ノード（計算ノード１−３〜１−６）を割り当て、第２のジョブにハイグレード計算ノード（計算ノード１−１〜１−２）を割り当てる。
【００９０】
ノーマル計算ノードは、ニューラルネットワークの設計を含む第１のジョブを実行するので、学習準備サーバとなる。ハイグレード計算ノードは、ハイパーパラメータの調整を含む第２のジョブを実行するので、学習本番サーバとなる。コンテナの場合、ユーザ３は、ノーマル計算ノードに備えられるコンテナに直接アクセスし、ノーマル計算ノードとインタラクティブしながら、ニューラルネットワークの構造を設計し、設計したニューラルネットワークの構造をコンテナに保存する。ハイグレード計算ノードは、このコンテナを起動し、ニューラルネットワークのハイパーパラメータを調整する。
【００９１】
第４変形例に係る管理者用のＰＣ４ｅで実行されるＧＰＵ割当プログラムの動作について説明する。図１５は、この動作を説明するフローチャートである。図１６は、第４変形例において、ＧＰＵ１０に割り当てられた第１のジョブおよび第２のジョブを説明する説明図である。図１６に示すコンピュータシステムＣＳは、図１０に示すコンピュータシステムＣＳと同じである。
【００９２】
図１４〜図１６を参照して、ステップＳ１、ステップＳ２、ステップＳ２１およびステップＳ２２は、図１２に示すステップＳ１、ステップＳ２、ステップＳ２１およびステップＳ２２と同じなので、説明を省略する。
【００９３】
第２の割当部５０は、第１のジョブおよび第２のジョブのそれぞれにＧＰＵ１０を割り当てる（ステップＳ３１）。詳しく説明する。第２の割当部５０は、ユーザ３−１の第１のジョブに対して、ユーザ３−１に割り当てられた第１のＧＰＵおよび第２のＧＰＵの中から、第１のＧＰＵを優先して割り当て、かつ、ユーザ３−１の第２のジョブに対して、ユーザ３−１に割り当てられた第１のＧＰＵおよび第２のＧＰＵの中から、第２のＧＰＵを優先して割り当てる。第２の割当部５０は、第１のジョブに対して割り当てる第１のＧＰＵがなくなり、第２のＧＰＵがある場合、第２のＧＰＵを第１のジョブに割り当てる。第２の割当部５０は、第２のジョブに対して割り当てる第２のＧＰＵがなくなり、第１のＧＰＵがある場合、第１のＧＰＵを第２のジョブに割り当てる。第２の割当部５０は、ユーザ３−２〜３−４に対しても、ユーザ３−１と同様にして、第１のジョブおよび第２のジョブに第１のＧＰＵおよび第２のＧＰＵを割り当てる。
【００９４】
第４変形例の主な効果を説明する。従来、高性能コンピュータ１００に備えられるＧＰＵ１０の使用のスケジュールは、主に、高性能コンピュータ１００の処理時間（計算時間）に従って、設定されていた。第２のジョブは、高性能コンピュータ１００によって自動的に実行されるので、第２のジョブに要する時間は、ある程度予測することができる。これに対して、第１のジョブは、ユーザ３が高性能コンピュータ１００とインタラクティブしながら実行されるので、第１のジョブに要する時間の予測は困難である。このため、ＧＰＵ１０の使用のスケジュールの対象は、第１のジョブでなく、第２のジョブであった。
【００９５】
第４変形例は、複数のユーザ３が複数のＧＰＵ１０を共有している環境下、一部のユーザ３が複数のＧＰＵ１０を占有した状態を回避する目的を達成するために、第１のジョブおよび第２のジョブの両方を、ＧＰＵ１０の使用のスケジュールの対象にしている。さらに、計算ノード１として、ノーマル計算ノードとハイグレード計算ノードの両方があるので、処理速度に高速を要求されない第１のジョブにノーマル計算ノードを割り当て、処理速度に高速が要求される第２のジョブにハイグレード計算ノードを割り当てる。従って、第４変形例によれば、学習準備（第１のジョブ）から学習本番（第２のジョブ）まで、効率的に高性能コンピュータ１００を使用できると共に、各ユーザ３に第１のＧＰＵおよび第２のＧＰＵを平等に使用させることができる。
【符号の説明】
【００９６】
ＣＳ  コンピュータシステム
２，２−１〜２−４  ユーザ用のＰＣ
４ａ，４ｂ，４ｃ，４ｄ，４ｅ  管理者用のＰＣ  
６  ネットワーク
１００  高性能コンピュータ
【図１】
2019121185.tif 000004
【図２】
2019121185.tif 000005
【図３】
2019121185.tif 000006
【図４】
2019121185.tif 000007
【図５】
2019121185.tif 000008
【図６】
2019121185.tif 000009
【図７】
2019121185.tif 000010
【図８】
2019121185.tif 000011
【図９】
2019121185.tif 000012
【図１０】
2019121185.tif 000013
【図１１】
2019121185.tif 000014
【図１２】
2019121185.tif 000015
【図１３】
2019121185.tif 000016
【図１４】
2019121185.tif 000017
【図１５】
2019121185.tif 000018
【図１６】
2019121185.tif 000019