JP6683046B2 - 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム - Google Patents

並列処理装置、ジョブ管理方法、およびジョブ管理プログラム Download PDF

Info

Publication number
JP6683046B2
JP6683046B2 JP2016138972A JP2016138972A JP6683046B2 JP 6683046 B2 JP6683046 B2 JP 6683046B2 JP 2016138972 A JP2016138972 A JP 2016138972A JP 2016138972 A JP2016138972 A JP 2016138972A JP 6683046 B2 JP6683046 B2 JP 6683046B2
Authority
JP
Japan
Prior art keywords
job
jobs
execution
node
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016138972A
Other languages
English (en)
Other versions
JP2018010492A (ja
Inventor
努 上野
努 上野
剛 橋本
剛 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016138972A priority Critical patent/JP6683046B2/ja
Priority to US15/611,819 priority patent/US10423458B2/en
Publication of JP2018010492A publication Critical patent/JP2018010492A/ja
Application granted granted Critical
Publication of JP6683046B2 publication Critical patent/JP6683046B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1038Load balancing arrangements to avoid a single path through a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)

Description

本発明は、並列処理装置、ジョブ管理方法、およびジョブ管理プログラムに関する。
従来、プロセッサとメモリとを有する複数のノードの各々のノードを、複数の座標軸の各座標軸方向で隣接するノード同士で接続する技術がある。そして、複数のノードの各々のノードに実行させるジョブについて、ジョブの実行開始時刻および実行終了時刻と、ジョブを実行するノードとを決定する技術がある。
関連する先行技術として、例えば、複数の配信データの配信を予約する際、追加される配信データの配信方式の種類に応じて、その配信データまたは既に予約済みの配信データの使用帯域や配信開始時刻等を自動的に変更し、配信スケジュールを調整するものがある。また、スケジュールの実行状況が予定と異なる場合、スケジュールの実行状況および希望条件のデータに基づいて、未実行な確定されたスケジュールであって繰り上げ変更することが可能なスケジュールを検索し、該スケジュールに関する情報を報知する技術がある。また、ジョブのリソース量と割り当て時間とを含むスケジューリング情報から、新たにスケジューリング対象となるジョブのリソース量のスケジューリングは可能だが予想実行時間に満たない空き時間を検索し、該ジョブを該空き時間にスケジューリングする技術がある。
特開2003−162470号公報 特開2005−190063号公報 特開2012−73690号公報
しかしながら、従来技術によれば、あるジョブの実行終了時刻より前に該ジョブの実行が終了する場合、ノードの数が増える程、実行待ちのジョブから実行開始時刻を繰り上げるジョブを決定することにかかる時間が増大することになる。
1つの側面では、本発明は、ジョブの実行終了時刻より前に該ジョブの実行が終了する際に、実行開始時刻を繰り上げるジョブを決定することにかかる時間を短縮することができる並列処理装置、ジョブ管理方法、およびジョブ管理プログラムを提供することを目的とする。
本発明の一側面によれば、複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と各々のジョブが使用するノードとを決定する際に、各々のジョブを実行する順序を示す情報と、各々のジョブが使用する各座標軸におけるノードの数および位置とを記憶したリストを作成し、複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成したリストを参照して、いずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際の各座標軸における未使用のノードの数を特定し、いずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際に、特定した各座標軸における未使用のノードの数とリストとに基づいて、複数のジョブから実行開始時刻を繰り上げるジョブを決定する並列処理装置、ジョブ管理方法、およびジョブ管理プログラムが提案される。
本発明の一態様によれば、ジョブの実行終了時刻より前に該ジョブの実行が終了する際に、実行開始時刻を繰り上げるジョブを決定することにかかる時間を短縮することができるという効果を奏する。
図1は、本実施の形態にかかる並列処理装置101の動作例を示す説明図である。 図2は、並列処理システム200の構成例を示す説明図である。 図3は、ノードのハードウェア構成例を示す説明図である。 図4は、並列処理システム200の機能構成例を示す説明図である。 図5は、スケジュール表のイメージ例を示す説明図である。 図6は、使用ノードと整列ジョブリストLの関係を示す説明図(その1)である。 図7は、使用ノードと整列ジョブリストLの関係を示す説明図(その2)である。 図8は、使用ノードと整列ジョブリストLの関係を示す説明図(その3)である。 図9は、x軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。 図10は、y軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。 図11は、広い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。 図12は、ハッシュテーブルHが記憶する情報をイメージ化した例を示す説明図である。 図13は、ジョブ管理情報420の一例を示す説明図である。 図14は、ジョブ実行予約時処理手順の一例を示すフローチャートである。 図15は、ジョブ実行終了時処理手順の一例を示すフローチャートである。 図16は、繰り上げ候補ジョブの決定例を示す説明図(その1)である。 図17は、繰り上げ候補ジョブの決定例を示す説明図(その2)である。 図18は、繰り上げ候補ジョブの決定例を示す説明図(その3)である。 図19は、空きノードとジョブ管理ノードとが協働して潜在空き空間を特定する方法の一例を示す説明図である。 図20は、実施例3におけるジョブ実行予約時処理手順の一例を示すフローチャートである。 図21は、ジョブ実行開始時処理手順の一例を示すフローチャートである。 図22は、境界面ノードに送信される情報の一例を示す説明図である。 図23は、境界面ノードが実行する隣接空きノード特定処理手順の一例を示すフローチャートである。 図24は、空き計算ノードが実行する処理手順の一例を示すフローチャートである。 図25は、ジョブ管理ノードが実行する処理手順の一例を示すフローチャートである。
以下に図面を参照して、開示の並列処理装置、ジョブ管理方法、およびジョブ管理プログラムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかる並列処理装置101の動作例を示す説明図である。並列処理装置101は、ジョブの実行開始時刻および実行終了時刻と、計算資源とを割り当てるスケジュールを行うコンピュータである。例えば、並列処理装置101は、プロセッサとメモリとを有する複数のノードのいずれかを計算資源として、ジョブに割り当てるというスケジューリングを行う。以下の説明では、プロセッサとメモリとを有し、ジョブが割り当てられるノードを、「計算ノード」と称する。また、実行開始時刻および実行終了時刻をまとめて、「実行予定時間」と称する。
ここで、ジョブとは、ユーザから見た処理の単位を示す。ジョブと似たような概念として、プログラムの実行単位であって、固有のメモリ空間を有するプロセスや、プログラムの実行単位であって、同一プロセスに属するもの同士でメモリ空間を共有するスレッド等がある。従って、並列処理装置101は、複数のジョブとして、複数のスレッドや複数のプロセスに計算資源を割り当ててもよい。ここで、ジョブは、例えば、科学技術計算等の処理といったジョブである。また、並列処理装置101は、例えば、ハイ・パフォーマンス・コンピューティング(HPC:High Performance Computing)分野で使用されるコンピュータである。
並列処理装置101は、複数の計算ノードのいずれかでもよいし、複数の計算ノードと接続する別の装置でもよい。図1の説明では、並列処理装置101は、複数の計算ノードと接続する別の装置であるとする。
また、複数の計算ノードは、複数の座標軸の各座標軸方向で隣接する計算ノード同士が接続されている。そして、計算ノード同士が接続することにより、複数の座標軸を有するメッシュ状のネットワークまたはトーラス状のネットワークを形成する。そして、ユーザから要求されることによって決められる所定の時間帯の実行のために予約する計算ノード群は、ネットワーク内の互いに重なりのないサブメッシュまたはサブトーラスを形成することが多い。サブメッシュまたはサブトーラスを形成することにより、異なるジョブが同じネットワーク経路を同時に使用することによる通信干渉を避けることができる。
ここで、前述した複数の座標軸の各々の座標軸同士は、直交することが好ましいが、斜めに交わっていてもよい。そして、以下の説明では、形成されるネットワークがメッシュ状である場合、一般次元のユークリッド空間に埋め込まれているとみなし、メッシュと呼ぶ代わりにn次元直方体、または単に直方体という表現も使用する。形成されるネットワークがトーラスの場合も、ラップアラウンドのリンク先には、メッシュとみなした場合のジョブ配置が反復されているとみなすことによって、サブメッシュないしサブトーラスを一般次元の直方体と対応付けることにする。
ここで、各ジョブに、互いに重なりのないネットワーク内のサブメッシュを割り当てる処理は、直方体から部分集合を、互いに共通部分がない直方体であるように切り出す、または直方体領域内に、互いに共通部分がない直方体を詰め込む処理とみなせる。そして、この処理は、一般にn次元の箱詰め問題として知られ、最適となるための計算は、対象となる資源の集合規模が拡大するとき、計算時間が急激に増大する、いわゆるNP(Non−deterministic Polynomial)困難問題であることが知られている。
また、並列処理装置101は、現在空いている資源に対するスケジューリングだけでなく、未来の実行開始予約時間も含めてスケジューリングする。従って、スケジューリングによって決められるジョブの実行開始時刻および実行終了時刻は、未来の時刻となる。具体的には、並列処理装置101は、ジョブが要求するノード資源量だけでなく、ジョブの実行予定時間を元に、ジョブの使用する計算ノード資源および時間帯を予約する。ただし、ジョブの実行予定時間は、通常はジョブを投入したユーザまたは、並列処理装置101の管理者が指定するものであり、実際のジョブの実行時間より長く見積もられて指定されることが多い。そのため、ジョブの実行予定時間より早く、ジョブが終了するケースが多い。このように、予定より早くジョブが終了したため空いた資源を有効活用するために、実行待ちであった実行予約ジョブの開始時刻を繰り上げて実行開始することが考えられる。
しかしながら、あるジョブの実行終了時刻より前に該ジョブの実行が終了する場合、ノードの数が増える程、実行待ちのジョブから実行開始時刻を繰り上げるジョブを決定することにかかる時間が増大することになる。繰り上げるジョブを決定することにかかる時間が長くなると、本来なら実行時間繰り上げに利用できたはずの資源が、空き時間不足のため、使用できなくなる恐れがある。このように、ジョブの早期終了による実行開始時刻を繰り上げ可能なジョブを、通常のスケジューリングにおける箱詰め問題の解の探索時間に比べて短くし、かつ、スケジューラ自体のCPU時間が、事前準備に伴って増加することを抑制することが求められる。
そこで、本実施の形態では、スケジュール決定時にジョブが使用する各座標軸におけるノードの数および位置を記憶したリストを作成する。さらに、本実施の形態では、ジョブの実行が終了する際の各座標軸における未使用のノードの数を、予め特定しておく。これにより、本実施の形態では、ジョブが終了した時に、繰り上げ可能なジョブを高速に求める方法を提示する。
図1を用いて、並列処理装置101の動作例について説明する。図1の例では、n次元の直方体として、複数の計算ノードは、x座標軸、y座標軸という2次元のメッシュ状のネットワークを形成するものとする。さらに、図1では、複数のジョブの各々のジョブとして、ジョブA〜Fのスケジュールを行うものとする。そして、スケジュールの結果、ジョブA〜Dは、未来時刻となる時刻t1に実行する予定となり、ジョブE、Fは、時刻t1より後の時刻t2に実行する予定になるとする。
並列処理装置101は、図1の(1)で示すように、ジョブA〜Fをスケジュールする際に、各々のジョブを実行する順序を示す情報と、各々のジョブが使用する各座標軸におけるノードの数および位置とを記憶したリストを作成する。ここで、作成するリストは、繰り上げるジョブを高速に絞り込むためのデータ構造であり、ジョブを識別する情報が格納される。以下、作成するリストを、「整列ジョブリスト」と称する。
図1において、未来時刻となるt1に実行する予定のジョブA〜Dが使用する計算ノードは、グラフ102で示す通りである。グラフ102で示すようにジョブA〜Dが使用する計算ノードによって領域が生成される。(x,y)空間で、ジョブA〜Dが使用する計算ノードが示す領域を、「ジョブの使用ノード領域」と称する。図1では示していないが、ジョブE、Fが使用する計算ノードも、グラフ102と同様に示すことができる。例えば、ジョブのx座標軸における計算ノードの数は、ジョブのx軸における幅に相当し、ジョブのx座標軸における計算ノードの位置は、ジョブのx座標に相当する。
並列処理装置101は、ジョブのx座標軸におけるノードの数を記憶した整列ジョブリストLxsizeに、ジョブA〜Fのx座標軸における計算ノードの数を格納することにより、整列ジョブリストLxsizeを作成する。同様に、並列処理装置101は、ジョブのy座標軸におけるノードの数を記憶した整列ジョブリストLysizeに、ジョブA〜Fのy座標軸における計算ノードの数を格納することにより、整列ジョブリストLysizeを作成する。ここで、図1で示す整列ジョブリストLxsize、Lysizeの各要素は、値が小さいジョブほど下に位置し、値が大きいジョブほど上に位置するものとする。
同様に、並列処理装置101は、ジョブのx座標軸におけるノードの位置として、ジョブA〜Fの最小x座標の値を格納することにより、整列ジョブリストLxminを作成する。例えば、整列ジョブリストLxminには、ジョブBの最小x座標Bxmin、ジョブAの最小x座標Axmin、ジョブCの最小x座標Cxmin、ジョブDの最小x座標Dxminの順に登録される。さらに、図1では図示していないが、ジョブEの最小x座標、ジョブFの最小x座標も整列ジョブリストLxmin内の適切な位置に登録される。同様に、並列処理装置101は、ジョブA〜Fの最大x座標の値を格納した整列ジョブリストLxmaxを作成する。同様に、並列処理装置101は、ジョブA〜Fの最小y座標の値を格納した整列ジョブリストLyminと、ジョブA〜Fの最大y座標の値を格納した整列ジョブリストLymaxとを作成する。また、並列処理装置101は、ジョブA〜Fを実行する順序を示す情報を格納した整列ジョブリストLorderを作成する。整列ジョブリストLorderには、例えば、ジョブA〜Fを実行する順番が格納されてもよいし、ジョブA〜Fを実行する時刻を示す値が格納されてもよい。
次に、並列処理装置101は、整列ジョブリストLを参照して、ジョブAの実行終了時刻より前にジョブAの実行が終了する際の各座標軸における未使用のノードの数を特定する。ここで、例えば、ジョブAの実行が終了する際の各座標軸における未使用のノードの位置は、グラフ102上では、太い破線が示す空間rRとなる。以下、ジョブの実行が終了する際の各座標軸における未使用のノードの数を、「潜在空き空間」と呼称する。潜在空き空間には、各座標軸における未使用のノードの数が含まれていればよいが、各座標軸における未使用のノードの位置の情報が含まれてもよい。潜在空き空間は、可能な限り大きい領域となることが好ましい。また、潜在空き空間を特定するタイミングは、ジョブの実行が終了する前であればいつでもよい。従って、例えば、並列処理装置101は、ジョブのスケジューリングが終了したときや、または、ジョブの実行を開始したときに、そのジョブの潜在空き空間を特定する。また、並列処理装置101は、ジョブA〜Fのいずれかのジョブの潜在空き空間を特定してもよいし、全てのジョブの潜在空き空間を特定してもよい。例えば、並列処理装置101は、ジョブが予定より早く終了することがないことが予めわかっているジョブに対しては、潜在空き空間を特定しなくてもよい。
ここで、整列ジョブリストLを参照して、ジョブAの潜在空き空間rRを特定する一例を示す。例えば、並列処理装置101は、整列ジョブリストLxminを参照し、ジョブAの次の要素として、ジョブCを得る。ここで、時刻t0において、ジョブAの最小y座標〜最大y座標と、ジョブCの最小y座標〜最大y座標とは重ならないため、さらに、次の要素として、ジョブDを得る。時刻t0において、ジョブAの最小y座標〜最大y座標とジョブCの最小y座標〜最大y座標とは一部が重なるため、並列処理装置101は、潜在空き空間の最大x座標を、ジョブDの最小x座標として特定する。このように、並列処理装置101は、潜在空き空間を特定する。より具体的な潜在空き空間の特定方法は、図9〜図11で説明する。
図1の例では、図1の(2)で示すように、並列処理装置101は、例えばジョブAの実行が終了する前に、整列ジョブリストLを参照して、潜在空き空間rRを特定する。図1の例では、x座標軸における未使用のノードの数、すなわち、潜在空き空間rRのxサイズがRxsizeであるとし、y座標軸における未使用のノードの数、すなわち、潜在空き空間rRのyサイズがRysizeであるとする。
次に、並列処理装置101は、潜在空き空間を特定したいずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際に、いずれかのジョブの潜在空き空間と整列ジョブリストLとに基づいて、実行開始時刻を繰り上げるジョブを決定する。図1の例では、現在時刻が時刻t1となり、ジョブA〜Dが実行開始した後、ジョブAの実行終了時刻より前にいずれかのジョブの実行が終了するとする。この時点で時刻t2には達していないものとする。従って、この時点で実行開始していないジョブは、整列ジョブリストLorderが示すように、時刻t2に実行を開始するジョブE、Fとなる。よって、並列処理装置101は、実行待ちとなるジョブE、Fから、実行開始時刻を繰り上げるジョブを決定する。
具体的には、並列処理装置101は、整列ジョブリストLxsize、Lysizeを参照して、ジョブAの潜在空き空間rRのRxsize以下のxサイズとなり、かつ、ジョブAの潜在空き空間rRのRysize以下のyサイズとなるジョブを探索する。図1の例では、並列処理装置101は、図1の(3)で示すように、ジョブE、Fから、Rxsize以下のxサイズとなり、かつ、Rysize以下のyサイズとなるジョブEを、実行開始時刻を繰り上げるジョブとして決定する。そして、並列処理装置101は、図1の(4)で示すように、潜在空き空間rRにジョブEを割り当てる。
このように、並列処理装置101は、事前に潜在空き空間を特定しているため、実行開始時刻を繰り上げるジョブを高速に決定することができる。また、図1の例では、整列ジョブリストLxsize、Lysizeを用いたが、x座標軸、およびy座標軸におけるノードの数と単調増加するハッシュ値をキーとして登録したハッシュテーブルを利用し、実行開始時刻を繰り上げるジョブの候補を特定してもよい。この方法は、図12〜図15で示す。次に、並列処理装置101を、並列処理システム200に適用した例を図2に示す。
図2は、並列処理システム200の構成例を示す説明図である。並列処理システム200は、ジョブ管理ノードadnと、複数の計算ノードの各計算ノードcnとを有する。ここで、ジョブ管理ノードadnが、図1で示した並列処理装置101に相当する。各計算ノードcnは、nを2以上として、n次元のメッシュ構造またはトーラス構造のネットワークを形成する。本実施の形態では、n=2とする2次元のメッシュネットワーク201を形成するものとする。この場合、各計算ノードは、並列処理システム200内での位置を、図2で示すように(x,y)座標で示すことができる。
ジョブ管理ノードadnは、ジョブの実行予定時間および割り当て資源をスケジューリングする。ジョブ管理ノードadnは、主として、計算資源の管理を行う。具体的には、ジョブ管理ノードadnは、実行依頼されたジョブに対して、計算ノード資源と、そのノードを使用可能な時間帯の組を実行予約情報として割り当てておく。そして、ジョブ管理ノードadnは、あるジョブの実行開始予定時刻になったら、割り当てておいた計算ノードに対してジョブの実行を依頼する。
計算ノードcnは、主として、ジョブ実行の制御を行う。具体的には、計算ノードcnは、ジョブ管理ノードadnから依頼されたジョブについて、ジョブの実行開始・実行状態の監視・終了等を制御する。ただし、計算ノードcnは、ジョブ管理ノードadnで実行される部分からの処理依頼に応じ、計算資源の管理の一部を分担する場合がある。
次に、ジョブ管理ノードadn、計算ノードcnを総称したノードのハードウェア構成例を示す。
(ノードのハードウェア構成例)
図3は、ノードのハードウェア構成例を示す説明図である。ノードは、CPU301と、メモリ302と、I/F(Interface)303と、を有する。また、各構成部はバス310によってそれぞれ接続される。
ここで、CPU301は、ノード全体の制御を司る制御装置である。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する記憶装置である。より具体的には、例えば、フラッシュROMがOS(Operating System)やファームウェアなどのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されているプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させることになる。
I/F303は、他のノードからのデータの入出力を制御する装置である。具体的には、I/F303は、インターコネクトと呼ばれるノード間のコンピュータネットワークに接続する。
図4は、並列処理システム200の機能構成例を示す説明図である。並列処理装置101は、制御部401を有する。制御部401は、ジョブスケジューラ410を有する。そして、ジョブスケジューラ410は、スケジューリング部411と、作成部412と、潜在空き空間特定部413と、決定部414と、を含む。ジョブスケジューラ410は、記憶装置に記憶されたプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したメモリ302などである。また、各部の処理結果は、メモリ302や、CPU301のレジスタや、CPU301のキャッシュメモリ等に格納される。
また、ジョブスケジューラ410は、整列ジョブリストLxmin、Lxmax、…、Lsize、ハッシュテーブルHxmin、Hxmax、…、Lsize、ジョブ管理情報420にアクセス可能である。整列ジョブリストL、ハッシュテーブルH、ジョブ管理情報420は、メモリ302といった記憶装置に格納されている。ジョブ管理情報420は、ジョブごとに存在する。整列ジョブリストL、ハッシュテーブルH、ジョブ管理情報420の関係については、図13で示す。
また、計算ノードcnは、制御部431を有する。そして、制御部431は、実行部432と、隣接空きノード特定部433とを有する。制御部431は、記憶装置に記憶されたプログラムをCPU301が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図3に示したメモリ302などである。また、各部の処理結果は、メモリ302や、CPU301のレジスタや、CPU301のキャッシュメモリ等に格納される。
ここで、本実施の形態では、大きく分類して実施例1〜実施例3のいずれかを採用することができる。まず、実施例1の機能について説明する。実施例1の詳細な説明は、図6〜図15で示す。
スケジューリング部411は、複数のジョブの各ジョブの実行予定時間と計算ノードとを割り当てる。
作成部412は、スケジューリング部411がスケジュールを決定する際に、整列ジョブリストLを作成する。具体的に作成される整列ジョブリストLの一覧は、図13で示す。
潜在空き空間特定部413は、複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成部412が作成した整列ジョブリストLを参照して、いずれかのジョブの潜在空き空間を特定する。
決定部414は、いずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際に、潜在空き空間特定部413が特定した潜在空き空間と整列ジョブリストLとに基づいて、複数のジョブから実行開始時刻を繰り上げるジョブを決定する。
計算ノードcnが有する実行部432は、ジョブスケジューラ410の指示に従って、ジョブを実行する。
また、作成部412は、各々のジョブが使用する前記各座標軸におけるノードの数を、入力された値が大きい程出力される値が単調に増加するハッシュ関数に入力することにより出力されたハッシュ値を記憶するハッシュテーブルHsizeを作成する。ハッシュ関数の具体例は、図12で示す。次に、決定部414は、いずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際に、潜在空き空間特定部413が特定した潜在空き空間の各座標軸における計算ノードcnの数をハッシュ関数に入力することにより、ハッシュ値を算出する。そして、決定部414は、算出したハッシュ値と、ハッシュテーブルHsizeに記憶したハッシュ値との比較結果に基づいて、複数のジョブから実行開始時刻を繰り上げるジョブを決定してもよい。
次に、実施例2の機能について説明する。実施例2は、メッシュネットワーク201の規模が大きい場合に有効な手法であり、メッシュネットワーク201を分割し、分割したグループ内のジョブ、または近隣のグループのジョブに繰り上げ候補ジョブを絞る手法である。実施例2の詳細な説明は、図16〜図18で示す。
作成部412は、スケジューリング部411がスケジュールを決定する際に、各々のジョブを実行する順序と各々のジョブの使用ノード領域とに基づいて、各々のジョブを複数のグループのいずれかに分類する。ここで、グループを、「区画」と称する。次に、作成部412は、分類した区画ごとに、区画に分類した各々のジョブに関する整列ジョブリストLを作成する。従って、作成部412は、区画の数だけ整列ジョブリストLを作成することになる。
次に、潜在空き空間特定部413は、いずれかのジョブの実行が終了する前に、いずれかのジョブが属する区画の整列ジョブリストLを参照して、潜在空き空間を特定する。そして、決定部414は、いずれかのジョブの実行終了時刻より前にいずれかのジョブの実行が終了する際に、特定した潜在空き空間と前述の区画の整列ジョブリストLとに基づいて、前述の区画に属するジョブから実行開始時刻を繰り上げるジョブを決定する。
次に、実施例3の機能について説明する。実施例3は、ジョブスケジューラ410が行う処理の一部を、計算ノードcnに実行させることにより、負荷分散を図る手法である。実施例3の詳細な説明は、図19〜図25で示す。
潜在空き空間特定部413は、いずれかのジョブの実行を開始する際に、作成した前記リストを参照して、前記いずれかのジョブの使用ノード領域に隣接し、いずれかのジョブが使用しないノードに、隣接空きノード特定処理の実行依頼を送信する。ここで、隣接空きノード特定処理は、各座標軸と垂直方向の複数のジョブのいずれにも使用されないノードがいくつあるかを処理要求元に通知する処理である。
次に、隣接空きノード特定処理の実行依頼を受け付けた計算ノードcnの隣接空きノード特定部433は、隣接空きノード特定処理を実行する。実行した結果は、処理要求元となるジョブ管理ノードadnに送信される。
そして、いずれかのジョブが使用しないノードから複数のジョブのいずれにも使用されないノードの数をジョブ管理ノードadnが受け付けたとする。この場合、潜在空き空間特定部413は、複数のジョブのいずれにも使用されないノードの数に基づいて、いずれかのジョブの潜在空き空間を特定する。
図5は、スケジュール表のイメージ例を示す説明図である。図5では、ジョブスケジューラ410が管理するスケジュール表のイメージ例を示す。図5で示すグラフ501は、ジョブの実行予定時間および割り当て資源を示す。グラフ501の横軸は、時刻を示す。グラフ501の縦軸は、図示を容易にするために、メッシュネットワーク201の(x,y)空間を、x軸またはy軸に射影したものである。
例えば、グラフ501は、薄い網掛けを付与したジョブAが、時刻t1に終了予定の実行中ジョブとして割り当てられていることを示す。ここで、ジョブAは、ジョブAの割り当て時間帯に現在時刻t0が含まれるため、現在実行中である。また、グラフ501は、濃い網掛けを付与したジョブBが、時刻t1からt2という実行予定期間に実行予約されたジョブとして割り当てられていることを示す。
また、スケジュール表における、ジョブに割り当てられた領域、具体的には、グラフ501内の薄い網掛けや濃い網掛けを付与した領域が、図1で示した使用ノード領域となる。次に、ジョブが使用する使用ノードと、整列ジョブリストLとの関係を、図6〜図8を用いて説明する。
(実施例1)
実施例1は、複数のジョブのいずれかのジョブが予定より早く終了する際に、空き領域になると思われる資源のひとまとまりとして、できるだけ大きい領域を求める方法で用いる整列ジョブリストLを作成する例を説明する。
図6は、使用ノードと整列ジョブリストLの関係を示す説明図(その1)である。また、図7は、使用ノードと整列ジョブリストLの関係を示す説明図(その2)である。図6に示すグラフ601は、図6〜図8で示す整列ジョブリストLの例として、ジョブA〜Dの使用ノード領域rA〜rDを示す。また、図7では、5つの整列ジョブリストLについて示す。図7で示す5つの整列ジョブリストLは、左側にあるほど値が小さく、右側にあるほど値が大きいことを示す。
図6の例について、ジョブA〜Dの使用ノード領域rA〜rDに最小x座標に関して整列した整列ジョブリストLxminは、図7で示すように、値が小さい順に、ジョブA、B、C、Dという要素を有する。同様に、最大x座標に関して整列した整列ジョブリストLxmaxは、図7で示すように、値が小さい順に、ジョブA、B、D、Cという要素を有する。同様に、最小y座標に関して整列した整列ジョブリストLyminは、図7で示すように、値が小さい順に、ジョブD、B、C、Aという要素を有する。
同様に、最大y座標に関して整列した整列ジョブリストLymaxは、図7で示すように、値が小さい順に、ジョブBおよびジョブD、C、Aという要素を有する。図6の例では、使用ノード領域rB、rDの最大y座標は同一であるため、Lymaxは、ジョブBとジョブDとを、同一の要素内に格納している。同様に、使用ノード領域のサイズで整列した整列ジョブリストLsizeは、図7で示すように、値が小さい順に、ジョブD、B、C、Aという要素を有する。また、図7で示した整列ジョブリストLの各要素は、ジョブごとに管理される管理データからポイントされる。整列ジョブリストLの各要素へのポイントの様子を、図8を用いて説明する。
図8は、使用ノードと整列ジョブリストLの関係を示す説明図(その3)である。ジョブAのジョブ管理情報420Aは、ジョブAの属性パラメタとして、最小x座標、最大x座標、最小y座標、最大y座標、サイズを有する。そして、ジョブ管理情報420A内の最小x座標は、整列ジョブリストLxminの要素Aをポイントする。同様に、ジョブ管理情報420A内の最大x座標は、整列ジョブリストLxmaxの要素Aをポイントする。同様に、ジョブ管理情報420A内の最小y座標は、整列ジョブリストLyminの要素Aをポイントする。同様に、ジョブ管理情報420A内のサイズは、整列ジョブリストLsizeの要素Aをポイントする。
また、図8に示したジョブ管理情報420Aは、配置(x,y)に関する情報を属性パラメタとして有するが、さらに、実行予定時間に関する情報を有してもよい。ジョブ管理情報420のより詳細な説明については、図13で示す。
(潜在空き空間の求め方)
次に、複数のジョブのいずれかのジョブが予定より早く終了する際に、空き領域になると思われる資源のひとまとまりとして、できるだけ大きい領域を求める方法について、図9〜図11を用いて説明する。図9〜図11の説明では、ジョブA〜Fのうち、ジョブAが予定より早く終了するものとする。このできるだけ大きい領域を求める方法として、実施例1では、潜在空き空間を特定する。ジョブスケジューラ410は、求めた潜在空き空間を、実行待ちジョブの開始時刻の繰り上げのヒント情報として使用する。ヒント情報として使用できる理由として、潜在空き空間に含まれるサイズを有する実行待ちジョブは、少なくとも開始時刻を繰り上げ可能なためである。
潜在空き空間の例として、ジョブスケジューラ410は、狭い意味での隣のジョブを求めることで決まる潜在空き空間を特定してもよいし、広い意味での隣のジョブを求めることで決まる潜在空き空間を特定してもよい。狭い意味での隣のジョブを求める例について、図9、図10を用いて説明する。狭い意味での隣のジョブを求める例では、x軸方向に狭い意味での隣のジョブを求める例と、x軸方向に狭い意味での隣のジョブを求める例とがある。x軸方向に狭い意味での隣のジョブを求める例について、図9を用いて説明する。
図9は、x軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。図9に示すグラフ901は、ジョブA〜Fの使用ノード領域rA〜rFを示す。グラフ901が示すように使用ノード領域rAから、最小y座標と最大y座標は使用ノード領域rAから変えないまま、使用ノード領域rAをx軸の正方向と負方向に広げていった領域Pがある。このような領域のことを、「x軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間」と呼ぶ。x軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間をrPとするとき、ジョブスケジューラ410は、rPを以下の通りに求める。
ジョブスケジューラ410は、ジョブAの最小y座標〜最大y座標の範囲で、ジョブAの最大x座標から、x軸の正方向へ伸ばして最初に重なるジョブを探し、見つかったジョブの最小x座標を、rPの最大x座標として決定する。グラフ901の例では、rPの最大x座標は、ジョブFの最小x座標となる。より具体的には、ジョブスケジューラ410は、整列ジョブリストLxminを参照して、ジョブAから最小x座標の値を増やす方向にある要素を選択する。ジョブスケジューラ410は、選択した要素のジョブがジョブAの最小y座標〜最大y座標の範囲になければ、選択した要素の次の要素を選択し、同様の処理を繰り返す。また、選択した要素のジョブがジョブAの最小y座標〜最大y座標の範囲にあれば、選択した要素のジョブが、最初に重なるジョブとなる。従って、この場合、ジョブスケジューラ410は、選択した要素の最小x座標を、rPの最大x座標として決定する。
また、ジョブスケジューラ410は、rPの最大x座標と同様の方法により、rPの最小x座標を決定する。また、rPの最大y座標は、rAの最大y座標と同一となる。同様に、rPの最小y座標は、rAの最小y座標と同一となる。次に、y軸方向に狭い意味での隣のジョブを求める例について、図10を用いて説明する。
図10は、y軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。図9で行った手順についてxとyとを交換することにより、ジョブスケジューラ410は、y軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間を得る。
y軸方向に狭い意味での隣のジョブを求めることで決まる潜在空き空間をrQとすると、rQは、図10で示すようになる。具体的には、rQの最大y座標は、ジョブCの最小y座標となり、rQの最小y座標は、ジョブDの最大y座標となる。広い意味での隣のジョブを求めることで決まる潜在空き空間について、図11を用いて説明する。
図11は、広い意味での隣のジョブを求めることで決まる潜在空き空間の例を示す説明図である。ここで、広い意味での隣のジョブを求めることで決まる潜在空き空間を、図9、図10で説明したrP、rQが求まった状況で、下記のように求めたrRとする。
ジョブスケジューラ410は、rPをy軸の正方向と負方向とに広げて、狭い意味での隣のジョブを求める。ここで、rPをy軸の正方向と負方向とに広げ、隣のジョブと重ならない最大の空間を、rP’とする。ジョブスケジューラ410は、図9で示した手順と同様に、整列ジョブリストLを利用してrP’を求める。また、ジョブスケジューラ410は、rQをx軸の正方向と負方向とに広げて、狭い意味での隣のジョブを求める。ここで、rQをx軸の正方向と負方向とに広げ、隣のジョブと重ならない最大の空間を、rQ’とする。ジョブスケジューラ410は、図9で示した手順と同様に、整列ジョブリストLを利用してrQ’を求める。そして、ジョブスケジューラ410は、rP’とrQ‘との共通部分を、rRとする。
図11の例では、rP’=rQ’となることから、rP’=rQ’=rRとなる。図1の例では、rRを、太い破線で示す。
(繰り上げ可能なジョブの候補の絞り方)
潜在空き空間を特定した後、ジョブスケジューラ410は、特定した潜在空き空間を検索キーとして、実行予約されたジョブの中から、開始繰り上げジョブの候補を絞りこむ。候補となるジョブは、下記2つの条件がともに満たされたジョブである。1つ目の条件は、ジョブの要求資源量が、潜在空き空間以下のサイズになることである。ここで、ジョブの要求資源量は、メッシュネットワーク201におけるジョブの各次元の資源量であり、例えば、2次元メッシュならば、ジョブのxサイズ、yサイズである。2つ目の条件は、ジョブの実行予定時間が、(ジョブの実行終了予定時刻−現在時刻)以下になることである。ここで、実行終了予定時刻とは、ユーザが元々予定していたジョブの実行が終了する時刻である。以下に、使用ノード領域のサイズで整列された、整列ジョブリストLを使う方法を述べる。
ここで、例えば、使用ノード領域の座標、サイズ等で整列された、整列ジョブリストL内で特定のサイズのジョブを探す場合、先頭または末尾から順にたどりながら探すことになり処理時間がかかる。このため、本実施例では整列ジョブリストLの整列キーに対応するハッシュテーブルHを使用して、整列ジョブリストL内でのジョブを特定する処理を高速化する。次に、ハッシュテーブルHが記憶する情報を、図12を用いて説明する。
図12は、ハッシュテーブルHが記憶する情報をイメージ化した例を示す説明図である。図12では、最小x座標での整列ジョブリストLxminに対応するハッシュテーブルHxminと、最大y座標での整列ジョブリストLymaxに対応するハッシュテーブルHymaxとの例を示す。
ハッシュテーブルHxminには、最小x座標をキーとして、キーに対応する整列ジョブリストLxminの要素へのポインタが格納されている。例えば、ジョブスケジューラ410は、ジョブrAの最小x座標をキーとして、整列ジョブリストLxminのジョブAが格納された要素へのポインタを取得する。このように、ジョブスケジューラ410は、整列ジョブリストLxminの先頭または末尾から順にたどりながら探さずとも、該当のジョブを探すことができる。ハッシュテーブルHymaxと整列ジョブリストLymaxとの関係も同様である。
また、候補ジョブを探索する際に、予定より早く終了したジョブの潜在空き領域に対して、サイズ以下の領域をもつジョブを検索することになる。そこで、他パラメタを固定した時に、検索キーは大きさ(xサイズ,yサイズ)について単調増大の性質をもつハッシュ関数を用いてハッシュ値を使用してもよい。この性質があれば、より大きい空間に、より大きいハッシュ値が対応することになるため、ハッシュ値が特定の値以下の範囲に探索範囲を限定することができる。前述のハッシュ関数としては、例えば、以下の4つのいずれかである。また、以下に示す関数は、x,y,zの3次元メッシュまたはトーラスとした際の例となる。
ハッシュ関数の1つ目の例としては、ジョブの対角線の長さを定数倍した値の整数部を算出する関数である。1つ目の例におけるハッシュ関数は、例えば、下記(1)式となる。
ハッシュ値=|定数*√(((xmax−xmin)^2+(ymax−ymin)^2+(zmax− zmin)^2))| …(1)
ここで、xmax、xmin、ymax、ymin、zmax、zminは、それぞれ、ジョブの最大x座標、最小x座標、最大y座標、最小y座標、最大z座標、最小z座標を示す。また、|a|は、aの整数部、すなわち、aを超えない最小の整数を示す。
ハッシュ関数の2つ目の例としては、全次元の大きさの幾何平均を定数倍した値の整数部を算出する関数である。2つ目の例におけるハッシュ関数は、例えば、下記(2)式となる。
ハッシュ値=|定数*(((xmax−xmin)*(ymax−ymin)*(zmax−zmin)^(1/3))| …(2)
ハッシュ関数の3つ目の例としては、全次元の大きさの調和平均を定数倍した値の整数部を算出する関数である。3つ目の例におけるハッシュ関数は、例えば、下記(3)式となる。
ハッシュ値=|定数*(1/(1/(xmax−xmin)+1/(ymax−ymin)+1/(zmax−zmin))) …(3)
ハッシュ関数の4つ目の例としては、体積の対数の整数部を定数倍した値の整数部を算出する関数である。4つ目の例におけるハッシュ関数は、例えば、下記(3)式となる。
ハッシュ値=|定数*log((xmax−xmin)*(ymax−ymin)*(zmax−zmin))) …(4)
ここで、(4)式におけるlogの底は、単調増加となる1より大きい値であればどのような値でもよい。また、(1)〜(4)式において、定数倍する理由は、例えば小数点以下の値の違いを反映することにより、形状が異なる場合は異なる値が割り当てやすくなるようにするためである。また、ハッシュ値の範囲が大きく、ハッシュテーブルのサイズが大きくなりすぎる場合には、(4)式のように、対数関数など緩やかに増加する関数でハッシュ値を求めることで、範囲を狭めることが好ましい。
図13は、ジョブ管理情報420の一例を示す説明図である。図13では、ジョブ管理情報420と、整列ジョブリストLと、ハッシュテーブルHとの関係を示す。図13では、ある1つのジョブに対するジョブ管理情報420を示す。図13で示すジョブ管理情報は、説明の簡略化のため、2次元(x,y)のネットワークで接続される場合の例である。ジョブ管理情報420は、ジョブIDに加え、ジョブの使用ノード領域に関する情報として、最小x座標、最大x座標、xサイズ、最小y座標、最大y座標、yサイズ、対角線長で整列した次ジョブという情報を有する。
さらに、ジョブ管理情報420は、最小x座標〜対角線長で整列した次ジョブの各項目に対応する整列ジョブリストのポインタpを有する。例えば、ジョブ管理情報420は、最小x座標に対応する最小x座標での整列ジョブリストへのポインタpLxminを有する。同様に、ジョブ管理情報420は、最大x座標、xサイズ、最小y座標、最大y座標、yサイズ、対角線長のそれぞれに対応する整列ジョブリストLのポインタpLxmax、pLxsize、pLymin、pLymax、pLysize、pLdを有する。ここで、各ポインタが指す位置は、整列ジョブリストLにおける、あるジョブの要素の位置である。このように、ジョブ管理情報420から、整列ジョブリストLにおけるあるジョブの位置をたどることができる。また、逆に、整列ジョブリストから、各ジョブのジョブ管理情報420をたどることもできる。
また、図13で示すように、ジョブ管理情報420は、そのジョブが終了したときに想定される潜在空き空間の情報を有する。具体的には、ジョブ管理情報420は、潜在空き空間の最大x座標、最小x座標、最大y座標、最小y座標を有する。
また、ジョブ管理情報420は、最小x座標でのハッシュテーブルHxminと、最大x座標でのハッシュテーブルHxmaxと、…、対角線長でのハッシュテーブルHdと対応付けられている。さらに、ジョブ管理情報420は、前述した(1)式〜(4)式のいずれかにより算出されたハッシュ値が登録された、サイズでのハッシュテーブルHsizeと対応付けられている。また、ジョブスケジューラ410は、ハッシュテーブルHsizeに対応する整列ジョブリストLsizeを作成してもよい。
次に、実施例1において、ジョブAを実行予約、すなわちスケジュールしてから、ジョブAが終了する際に実行する処理を、フローチャートとして図14、図15を用いて説明する。
図14は、ジョブ実行予約時処理手順の一例を示すフローチャートである。ジョブ実行予約時処理は、ジョブスケジューラ410によって、ジョブのスケジューリング決定後に実行する処理である。
ジョブスケジューラ410は、整列ジョブリストLにジョブAのジョブ管理情報420を登録する(ステップS1401)。ここで、図14で示す処理を実行するタイミングは、ジョブAのスケジューリング決定後であり、ジョブAの割り当て領域の、各次元の最小座標、最大座標、サイズはわかっているため、整列ジョブリストLにジョブAの情報を挿入することが可能である。
次に、ジョブスケジューラ410は、「大きさ」をキーとするハッシュテーブルHsizeに、ジョブAのジョブ管理情報420を登録する(ステップS1402)。ここで、大きさが同じ場合となり、キーが衝突するときには、ジョブスケジューラ410は、最初に登録された要素を先頭にしたリストを、サイズに対して設定する。また、ジョブスケジューラ410は、大きさ以外にも各次元のサイズ、最小座標、最大座標をキーにした、それぞれ別のハッシュテーブルHを作成しジョブAを登録してもよい。この場合、ジョブスケジューラ410は、ステップS1401の処理において、整列ジョブリストLへの挿入位置がハッシュテーブルですぐに求めることができるため、ステップS1401の処理を効率的に行うことができる。
そして、ジョブスケジューラ410は、整列ジョブリストLから、ジョブAが終了するとした場合の潜在空き空間を特定する(ステップS1403)。潜在空き空間は、例えば、図9〜図11で示す方法で特定することができる。具体的には、各次元の最小座標、最大座標に関する整列ジョブリストLに対してジョブAを起点として整列ジョブリスト内をたどることにより求めることができる。
次に、ジョブスケジューラ410は、特定した潜在空き空間の各次元の最小座標、最大座標をジョブAのジョブ管理情報420A内に記録する(ステップS1404)。ステップS1404の処理終了後、ジョブスケジューラ410は、ジョブ実行予約時処理を終了する。
図15は、ジョブ実行終了時処理手順の一例を示すフローチャートである。ジョブ実行終了時処理は、ジョブAが、ジョブの実行終了予定時刻より前に終了した際に実行する処理である。
ジョブスケジューラ410は、ジョブAによる潜在空き空間のサイズをジョブAのジョブ管理情報420Aから取得する(ステップS1501)。潜在空き空間の情報は、ステップS1404の処理で予め求められたものである。
次に、ジョブスケジューラ410は、開始繰り上げ候補のジョブを、潜在空き空間のサイズをキーとして、サイズによるハッシュテーブルHsizeを用いてリストアップする(ステップS1502)。ここで、ハッシュテーブルHsizeは、ステップS1402の処理により作成されている。ジョブスケジューラ410は、ハッシュテーブルHsizeに対して、潜在空き空間のサイズをキーにして引くことにより、該当のサイズを有するジョブの管理情報を、繰り上げの候補ジョブとして取得することができる。また、該当するサイズのジョブがなければ、ジョブスケジューラ410は、サイズを減少させる方向でハッシュテーブルHsize内を探索して、繰り上げの候補ジョブとして取得してもよい。また、ジョブスケジューラ410は、候補ジョブを所定の閾値個取得するために、所定の閾値回ハッシュテーブルHsizeを探索してもよい。また、ステップS1502の処理において、ジョブスケジューラ410は、ハッシュテーブルHsizeから探索した候補ジョブの実行予定時間が、(ジョブの実行終了予定時刻−現在時刻)以下となるかを確認する。候補ジョブの実行予定時間が(ジョブの実行終了予定時刻−現在時刻)より大きい場合、ジョブスケジューラ410は、その候補ジョブは候補から外す。
そして、ジョブスケジューラ410は、ジョブAの管理データをスケジュール表から削除する(ステップS1503)。ここで、ジョブスケジューラ410は、整列ジョブリストL、ハッシュテーブルからのジョブAの情報削除も実施する。
次に、ジョブスケジューラ410は、候補ジョブがあるか否かを判断する(ステップS1504)。候補ジョブがある場合(ステップS1504:Yes)、ジョブスケジューラ410は、候補ジョブの先頭が潜在空き空間に入るか否かを判断する(ステップS1505)。候補ジョブの先頭が潜在空き空間に入らない場合(ステップS1505:No)、ジョブスケジューラ410は、候補ジョブの先頭を候補リストから削除する(ステップS1506)。そして、ジョブスケジューラ410は、ステップS1504の処理に移行する。
一方、候補ジョブの先頭が潜在空き空間に入る場合(ステップS1505:Yes)、ジョブスケジューラ410は、潜在空き空間に、候補ジョブの先頭を繰り上げジョブとして入れる(ステップS1507)。潜在空き空間に開始繰り上げジョブを入れたときは、そのジョブのスケジュールが更新されたことを意味するので、ジョブスケジューラ410は、図14で示したジョブ実行予約時処理を実行する。
潜在空き空間に繰り上げジョブを入れた後、ジョブスケジューラ410は、入れたジョブを除いた残りの空き空間を特定する(ステップS1508)。具体的には、ジョブスケジューラ410は、潜在空き空間を示す直方体から、繰り上げジョブの使用ノード領域を示す直方体を除いた残りの空き空間を特定する。ここで、ステップS1508の処理は、ステップS1513の処理の後に実行されることもある。この場合、ジョブスケジューラ410は、残りの空き空間を示す直方体から、繰り上げジョブの使用ノード領域を示す直方体をさらに除いた残りの空き空間を特定する。
次に、ジョブスケジューラ410は、残りの空間のサイズから、開始繰り上げ候補のジョブをリストアップする(ステップS1509)。ステップS1509の処理は、ステップS1502の処理と同様の処理である。
そして、ジョブスケジューラ410は、候補ジョブがあるか否かを判断する(ステップS1510)。候補ジョブがある場合(ステップS1510:Yes)、ジョブスケジューラ410は、候補ジョブの先頭が残りの空き空間に入るか否かを判断する(ステップS1511)。候補ジョブの先頭が残りの空き空間に入らない場合(ステップS1511:No)、ジョブスケジューラ410は、候補ジョブの先頭を候補リストから削除する(ステップS1512)。そして、ジョブスケジューラ410は、ステップS1510の処理に移行する。
一方、候補ジョブの先頭が残りの空き空間に入る場合(ステップS1511:Yes)、ジョブスケジューラ410は、残りの空き空間に、候補ジョブの先頭を繰り上げジョブとして入れる(ステップS1513)。ステップS1507の処理と同様に、空き空間に開始繰り上げジョブを入れたときは、そのジョブのスケジュールが更新されたことを意味するので、ジョブスケジューラ410は、図14で示したジョブ実行予約時処理を実行する。そして、ジョブスケジューラ410は、ステップS1508の処理に移行する。
また、候補ジョブがない場合(ステップS1504:No、ステップS1510:No)、ジョブスケジューラ410は、ジョブ実行終了時処理を終了する。
(実施例2)
実施例1では、整列ジョブリストLは、ジョブを登録しているが、計算ノードcnのネットワークの全体規模が大きい場合、全体を互いに交わらない区画に分け、区画ごとに整列ジョブリストを保持することが考えられる。これにより、整列ジョブリストLの要素数を減らすことができる。以下、潜在空き空間から距離的に近い区画に属するジョブを対象に、候補を絞る。区画に分割した際のジョブの決定例を、図16〜図18を用いて説明する。
図16は、繰り上げ候補ジョブの決定例を示す説明図(その1)である。図16で示すグラフ1601は、ジョブA〜Fのスケジュールとして、ジョブA〜Fの使用ノード領域rA〜rFを示す。また、tを時刻とする。また、t0は現在時刻である。現在時刻t0で実行中のジョブはジョブA、B、Gである。また、ジョブC、D、E、Fは実行予約されたジョブである。図16〜図18では、分割する区画と区別するため、rAに薄い網掛けを付与し、rB〜rGに濃い網掛けを付与している。
図17は、繰り上げ候補ジョブの決定例を示す説明図(その2)である。図17で示すグラフ1701は、グラフ1601に対して、適当な間隔で互いに交わらないような領域で区画分けした例を示す。グラフ1701では、各区画は、太い破線で囲まれた範囲となる。図17の例では、各区画の時間幅は、最小の割り当て時間の3倍の時間幅となる。従って、グラフ1701の時刻t0から時刻t1までの時間幅に、グラフ1701の下部、中部、上部の3つの区画sct1〜3ができる。同様に、時刻t1からt2までの時間幅に、グラフ1701の下部、中部、上部の3つの区画sct4〜6ができ、時刻t2からt3までの時間幅に、グラフ1701の下部、中部、上部の3つの区画sct7〜9ができる。また、実行中および実行予約のジョブは、「ジョブが使用するxy空間でのノード領域×実行予定時間(t)」という直方体で表すことができる。
ここで、ジョブスケジューラ410は、各ジョブに対して、一つの区画を対応させる。例えば、ジョブスケジューラ410は、ジョブが表される直方体の中点を求め、中点が所属する区画を、該当のジョブに対応する区画に決定する。
また、ジョブスケジューラ410は、区画ごとの管理データとして、区画に対応付けられたジョブ群を、使用ノード領域のサイズで整列した整列ジョブリストLとして保持しておく。これにより、区画ごとの整列ジョブリストLができることになる。図17の例では、グラフ1701の区画sct6の管理データには、ジョブC、Gが保持される。また、各区画のサイズが大きくなるように分割した結果、入りうるジョブ数が多くなる場合には、整列ジョブリストLを、実施例1で述べたハッシュテーブルHで検索できるよう管理してもよい。
図17の例では、ジョブAが終了するものとし、ジョブAが作る、潜在空き空間rsAのサイズをsとする。実行中ジョブAが終了した場合、ジョブスケジューラ410は、ジョブAの属していた区画sct1の管轄で、サイズs以下の実行予約のジョブを探す。次に、ジョブスケジューラ410は、ジョブAの属していた区画sct1に隣接した区画sct2、4、5に対して、同様にサイズs以下かつ実行予約のジョブを探す。こうして、ジョブAの使用していた資源から距離的に近いジョブを優先的に候補にすることができる。
図18は、繰り上げ候補ジョブの決定例を示す説明図(その3)である。図18で示すグラフ1801は、ジョブAの属していた区画sct1に隣接した区画に属したジョブD、Eを繰り上げた様子を示す。図18では、繰り上げたジョブD、Eに、薄い網掛けを付与する。
ここで、グラフ1801のように、時刻t0に関して、実行予約のジョブを繰り上げした場合、時刻t1に、計算ノードの空き領域が出来る場合がある。ジョブスケジューラ410は、時刻t1を基準に見て、ジョブD、Eの繰り上げにより空きとなる領域について、潜在空き空間を特定し、同様の操作をしてもよい。これにより、ジョブスケジューラ410は、時刻t1以降に実行開始予定のあるジョブに対して、時刻t1へのジョブを繰り上げることができる。同様に、ジョブスケジューラ410は、次の区画の境界に位置する時刻t2でも繰り返すことができる。
(実施例3)
実施例1では、ジョブAの終了による潜在空き空間を、ジョブスケジューラ410が保持する管理データから求めている。実施例3では、ジョブを実行している計算ノード上で、ノード間通信によりノード間の距離を求め、潜在空き空間を特定するための情報を取得する。これにより、ジョブスケジューラ410の処理を軽減することができる。また、実施例3は、実施例2に適用してもよい。
図19は、空きノードとジョブ管理ノードとが協働して潜在空き空間を特定する方法の一例を示す説明図である。ジョブスケジューラ410は、実行を割り当てられた計算ノードcnにジョブの実行を依頼するとき、そのジョブの使用ノード領域の境界面のすぐ外側にあたる空き計算ノードに対して、境界面である旨の情報を同時に与える。以下、境界面である旨の情報が与えられた空き計算ノードを、「境界面ノード」と称する。境界面ノードは、境界面とは垂直な外側方向に通信パケットを送信する。ここで、境界面とは垂直な外側方向は、x軸に平行な方向、またはy軸に平行な方向となる。
図19で示すグラフ1901は、ジョブスケジューラ410が管理するスケジュール表上で、各境界面ノードが、ノード間の距離を求める際の状態を模式化したものである。グラフ1901で示す黒丸は、境界面ノードとなる空きノードに、パケット通信を送信している例を示す。
次に、実施例3において、ジョブAを実行予約、すなわちスケジュールしてから、ジョブAが実行開始する際に実行する処理を、フローチャートとして図20、図21、図23〜図25を用いて説明する。なお、実施例3におけるジョブAが実行終了する際の処理は、図15で示したジョブ実行終了時処理と同一であるため、説明を省略する。
図20は、実施例3におけるジョブ実行予約時処理手順の一例を示すフローチャートである。
ジョブスケジューラ410は、整列ジョブリストLにジョブAのジョブ管理情報420Aを登録する(ステップS2001)。整列ジョブリストLは、図8に示したものである。図8に示したように、整列ジョブリストLとして、各次元の最小座標、最大座標、サイズに関するそれぞれのリストがある。ここで、図20で示す処理を実行するタイミングは、ジョブAのスケジューリング決定後であり、ジョブAの割り当て領域の、各次元の最小座標、最大座標、サイズはわかっているため、整列ジョブリストLにジョブAの情報を挿入することが可能である。
次に、ジョブスケジューラ410は、「大きさ」をキーとするハッシュテーブルHsizeに、ジョブAのジョブ管理情報を登録する(ステップS2002)。ステップS2002の処理は、ステップS1402の処理と同一である。ステップS2002の処理終了後、ジョブスケジューラ410は、ジョブ実行予約時処理を終了する。
図21は、ジョブ実行開始時処理手順の一例を示すフローチャートである。ジョブ実行開始時処理は、ジョブの実行開始を計算ノードcnに依頼する際に、ジョブスケジューラ410が実行する処理である。
ジョブスケジューラ410は、ジョブAに割り当てられた計算ノードから成る直方体領域の境界面ノードに対して、隣接空きノード特定処理の実行依頼を送信する(ステップS2101)。この実行依頼には、ジョブAの境界面である旨を示す情報、その境界面に対して垂直な座標軸を示す情報、および、外へ向かう向きを示す情報が含まれる。さらに、実行依頼には、ジョブAの情報として、割り当てノード領域の各座標の情報も含まれる。
次に、ジョブスケジューラ410は、ジョブAに割り当てられた計算ノードに対して、ジョブAの実行依頼を送信する(ステップS2102)。ステップS2102の処理終了後、ジョブスケジューラ410は、ジョブ実行開始時処理を終了する。次に、境界面ノードに送信される情報の一例を、図22を用いて説明する。
図22は、境界面ノードに送信される情報の一例を示す説明図である。図22に示すグラフ2201は、ジョブA〜Fの使用ノード領域rA〜rFと、ジョブAの実行開始時に境界面ノードとなるノードの一つとなるノードbcnとを示す。
図22の例では、ノードbcnに与えられる座標軸を示す情報は、境界面がy軸方向であるから、「x軸」となり、外へ向かう向きを示す情報は、正方向となる。以下の図23〜図25の説明では、境界面ノードbcnを例にして説明する。次に、境界面ノードが実行する隣接空きノード特定処理について、図23を用いて説明する。
図23は、境界面ノードが実行する隣接空きノード特定処理手順の一例を示すフローチャートである。隣接空きノード特定処理は、境界面ノードとなるノードが実行依頼を受け付けた際に実行される。図23で示す隣接空きノード特定処理は、境界面ノードbcnを例としているため、境界面に対して垂直になる座標軸は「x軸」となり、「向き」は「正方向」となる。図23の説明では、説明の簡略化のため、正方向を「右」、負方向を「左」と記載する。
境界面ノードbcnは、変数hに1を代入する(ステップS2301)。ここで、変数hは、何ホップ右のノードと通信するかを示す変数である。
次に、境界面ノードbcnは、自ノードが別のジョブの境界面か否かを判断する(ステップS2302)。ここで、境界面ノードbcnが、ジョブAの右側にあることから、自ノードが別のジョブの境界面となる場合は、右隣りに別のジョブの割り当てノードがあることになる。別のジョブが右隣りにあるか否かの判断方法は、図21、図22で示したように、別のジョブの実行依頼時に、ジョブスケジューラ410から別のジョブの境界面ノードに対して、境界面である旨を示す情報が通知されていることから判断することができる。
自ノードが別のジョブの境界面でない場合(ステップS2302:No)、境界面ノードbcnは、hホップ右にある空きノードに向けて通信し、応答メッセージを待ち受ける(ステップS2303)。ここで、境界面ノードbcnは、通信がタイムアウトしたとみなす時間を設定しておく。境界面ノードからの通信を受信した際の処理については、図24で示す。
次に、境界面ノードbcnは、通信タイムアウトしたか否かを判断する(ステップS2304)。通信タイムアウトしていない場合(ステップS2304:No)、境界面ノードbcnは、応答結果が「左隣に隣接する別ジョブあり」を示すか否かを判断する(ステップS2305)。
通信タイムアウトした場合(ステップS2304:Yes)、または、応答結果が「左隣に隣接する別ジョブあり」を示さない場合(ステップS2305:No)、境界面ノードbcnは、変数hを1増加させる(ステップS2306)。そして、境界面ノードbcnは、ステップS2303の処理に移行する。
一方、自ノードが別のジョブの境界面である場合(ステップS2302:Yes)、または、応答結果が「左隣に隣接する別ジョブあり」を示す場合(ステップS2305:Yes)、境界面ノードbcnは、変数hの値をジョブ管理ノードadnに向けて送信する(ステップS2307)。変数hの値は、右方向に向けての別ジョブの使用ノードまでの距離を示す。ステップS2307の処理終了後、境界面ノードbcnは、隣接空きノード特定処理を終了する。
ステップS2307の処理では、境界面となったノードのそれぞれが。ジョブ管理ノードadnに対してhの情報を送信するが、これに限られない。例えば、境界面ノードのいずれか一つを代表面ノードとし、各境界面ノードが求めた変数hの値を、代表ノードが各境界面ノードから収集し、収集した距離の最小値をジョブ管理ノードadnに送信してもよい。具体的には、ジョブスケジューラ410は、各境界面につき1つのノードを代表ノードとして選択する。そして、ジョブスケジューラ410は、代表ノードを含む境界面ノードに、隣接空きノード特定処理の実行依頼を送信する際に、代表ノードの座標も併せて送信する。代表ノード以外の境界面ノードは、ステップS2307の処理において、距離hの情報をジョブ管理ノードadnではなく、代表ノードに送信する。代表ノードは、境界面ノードから距離hの値を収集できた後、距離の最小値を求め、求めた最小値をジョブ管理ノードadnに送信する。
図24は、空き計算ノードが実行する処理手順の一例を示すフローチャートである。図24で示す空き計算ノードが実行する処理は、ステップS2303の処理によって、境界面ノードbcnから通信を受け付けたときに行う処理である。
境界面ノードbcnから通信を受け付けた計算ノードcnは、受け付けたノードへ、隣接するジョブについてのジョブID、ジョブが使用する領域の各次元の座標を返信する(ステップS2401)。なお、隣接するジョブがない場合、境界面ノードbcnから通信を受け付けた計算ノードcnは、隣接するジョブがないことを示す情報を送信すればよい。ステップS2401の処理終了後、境界面ノードbcnから通信を受け付けた計算ノードcnは、処理を終了する。
図25は、ジョブ管理ノードが実行する処理手順の一例を示すフローチャートである。図25で示すジョブ管理ノードが実行する処理は、ジョブスケジューラ410が、ステップS2307の処理によって、境界面ノードbcnまたは代表ノードから、別ジョブの使用ノードまでの距離の情報を受け付けたときに行う処理である。
ジョブスケジューラ410は、受け付けた別ジョブの使用ノードまでの距離の情報から、ジョブAが終了するとした場合の潜在空き空間を特定する(ステップS2501)。次に、ジョブスケジューラ410は、特定した潜在空き空間の各次元の最小座標、最大座標をジョブAのジョブ管理情報420内に記録する(ステップS2502)。ステップS2502の処理終了後、ジョブスケジューラ410は、図25で示すジョブ管理ノードが実行する処理を終了する。
このように、実施例1では、潜在空き空間を、整列ジョブリストLをたどることで隣接ジョブまでの距離を取得し、潜在空き空間の最小座標、最大座標およびサイズを求めたが、実施例3では、境界面ノードbcnが、潜在空き空間の最小座標、最大座標を求める。従って、実施例3では、ジョブスケジューラ410にかかる負荷を抑制することができる。
このように、実施例3では、個々の空きノードが、システム全体に関する制御表ではなく、隣接ノードを使用しているジョブに関する情報だけを使用して行うため、並列処理システム200の規模が増大してもCPU処理時間増を抑えることができる。ここで、隣接空きノード特定処理に使用する通信は、空きノードを使うため、実行中ジョブの通信とは干渉しない。また、複数のノード間での最小値の報告はネットワークハードウェアのリダクション機能を使用することにより、計算ノードのCPUを使用することなく高速に実行できる。
以上説明したように、ジョブスケジューラ410は、スケジュール決定時に作成した整列ジョブリストからジョブの潜在空き空間を特定し、該ジョブが早く終了したら該空間に入るジョブを決定する。これにより、ジョブスケジューラ410は、事前に潜在空き空間を特定する分繰り上げジョブの決定を高速化することができる。また、ジョブスケジューラ410は、通常の空き資源探索処理に比べ少ないCPU時間で、あるジョブが早期に終了した際に利用可能になる空き資源の大きさを特定する。これにより、ジョブスケジューラ410は、実行開始時間を繰り上げ可能なジョブの候補を高速に絞り込み、発生した空き資源の有効利用率を向上させて、並列処理システム200のジョブスループットを改善することができる。
また、ジョブスケジューラ410は、ハッシュテーブルHsizeを用いて複数のジョブから繰り上げ候補のジョブを決定してもよい。これにより、ジョブスケジューラ410は、図1で示した整列ジョブリストLxsize、Lysizeを用いて決定する方法よりも、高速に繰り上げ候補のジョブを決定することができる。
また、ジョブスケジューラ410は、メッシュネットワーク201を分割した区画ごとに整列ジョブリストLを作成し、潜在空き空間に距離的に近い空間内のジョブに繰り上げ候補のジョブを絞ってもよい。これにより、ジョブスケジューラ410は、探索範囲を限定する分、より高速に繰り上げ候補のジョブを決定することができる。
また、ジョブスケジューラ410は、境界面ノードbcnに、隣接空きノード特定処理を実行させてもよい。このように、ジョブスケジューラ410は、潜在空き空間の特定にかかる負荷を境界面ノードbcnに分散することにより、ジョブスケジューラ410にかかる負荷を抑制することができる。
なお、本実施の形態で説明した並列処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本並列処理プログラムは、ハードディスク、フレキシブルディスク、CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本並列処理プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
制御部を有することを特徴とする並列処理装置。
(付記2)前記制御部は、
前記各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブに割り当てるノードとを決定する際に、さらに、前記各々のジョブが使用する前記各座標軸におけるノードの数を、入力された値が大きい程出力される値が単調に増加するハッシュ関数に入力することにより出力されたハッシュ値を記憶し、
前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を前記ハッシュ関数に入力することにより出力されたハッシュ値を算出し、
算出した前記ハッシュ値と、記憶した前記ハッシュ値との比較結果に基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
ことを特徴とする付記1に記載の並列処理装置。
(付記3)前記制御部は、
前記各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブに割り当てるノードとを決定する際に、前記各々のジョブを実行する順序と前記各々のジョブが使用する前記各座標軸におけるノードの位置とに基づいて、前記各々のジョブを複数のグループのいずれかに分類し、
分類した前記グループごとに、前記グループに分類した前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
前記いずれかのジョブの実行が終了する前に、作成した前記いずれかのジョブが属するグループのリストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記いずれかのジョブが属するグループのリストとに基づいて、前記いずれかのジョブが属するグループに属するジョブから実行開始時刻を繰り上げるジョブを決定する、
ことを特徴とする付記1または2に記載の並列処理装置。
(付記4)前記制御部は、
前記複数のジョブのうちのいずれかのジョブの実行を開始する際に、作成した前記リストを参照して、前記いずれかのジョブが使用する前記各座標軸におけるノードに隣接し前記いずれかのジョブが使用しないノードに、前記各座標軸と垂直方向の前記複数のジョブのいずれにも使用されないノードがいくつあるかを処理要求元に通知する処理の実行依頼を送信し、
前記いずれかのジョブが使用しないノードから通知された前記複数のジョブのいずれにも使用されないノードの数に基づいて、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定する、
処理を実行することを特徴とする付記1〜3のいずれか一つに記載の並列処理装置。
(付記5)前記複数のノードは、前記複数の座標軸を有するメッシュ状のネットワークまたはトーラス状のネットワークを形成することを特徴とする付記1〜4のいずれか一つに記載の並列処理装置。
(付記6)コンピュータが、
複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
処理を実行することを特徴とするジョブ管理方法。
(付記7)コンピュータに、
複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
処理を実行させることを特徴とするジョブ管理プログラム。
H ハッシュテーブル
L 整列ジョブリスト
101 並列処理装置
401、431 制御部
411 スケジューリング部
412 作成部
413 潜在空き空間特定部
414 決定部
420 ジョブ管理情報

Claims (6)

  1. 複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
    前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
    前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
    制御部を有することを特徴とする並列処理装置。
  2. 前記制御部は、
    前記各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブに割り当てるノードとを決定する際に、さらに、前記各々のジョブが使用する前記各座標軸におけるノードの数を、入力された値が大きい程出力される値が単調に増加するハッシュ関数に入力することにより出力されたハッシュ値を記憶し、
    前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を前記ハッシュ関数に入力することにより出力されたハッシュ値を算出し、
    算出した前記ハッシュ値と、記憶した前記ハッシュ値との比較結果に基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
    ことを特徴とする請求項1に記載の並列処理装置。
  3. 前記制御部は、
    前記各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブに割り当てるノードとを決定する際に、前記各々のジョブを実行する順序と前記各々のジョブが使用する前記各座標軸におけるノードの位置とに基づいて、前記各々のジョブを複数のグループのいずれかに分類し、
    分類した前記グループごとに、前記グループに分類した前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
    前記いずれかのジョブの実行が終了する前に、作成した前記いずれかのジョブが属するグループのリストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
    前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記いずれかのジョブが属するグループのリストとに基づいて、前記いずれかのジョブが属するグループに属するジョブから実行開始時刻を繰り上げるジョブを決定する、
    ことを特徴とする請求項1または2に記載の並列処理装置。
  4. 前記制御部は、
    前記複数のジョブのうちのいずれかのジョブの実行を開始する際に、作成した前記リストを参照して、前記いずれかのジョブが使用する前記各座標軸におけるノードに隣接し前記いずれかのジョブが使用しないノードに、前記各座標軸と垂直方向の前記複数のジョブのいずれにも使用されないノードがいくつあるかを処理要求元に通知する処理の実行依頼を送信し、
    前記いずれかのジョブが使用しないノードから通知された前記複数のジョブのいずれにも使用されないノードの数に基づいて、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定する、
    処理を実行することを特徴とする請求項1〜3のいずれか一つに記載の並列処理装置。
  5. コンピュータが、
    複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
    前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
    前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
    処理を実行することを特徴とするジョブ管理方法。
  6. コンピュータに、
    複数の座標軸の各座標軸方向で隣接するノード同士が接続されておりプロセッサとメモリとを有する複数のノードに対する複数のジョブの各々のジョブの実行開始時刻および実行終了時刻と前記各々のジョブが使用するノードとを決定する際に、前記各々のジョブを実行する順序を示す情報と、前記各々のジョブが使用する前記各座標軸におけるノードの数および位置とを記憶したリストを作成し、
    前記複数のジョブのうちのいずれかのジョブの実行が終了する前に、作成した前記リストを参照して、前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際の前記各座標軸における未使用のノードの数を特定し、
    前記いずれかのジョブの実行終了時刻より前に前記いずれかのジョブの実行が終了する際に、特定した前記各座標軸における未使用のノードの数と前記リストとに基づいて、前記複数のジョブから実行開始時刻を繰り上げるジョブを決定する、
    処理を実行することを特徴とするジョブ管理プログラム。
JP2016138972A 2016-07-13 2016-07-13 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム Active JP6683046B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016138972A JP6683046B2 (ja) 2016-07-13 2016-07-13 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US15/611,819 US10423458B2 (en) 2016-07-13 2017-06-02 Parallel processing system, method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016138972A JP6683046B2 (ja) 2016-07-13 2016-07-13 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム

Publications (2)

Publication Number Publication Date
JP2018010492A JP2018010492A (ja) 2018-01-18
JP6683046B2 true JP6683046B2 (ja) 2020-04-15

Family

ID=60941080

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016138972A Active JP6683046B2 (ja) 2016-07-13 2016-07-13 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム

Country Status (2)

Country Link
US (1) US10423458B2 (ja)
JP (1) JP6683046B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7243361B2 (ja) * 2019-03-25 2023-03-22 富士通株式会社 ジョブスケジューラ及びジョブスケジュール制御方法
US11175950B1 (en) * 2020-05-18 2021-11-16 Amazon Technologies, Inc. Dynamic regulation of parallelism for job scheduling

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0756799A (ja) * 1993-08-12 1995-03-03 Fujitsu Ltd 記憶領域管理方法
JP3550986B2 (ja) * 1997-12-03 2004-08-04 日本電信電話株式会社 論理回路の動的な構成方法
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
JP2003162470A (ja) 2001-11-27 2003-06-06 Fujitsu Ltd 配信制御プログラムおよび方法
JP2005190063A (ja) 2003-12-25 2005-07-14 Fuji Xerox Co Ltd スケジュール調整支援システム
US20080162664A1 (en) * 2006-12-29 2008-07-03 Harshavardhan Jegadeesan Technique for throttling a web service dynamically
JP5402226B2 (ja) * 2009-05-13 2014-01-29 富士通株式会社 管理装置、情報処理システム、情報処理システムの制御プログラムおよび情報処理システムの制御方法
JP5605131B2 (ja) 2010-09-28 2014-10-15 富士通株式会社 ジョブスケジューリングプログラム,方法,および装置
JP5684629B2 (ja) * 2011-03-31 2015-03-18 日本電気株式会社 ジョブ管理システム及びジョブ管理方法
JP2012243224A (ja) * 2011-05-23 2012-12-10 Fujitsu Ltd プロセス配置装置、プロセス配置方法及びプロセス配置プログラム
JP2014211767A (ja) * 2013-04-18 2014-11-13 富士通株式会社 情報処理システム、制御装置及び情報処理システムの制御方法
JP6499388B2 (ja) * 2013-08-14 2019-04-10 富士通株式会社 並列計算機システム、管理装置の制御プログラムおよび並列計算機システムの制御方法
JP6221588B2 (ja) * 2013-09-30 2017-11-01 富士通株式会社 情報処理システム、管理装置制御プログラム及び情報処理システムの制御方法
JP6428380B2 (ja) * 2015-03-02 2018-11-28 富士通株式会社 並列計算システム、ジョブ管理装置、ジョブ管理プログラム、およびジョブ管理方法

Also Published As

Publication number Publication date
JP2018010492A (ja) 2018-01-18
US20180018201A1 (en) 2018-01-18
US10423458B2 (en) 2019-09-24

Similar Documents

Publication Publication Date Title
JP6241300B2 (ja) ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム
US20150227586A1 (en) Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment
Mashayekhy et al. A trust-aware mechanism for cloud federation formation
Huang et al. Task ranking and allocation in list-based workflow scheduling on parallel computing platform
US9298500B2 (en) Information processing system and control method of information processing system for managing jobs in a distributed multi-node environment
JP2017016541A (ja) 情報処理装置、並列計算機システム、ジョブスケジュール設定プログラムおよびジョブスケジュール設定方法
Ijaz et al. MOPT: list-based heuristic for scheduling workflows in cloud environment
JP6683046B2 (ja) 並列処理装置、ジョブ管理方法、およびジョブ管理プログラム
US20180329752A1 (en) Parallel processing apparatus, job management method, and recording medium recording job management program
JP6666553B2 (ja) 情報処理装置、ジョブ管理方法およびジョブ管理プログラム
Bhatti et al. Locality-aware task scheduling for homogeneous parallel computing systems
US10061624B2 (en) Parallel computing system, job management device, and job management method
US10089151B2 (en) Apparatus, method, and program medium for parallel-processing parameter determination
JP7084894B2 (ja) リソース管理システム、リソース割当方法
Li et al. Topology-aware scheduling on blue waters with proactive queue scanning and migration-based job placement
Utsunomiya et al. Heuristic search based on branch and bound method for task scheduling considering communication overhead
Bani-Mohammad et al. A new compacting non-contiguous processor allocation algorithm for 2D mesh multicomputers
CN114830088A (zh) 用于对计算集群或云计算平台的资源节点执行资源调度的方法和装置
Bampis et al. Scheduling malleable jobs under topological constraints
Jiang et al. Energy optimization oriented three-way clustering algorithm for cloud tasks
Zolfaghari Efficient Algorithm for Processor Allocation in Mesh Multicomputers Network with Limitations and Assumptions
KR101669555B1 (ko) 어플리케이션에 자원을 할당하는 장치 및 방법
Leung et al. Task Mapping for Non-contiguous Allocations.
Kushwaha et al. Evaluation of Dag Based Scheduling Algorithms for Bounded Number Processor
Cao Performance Optimization of Big Data Computing Workflows for Batch and Stream Data Processing in Multi-Clouds

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200309

R150 Certificate of patent or registration of utility model

Ref document number: 6683046

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150