JP6079805B2 - 並列計算装置 - Google Patents

並列計算装置 Download PDF

Info

Publication number
JP6079805B2
JP6079805B2 JP2015059545A JP2015059545A JP6079805B2 JP 6079805 B2 JP6079805 B2 JP 6079805B2 JP 2015059545 A JP2015059545 A JP 2015059545A JP 2015059545 A JP2015059545 A JP 2015059545A JP 6079805 B2 JP6079805 B2 JP 6079805B2
Authority
JP
Japan
Prior art keywords
scheduler
processing unit
processing
notification information
status
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
JP2015059545A
Other languages
English (en)
Other versions
JP2016181016A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2015059545A priority Critical patent/JP6079805B2/ja
Priority to PCT/JP2015/006492 priority patent/WO2016151654A1/ja
Priority to EP15886211.0A priority patent/EP3276489B1/en
Priority to KR1020177026593A priority patent/KR101818410B1/ko
Priority to US15/554,153 priority patent/US10162675B2/en
Priority to CN201580078148.XA priority patent/CN107408061B/zh
Publication of JP2016181016A publication Critical patent/JP2016181016A/ja
Application granted granted Critical
Publication of JP6079805B2 publication Critical patent/JP6079805B2/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/54Interprogram communication
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Description

本発明は、並列処理システム、並列処理方法、プログラムに関する。
データの高速処理を可能とするため、複数のコアを同時に動かして並列処理を行う技術が知られている。
上記のような並列処理を行う際の技術の一つとして、例えば、特許文献1がある。特許文献1には、第1のアプリケーションプログラムが動作するオペレーティングシステムと、OLリモート制御手段と、を有する第1のプロセッサコアと、オペレーティングシステムを稼働させずに、OLリモート制御手段からの要求に基づき第2のアプリケーションプログラムを動作させる軽量スケジューラを含む第2のプロセッサコアと、を有するプログラム並列実行システムが記載されている。特許文献1によると、上記構成を有することにより、第2のプロセッサコアにおける処理においてOS介在によるオーバーヘッドの影響を低減した並列処理を行うことが可能となる。
また、並列計算機における並列プロセススケジューリングの方法の一つとして、例えば、特許文献2が知られている。特許文献2には、並列プロセスの並列同期待ち状態になった装置において、別のプロセスを動作させる、という技術が記載されている。つまり、特許文献2によると、並列同期待ち状態にある並列プロセスはディスパッチせず、代わりに実行可能な他のジョブのプロセスをディスパッチすることで、システムのスループット性能が低下することを防ぐことが可能となる。
特許第5453825号公報 特開H9−128351号公報
しかしながら、特許文献1の技術の場合、第2のプロセッサコアを制御する軽量スケジューラは、メインシステム側と独立して形成されている。そのため、特許文献1の技術の場合、軽量スケジューラがメインシステム側のスケジューリングと連携した制御を行うことは難しかった。その結果、システム全体として効率的なスケジューリングを行うことが難しくなる場合があった。
また、特許文献2の技術はプログラムが自ら待ち状態になった場合の制御であり、他の装置のスケジューリング状況に応じた制御を行うことは難しい。そのため、特許文献2の技術の場合でも、コンテキストスイッチが行われた場合など他の装置のスケジューリング状況によっては、システム全体として効率的なスケジューリングを行うことが難しくなる場合があった。
このように、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題が生じていた。
そこで、本発明の目的は、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題を解決する並列処理システムを提供することにある。
かかる目的を達成するため本発明の一形態である並列処理システムは、
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第1のプロセス処理部と、
前記第1のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第1のプロセススケジューラと、
前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第2のプロセス処理部と、
前記第2のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第2のプロセススケジューラと、を有し、
前記第1のプロセススケジューラと前記第2のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第1のプロセススケジューラは、前記第2のプロセススケジューラが検出した前記第2のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御し、
前記第2のプロセススケジューラは、前記第1のプロセススケジューラが検出した前記第1のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
という構成を採る。
また、本発明の他の形態である並列処理方法は、
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが実行するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
という構成を採る。
また、本発明の他の形態であるプログラムは、
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、
ことを実現させるためのプログラムである。
本発明は、以上のように構成されることにより、並列処理を行う場合、それぞれのプロセスを管理するスケジューラ同士で情報が共有されていないため、システム全体として効率的なスケジューリングを行うことが難しくなる場合がある、という問題を解決する並列処理システムを提供することが可能となる。
本発明の第1の実施形態に係る並列計算機の構成の一例を示すブロック図である。 本発明の第1の実施形態に係る並列計算機で実行されるプログラムの一例を示す図である。 本発明の第1の実施形態に係る並列計算機の詳細な構成の一例を示すブロック図である。 本発明の第1の実施形態に係るプロセススケジューラの構成の一例を示す図である。 本発明の第1の実施形態に係るプロセススケジューラがコンテキストスイッチを行う際の動作の一例を示すフローチャートである。 本発明の第1の実施形態に係るメインプロセッサ用プロセススケジューラが状態通知情報を受信した際の動作の一例を示すフローチャートである。 本発明の第1の実施形態に係るコプロセッサ用プロセススケジューラが状態通知情報を受信した際の動作の一例を示すフローチャートである。 本発明の第1の実施形態に係るプロセススケジューラが行う優先度の変更の一例を示す図である。 本発明の第1の実施形態に係るプロセススケジューラが行う優先度の変更の一例を示す図である。 本発明の第2の実施形態に係る並列計算機の構成の一例を示すブロック図である。 本発明の第3の実施形態に係る並列計算機の構成の一例を示すブロック図である。 本発明の第4の実施形態に係る並列処理システムの構成の一例を示すブロック図である。
[第1の実施形態]
図1は、並列計算機4の構成の一例を示すブロック図である。図2は、並列計算機4で実行されるプログラムの一例を示す図である。図3は、並列計算機4の詳細な構成の一例を示すブロック図である。図4は、メインプロセッサ用プロセススケジューラの構成の一例を示す図である。図5は、プロセススケジューラがコンテキストスイッチを行う際の動作の一例を示すフローチャートである。図6は、メインプロセッサ用プロセススケジューラ12が状態通知情報を受信した際の動作の一例を示すフローチャートである。図7は、コプロセッサ用プロセススケジューラ14が状態通知情報を受信した際の動作の一例を示すフローチャートである。図8、図9は、プロセススケジューラが行う優先度の変更の一例を示す図である。
本発明の第1の実施形態では、メインプロセッサノード1と、アクセラレータなどのコプロセッサノード2と、を有する並列計算機4について説明する。本実施形態における並列計算機4は、メインプロセッサノード1上で実行されるプロセスと、コプロセッサノード2上で実行されるプロセスと、を独立したプロセススケジューラで管理するよう構成されている。後述するように、それぞれのプロセスを管理するプロセススケジューラ間で所定の情報を通信することで、システム全体としての効率的なスケジューリングを実現することになる。
図1を参照すると、本実施形態における並列計算機4は、1つのメインプロセッサノード1(第1のノード)と、1つ以上のコプロセッサノード2(第2のノード)と、を有している。また、メインプロセッサノード1と1つ以上のコプロセッサノード2とは、通信バス3で接続されており、互いに通信可能なよう構成されている。
メインプロセッサノード1は、メインプロセッサ11と図示しない記憶装置とを有している。また、メインプロセッサノード1上では、オペレーティングシステム(OS、Operating System)が動作する。メインプロセッサノード1上で動作するOSは、Linux(登録商標)やWindows(登録商標)などに代表される計算機に用いられるコモディティのオペレーティングシステムであって構わない。
メインプロセッサノード1のオペレーティングシステム上では、メインプロセッサ11、後述するコプロセッサ21、で実行されるプロセスを管理するプロセススケジューラが動作する。本実施形態においては、メインプロセッサ11、コプロセッサ21、それぞれのプロセッサが実行するプロセスは、メインプロセッサノード1上で動作するOS上の別のプロセススケジューラでそれぞれ管理される。従って、オペレーティングシステム上には、メインプロセッサ11とコプロセッサ21の数に応じたプロセススケジューラが動作することになる。
コプロセッサノード2は、コプロセッサ21と図示しない記憶装置とを有している。また、コプロセッサノード2上では、OSが動作しない。コプロセッサ21の制御ソフトウェアを含むOSは、全てメインプロセッサノード1上で動作することになる。また、コプロセッサ21のプロセス状態(レジスタなどのコンテキスト)は、通信バス3を介してメインプロセッサノード1側の記憶装置に退避される。
本実施形態においては、上記のようなメインプロセッサノード1とコプロセッサノード2とで、排他的に動作するプログラムを実行する。つまり、メインプロセッサノード1とコプロセッサノード2とでは、相互に依存関係にあるなど、所定の対応するプログラムが実行されることになる。具体的には、例えば、図2で示すように、プロセス1をメインプロセッサ11で実行するとともに、プロセス1の演算結果に依存するプロセス2をコプロセッサ21で実行する。上記のように、メインプロセッサノード1で実行されるプロセスとコプロセッサノード2で実行されるプロセスとはそれぞれ排他的に動作する。従って、メインプロセッサ11でプロセス1を実行している間は、コプロセッサノード2側は待ち状態になることになる。また、コプロセッサ21でプロセス2を実行している間は、メインプロセッサノード1側は待ち状態になることになる。なお、待ち状態である間は、相手プロセッサの状態をポーリング監視することがある。
また、本実施形態においては、プロセススケジューラ間でプロセスIDを一致させておくなどの方法により、各プロセススケジューラは対応する(排他的な動作をする)プロセスを判断することが出来るものとする。なお、対応するプロセスを判別可能であれば、具体的な判別方法は特に限定されない。
次に、図3を参照して、並列計算機4のより具体的な構成について説明する。図3は、本実施形態における並列計算機4のより詳細な構成の一例を示している。
図3を参照すると、メインプロセッサノード1は、メインプロセッサ11(例えば、第1のプロセス処理部。ただし、第2のプロセス処理部でも構わない。)と、メインプロセッサ用プロセススケジューラ12(第1のプロセススケジューラ又は第2のプロセススケジューラ)と、状態通知手段13と、コプロセッサ用プロセススケジューラ14(第1のプロセススケジューラ又は第2のプロセススケジューラ)と、ノード間通信手段15と、を有している。
メインプロセッサ11は、1つ以上のプロセッサコア111を有している。メインプロセッサ11が有するプロセッサコア111は、メインプロセッサ用プロセススケジューラ12からの制御に基づいて、プロセスを実行する。
メインプロセッサ用プロセススケジューラ12は、プロセッサコア111で実行するプロセスの処理状況を検出して管理する。
例えば、メインプロセッサ用プロセススケジューラ12は、後述するスケジューリングポリシ122に基づいて、コンテキストスイッチを行う。つまり、メインプロセッサ用プロセススケジューラ12は、プロセッサコア11で実行されるプロセスを切り替える。また、本実施形態におけるメインプロセッサ用プロセススケジューラ12は、コンテキストスイッチを実行する際に、状態通知手段13を用いて、コンテキストスイッチを実行する旨を示す状態通知情報を他のプロセススケジューラ(コプロセッサ用プロセススケジューラ14)に通知する。
具体的には、例えば、メインプロセッサ用プロセススケジューラ12は、コンテキストスイッチによりプロセスコンテキストを退避させると、プロセスが待機状態に遷移した旨を示す状態通知情報をコプロセッサ用プロセススケジューラ14に通知する。また、メインプロセッサ用プロセススケジューラ12は、例えば、コンテキストスイッチによりプロセスコンテキストを復元させると、プロセスがディスパッチされた旨を示す状態通知情報をコプロセッサ用プロセススケジューラ14に通知する。
また、メインプロセッサ用プロセススケジューラ12は、他のプロセススケジューラから状態通知情報を受信すると、優先度制御手段121を用いて、プロセッサコア111で実行するプロセスの優先度を制御する。これにより、メインプロセッサ用プロセススケジューラ12は、プロセッサコア111にディスパッチされるプロセスを制御する。
具体的には、例えば、メインプロセッサ用プロセススケジューラ12は、コプロセッサ用プロセススケジューラ14からプロセスが待機状態に遷移した旨を示す状態通知情報を受信する。すると、メインプロセッサ用プロセススケジューラ12は、当該状態通知情報が示すプロセスと対応する(排他的な動作をする)プロセスが待ち状態にあるか否かを、後述する状態情報1251を確認することで確認する。そして、当該対応するプロセスが待ち状態にある場合、メインプロセッサ用プロセススケジューラ12の優先度制御手段121は、待ち状態にあるプロセスの優先度を通常より低くなるよう制御する(図8参照)。また、メインプロセッサ用プロセススケジューラ12は、例えば、コプロセッサ用プロセススケジューラ14からプロセスがディスパッチされた旨を示す状態通知情報を受信する。すると、メインプロセッサ用プロセススケジューラ12は、当該状態通知情報が示すプロセスと対応するプロセスが待ち状態にあるか否かを、状態情報1251を確認することで確認する。そして、当該対応するプロセスが待ち状態にある場合、メインプロセッサ用プロセススケジューラ12の優先度制御手段121は、待ち状態にあるプロセスの優先度を高くすることにより、優先度を元に戻す(図9参照)。
このように、メインプロセッサ用プロセススケジューラ12は、プロセッサコア111で実行されるプロセスの処理状況(プロセスの切り替え)を検出して、他のプロセススケジューラに対して状態通知情報を送信するよう構成されている。また、メインプロセッサ用プロセススケジューラ12は、受信した状態通知情報に基づいて、プロセッサコア111の動作を制御する(プロセッサコア111で実行されるプロセスの優先度を制御する)ように構成されている。
なお、メインプロセッサ用プロセススケジューラ12が該当プロセスの優先度をどの程度上げるか、下げるか、は任意である。メインプロセッサ用プロセススケジューラ12が制御する優先度の変更度合を示すパラメータは、変更可能なよう構成されても構わない。
図4は、メインプロセッサ用プロセススケジューラ12がコンテキストスイッチを実行する際に用いる構成の一例を示している。図4を参照すると、メインプロセッサ用プロセススケジューラ12は、スケジューリングポリシ122と、プロセススイッチ手段123と、プロセスコンテキスト124と、プロセス構造体125と、を有している。
スケジューリングポリシ122は、コンテキストスイッチのタイミングや、コンテキストスイッチを実行する際に次に実行すべきプロセスを選定するためのポリシを示している。スケジューリングポリシ122は、優先度によるスケジューリングが可能であれば、特に限定せず公知なものが適用可能である。
プロセススイッチ手段123は、プロセッサコア111で実行されるプロセスを切り替える手段である。例えば、プロセススイッチ手段123は、コンテキストスイッチで入れ替える対象となるプロセスが動作しているプロセッサコア111のコンテキストをプロセスコンテキスト124として保存する。そして、プロセススイッチ手段122は、ディスパッチ対象のプロセスコンテキスト124を対象のプロセッサコア111に復元する。
プロセスコンテキスト124は、プロセススイッチ手段123がプロセッサコア111で実行されているプロセスをコンテキストスイッチした際にプロセッサコア111から退避されたコンテキストデータである。
プロセス構造体125は、プロセスの情報を示す構造体であり、状態情報1251を有している。上述したように、本実施形態における並列計算機4では、メインプロセッサノード1とコプロセッサノード2とで排他的に動作するプログラムを実行する。そのため、例えば、メインプロセッサノード1側のプロセスが実行されている間、コプロセッサノード2側は待ち状態になることになる。このような待ちの状態をプロセススケジューラから判別するため、メインプロセッサ用プロセススケジューラ12が管理するプロセス構造体125は、相手側プロセスを待っているか否か(待ち状態であるか否か)の情報である状態情報1251を持つことになる。状態情報1251は、プロセス構造体125が示すプロセスが関連するプロセスの処理待ちである場合に、処理待ちである旨を示すよう制御される。
状態通知手段13は、メインプロセッサ用プロセススケジューラ12とコプロセッサ用プロセススケジューラ14との間で状態通知情報を送受信する際に用いられる。例えば、メインプロセッサ用プロセススケジューラ12は、状態通知手段13を用いて、コプロセッサ用プロセススケジューラ14に対して状態通知情報を送信する。また、例えば、コプロセッサ用プロセススケジューラ14は、状態通知手段13を用いて、メインプロセッサ用プロセススケジューラ12と他のコプロセッサ用プロセススケジューラ14に対して状態通知情報を送信する。
コプロセッサ用プロセススケジューラ14は、対応するコプロセッサノード2のプロセッサコア211で実行するプロセスを管理する。コプロセッサ用プロセススケジューラ14は、コプロセッサノード2の数に応じた数が設けられている。
コプロセッサ用プロセススケジューラ14は、メインプロセッサ用プロセススケジューラ12と同様の構成を有している。すなわち、コプロセッサ用プロセススケジューラ14は、下記で示す処理を実行可能なよう構成されている。
・対応するコプロセッサノード2で実行されるプロセスをコンテキストスイッチする(なお、この処理は、通信バス3を介して行われる)。
・コンテキストスイッチを実行する際に、他のプロセススケジューラ(メインプロセッサ用プロセススケジューラ12と他のコプロセッサ用プロセススケジューラ14)に対して状態通知情報を送信する。
・他のプロセススケジューラから受信した状態通知情報に応じて、優先度制御手段141により優先度を制御する。
また、コプロセッサ用プロセススケジューラ14は、図4で示すメインプロセッサ用プロセススケジューラ12と同様の構成を有している。つまり、コプロセッサ用プロセススケジューラ14は、スケジューリングポリシと、プロセススイッチ手段と、プロセスコンテキストと、プロセス構造体と、を有している。また、コプロセッサ用プロセススケジューラ14が有するプロセス構造体は、状態情報を有している。
このように、コプロセッサ用プロセススケジューラ14は、メインプロセッサ用プロセススケジューラ12と同様に構成されている。そのため、コプロセッサ用プロセススケジューラ14についての詳細な説明は省略する。
ノード間通信手段15は、メインプロセッサ11及びコプロセッサ用プロセススケジューラ14がコプロセッサノード2と通信を行う際に用いられる。例えば、メインプロセッサ11は、プロセッサコア111で実行するプロセスを処理する際にノード間通信手段15を介してコプロセッサノード2のプロセッサコア211と通信する。また、コプロセッサ用プロセススケジューラ14は、ノード間通信手段15を介してコプロセッサノード2のプロセッサコア211で実行されるプロセスの管理を行う。つまり、メインプロセッサノード1側からは、ノード間通信手段15を用いてコプロセッサノード2と通信することになる。
また、図3を参照すると、コプロセッサノード2は、コプロセッサ21と、ノード間通信手段22と、を有している。コプロセッサノード2の数は、1以上の任意の数であって構わない。
コプロセッサ21は、1つ以上のコプロセッサコア211を有している。コプロセッサ21が有するプロセッサコア211は、対応するコプロセッサ用プロセススケジューラ14からの制御に基づいて、プロセスを実行する。
ノード間通信手段22は、コプロセッサ21がメインプロセッサノード1と通信を行う際に用いられる。例えば、コプロセッサ21は、プロセッサコア211で実行するプロセスを処理する際にノード間通信手段22を介してメインプロセッサノード1のプロセッサコア111と通信する。また、コプロセッサノード2のプロセッサコア211で実行されるプロセスは、ノード間通信手段22を介して接続されたコプロセッサ用プロセススケジューラ14で管理される。つまり、コプロセッサノード2側からは、ノード間通信手段22を用いてメインプロセッサノード1と通信することになる。
以上が、並列計算機4の構成についての説明である。次に、並列計算機4の動作について説明する。まず、図5を参照して、メインプロセッサ用プロセススケジューラ12がメインプロセッサ11内のプロセッサコア111についてコンテキストスイッチする際の動作について説明する。
図5を参照すると、メインプロセッサ用プロセススケジューラ12は、スケジューリングポリシ122に従って、コンテキストスイッチで入れ替えるプロセスを決定する(ステップS101)。上述したように、メインプロセッサ用プロセススケジューラ12が参照するスケジューリングポリシ122は、公的なものが適用可能であり特に限定しない。また、メインプロセッサ用プロセススケジューラ12が用いるスケジューリングアルゴリズムも公的なものが適用可能であり特に限定しない。
次に、プロセススイッチ手段123が、コンテキストスイッチの対象となったプロセスが動作しているプロセッサコア111のコンテキストをプロセスコンテキスト124として保存する。そして、プロセススイッチ手段123は、ディスパッチ対象のプロセスコンテキスト124をコンテキストスイッチの対象となるプロセッサコア111に復元する。メインプロセッサ用プロセススケジューラ12は、このような動作によりコンテキストスイッチを実行する(ステップS102)。
その後、メインプロセッサ用プロセススケジューラ12は、状態通知手段13を用いて、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を他のプロセススケジューラ(コプロセッサ用プロセススケジューラ14)に通知する(ステップS103)。
なお、メインプロセッサ用プロセススケジューラ12が状態通知情報を送信するタイミングは上記場合に限定されない。例えば、メインプロセッサ用プロセススケジューラ12は、プロセスが待機状態に遷移した旨を示す状態通知情報とプロセスがディスパッチされた旨を示す状態通知情報とを、異なるタイミングで送信することが出来る。例えば、メインプロセッサ用プロセススケジューラ12は、対象のプロセッサコア111のコンテキストをプロセスコンテキスト124として保存した後(又は保存するとともに)、プロセスが待機状態に遷移した旨を示す状態通知情報を送信する。その後、メインプロセッサ用プロセススケジューラ12は、ディスパッチ対象のプロセスコンテキスト124をコンテキストスイッチの対象となるプロセッサコア111に復元した後(又は復元するとともに)、プロセスがディスパッチされた旨を示す状態通知情報を送信する。メインプロセッサ用プロセススケジューラ12は、例えば、上記のように動作することが出来る。また、メインプロセッサ用プロセススケジューラ12は、プロセスが待機状態に遷移した旨と、プロセスがディスパッチされた旨とを、1つの状態通知情報で同時に通知するように構成しても構わない。
続いて、コプロセッサ用プロセススケジューラ14がコプロセッサ21内のコプロセッサコア211についてコンテキストスイッチする際の動作について説明する。
コプロセッサ用プロセススケジューラ14がコプロセッサ21内のコプロセッサコア211についてコンテキストスイッチする際の動作は、概ね図5で示すメインプロセッサ用プロセススケジューラ12がコンテキストスイッチする際の動作と同様である。
すなわち、コプロセッサ用プロセススケジューラ14は、コプロセッサ用プロセススケジューラ14が有するスケジューリングポリシに従って、コンテキストスイッチで入れ替えるプロセスを決定する(ステップS101、図5参照)。
続いて、コプロセッサ用プロセススケジューラ14のプロセススイッチ手段は、コンテキストスイッチの対象となったプロセスが動作しているプロセッサコア211のコンテキストを、コプロセッサ用プロセススケジューラ14内にプロセスコンテキストとして保存する。つまり、コプロセッサ21のプロセッサコア211のプロセス状態は、メインプロセッサノード1側に退避されることになる。そして、コプロセッサ用プロセススケジューラ14のプロセススイッチ手段は、ディスパッチ対象のプロセスコンテキストをコンテキストスイッチの対象となるプロセッサコア211に復元する。コプロセッサ用プロセススケジューラ14は、ノード間通信手段15を用いて通信バス3を介することで、コプロセッサノード2のプロセッサコア211のコンテキストにアクセスして上記のような動作を実行することになる(ステップS102、図5参照)。
その後、コプロセッサ用プロセススケジューラ14は、状態通知手段13を用いて、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を他のプロセススケジューラ(メインプロセッサ用プロセススケジューラ12と他のコプロセッサ用プロセススケジューラ14)に通知する(ステップS103、図5参照)。なお、コプロセッサ用プロセススケジューラ14が状態通知情報を通知する際の構成は、メインプロセッサ用プロセススケジューラ12の場合と同様にさまざまな形を採ることが出来る。
次に、図6を参照して、メインプロセッサ用プロセススケジューラ12が他のプロセススケジューラ(コプロセッサ用プロセススケジューラ14)から状態通知情報を受信した際の動作について説明する。
図6を参照すると、メインプロセッサ用プロセススケジューラ12は、状態通知手段13により、コプロセッサ用プロセススケジューラ14からプロセスを切り替える旨を示す状態通知情報を受信する(ステップS201)。具体的には、メインプロセッサ用プロセススケジューラ12は、コプロセッサ用プロセススケジューラ14から、プロセスが待機状態に遷移した旨を示す状態通知情報、又は、プロセスがディスパッチされた旨を示す状態通知情報を受信する。なお、メインプロセッサ用プロセススケジューラ12は、コプロセッサ用プロセススケジューラ14から、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を同時に受信しても構わない。
続いて、メインプロセッサ用プロセススケジューラ12は、プロセス構造体125の状態情報1251を参照する。これにより、メインプロセッサ用プロセススケジューラ12は、コプロセッサ用プロセススケジューラ14側で切り替えられたプロセスと対応するメインプロセッサノード1側のプロセスが、待ち状態であるか否かを確認する(ステップS202)。
そして、メインプロセッサ用プロセススケジューラ12は、当該プロセスが待ち状態でなかった場合(ステップS202、no)、その処理を終了する。
一方、当該プロセスが待ち状態であった場合(ステップS202、yes)、メインプロセッサ用プロセススケジューラ12は、受信した状態通知情報が、プロセスが待機状態に遷移した旨を示すか、又は、プロセスがディスパッチされた旨を示すか、を確認する(ステップS203)。
そして、メインプロセッサ用プロセススケジューラ12は、プロセスが待機状態に遷移した旨を示す状態通知情報を受信していた場合(ステップS203、待機状態に遷移)、図8で示すように、メインプロセッサノード1側の対応するプロセスを処理する優先度(プロセス優先度)を通常より下げる(ステップS205)。
一方、メインプロセッサ用プロセススケジューラ12は、プロセスがディスパッチされた旨を示す状態通知情報を受信していた場合(ステップS203、ディスパッチ)、図9で示すように、メインプロセッサノード1側の対応するプロセスを処理する優先度(プロセス優先度)を上げて元に戻す(ステップS204)。
メインプロセッサ用プロセススケジューラ12は、例えば上記のような動作により、受け取った状態通知情報に応じて優先度を制御する。その結果、プロセッサコア111が実行するプロセスが制御されることになる。
次に、図7を参照して、コプロセッサ用プロセススケジューラ14が他のプロセススケジューラ(メインプロセッサ用プロセススケジューラ12と他のコプロセッサ用プロセススケジューラ14)から状態通知情報を受信した際の動作について説明する。なお、コプロセッサ用プロセススケジューラ14が他のプロセススケジューラから状態通知情報を受信した際の動作は、メインプロセッサ用プロセススケジューラ12が他のプロセススケジューラから状態通知情報を受信した際の動作と概ね同様である。
図7を参照すると、コプロセッサ用プロセススケジューラ14は、状態通知手段13により、他のプロセススケジューラ(メインプロセッサ用プロセススケジューラ12又は他のコプロセッサ用プロセススケジューラ14)からプロセスを切り替える旨を示す状態通知情報を受信する(ステップS301)。具体的には、コプロセッサ用プロセススケジューラ14は、他のプロセススケジューラから、プロセスが待機状態に遷移した旨を示す状態通知情報、又は、プロセスがディスパッチされた旨を示す状態通知情報を受信する。なお、コプロセッサ用プロセススケジューラ14は、他のプロセススケジューラから、プロセスが待機状態に遷移した旨を示す状態通知情報と、プロセスがディスパッチされた旨を示す状態通知情報と、を同時に受信しても構わない。
続いて、コプロセッサ用プロセススケジューラ14は、当該コプロセッサ用プロセススケジューラ14が有するプロセス構造体の状態情報を参照する。これにより、コプロセッサ用プロセススケジューラ14は、他のプロセススケジューラ側で切り替えられたプロセスと対応する当該コプロセッサノード2側のプロセスが、待ち状態であるか否かを確認する(ステップS302)。
そして、コプロセッサ用プロセススケジューラ14は、当該プロセスが待ち状態でなかった場合(ステップS302、no)、その処理を終了する。
一方、当該プロセスが待ち状態であった場合(ステップS302、yes)、コプロセッサ用プロセススケジューラ14は、受信した状態通知情報が、プロセスが待機状態に遷移した旨を示すか、又は、プロセスがディスパッチされた旨を示すか、を確認する(ステップS303)。
そして、コプロセッサ用プロセススケジューラ14は、プロセスが待機状態に遷移した旨を示す状態通知情報を受信していた場合(ステップS303、待機状態に遷移)、図8で示すように、当該コプロセッサノード2側の対応するプロセスを処理する優先度(プロセス優先度)を通常より下げる(ステップS305)。
一方、コプロセッサ用プロセススケジューラ14は、プロセスがディスパッチされた旨を示す状態通知情報を受信していた場合(ステップS303、ディスパッチ)、図9で示すように、コプロセッサノード2側の対応するプロセスを処理する優先度(プロセス優先度)を上げて元に戻す(ステップS304)。
コプロセッサ用プロセススケジューラ14は、例えば上記のような動作により、受け取った状態通知情報に応じて優先度を制御する。その結果、コプロセッサ用プロセススケジューラ14に応じたコプロセッサノード2上のプロセッサコア211が実行するプロセスが制御されることになる。
このように、本実施形態における並列計算機4は、プロセッサコア111で実行されるプロセスを管理するメインプロセッサ用プロセススケジューラ12と、プロセッサコア211で実行されるプロセスを管理するコプロセッサ用プロセススケジューラ14と、を有している。そして、メインプロセッサ用プロセススケジューラ12とコプロセッサ用プロセススケジューラ14とは、状態通知手段13を介して通信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、コンテキストスイッチする際に状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。これにより、不必要なプロセスのCPU(Central Processing Unit)割り当てを低減し、並列計算機4全体でのスケジューリング効率化を実現することが可能となる。また、その結果として、CPUをより効率的に利用することが可能となる。
また、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、プロセスが待機状態に遷移した旨を示す状態通知情報を送信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、コンテキストスイッチによりプロセスコンテキストを退避する際に、その旨を示す状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、上記状態通知情報を受け取った側が上記状態通知情報に応じた制御を実行することで、プロセスコンテキストが退避したプロセスと関連するプロセスの優先度を下げることが可能となる。これにより、例えば、不要なポーリング監視を実行することなどを防ぐことが可能となり、不要なプロセスが実行されることで別のプロセスの実行が妨げられることを防ぐことが可能となる。
また、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、プロセスがディスパッチされた旨を示す状態通知情報を送信可能なよう構成されている。このような構成により、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、コンテキストスイッチによりプロセスコンテキストをディスパッチする際に、その旨を示す状態通知情報を他のプロセススケジューラに対して送信することが出来る。その結果、上記状態通知情報を受け取った側が上記状態通知情報に応じた制御を実行することで、プロセスコンテキストがディスパッチされたプロセスと関連するプロセスの優先度を上げることが可能となる。これにより、例えば、必要に応じてプロセスの優先度を元に戻すことが可能となる。
なお、本実施形態においては、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、他のプロセススケジューラに対して状態通知情報を送信するとした。しかしながら、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、例えば、関連するプロセスを管理するプロセススケジューラに対して状態通知情報を送信するように構成しても構わない。
また、本実施形態においては、並列計算機4は、メインプロセッサノード1とコプロセッサノード2とを有するとした。しかしながら、本発明は上記メインプロセッサノード1とコプロセッサノード2とを有する場合に限定されず適用可能である。本発明は、例えば、別々のアクセラレータにそれぞれ得意なことをやらせる場合に、それぞれのアクセラレータで実行されるプロセスを管理するプロセススケジューラ同士で状態通知情報を送信するよう構成しても構わない。このように、関連するプロセスを制御するスケジューラ同士で状態通知情報を送信可能であれば、本発明は具体的な構成を限定せず実施可能である。本発明は、例えば、複数のコプロセッサノード2をそれぞれ管理するコプロセッサ用プロセススケジューラ同士で状態通知情報を送信するよう構成しても構わない。
また、本実施形態においては、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、状態通知情報に応じて、対応するプロセスの優先度を制御するとした。しかしながら、メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14が行う状態通知情報に応じた制御は、優先度に対する制御に限定されない。メインプロセッサ用プロセススケジューラ12、コプロセッサ用プロセススケジューラ14は、例えば、優先度を制御せずに、状態通知情報に応じたプロセスをディスパッチしないように制御するよう構成しても構わない。
また、本実施形態においては、メインプロセッサノード1とコプロセッサノード2とで、排他的に動作するプログラムを実行するとした。しかしながら、メインプロセッサノード1とコプロセッサノード2とで動作するプログラムは、必ずしも排他的に動作するプログラムに限られない。メインプロセッサノード1とコプロセッサノード2とでは、一方の動作が他方にも影響する、対応するプログラムが実行されていれば構わない。
[第2の実施形態]
本発明の第2の実施形態では、第1の実施形態で説明した並列計算機4の他の構成例について説明する。
図10を参照すると、本実施形態における並列計算機5は、メインプロセッサノード51と、1以上のコプロセッサノード52と、を有している。
メインプロセッサノード51は、メインプロセッサ511と、メインプロセッサ用プロセススケジューラ512と、を有している。また、コプロセッサノード52は、コプロセッサ521と、コプロセッサ用プロセススケジューラ522と、を有している。そして、メインプロセッサ用プロセススケジューラ512とコプロセッサ用プロセススケジューラ522とは、状態通知手段53で接続されており、通信可能なよう構成されている。
このように、本実施形態における並列計算機5は、第1の実施形態で説明した並列計算機4とほぼ同様の構成を有しており、コプロセッサ用プロセススケジューラ522をコプロセッサ用ノード52が有している点が、並列計算機4の構成と異なっている。
上記のような構成により、メインプロセッサ用プロセススケジューラ512は、コンテキストスイッチを実行する際に、状態通知手段53を用いて、コプロセッサ用プロセススケジューラ522に対して状態通知情報を送信する。また、コプロセッサ用プロセススケジューラ522は、コンテキストスイッチを実行する際に、状態通知手段53を用いて、メインプロセッサ用プロセススケジューラ512と他のコプロセッサ用プロセススケジューラ522に対して状態通知情報を送信する。
また、メインプロセッサ用プロセススケジューラ512は、他のプロセススケジューラから状態通知情報を受信すると、メインプロセッサ511で実行するプロセスの優先度を制御する。また、コプロセッサ用プロセススケジューラ522は、他のプロセススケジューラから状態通知情報を受信すると、コプロセッサ521で実行するプロセスの優先度を制御する。
このように、メインプロセッサノード51がメインプロセッサ用プロセススケジューラ512を有し、コプロセッサノード52がコプロセッサ用プロセススケジューラ522を有する場合であっても、本発明は適用可能である。つまり、メインプロセッサ用プロセススケジューラ512とコプロセッサ用プロセススケジューラ522とを有しているノードが異なっている場合でも、メインプロセッサ用プロセススケジューラ512とコプロセッサ用プロセススケジューラ522とを状態通知手段53で接続することで、状態通知情報に基づいた制御を行うことを可能とすることが出来る。その結果、メインプロセッサ用プロセススケジューラ512、コプロセッサ用プロセススケジューラ512は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。
なお、第2の実施形態における並列計算機5も、第1の実施形態における並列計算機4と同様に様々な変形例を採用することが出来る。
[第3の実施形態]
本発明の第3の実施形態では、第1の実施形態で説明した並列計算機4、第2の実施形態で説明した並列計算機5の他の構成例について説明する。本実施形態においては、ノードが1つの場合について説明する。具体的には、例えば、コプロセッサノードがメインプロセッサノード内の1つ以上のプロセッサコアで構成されている場合について説明する。
図11を参照すると、本実施形態における並列計算機6は、プロセッサ61を有している。また、プロセッサ61はプロセッサコア611を有しており、プロセッサコア611で実行するプロセスは、メインプロセッサ用プロセススケジューラ62で管理されている。さらに、プロセッサ61は、コプロセッサノードに相当するプロセッサコア612を有しており、プロセッサコア612で実行するプロセスは、コプロセッサ用プロセススケジューラ63で管理されている。そして、メインプロセッサ用プロセススケジューラ62とコプロセッサ用プロセススケジューラ63とは、状態通知手段64で接続されており、通信可能なよう構成されている。
このように、本実施形態における並列計算機6は、1つのノード上に、異なるプロセススケジューラで管理する複数のプロセッサコアを有している。このような構成であったとしても、状態通知手段64を有することで、メインプロセッサ用プロセススケジューラ62は、コンテキストスイッチを実行する際に、状態通知手段64を用いて、コプロセッサ用プロセススケジューラ63に対して状態通知情報を送信することが出来る。また、コプロセッサ用プロセススケジューラ63は、コンテキストスイッチを実行する際に、状態通知手段64を用いて、メインプロセッサ用プロセススケジューラ62と他のコプロセッサ用プロセススケジューラ63に対して状態通知情報を送信することが出来る。また、メインプロセッサ用プロセススケジューラ62は、他のプロセススケジューラから状態通知情報を受信すると、プロセッサコア611で実行するプロセスの優先度を制御することが出来る。また、コプロセッサ用プロセススケジューラ63は、他のプロセススケジューラから状態通知情報を受信すると、プロセッサコア612で実行するプロセスの優先度を制御することが出来る。
その結果、メインプロセッサ用プロセススケジューラ62、コプロセッサ用プロセススケジューラ63は、他のプロセスの処理状況に応じて、関連するプロセスの優先度を制御することが可能となる。このように、本発明は、1つのノードのみを有する場合でも適用可能である。
なお、第3の実施形態における並列計算機6も、第1の実施形態における並列計算機4、第2の実施形態における並列計算機5、と同様に様々な変形例を採用することが出来る。
[第4の実施形態]
本発明の第4の実施形態では、関連するプロセスを複数の処理部(第1のプロセス処理部71と第2のプロセス処理部73)で実行する並列処理システム7について説明する。本実施形態においては、並列処理システム7の構成の概要について説明する。
図12を参照すると、本実施形態における並列処理システム7は、第1のプロセス処理部71と、第1のプロセススケジューラ72と、第2のプロセス処理部73と、第2のプロセススケジューラ74と、を有している。
第1のプロセス処理部71は、所定のプロセスを実行するよう構成されている。また、第1のプロセススケジューラ72は、第1のプロセス処理部71で実行されるプロセスの処理状況を検出して管理するよう構成されている。
第2のプロセス処理部73は、第1のプロセス処理部71で実行されるプロセスと関連するプロセスを実行するよう構成されている。また、第2のプロセススケジューラ74は、第2のプロセス処理部73で実行されるプロセスの処理状況を検出して管理するよう構成されている。
また、第1のプロセススケジューラ72と第2のプロセススケジューラ74とは、互いに通信可能なよう構成されている。
このような構成により、第1のプロセススケジューラ72は、第1のプロセス処理部71の処理状況を検出する。そして、第1のプロセススケジューラ72は、検出した第1のプロセス処理部71の処理状況を、第2のプロセススケジューラ74に対して送信する。また、第2のプロセススケジューラ74は、第2のプロセス処理部73の処理状況を検出する。そして、第2のプロセススケジューラ74は、検出した第2のプロセス処理部73の処理状況を、第1のプロセススケジューラ72に対して送信する。
また、第1のプロセススケジューラ72は、第2のプロセススケジューラ74から受信した第2のプロセス処理部73の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第1のプロセス処理部71の動作を制御する。また、第2のプロセススケジューラ74は、第1のプロセススケジューラ72から受信した第1のプロセス処理部71の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する第2のプロセス処理部73の動作を制御する。
このように、本実施形態における並列処理システム7は、第1のプロセス処理部71を管理する第1のプロセススケジューラ72と、第2のプロセス処理部73を管理する第2のプロセススケジューラ74と、を有している。また、第1のプロセススケジューラ72と第2のプロセススケジューラ74とは、互いに通信可能なよう構成されている。このような構成により、第1のプロセススケジューラ72は、検出した処理状況を第2のプロセススケジューラ74に対して送信することが出来る。また、第2のプロセススケジューラ74は、検出した処理状況を第1のプロセススケジューラ72に対して送信することが出来る。その結果、第1のプロセススケジューラ72は、第2のプロセス処理部73の処理状況に応じて、関連するプロセスを実行する第1のプロセス処理部71の動作を制御することが出来る。また、第2のプロセススケジューラ74は、第1のプロセス処理部71の処理状況に応じて、関連するプロセスを実行する第2のプロセス処理部73の動作を制御することが出来る。これにより、不必要なプロセスが割り当てられることを防止することが可能となり、並列処理システム7全体でのスケジューリング効率化を実現することが可能となる。
また、上述した並列処理システム7は、情報処置装置に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、関連するプロセスを複数の処理部で実行し、処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、ことを実現させるためのプログラムである。
また、上述した並列処理システム7が作動することにより実行される並列処理方法は、関連するプロセスを複数の処理部で実行する並列処理方法であって、複数の処理部で実行するプロセスは複数のスケジューラで管理されており、自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する、という方法である。
上述した構成を有する、プログラム、又は、並列処理方法、の発明であっても、上記並列処理システム7と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における並列処理システムなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
関連するプロセスを複数の処理部で実行する並列処理システムであって、
所定のプロセスを実行する第1のプロセス処理部と、
前記第1のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第1のプロセススケジューラと、
前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第2のプロセス処理部と、
前記第2のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第2のプロセススケジューラと、を有し、
前記第1のプロセススケジューラと前記第2のプロセススケジューラとは、互いに通信可能なよう構成されており、
前記第1のプロセススケジューラは、前記第2のプロセススケジューラが検出した前記第2のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御し、
前記第2のプロセススケジューラは、前記第1のプロセススケジューラが検出した前記第1のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
並列処理システム。
(付記2)
付記1に記載の並列処理システムであって、
前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
並列処理システム。
(付記3)
付記1又は2に記載の並列処理システムであって、
前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの前記第2の処理部で処理する優先度を下げる制御を行う
並列処理システム。
(付記4)
付記1乃至3の何れかに記載の並列処理システムであって、
前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスコンテキストを復元する際に、プロセスが割り当てられた旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、割り当てられたプロセスと関連するプロセスの前記第2の処理部で処理する優先度を上げる制御を行う
並列処理システム。
(付記5)
付記1乃至4の何れかに記載の並列処理システムであって、
前記第2のプロセススケジューラは、受信した前記状態通知情報が示すプロセスと関連するプロセスが前記第1のプロセス処理部の処理待ち状態である場合に、当該処理待ち状態のプロセスを実行する前記第2のプロセス処理部の動作を制御する
並列処理システム。
(付記6)
付記1乃至5の何れかに記載の並列処理システムであって、
オペレーションシステムが組み込まれ、前記第1のプロセス処理部と、前記第1のプロセススケジューラと、前記第2のプロセススケジューラと、を有する第1のノードと、
オペレーティングシステムが組み込まれておらず、前記第2のプロセス処理部を有する第2のノードと、
を有し、
前記第2のプロセス処理部は、前記第1のノードが有する前記第2のプロセススケジューラからの制御に基づいてプロセスを実行する
並列処理システム。
(付記7)
付記6に記載の並列処理システムであって、
前記第2のプロセススケジューラは、前記第2のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第1のプロセススケジューラに送信するよう構成され、
前記第1のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御する
並列処理システム。
(付記8)
関連するプロセスを複数の処理部で実行する並列処理方法であって、
前記複数の処理部で実行するプロセスは複数のスケジューラで管理されており、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、
各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
(付記9)
付記8に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
並列処理方法。
(付記9−1)
付記8又は9に記載の並列処理方法であって、
各スケジューラは、自己が管理する処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を他のプロセススケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの優先度を下げる制御を行う
並列処理方法。
(付記9−2)
所定のプロセスを実行する第1のプロセス処理部と、
前記第1のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第1のプロセススケジューラと、
前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第2のプロセス処理部と、
前記第2のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第2のプロセススケジューラと、を有する情報処理装置で実現される並列処理方法であって、
前記第1のプロセススケジューラと前記第2のプロセススケジューラとは、互いに通信し、
前記第1のプロセススケジューラは、前記第2のプロセススケジューラが検出した前記第2のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御し、
前記第2のプロセススケジューラは、前記第1のプロセススケジューラが検出した前記第1のプロセス処理部の処理状況に応じて、前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
並列処理方法。
(付記10)
関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
ことを実現させるためのプログラム。
(付記11)
請求項10に記載のプログラムであって、
各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
プログラム。
(付記11−1)
所定のプロセスを実行する第1のプロセス処理部と、
前記第1のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第1のプロセススケジューラと、
前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第2のプロセス処理部と、
前記第2のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第2のプロセススケジューラと、を有する情報処理装置において、
前記第1のプロセススケジューラと前記第2のプロセススケジューラとを互いに通信させ、
前記第1のプロセススケジューラは、前記第2のプロセススケジューラが検出した前記第2のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御し、
前記第2のプロセススケジューラは、前記第1のプロセススケジューラが検出した前記第1のプロセス処理部の処理状況に応じて、前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
ことを実現させるためのプログラム。
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
1、51 メインプロセッサノード
11、511 メインプロセッサ
111、211、611、612 プロセッサコア
12、512、62 メインプロセッサ用プロセススケジューラ
121 優先度制御手段
122 スケジューリングポリシ
123 プロセススイッチ手段
124 プロセスコンテキスト
125 プロセス構造体
1251 状態情報
13、53、64 状態通知手段
14、522、63 コプロセッサ用プロセススケジューラ
141 優先度制御手段
15 ノード間通信手段
2、52 コプロセッサノード
21、521 コプロセッサ
22 ノード間通信手段
3 通信バス
4、5、6 並列計算機
61 プロセッサ
7 並列処理システム
71 第1のプロセス処理部
72 第1のプロセススケジューラ
73 第2のプロセス処理部
74 第2のプロセススケジューラ

Claims (8)

  1. 関連するプロセスを複数の処理部で実行する並列処理システムであって、
    所定のプロセスを実行する第1のプロセス処理部と、
    前記第1のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第1のプロセススケジューラと、
    前記第1のプロセス処理部で実行されるプロセスと関連するプロセスを実行する第2のプロセス処理部と、
    前記第2のプロセス処理部で実行されるプロセスの処理状況を検出して管理する第2のプロセススケジューラと、を有し、
    前記第1のプロセススケジューラと前記第2のプロセススケジューラとは、互いに通信可能なよう構成されており、
    前記第1のプロセススケジューラは、前記第2のプロセススケジューラが検出した前記第2のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御し、
    前記第2のプロセススケジューラは、前記第1のプロセススケジューラが検出した前記第1のプロセス処理部の処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御し、
    前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
    前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第2のプロセス処理部の動作を制御する
    並列処理システム。
  2. 請求項1に記載の並列処理システムであって、
    前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスコンテキストを退避する際に、プロセスが待機状態に遷移した旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
    前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、待機状態に遷移したプロセスと関連するプロセスの前記第2のプロセス処理部で処理する優先度を下げる制御を行う
    並列処理システム。
  3. 請求項1又は2に記載の並列処理システムであって、
    前記第1のプロセススケジューラは、前記第1のプロセス処理部で実行するプロセスコンテキストを復元する際に、プロセスが割り当てられた旨を示す状態通知情報を前記第2のプロセススケジューラに送信するよう構成され、
    前記第2のプロセススケジューラは、受信した前記状態通知情報に基づいて、割り当てられたプロセスと関連するプロセスの前記第2のプロセス処理部で処理する優先度を上げる制御を行う
    並列処理システム。
  4. 請求項1乃至の何れかに記載の並列処理システムであって、
    前記第2のプロセススケジューラは、受信した前記状態通知情報が示すプロセスと関連するプロセスが前記第1のプロセス処理部の処理待ち状態である場合に、当該処理待ち状態のプロセスを実行する前記第2のプロセス処理部の動作を制御する
    並列処理システム。
  5. 請求項1乃至の何れかに記載の並列処理システムであって、
    オペレーションシステムが組み込まれ、前記第1のプロセス処理部と、前記第1のプロセススケジューラと、前記第2のプロセススケジューラと、を有する第1のノードと、
    オペレーティングシステムが組み込まれておらず、前記第2のプロセス処理部を有する第2のノードと、
    を有し、
    前記第2のプロセス処理部は、前記第1のノードが有する前記第2のプロセススケジューラからの制御に基づいてプロセスを実行する
    並列処理システム。
  6. 請求項に記載の並列処理システムであって、
    前記第2のプロセススケジューラは、前記第2のプロセス処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を前記第1のプロセススケジューラに送信するよう構成され、
    前記第1のプロセススケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する前記第1のプロセス処理部の動作を制御する
    並列処理システム。
  7. 関連するプロセスを複数の処理部で実行する並列処理方法であって、
    前記複数の処理部で実行するプロセスは複数のスケジューラで管理されており、
    自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信し、
    各スケジューラは、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御し、
    各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
    各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
    並列処理方法。
  8. 関連するプロセスを複数の処理部で実行し、前記処理部で実行するプロセスは複数のスケジューラで管理されている情報処理装置に、
    自己のスケジューラが管理するプロセスの処理状況を他のスケジューラに通信させ、
    各スケジューラに、受信した処理状況に応じて、当該処理状況が示すプロセスと関連するプロセスを実行する処理部の動作を制御させ、
    各スケジューラは、自己が管理する処理部で実行するプロセスを切り替える際に、当該プロセスを切り替える旨を示す状態通知情報を他のスケジューラに送信し、
    各スケジューラは、受信した前記状態通知情報に基づいて、当該状態通知情報が示すプロセスと関連するプロセスを実行する処理部の動作を制御する
    ことを実現させるためのプログラム。
JP2015059545A 2015-03-23 2015-03-23 並列計算装置 Active JP6079805B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2015059545A JP6079805B2 (ja) 2015-03-23 2015-03-23 並列計算装置
PCT/JP2015/006492 WO2016151654A1 (ja) 2015-03-23 2015-12-28 並列処理システム
EP15886211.0A EP3276489B1 (en) 2015-03-23 2015-12-28 Parallel processing system
KR1020177026593A KR101818410B1 (ko) 2015-03-23 2015-12-28 병렬 처리 시스템
US15/554,153 US10162675B2 (en) 2015-03-23 2015-12-28 Parallel processing system
CN201580078148.XA CN107408061B (zh) 2015-03-23 2015-12-28 并行处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015059545A JP6079805B2 (ja) 2015-03-23 2015-03-23 並列計算装置

Publications (2)

Publication Number Publication Date
JP2016181016A JP2016181016A (ja) 2016-10-13
JP6079805B2 true JP6079805B2 (ja) 2017-02-15

Family

ID=56977117

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015059545A Active JP6079805B2 (ja) 2015-03-23 2015-03-23 並列計算装置

Country Status (6)

Country Link
US (1) US10162675B2 (ja)
EP (1) EP3276489B1 (ja)
JP (1) JP6079805B2 (ja)
KR (1) KR101818410B1 (ja)
CN (1) CN107408061B (ja)
WO (1) WO2016151654A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956220B2 (en) 2017-06-04 2021-03-23 Apple Inc. Scheduler for amp architecture using a closed loop performance and thermal controller

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06301655A (ja) * 1993-04-14 1994-10-28 Hitachi Ltd 分散処理システム
JP3573546B2 (ja) 1995-10-27 2004-10-06 富士通株式会社 並列計算機における並列プロセススケジューリング方法および並列計算機用処理装置
JPH1021094A (ja) * 1996-07-08 1998-01-23 Mitsubishi Electric Corp リアルタイム制御方式
JP3730740B2 (ja) * 1997-02-24 2006-01-05 株式会社日立製作所 並列ジョブ多重スケジューリング方法
US20020184290A1 (en) * 2001-05-31 2002-12-05 International Business Machines Corporation Run queue optimization with hardware multithreading for affinity
US7542473B2 (en) * 2004-12-02 2009-06-02 Nortel Networks Limited High-speed scheduling apparatus for a switching node
JP2008108075A (ja) 2006-10-25 2008-05-08 Matsushita Electric Ind Co Ltd タスク切替え制御方法及びコンピュータシステム
CN100570566C (zh) * 2007-12-13 2009-12-16 中兴通讯股份有限公司 一种异构多核间协调调度的方法及异构多核系统
US9367350B2 (en) * 2008-10-03 2016-06-14 Microsoft Technology Licensing, Llc Meta-scheduler with meta-contexts
JP5453825B2 (ja) 2009-02-05 2014-03-26 日本電気株式会社 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法
JP2013061700A (ja) 2011-09-12 2013-04-04 Sony Corp 情報処理装置、情報処理方法、記録媒体および情報処理システム
US9122522B2 (en) * 2011-12-14 2015-09-01 Advanced Micro Devices, Inc. Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US8893140B2 (en) 2012-01-24 2014-11-18 Life Coded, Llc System and method for dynamically coordinating tasks, schedule planning, and workload management
CN103761106A (zh) 2014-02-07 2014-04-30 张战 流程的控制方法及流程引擎

Also Published As

Publication number Publication date
CN107408061B (zh) 2018-10-19
KR20170117594A (ko) 2017-10-23
EP3276489A1 (en) 2018-01-31
EP3276489B1 (en) 2020-11-18
WO2016151654A1 (ja) 2016-09-29
US10162675B2 (en) 2018-12-25
EP3276489A4 (en) 2018-08-01
US20180074853A1 (en) 2018-03-15
KR101818410B1 (ko) 2018-02-21
JP2016181016A (ja) 2016-10-13
CN107408061A (zh) 2017-11-28

Similar Documents

Publication Publication Date Title
US11128555B2 (en) Methods and apparatus for SDI support for automatic and transparent migration
EP3468151B1 (en) Acceleration resource processing method and apparatus
WO2009133669A1 (ja) 仮想計算機制御装置、仮想計算機制御方法及び仮想計算機制御プログラム
WO2017179537A1 (ja) ソフトウェア更新制御装置、ソフトウェア更新制御システム、ソフトウェア更新制御方法、及び、ソフトウェア更新制御プログラムが格納された記録媒体
US9389923B2 (en) Information processing device and method for controlling information processing device
JP2020048045A (ja) スイッチ装置、スイッチング方法及びプログラム
KR20140061545A (ko) 통신 디바이스의 하드웨어 자원들을 관리하기 위한 가상화 관리 방법 및 관련 장치
WO2019056771A1 (zh) 分布式存储系统升级管理的方法、装置及分布式存储系统
JP2006285810A (ja) クラスタ構成コンピュータシステム及びその系リセット方法
WO2016033755A1 (zh) 任务处理装置、电子设备及方法
JP6955163B2 (ja) 情報処理装置、情報処理方法及びプログラム
US9367349B2 (en) Multi-core system and scheduling method
US20140149994A1 (en) Parallel computer and control method thereof
JP6079805B2 (ja) 並列計算装置
US20130185726A1 (en) Method for Synchronous Execution of Programs in a Redundant Automation System
US9436505B2 (en) Power management for host with devices assigned to virtual machines
JP2007206955A (ja) 情報処理装置および方法、プログラム、並びに記録媒体
KR101271211B1 (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
WO2021002054A1 (ja) 計算機システム及びプログラム実行方法
KR20130104958A (ko) 다중 운영체제들을 실행하는 장치 및 방법
JP6468066B2 (ja) 並列演算装置、並列演算システム、集合通信方法及び集合通信プログラム
JP2010020683A (ja) スレッド制御方法およびスレッド制御装置ならびにリアルタイムシステム
US11936514B2 (en) Processing apparatus, processing system, processing method and processing program
JP4877317B2 (ja) 情報処理装置、割り込み制御方法
WO2021056277A1 (zh) 一种执行程序的方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160721

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161122

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20161205

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: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170102

R150 Certificate of patent or registration of utility model

Ref document number: 6079805

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150