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

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

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

<>
  • 特開-管理プログラムおよび管理方法 図1
  • 特開-管理プログラムおよび管理方法 図2
  • 特開-管理プログラムおよび管理方法 図3
  • 特開-管理プログラムおよび管理方法 図4
  • 特開-管理プログラムおよび管理方法 図5
  • 特開-管理プログラムおよび管理方法 図6
  • 特開-管理プログラムおよび管理方法 図7
  • 特開-管理プログラムおよび管理方法 図8
  • 特開-管理プログラムおよび管理方法 図9
  • 特開-管理プログラムおよび管理方法 図10
  • 特開-管理プログラムおよび管理方法 図11
  • 特開-管理プログラムおよび管理方法 図12
  • 特開-管理プログラムおよび管理方法 図13
  • 特開-管理プログラムおよび管理方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022178423
(43)【公開日】2022-12-02
(54)【発明の名称】管理プログラムおよび管理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20221125BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2021085214
(22)【出願日】2021-05-20
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】加賀美 崇紘
(72)【発明者】
【氏名】今出 広明
(57)【要約】
【課題】タスクを計算ノードに効率的に割り当て、システム稼働率を向上させる。
【解決手段】一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる。
【選択図】図8
【特許請求の範囲】
【請求項1】
複数の計算ノードを管理する管理装置において、
一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる
処理をプロセッサに実行させることを特徴とする管理プログラム。
【請求項2】
前記2つ以上のタスク間のデータ通信量に基づいて、前記DAGを更新する
処理を前記プロセッサに実行させることを特徴とする請求項1に記載の管理プログラム。
【請求項3】
前記DAGから前記データ通信量が閾値以下の有向辺を削除して前記DAGを分割する
処理を前記プロセッサに実行させることを特徴とする請求項2に記載の管理プログラム。
【請求項4】
前記複数の計算ノードのうちの一部の計算ノードが他の計算ノードとの同期を伴う並列計算を伴う第1のジョブを処理中であり、
前記2つ以上のタスクが非同期で動作する第2のジョブを構成する
ことを特徴とする請求項1~3のいずれか1項に記載の管理プログラム。
【請求項5】
複数の計算ノードを管理する管理装置において、
一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる
処理をプロセッサが実行することを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、管理プログラムおよび管理方法に関する。
【背景技術】
【0002】
クラスタコンピューティングシステムにおいて、HPC(High Performance Computing)ジョブとAI(Artificial Intelligence)ジョブとは別々のクラスタで管理されている。
【0003】
HPCジョブは、科学技術計算などの並列計算を主とするジョブであり、複数ノードで同期して処理される。一方、AIジョブは、統計処理などの分散処理を主とするジョブであり、複数ノード間において非同期で処理される。
近年、クラスタコンピューティングシステムにおいて、これらのHPCジョブとAIジョブとを同一クラスタ環境上で扱うニーズが高まっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2020-522824号公報
【特許文献2】特開2019-87039号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般に、HPCジョブはタスク間(ノード間)の通信量が多いため、HPCジョブの処理に用いられる個々の計算ノード間の距離ができるだけ近くなるように割り当てる必要がある。そのため、HPCジョブについては、割り当てられる計算ノードが一つの集合となるように割り当てることが行なわれている。
【0006】
一方、AIジョブは、一般にタスク間(ノード間)の通信量は多くないため、ジョブが利用する個々の計算ノード間の距離を気にする必要がない。そのため、AIジョブについては、HPCジョブの隙間を埋めるように、HPCジョブが割り当てられていない計算ノードに割り当てることが考えられる。
図14は従来のクラスタコンピューティングシステムにおいて計算ノードにHPCジョブとAIジョブとを割り当てた例を示す図である。
【0007】
図14に示す例においては、Tofu(Torus fusion)インターコネクトで4行×4列の計算ノードを接続するクラスタコンピューティングシステムを示す。
【0008】
Tofu#2, #3において連続する8つの計算ノードにHPCジョブAが割り当てられている。また、Tofu#1における2つの計算ノードにHPCジョブBが、また、Tofu#4における2つの計算ノードにHPCジョブCが、それぞれ割り当てられている。
【0009】
さらに、Tofu#2, #3に割り当てられているHPCジョブAを挟んで対向する位置において、Tofu#1における2つの計算ノードとTofu#4における2つの計算ノードとにAIジョブAがそれぞれ割り当てられている。
【0010】
しかしながら、この図14に示す例において、AIジョブAの実行時に、Tofu#1上にある計算ノードとTofu#4上にある計算ノードとの間で通信が行なわれると、これらの間に位置するTofu#2, #3の計算ノードにおいてHPCジョブAの通信により干渉が生じるおそれがある。
【0011】
すなわち、HPCジョブとAIジョブの通信経路が干渉することによりHPCジョブの通信性能低下や性能ぶれが生じ、システム稼働率が低下するおそれがある。
1つの側面では、本発明は、タスクを計算ノードに効率的に割り当て、システム稼働率を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【0012】
このため、この管理プログラムは、複数の計算ノードを管理する管理装置において、一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる処理をプロセッサに実行させる。
【発明の効果】
【0013】
一実施形態によれば、タスクを計算ノードに効率的に割り当て、システム稼働率を向上させることができる。
【図面の簡単な説明】
【0014】
図1】実施形態の一例としてのコンピュータシステムのハードウェア構成を模式的に示す図である。
図2】実施形態の一例としてのコンピュータシステムの管理ノードの機能構成を例示する図である。
図3】DAGを例示する図である。
図4】実施形態の一例としてのコンピュータシステムのタスクグループ生成部によるタスクグループの生成方法を説明するための図である。
図5】実施形態の一例としてのコンピュータシステムにおけるグラフとタスクグループとの関係を示す図である。
図6】実施形態の一例としてのコンピュータシステムにおける通信量計測情報を例示する図である。
図7】実施形態の一例としてのコンピュータシステムにおけるスケジューラによるAIジョブの初回実行時における計算ノードへの割り当て方法を説明するための図である。
図8】実施形態の一例としてのコンピュータシステムにおけるスケジューラによるAIジョブの初回実行時における計算ノードへの割り当て方法を説明するための図である。
図9】実施形態の一例としてのコンピュータシステムにおけるDAG更新部によるDAGの更新手法を説明するための図である。
図10】実施形態の一例としてのコンピュータシステムにおけるDAG更新部によるAIジョブの2回目以降実行時の処理を説明するための図である。
図11】実施形態の一例としてのコンピュータシステムにおけるDAG更新部によるAIジョブの2回目以降実行時の処理を説明するための図である。
図12】実施形態の一例としてのコンピュータシステムにおけるAIジョブの初回実行時の処理を説明するためのフローチャートである。
図13】実施形態の一例としてのコンピュータシステムにおけるAIジョブの2回目以降の実行時の処理を説明するためのフローチャートである。
図14】従来のクラスタコンピューティングシステムにおいて計算ノードにHPCジョブとAIジョブとを割り当てた例を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照して本管理プログラムおよび管理方法にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0016】
(A)構成
図1は実施形態の一例としてのコンピュータシステム1のハードウェア構成を模式的に示す図、図2はその管理ノード10の機能構成を例示する図である。
コンピュータシステム1は、クラスタコンピューティングシステムであって、図1に示すように、計算ノード群4および管理ノード10を備える。
【0017】
計算ノード群4は、複数の計算ノード2どうしを直接リンク3で接続する直接網で接続されている。直接網は、例えば、直線,リング,集中結合網,ツリー,完全結合網,2次元メッシュ,3次元メッシュ,トーラスのいずれかであってもよい。また、直接網は、Tofuインターコネクト,超立方体(ハイパーキューブ),超立方体環(Cube Connected Cycles),スター,完全結合のいずれかであってもよい。また、直接網は、これらに限定されるものではなく、適宜変更して実施することができる。
【0018】
図1に示す例においては、計算ノード群4は、複数の計算ノード2をx軸およびy軸で表される2次元平面上に配置した2次元メッシュである例を示す。従って、図1に例示する計算ノード群4においては、各計算ノード2を(x, y)座標で表すことができる。
【0019】
計算ノード2は、演算機能を備えるコンピュータであり、互いに同様のハードウェア構成を有する。計算ノード2は、例えば、図示しない、CPU(Central Processing Unit),メモリ,記憶装置およびネットワークインタフェースを有する。
【0020】
記憶装置は、ハードディスクドライブ(Hard Disk Drive:HDD)、SSD(Solid State Drive)、ストレージクラスメモリ(Storage Class Memory:SCM)等の記憶装置であって、種々のデータを格納するものである。
【0021】
ネットワークインタフェースは、リンク3に接続され、計算ノード2は、このネットワークインタフェースおよびリンク3を介して他の計算ノード2や管理ノード10と通信加納に接続される。
【0022】
CPUは、種々の制御や演算を行なう処理装置であり、メモリに格納されたOS(Operating System)やプログラムを実行することにより、種々の機能を実現する。例えば、計算ノード2は、管理ノード10によって割り当てられるHPCジョブのタスク(HPCタスク)やAIジョブのタスク(AIタスク)を実行する。また、計算ノード2は、必要に応じて、HPCジョブやAIジョブのタスクの実行結果等を、リンク3を介して他の計算ノード2との間で送受信する。
【0023】
各計算ノード2が実行するタスク(HPCタスク,AIタスク)は、管理ノード10によって割り当てられ、計算ノード2はこのように割り当てられたタスクを、順次、処理する。
【0024】
本コンピュータシステム1においては、HPCジョブとAIジョブとを処理する。HPCジョブは、複数の計算ノード2間の同期を伴う並列計算を伴う第1のジョブに相当する。AIジョブは、2つ以上のタスクが非同期で動作する第2のジョブに相当する。
【0025】
管理ノード10は、計算ノード群4の複数の計算ノード2を管理する管理装置である。管理ノード10は、コンピュータ(情報処理装置)であって、例えば、図1に示すように、プロセッサ11,メモリ12,記憶装置13,グラフィック処理装置14,入力インタフェース15,光学ドライブ装置16,機器接続インタフェース17およびネットワークインタフェース18を構成要素として有する。これらの構成要素11~18は、バス19を介して相互に通信可能に構成される。
【0026】
プロセッサ(制御部)11は、管理ノード10全体を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCPU,MPU(Micro Processing Unit),DSP(Digital Signal Processor),ASIC(Application Specific Integrated Circuit),PLD(Programmable Logic Device),FPGA(Field Programmable Gate Array)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0027】
そして、プロセッサ11が制御プログラム(管理プログラム:図示省略)を実行することにより、図2に例示する、DAG生成部101,DAG更新部102,タスクグループ生成部103,タスク間通信量測定部106およびスケジューラ104としての機能が実現される。
【0028】
なお、管理ノード10は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム(管理プログラム,OSプログラム)を実行することにより、DAG生成部101,DAG更新部102,タスクグループ生成部103,タスク間通信量測定部106およびスケジューラ104としての機能を実現する。
【0029】
管理ノード10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理ノード10に実行させるプログラムを記憶装置13に格納しておくことができる。プロセッサ11は、記憶装置13内のプログラムの少なくとも一部をメモリ12にロードし、ロードしたプログラムを実行する。
【0030】
また、管理ノード10(プロセッサ11)に実行させるプログラムを、図示しない、光ディスク,メモリ装置,メモリカード等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ11からの制御により、記憶装置13にインストールされた後、実行可能になる。また、プロセッサ11が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0031】
メモリ12は、ROM(Read Only Memory)およびRAM(Random Access Memory)を含む記憶メモリである。メモリ12のRAMは管理ノード10の主記憶装置として使用される。RAMには、プロセッサ11に実行させるプログラムの少なくとも一部が一時的に格納される。また、メモリ12には、プロセッサ11による処理に必要な各種データが格納される。
【0032】
記憶装置13は、HDD、SSD、ストレージクラスメモリSCM等の記憶装置であって、種々のデータを格納するものである。記憶装置13は、管理ノード10の補助記憶装置として使用される。
【0033】
記憶装置13には、OSプログラム,情報処理プログラムおよび各種データが格納される。なお、補助記憶装置としては、SCMやフラッシュメモリ等の半導体記憶装置を使用することもできる。また、複数の記憶装置13を用いてRAID(Redundant Arrays of Inexpensive Disks)を構成してもよい。
【0034】
グラフィック処理装置14には、図示しないモニタが接続されている。グラフィック処理装置14は、プロセッサ11からの命令に従って、画像をモニタの画面に表示させる。モニタとしては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置等が挙げられる。
【0035】
入力インタフェース15には、図示しないキーボードおよびマウスが接続されている。入力インタフェース15は、キーボードやマウスから送られてくる信号をプロセッサ11に送信する。なお、マウスは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル,タブレット,タッチパッド,トラックボール等が挙げられる。
【0036】
光学ドライブ装置16は、レーザ光等を利用して、図示しない光ディスクに記録されたデータの読み取りを行なう。光ディスクは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスクには、DVD(Digital Versatile Disc),DVD-RAM,CD-ROM(Compact Disc Read Only Memory),CD-R(Recordable)/RW(ReWritable)等が挙げられる。
【0037】
機器接続インタフェース17は、管理ノード10に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース17には、図示しない、メモリ装置やメモリリーダライタを接続してもよい。メモリ装置は、機器接続インタフェース17との通信機能を搭載した非一時的な記録媒体、例えばUSB(Universal Serial Bus)メモリである。メモリリーダライタは、メモリカードへのデータの書き込み、またはメモリカードからのデータの読み出しを行なう。メモリカードは、カード型の非一時的な記録媒体である。
【0038】
管理ノード10は、図2に示すように、DAG(Directed Acyclic Graph:有向非巡回グラフ)生成部101,DAG更新部102,タスクグループ生成部103,タスク間通信量測定部106、タスク間通信情報DB(Data Base)105およびスケジューラ104としての機能を備える。
【0039】
以下に示す例においては、本コンピュータシステム1においてAIジョブとして機械学習モデルに対する訓練データを用いた訓練(機械学習)を行なう例を示し、訓練データを変えながら複数回の訓練(AIジョブ)を繰り返し実行する。
すなわち、本コンピュータシステム1においては、同一ジョブ(プログラム)に対し、訓練データを変えながら複数回ジョブを実行する。
DAG生成部101は、AIジョブに基づきDAGを生成する。
【0040】
AIジョブは一般に複数のタスク(Task)を備える。また、本コンピュータシステム1においては、1つの計算ノード2に1つのタスクが配置されるものとする。
【0041】
AIジョブにおいては、タスク間のデータの流れをDAGで記述することができる。DAGにおいては、データ通信が発生するタスクどうしを有向辺(枝)で繋いで表す。DAGをグラフといってもよい。
図3はDAGを例示する図である。
【0042】
この図3に示す例おいては、7つのタスク(Task#1~#7)に基づいて生成された2つのDAGを示す。以下、各タスク(Task)に対して、符号“#”とユニークな数字とを組み合わせたタスク番号を付して表すことで個々のタスクを識別する場合がある。
【0043】
図3に示す例においては、Task#1はTask#4にデータを送信する。また、Task#2, #3はそれぞれTask#5にデータを送信し、Task#5, #6はそれぞれTask#7にデータを送信する。
【0044】
DAG生成部101は、AIジョブスケジューラとしての既知の機能を用いてDAGを生成する。例えば、分散処理フレームワークとして既知のApache Spark(登録商標)はDAG生成機能を有している。DAG生成部101は、このApache Sparkの機能を用いてAIジョブのプログラムを解析してDAGを生成してもよい。
DAG生成部101は、例えば、投入されたジョブをスケジューリングする前に、当該ジョブのプログラムを解析することでDAGを生成する。
【0045】
また、DAGの生成に際して、1つのプログラムから複数のグラフが生成されることもある。図3に示す例においては、Task#1, #4を備えるグラフ(グラフ#1)と、Task#2, #3, #5~#7を備えるグラフ(グラフ#2)との2つのグラフ(DAG)が生成されている。
【0046】
AI分野の機械学習において、同じAIジョブ(プログラム)に対して与える機械学習データ(訓練データ)を変えながら機械学習を反復実行するものとする。また、同一のプログラムからは同一のDAGが生成され、学習データが異なってもタスク間のデータ通信量は大きくは変わらないものとする。
【0047】
タスクグループ生成部103は、DAG生成部101が生成したDAGに基づき、タスクグループを生成する。以下、タスク間でデータの送受信が行なわれることで関連性を有する複数のタスクを同一のタスクグループとして取り扱う。タスクグループ生成部103は、1つのグラフ(DAG)内において連結される複数のタスクを同一のグループとするようにタスクグループを生成する。
タスクグループ生成部103は、同一のDAGに属する複数のタスクを一つのタスクグループとして設定する。
【0048】
タスクグループ生成部103は、DAG生成部101が生成したDAGを読み込み、同一のDAG(同一グラフ)に所属するタスクを判別することでタスクグループを生成する。
図4は実施形態の一例としてのコンピュータシステム1のタスクグループ生成部103によるタスクグループの生成方法を説明するための図である。
図4において、符号AはDAG生成部101がプログラムから生成したDAGを示し、符号Bは符号Aに示したDAGから生成されるタスクグループを示す。
【0049】
図4に示す例においては、符号Aに示すように、Task#1, #4を備えるグラフと、Task#2, #3, #5~#7を備えるグラフとの2つのグラフ(DAG)が示されている。
【0050】
以下、複数のDAG(グラフ)に対して符号“#”と数字とを組み合わせグラフ番号を付して表すことで個々のグラフを識別する場合がある。また、複数のタスクグループに対して符号“#”と数字とを組み合わせタスクグループ番号を付して表すことで個々のタスクグループを識別する場合がある。
図4に示す例においては、Task#1, #4を備えるグラフをグラフ#1と示し、Task#2, #3, #5~#7を備えるグラフをグラフ#2と示す。
【0051】
タスクグループ生成部103は、符号Bに示すように、グラフ#1に基づいてタスクグループ#1を生成する。タスクグループ#1にはTask#1, #4が含まれる。また、タスクグループ生成部103は、グラフ#2に基づいてタスクグループ#2を生成する。タスクグループ#2には、Task#2, #3, #5~#7が含まれる。
図5は実施形態の一例としてのコンピュータシステム1におけるグラフとタスクグループとの関係を示す図である。
この図5に示す例においては、グラフ#1に基づいて生成されたタスクグループ#1と、グラフ#2に基づいて生成されたタスクグループ#2とを示す。
【0052】
この図5においては、グラフ#1,#2を構成する情報として、データ送信元のタスクを特定する情報(SRC)と、データの送信先を特定する情報(DST)との組み合わせを示す。これらのSRCとDSTとの組み合わせがDAGにおける有向辺を表す。
【0053】
また、図5に示す例において、タスクグループ#1は、グラフ#1に所属するタスク(所属タスク)のタスク番号“1, 4”と、所属タスクの総数“2”とを示す。また、タスクグループ#2は、グラフ#2に所属するタスク(所属タスク)のタスク番号“2, 3, 5, 6, 7”と、所属タスクの総数“5”とを示す。
【0054】
データ送信元のタスクを特定する情報(SRC)を送信元タスク番号といってもよい。また、データの送信先を特定する情報(DST)を送信先タスク番号といってもよい。
【0055】
また、タスクグループ生成部103は、後述するDAG更新部102によりDAGが更新されると、この更新後のDAGに基づいてダスクグループを作成(更新)する。
【0056】
タスク間通信量測定部106は、後述するスケジューラ104によりタスクを割り当てられた各計算ノード(割当ノード)10におけるジョブの実行中に、タスク間のデータ通信量を測定する。タスク間通信量測定部106は、測定したタスク間のデータ通信量を通信量計測情報としてタスク間通信情報DB105に記憶させる。なお、タスク間のデータ通信量は既知の手法で取得することができ、その説明は省略する。
図6は実施形態の一例としてのコンピュータシステム1における通信量計測情報を例示する図である。
【0057】
図6に例示する通信量計測情報は、データ送信元(SRC)のタスクを特定する情報(送信元タスク番号)と、データの送信先(DST)のタスクを特定する情報(送信先タスク番号)と、これらのタスク間で送信されたデータ通信量(SIZE)とを対応付けている。
スケジューラ104は、計算ノード2に対してタスクの割り当てを行なう。
【0058】
AIジョブの初回実行時(最初の訓練データ利用時)において、スケジューラ104は、AIジョブのプログラムから生成されたDAGの構造に基づき、タスク間の通信量を予測する。
【0059】
スケジューラ104は、データ通信がDAGにおいて枝(有向辺)で結ばれたタスク間にのみ発生することに基づいて、AIジョブの初回実行時におけるタスク間の通信量を予測する。具体的には、スケジューラ104は、各タスク間の通信量が等しいものと予測(仮定)する。そして、スケジューラ104は、同一のタスクグループに所属するタスクを、計算ノード群4において隣接する(連続する)計算ノード2に割り当てる。スケジューラ104は、タスクグループのタスクを、当該タスクグループにおける他のタスクを割り当てた計算ノード2に隣接していない(不連続の)計算ノード2には割り当てない。
【0060】
また、スケジューラ104は、AIジョブの2回目以降実行時(新たな訓練データ利用時)においても、同一のタスクグループに所属する複数のタスクを、計算ノード群4において隣接(連続)する複数の計算ノード2に割り当てる。
【0061】
同一のタスクグループに所属するタスクを、計算ノード群4において隣接する計算ノード2に割り当てられない場合(例えば、ジョブを割り当て可能な空き計算ノード2が不足している等)には、スケジューラ104は、AIジョブの割り当てを行なわず、その実行を打ち切る。
【0062】
図7および図8は実施形態の一例としてのコンピュータシステム1におけるスケジューラ104によるAIジョブの初回実行時(最初の訓練データ利用時)における計算ノード2への割り当て方法を説明するための図である。
【0063】
図7において、符号Aは計算ノード群4における各計算ノード2のジョブの実行状況を示し、符号Bは符号Aに示した各計算ノード2のジョブの実行状況を2次元配列で示す。
【0064】
図7および図8に示す例においては、計算ノード群4が、x軸およびy軸で表される2次元平面上に配置した2次元メッシュとして構成されている。すなわち、計算ノード群4においては、x軸方向に6つの計算ノード2を並べ、且つ、y軸方向に5つの計算ノード2を並べることで、6×5のマトリックス状に計算ノード2が配置されている。
【0065】
図7の符号Aにおいては、計算ノード群4を構成する30個の計算ノード2のうち、6×2の12個の計算ノード2(符号P1参照)と、3×1の3個の計算ノード2(符号P2参照)と、1×2の2個の計算ノード2(符号P3参照)とにHPCジョブが割り当てられている。
【0066】
図7の符号Bに例示する2次元配列においては、符号Aに示した計算ノード群4におけるx座標値とy座標値との組み合わせで各計算ノード2を表す。また、当該配列中において、HPCジョブを実行中の計算ノード2に1を設定し、HPCジョブおよびAIジョブのいずれも実行していない計算ノード(空き計算ノード)2に0を設定している。このように、計算ノード群4における各計算ノード2のジョブの実行状況を示す2次元配列をジョブ実行状況情報といってもよい。スケジューラ104は、ジョブ実行状況情報を作成する。ジョブ実行状況情報を構成する情報は、例えば、メモリ12や記憶装置13等の所定の記憶領域に記憶される。
【0067】
スケジューラ104は、このようなジョブ実行状況情報を参照することで、計算ノード群4における各計算ノード2の空き状況を管理し、ジョブを割り当て可能な計算ノード2を把握する。
【0068】
例えば、スケジューラ104は、ジョブ実行状況情報に対して、(x,y)=(0,0)を始点として、0が隣接する要素(空き計算ノード2)を検索し、隣接(連続)する空き計算ノード数をカウントする。すなわち、スケジューラ104は、ジョブ実行状況情報を参照して、隣接する空き計算ノード2によって構成される空き計算ノード2の集合(空き計算ノード2の塊)を検索する。そして、スケジューラ104は、検索した空き計算ノード2の集合(空き計算ノード2の塊)に含まれる空き計算ノード2の数(隣接空き計算ノード数)を計数する。
【0069】
符号Bに示す例においては、3×2の6個の計算ノード2(符号P4参照)が空き計算ノード2の集合に相当し、その隣接空き計算ノード数は6である。また、2×2の4個の計算ノード2(符号P5参照)が空き計算ノード2の集合に相当し、その隣接空き計算ノード数は4である。さらに、2×1の2個の計算ノード2(符号P6参照)が空き計算ノード2の集合に相当し、その隣接空き計算ノード数は2である。またさらに、1×1の1個の計算ノード2(符号P7参照)が空き計算ノード2の集合に相当し、その隣接空き計算ノード数は1である。
【0070】
そして、スケジューラ104は、“隣接する空き計算ノード数”≧“タスクグループのタスク数”であれば、その隣接する空き計算ノード数に対応する空き計算ノード2の集合に、当該タスクグループのタスクを割り当てる。
【0071】
また、この際、スケジューラ104は、隣接空き計算ノード数がタスクグループのタスク数になるべく近い空き計算ノード2の集合をタスクグループの割当先として優先して選択することが望ましい。
【0072】
図8において、符号Cは図7の符号Bに示した2次元配列に対してタスクを割り当てる例を示し、符号Dは符号Cにおいて割り当てられたタスクを計算ノード群4に反映させた後における各計算ノード2のジョブの実行状況を示す。
図8の符号Cにおいては、タスク数が2のタスクグループ#1と、タスク数が5のタスクグループ#2とを割り当てる例を示す。
【0073】
スケジューラ104は、隣接空き計算ノード数が2の空き計算ノード2の集合を、タスク数が2のタスクグループ#1の割り当て先として決定する(符号P8参照)。また、スケジューラ104は、隣接空き計算ノード数が6の空き計算ノード6の集合を、タスク数が5のタスクグループ#2の割り当て先として決定する(符号P9参照)。
【0074】
これにより、図8の符号Dに示すように、計算ノード群4において、AIジョブのタスクグループ#1の各ジョブは、隣接する計算ノード2にそれぞれ割り当てられる。また、同様に、AIジョブのタスクグループ#2の各ジョブも、それぞれ隣接する計算ノード2にそれぞれ割り当てられる。
【0075】
DAG更新部102は、AIジョブの2回目以降実行時(新たな訓練データ利用時)において、前回ジョブ実行時にタスク間通信量測定部106が計測したタスク間通信量を用いてDAGを更新する。
図9は実施形態の一例としてのコンピュータシステム1におけるDAG更新部102によるDAGの更新手法を説明するための図である。
図9において、符号Aは更新前のDAGを例示し、符号BはDAG更新部102による更新後のDAGを例示する。
符号Aに示すように、更新前においては2つのDAG(グラフ)#1,#2を備え、更新後においては3つのグラフ#1~#3を備える。
【0076】
図9に例示するDAGにおいては、タスク間を接続する矢印(有向辺)の太さがタスク間のデータ通信量を表しており、太い矢印(例えば、符号Aのグラフ#1のTask#1からTask#4への有向辺)は、データ通信量が所定閾値より大きいことを示す(符号P0参照)。一方、細い矢印(例えば、符号Aのグラフ#2のTask#5からTask#7への有向辺)は、データ通信量が所定の閾値以下であることを示す(符号P1参照)。
【0077】
DAGの更新において、DAG更新部102は、DAG生成部101によって作成されたDAGを読み込み、この読み込んだDAGから、データ通信量が閾値以下のタスク間の枝(有向辺)を削除する。
図9に示す例においては、DAG更新部102は、データ通信量が小さいグラフ#2のTask#5からTask#7への有向辺(符号P1参照)を削除する。
【0078】
これにより、符号Bに示すように、更新後のDAGにおいては、Task#6からTask#7への有向辺がグラフ#2から切り離され、新たにグラフ#3が生成される。すなわち、DAG更新部102は、DAGの更新を行なうことでDAGの分割を行なう。
【0079】
また、DAG更新部102は、有向辺を削除することでDAGを複数のDAGに分割することができるかを確認する。確認の結果、有向辺を削除することでDAGを分割することができると判断した場合に、DAG更新部102はDAGを分割する。
【0080】
例えば、DAGの有向辺を削除することで、2つ以上のタスクが当該DAGから独立する場合に、DAG更新部102はDAGを分割することができると判断してよい。また、当該DAGから1つのタスクだけが切り離される場合には、DAGを分割することができないと判断してよく、この場合にはDAGの分割は行なわない。
【0081】
図10および図11は実施形態の一例としてのコンピュータシステム1におけるDAG更新部102によるAIジョブの2回目以降実行時(新たな訓練データ利用時)の処理を説明するための図である。
【0082】
図10において、符号Aは、対象AIジョブが前回実行された際にタスク間通信量測定部106により計測されたタスク間の通信状況を例示する。また、符号Bは、符号Aに示す通信状況に基づいて作成された通信量計測情報を例示する。
【0083】
図11において、符号Cは通信量計測情報を例示する。また、符号Dは更新前のDAG(グラフ)を例示し、図10の符号Aに例示した通信状況に対応する。符号Eは更新後のDAG(グラフ)を例示する。
【0084】
DAG更新部102は、通信量計測情報に基づいてDAGの更新を行なう。図11の符号Cにおいては、グラフ#2のTask#5からTask#7へのデータ通信量(SIZE)が閾値5以下である(図10の符号P1および図11の符号P2参照)。DAG更新部102は、図11の符号Dに示すように、通信量が閾値以下のタスク間の有向辺(グラフ#2のTask#5からTask#7への有向辺)を削除する(図11の符号P3参照)。
【0085】
グラフ#2におけるTask#5からTask#7への有向辺が削除されることで、更新後のグラフ#2においては、Task#6からTask#7への有向辺がグラフ#2から切り離され、グラフ#3が分割(生成)される。このように、DAG更新部102は、DAGの更新を行なうことでグラフ#2を分割してグラフ#3を生成する。
【0086】
(B)動作
上述の如く構成された実施形態の一例としてのコンピュータシステム1におけるAIジョブの初回実行時の処理を、図12に示すフローチャート(ステップS10~S50)に従って説明する。
ステップS10において、DAG生成部101は、割り当て対象となるAIジョブのプログラムを解析し、1つ以上のDAG(グラフ)を生成する。
ステップS20において、タスクグループ生成部103は、生成されたDAG毎にタスクグループを生成する。
ステップS30において、スケジューラ104は、同一のタスクグループに所属するタスクを、計算ノード群4において隣接する計算ノード2に割り当てる。
【0087】
ステップS40において、スケジューラ104によりタスクを割り当てられた各計算ノード(割当ノード)10がそれぞれタスク(AIジョブ)を実行する。タスク間通信量測定部106は、各計算ノード(割当ノード)10におけるAIジョブの実行中に、タスク間のデータ通信量を測定する。
【0088】
ステップS50において、タスク間通信量測定部106は、ジョブの終了後に、測定したタスク間のデータ通信量を通信量計測情報としてタスク間通信情報DB105に記憶させる。その後、処理を終了する。
【0089】
次に、実施形態の一例としてのコンピュータシステム1におけるAIジョブの2回目以降の実行時の処理を、図13に示すフローチャート(ステップS10,S11~S13,S20~S50)に従って説明する。
ステップS10において、DAG生成部101は、割り当て対象となるAIジョブのプログラムを解析し、1つ以上のDAG(グラフ)を生成する。
【0090】
ステップS11~S13において、DAG更新部102はDAGの更新を行なう。すなわち、ステップS11において、DAG更新部102は、DAG毎に、データ通信量が予め設定した閾値以下のタスク間の枝(有向辺)を削除する。
【0091】
ステップS12において、DAG更新部102は、各DAGについて、有向辺の削除により複数のDAGに分割可能であるかを判断する。確認の結果、有向辺の削除により複数のDAGに分割可能である場合には(ステップS12のYESルート参照)、ステップS13に移行する。
ステップS13においてDAG更新部102はDAGの分割を行なう。その後、ステップS20に移行する。
【0092】
また、ステップS12における確認の結果、有向辺の削除により複数のDAGに分割不可能である場合には(ステップS12のNOルート参照)、DAGの分割を行なわずに、ステップS20に移行する。
ステップS20において、タスクグループ生成部103は、生成されたDAG毎にタスクグループを生成する。
ステップS30において、スケジューラ104は、同一のタスクグループに所属するタスクを、計算ノード群4において隣接する計算ノード2に割り当てる。
【0093】
ステップS40において、スケジューラ104によりタスクを割り当てられた各計算ノード(割当ノード)10がそれぞれタスク(AIジョブ)を実行する。タスク間通信量測定部106は、各計算ノード(割当ノード)10におけるAIジョブの実行中に、タスク間のデータ通信量を測定する。
【0094】
ステップS50において、タスク間通信量測定部106は、ジョブの終了後に、測定したタスク間のデータ通信量を通信量計測情報としてタスク間通信情報DB105に記憶させる。その後、処理を終了する。
【0095】
(C)効果
このように、実施形態の一例としてのコンピュータシステム1によれば、タスクグループ生成部103が、同一のDAGに属する複数のタスクを一つのタスクグループとして設定する。
【0096】
そして、スケジューラ104が、同一のタスクグループに所属するタスクを、計算ノード群4において隣接する(連続する)計算ノード2に割り当てる。これにより、AIジョブの実行において、連続する計算ノード2内においてタスク間のデータ通信が行なわれ、HPCジョブに影響を与えることがない。すなわち、HPCジョブとAIジョブの通信経路が干渉することを抑止することができ、HPCジョブの通信性能低下や性能ぶれが生じることがない。
【0097】
また、タスク間通信量測定部106が、各計算ノード2におけるジョブの実行中に、タスク間のデータ通信量を測定し、DAG更新部102が、AIジョブの2回目以降実行時(新たな訓練データ利用時)において、前回ジョブ実行時に計測されたタスク間通信量を用いてDAGを更新する。このDAGの更新において、DAG更新部102は、データ通信量が閾値以下のタスク間の枝(有向辺)を削除する。
【0098】
これにより、同一のDAGを構成するタスクグループにおいて、データ通信量が閾値以下のタスクを切り離すことで、タスクグループを構成するタスクの数を削減することができる。従って、スケジューラ104による、同一のタスクグループに所属するタスクを、計算ノード群4において隣接する(連続する)計算ノード2に割り当てる処理を容易に行なうことができるようになる。また、計算ノード群4におけるタスクの実行状況に応じて、計算ノード2へのタスクの割り当てを柔軟に行なうことができる。
【0099】
(D)その他
本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【0100】
例えば、上述した実施形態においては、計算ノード群4が2次元メッシュである例を示したが、これに限定されるものではない。計算ノード群4は、例えば、直線,リング,集中結合網,ツリー,完全結合網,2次元メッシュ,3次元メッシュ,トーラスのいずれかであってもよい。
【0101】
また、上述した実施形態においては、計算ノード群4においてHPCジョブとAIジョブとを実行する例を示したが、これに限定されるものではなく、これら以外のジョブを実行させてもよく、種々変形して実施することができる。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【0102】
(E)付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の計算ノードを管理する管理装置において、
一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる
処理をプロセッサに実行させることを特徴とする管理プログラム。
【0103】
(付記2)
前記2つ以上のタスク間のデータ通信量に基づいて、前記DAGを更新する
処理を前記プロセッサに実行させることを特徴とする付記1に記載の管理プログラム。
【0104】
(付記3)
前記DAGから前記データ通信量が閾値以下の有向辺を削除して前記DAGを分割する
処理を前記プロセッサに実行させることを特徴とする付記2に記載の管理プログラム。
【0105】
(付記4)
前記複数の計算ノードのうちの一部の計算ノードが他の計算ノードとの同期を伴う並列計算を伴う第1のジョブを処理中であり、
前記2つ以上のタスクが非同期で動作する第2のジョブを構成する
ことを特徴とする付記1~3のいずれか1項に記載の管理プログラム。
【0106】
(付記5)
複数の計算ノードを管理する管理装置において、
一つのDAG(Directed Acyclic Graph:有向非巡回グラフ)を構成する2つ以上のタスクを、連続する2つ以上の計算ノードに割り当てる
処理をプロセッサが実行することを特徴とする管理方法。
【0107】
(付記6) 前記2つ以上のタスク間のデータ通信量に基づいて、前記DAGを更新する
処理を前記プロセッサが実行することを特徴とする付記5に記載の管理方法。
【0108】
(付記7)
前記DAGから前記データ通信量が閾値以下の有向辺を削除して前記DAGを分割する
処理を前記プロセッサが実行することを特徴とする付記6に記載の管理方法。
【0109】
(付記8)
前記複数の計算ノードのうちの一部の計算ノードが他の計算ノードとの同期を伴う並列計算を伴う第1のジョブを処理中であり、
前記2つ以上のタスクが非同期で動作する第2のジョブを構成する
ことを特徴とする付記5~7のいずれか1項に記載の管理方法。
【符号の説明】
【0110】
1 コンピュータシステム
2 計算ノード
3 リンク
4 計算ノード群
10 管理ノード
11 プロセッサ(処理部)
12 メモリ
13 記憶装置
14 グラフィック処理装置
15 入力インタフェース
16 光学ドライブ装置
17 機器接続インタフェース
17a メモリ装置
18 ネットワークインタフェース
19 バス
101 DAG生成部
102 DAG更新部
103 タスクグループ生成部
104 スケジューラ
105 タスク間通信情報DB
106 タスク間通信量測定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14