(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010508
(43)【公開日】2024-01-24
(54)【発明の名称】管理装置、演算処理装置、演算処理装置の負荷分散方法及びプログラム
(51)【国際特許分類】
G06F 9/50 20060101AFI20240117BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022111887
(22)【出願日】2022-07-12
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】早野 真史
(72)【発明者】
【氏名】本田 巧
(72)【発明者】
【氏名】福本 尚人
(57)【要約】
【課題】タスクの並列処理を実行する複数の演算処理装置で共有されるタスクリストへのアクセスの待機時間を削減する。
【解決手段】チームAの代表ノードがタスクリスト32にアクセスし、チームAのチームタスクリスト34Aを生成し(1)、チームAのチームタスクリスト34Aの生成が完了すると、チームBの代表ノードがタスクリスト32にアクセスし、チームBのチームタスクリスト34Bを生成し(2B)、これと同時に、チームAでは、各メンバがチームタスクリスト34Aにアクセスし、各メンバのメンバタスクリスト36Aを生成し(2A)、チームBのチームタスクリスト34Bの生成が完了すると、チームBでは、各メンバがチームタスクリスト34Bにアクセスし、各メンバのメンバタスクリスト36Bを生成する(3)。
【選択図】
図11
【特許請求の範囲】
【請求項1】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類する分類部と、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択する選択部と、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する指示部と、
を含む管理装置。
【請求項2】
前記分類部は、前記複数のタスクを実行するために確保された前記複数の演算処理装置の識別情報を取得し、予め指定された各演算処理装置群に属する演算処理装置の数に基づいて、前記複数の演算処理装置を前記複数の演算処理装置群に分類する請求項1に記載の管理装置。
【請求項3】
前記選択部は、前記識別情報が数字の場合、前記各演算処理装置群に属する演算処理装置のうち、前記識別情報が最小又は最大の演算処理装置を前記代表の演算処理装置として選択する請求項2に記載の管理装置。
【請求項4】
前記第1タスクリストに含まれるタスクを前記演算処理装置群の数で分割して、前記第1タスクリストのうち、前記複数の演算処理装置群の各々が担当するタスクの範囲を決定する決定部を含み、
前記指示部は、前記代表の演算処理装置に、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成するように指示する
請求項1に記載の管理装置。
【請求項5】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置のいずれかの演算処理装置であって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成する生成部と、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知する通知部と、
前記第3タスクリストに含まれるタスクを実行する実行部と、
を含む演算処理装置。
【請求項6】
前記生成部は、前記第1タスクリストにロックをかけたうえで前記第1タスクリストにアクセスし、前記第2タスクリストの生成が完了すると、前記第1タスクリストのロックを解除する請求項5に記載の演算処理装置。
【請求項7】
前記生成部は、前記第1タスクリストからタスクの情報を1つずつ取得して前記第2タスクリストに追加していき、取得したタスクの情報の合計サイズが、前記演算処理装置群に含まれる演算処理装置の数に応じた閾値を超えた段階で前記タスクの情報の取得を終了することにより、前記第2タスクリストを生成する請求項5又は請求項6に記載の演算処理装置。
【請求項8】
前記生成部は、前記管理装置から、演算処理装置群の代表の演算処理装置の識別情報を通知され、かつ前記代表の演算処理装置から前記第2タスクリストを生成したことを通知された場合、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成する請求項5又は請求項6に記載の演算処理装置。
【請求項9】
前記生成部は、前記管理装置から、前記第1タスクリストのうち、自装置が属する演算処理装置群が担当するタスクの範囲を通知された場合、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成する請求項5に記載の演算処理装置。
【請求項10】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類し、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択し、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する
ことを含む処理をコンピュータが実行する演算処理装置の負荷分散方法。
【請求項11】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置の負荷分散方法であって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成し、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知し、
前記第3タスクリストに含まれるタスクを実行する
ことを含む処理をコンピュータが実行する演算処理装置の負荷分散方法。
【請求項12】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類し、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択し、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する
ことを含む処理をコンピュータに実行させるための演算処理装置の負荷分散プログラム。
【請求項13】
複数のタスクを負荷分散して並列に実行する複数の演算処理装置の負荷分散プログラムであって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成し、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知し、
前記第3タスクリストに含まれるタスクを実行する
ことを含む処理をコンピュータに実行させるための演算処理装置の負荷分散プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、管理装置、演算処理装置、演算処理装置の負荷分散方法、及び演算処理装置の負荷分散プログラムに関する。
【背景技術】
【0002】
HPC(high-performance computing)により、タスクを複数のノードで負荷分散して実行することにより、大規模なデータに対する処理を高速に行う技術が提案されている。例えば、創薬研究の初期段階に行われるスクリーニングでは、極めて多数の化合物群を扱わなければならない。そこで、HPCを活用したバーチャルスクリーニングの技術が提案されている。
【0003】
また、複数のノードでの負荷分散に関する技術として、ループを分割して各ノードプロセッサに並列実行させる並列計算機システムが提案されている。このシステムでは、ホストプロセッサは、プログラム中に記述された原始ループについて、ノードプロセッサ数によって割り切れる原始ループのループ長に満たない最大の整数値を被除数とし、ノードプロセッサ数を除数とする除算を行って分割ループ長を求める。そして、この分割ループ長を有するノードプロセッサ数と同数の分割ループを原始ループから生成し、これら分割ループの実行プロセスをそれぞれノードプロセッサへ割り当てるとともに、原始ループの残余の実行プロセスをホストプロセッサ自身へ割り当てる。
【0004】
また、反復命令シーケンスをサブタスクに配列し、それらのサブタスクをプロセッサに割り付けることによりこれを実行する並列処理装置が提案されている。分割および割り付けは、プロセッサ間のデータの競合を最小化するように、またプロセッサに対するデータの局所性を最大化するように行われる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11-053328
【特許文献2】特開平05-298272
【非特許文献】
【0006】
【非特許文献1】"VirtualFlow",[online],[令和4年6月29日検索],インターネット<https://docs.virtual-flow.org/documentation/-LdE8RH9UN4HKpckqkX3/>
【発明の概要】
【発明が解決しようとする課題】
【0007】
例えば、上記のHPCを活用したバーチャルスクリーニングの技術では、スクリーニング対象の化合物(リガンド)の情報は、単一の共有ファイルであるタスクリストで管理されている。そのため、並列処理を実行する複数のノードの各々は、自ノードで実行するタスク用のサブタスクリストを共有ファイルから生成する必要がある。共有ファイルへのアクセスは競合を避ける必要があるため、各ノードによるサブタスクリストの生成は逐次処理となる。そのため、並列処理を実行するノード数の増加に伴い、共有ファイルへのアクセスの待機時間が増加し、HPCでのタスクの実行において、各ノードによるサブタスクリストの生成がオーバーヘッドとなる。
【0008】
また、上記の複数のノードでの負荷分散に関する技術は、プログラム実行時のループ処理をプロセッサに効果的に分割する点に着目したものであり、共有ファイルへのアクセスの待機時間が増加するという問題を解消することはできない。
【0009】
一つの側面として、開示の技術は、タスクの並列処理を実行する複数の演算処理装置で共有されるタスクリストへのアクセスの待機時間を削減することを目的とする。
【課題を解決するための手段】
【0010】
一つの態様として、開示の技術は、複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類し、各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択する。そして、開示の技術は、前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知する。また、開示の技術は、前記代表の演算処理装置に、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示する。また、開示の技術は、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知する。また、開示の技術は、前記他の演算処理装置の各々に、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する。
【発明の効果】
【0011】
一つの側面として、タスクの並列処理を実行する複数の演算処理装置で共有されるタスクリストへのアクセスの待機時間を削減することができる、という効果を有する。
【図面の簡単な説明】
【0012】
【
図1】バーチャルスクリーニングを説明するための図である。
【
図2】HPCを活用したバーチャルスクリーニングの従来技術を説明するための図である。
【
図3】HPCを活用したバーチャルスクリーニングの従来技術を説明するための図である。
【
図4】HPCを活用したバーチャルスクリーニングの従来技術を説明するための図である。
【
図5】HPCを活用したバーチャルスクリーニングの従来技術を説明するための図である。
【
図6】HPCを活用したバーチャルスクリーニングの従来技術の問題点を説明するための図である。
【
図7】第1及び第2実施形態に係る負荷分散システムの概略構成を示すブロック図である。
【
図8】第1実施形態に係る管理装置の機能ブロック図である。
【
図9】第1実施形態に係る管理装置の処理を説明するための図である。
【
図10】第1及び第2実施形態に係るノードの機能ブロック図である。
【
図11】第1実施形態におけるタスクリストへのアクセスを説明するための図である。
【
図12】管理装置として機能するコンピュータの概略構成を示すブロック図である。
【
図13】ノードとして機能するコンピュータの概略構成を示すブロック図である。
【
図14】第1実施形態に係る管理処理の一例を示すフローチャートである。
【
図15】第1実施形態に係る代表ノード処理の一例を示すフローチャートである。
【
図16】第1及び第2実施形態に係るメンバ処理の一例を示すフローチャートである。
【
図17】第1実施形態の効果を説明するための図である。
【
図18】第2実施形態に係る管理装置の機能ブロック図である。
【
図19】第2実施形態に係る管理装置の処理を説明するための図である。
【
図20】第2実施形態におけるタスクリストへのアクセスを説明するための図である。
【
図21】第2実施形態に係る管理処理の一例を示すフローチャートである。
【
図22】第2実施形態に係る代表ノード処理の一例を示すフローチャートである。
【
図23】第2実施形態の効果を説明するための図である。
【発明を実施するための形態】
【0013】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。以下の各実施形態では、バーチャルスクリーニングに開示の技術を適用する例について説明する。
【0014】
まず、各実施形態を説明する前に、バーチャルスクリーニング、上記のHPC(high-performance computing)を活用したバーチャルスクリーニングの従来技術、及び従来技術の問題点について説明する。
【0015】
バーチャルスクリーニングとは、対象の物質(標的タンパク質)と結合するリガンドを、コンピュータによる計算で、大量の候補の中から探すことである。具体的には、
図1に示すように、コンピュータは、ライブラリに記憶された複数のリガンドの情報に基づいて、各リガンドと対象の物質とが結合する度合いを示すスコアを、例えば、対象の物質に合う形状及び性質を持っているか否か等により計算する。コンピュータは、スコアのランキング順にリガンドをユーザに提示する。リガンドと対象の物質とが結合するか否かを実験的に評価するには、一つのリガンドにつき高額な費用及び時間がかかる。さらに、対象の物質と結合するリガンドを低確率でしか見つけることができない場合がある。バーチャルスクリーニングによれば、コンピュータでのシミュレーションにより、高速なスクリーニングが可能である。
【0016】
実際のリガンドのライブラリは、複数のリガンドがひとまとまりになったリガンド群として、一つのファイルで管理されている。例えば、
図2の左図に示すリガンドのライブラリでは、一行が複数のリガンドのまとまり(リガンド群)を表しており、1行目の「BACECC_0000 2」は一つのリガンド群に二つのリガンドが含まれていることを表す。
【0017】
バーチャルスクリーニングにHPCを活用する場合、
図2に示すように、リガンド群を各ノードに分配する。上記のHPCを活用したバーチャルスクリーニングの従来技術は、
図2に示すようなリガンドのライブラリの一つのリガンド群(リストの一行に相当)を一つのタスクとしたタスクリストを、共有ファイルとして共有ファイルシステムで管理している。
図3に示すように、各ノードは、そのタスクリストにアクセスし、自ノードで処理するタスクに関するサブタスクリストを生成してローカルストレージに記憶し、そのサブタスクリストに基づいて各タスクを実行する。これにより、複数のノードによる負荷分散が実現される。
【0018】
具体的には、各ノードは、
図4に示すように、共有ファイルシステムに記憶されたタスクリストへアクセスする。アクセスの競合を避けるため、一つのノードに対してのみタスクリストへのアクセスが許可される。ノードは、タスクリストにアクセスできた場合には、タスクリストをロックし、他のノードからのアクセスを拒否するように設定する。そして、ノードは、タスクリストから一行ずつ抜き出して、自ノードのサブタスクリストに追加する。ノードは、サブタスクリストに追加したタスクの合計サイズが閾値を超えた場合、又は、自ノードのサブタスクリストの容量までタスクが追加された時点で、サブタスクリストへのタスクの追加を終了する。例えば、タスクのサイズをリガンドの個数で表し、合計サイズの閾値を30とした場合、
図5に示すように、3行目のタスクまで追加した時点で、追加したタスクの合計サイズが閾値を超えるため、この段階でタスクの追加を終了する。その後、ノードは、タスクリストのロックを解除する。
【0019】
すなわち、
図6に示すように、特定のノードがタスクリストにアクセスしている間は、タスクリストはロック状態になるため、他のノードからアクセスできない。その結果、他のノードについては、アクセス待機時間が発生する。特にHPCでは、ノード数が数万になる場合もあるなど、ノード数が膨大であるため、待機時間の発生頻度も高まる。
【0020】
そこで、以下の各実施形態では、複数のノードのまとまりをノード群とし、そのノード群の代表を決定し、代表が共有ファイルであるタスクリストにアクセスすることで、タスクリストへのアクセスの待機時間を削減する。以下、各実施形態について説明する。
【0021】
<第1実施形態>
図7に、第1実施形態に係る負荷分散システム100の概略構成を示す。
図7に示すように、第1実施形態に係る負荷分散システム100は、管理装置10と、複数のタスクを負荷分散して並列に実行する複数のノード20と、共有ファイルであるタスクリスト32を管理する共有ファイルシステム30とを含む。なお、ノード20は、開示の技術の「演算処理装置」の一例である。
【0022】
図8に、管理装置10の機能ブロック図を示す。
図8に示すように、管理装置10は、機能的には、分類部12と、選択部14と、指示部16とを含む。
【0023】
分類部12は、複数のノードを複数のノード群に分類する。以下では、各ノード群を「チーム」、チームに属するノードを「メンバ」ともいう。具体的には、分類部12は、HPCのプログラムを実行するために確保された全ノードの識別情報(以下、「ノードID」という)のリスト(以下、「IDリスト」という)を取得する。分類部12は、予めユーザにより指定された、各チームに属するメンバ数に基づいて、全ノードを複数のチームに分類する。
【0024】
例えば、
図9に示すように、分類部12は、IDリストの一行目から順にメンバ数分を一つのチームとし、各チームに識別情報(以下、「チームID」という)を付与する。
図9の例では、指定されたメンバ数が3であり、IDリストに、ノードID={0,1,2,3,4,5}が含まれている。したがって、分類部12は、ノードID={0,1,2}のノード20を一つのチームとして、例えば、チームID=Aを付与する。また、分類部12は、ノードID={3,4,5}のノード20を一つのチームとして、例えば、チームID=Bを付与する。以下では、ノードID=iのノードを「ノードi」、チームID=jのチームを「チームj」とも表記する。
【0025】
選択部14は、各チームに属するノードから、代表ノードを選択する。例えば、選択部14は、ノードIDが数字の場合、各チームに属するノード20のうち、ノードIDが最小のノードを代表ノードとして選択する。なお、代表ノードの選択方法はこれに限定されず、各チームに属するノード20のうち、ノードIDが最大のノードを代表ノードとして選択してもよいし、ランダムに選択してもよい。
図9は、ノードIDが最小のノードを代表ノードとして選択した例であり、チームAの代表ノードはノード0、チームBの代表ノードはノード3である。
【0026】
指示部16は、代表ノードに、チームの代表であること、及び代表ノードが属するチームに属する他のメンバのノードIDを通知する。また、指示部16は、代表ノードに、複数のタスクに関する情報が記憶された共有ファイルであるタスクリスト32から、チームに属するメンバが実行するタスクの情報を取得してチームタスクリストを生成するように指示する。また、指示部16は、代表ノード以外の他のメンバの各々に、そのメンバが属するチームの代表ノードのノードIDを通知する。また、指示部16は、各メンバに、代表ノードが生成したチームタスクリストから、各メンバが実行するタスクの情報を取得してサブタスクリストを生成するように指示する。
【0027】
図10に、ノード20の機能ブロック図を示す。
図10に示すように、ノード20は、機能的には、生成部22と、通知部24と、実行部26とを含む。
【0028】
生成部22は、管理装置10から、チームの代表であること、及びチームに属する他のメンバのノードIDを通知された場合、タスクリスト32からチームタスクリストを生成する。具体的には、生成部22は、タスクリスト32にアクセス可能な場合、タスクリスト32にロックをかけたうえでタスクリスト32にアクセスする。そして、生成部22は、タスクリスト32からタスクの情報を一つずつ(一行ずつ)抜き出してチームタスクリストに追加していく。生成部22は、取得したタスクの情報の合計サイズが、チームのメンバ数に応じた閾値を超えた段階でタスクの情報の取得を終了することにより、チームタスクリストを生成する。生成部22は、チームタスクリストの生成が完了すると、タスクリスト32のロックを解除する。
【0029】
また、生成部22は、ノード20が代表ノードとして機能する場合、生成したチームタスクリストから、自ノードが実行するタスクの情報を取得してメンバタスクリストを生成する。また、生成部22は、ノード20が代表ノード以外のメンバとして機能する場合、チームタスクリストから、自ノードが実行するタスクの情報を取得してメンバタスクリストを生成する。代表ノード以外のメンバは、代表ノードの通知部24(詳細は後述)により、チームタスクリストを生成したことを通知された場合に、自ノードのメンバタスクリストを生成する。チームタスクリストは、同一のチームに属するメンバで共有される共有ファイルである。そのため、代表ノードがタスクリスト32にアクセスする場合と同様に、各メンバの生成部22は、チームタスクリストをロックした上でアクセスし、メンバタスクリストの生成が完了すると、チームタスクリストのロックを解除する。
【0030】
通知部24は、ノード20が代表ノードとして機能する場合において、生成部22によるチームタスクリストの生成が完了すると、チームに属する他のメンバに、チームタスクリストを生成したことを通知する。なお、IPアドレス等の通知先は、メンバのノードIDから特定可能であるものとする。
【0031】
図11を参照して、2つのチーム(チームA及びチームB)に関するタスクリスト32へのアクセスについて説明する。まず、チームAの代表ノードがタスクリスト32にアクセスし、チームAのチームタスクリスト34Aを生成する(
図11中の(1))。この間、チームBは、タスクリスト32へのアクセスは待機状態である。チームAのチームタスクリスト34Aの生成が完了すると、チームBの代表ノードがタスクリスト32にアクセスし、チームBのチームタスクリスト34Bを生成する(
図11中の(2B))。これと同時に、チームAでは、各メンバがチームタスクリスト34Aにアクセスし、各メンバのメンバタスクリスト36Aを生成する(
図11中の(2A))。そして、チームBのチームタスクリスト34Bの生成が完了すると、チームBでは、各メンバがチームタスクリスト34Bにアクセスし、各メンバのメンバタスクリスト36Bを生成する(
図11中の(3))。
【0032】
以下では、チームタスクリスト34A及び34Bを区別なく説明する場合には、「チームタスクリスト34」と表記し、メンバタスクリスト36A及び36Bを区別なく説明する場合には、「メンバタスクリスト36」と表記する。なお、タスクリスト32は、開示の技術の「第1タスクリスト」の一例であり、チームタスクリスト34は、開示の技術の「第2タスクリスト」の一例であり、メンバタスクリスト36は、開示の技術の「第3タスクリスト」の一例である。
【0033】
実行部26は、生成部22によるメンバタスクリスト36の生成が完了すると、メンバタスクリスト36に含まれるタスク、すなわちリガンドのスクリーニングを実行する。具体的には、実行部26は、メンバタスクリスト36から一行ずつタスクの情報を取り出し、タスクの情報が示すリガンド群の情報にアクセスし、各リガンド群に含まれる各リガンドと対象の物質との結合の度合いを示すスコアを計算する。
【0034】
管理装置10は、例えば
図12に示すコンピュータ40で実現されてよい。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶装置43とを備える。また、コンピュータ40は、入力装置、表示装置等の入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)装置45とを備える。また、コンピュータ40は、インターネット等のネットワークに接続される通信I/F(Interface)46を備える。CPU41、メモリ42、記憶装置43、入出力装置44、R/W装置45、及び通信I/F46は、バス47を介して互いに接続される。
【0035】
記憶装置43は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等である。記憶媒体としての記憶装置43には、コンピュータ40を、管理装置10として機能させるための第1負荷分散プログラム50が記憶される。第1負荷分散プログラム50は、分類プロセス制御命令52と、選択プロセス制御命令54と、指示プロセス制御命令56とを有する。
【0036】
CPU41は、第1負荷分散プログラム50を記憶装置43から読み出してメモリ42に展開し、第1負荷分散プログラム50が有する制御命令を順次実行する。CPU41は、分類プロセス制御命令52を実行することで、
図8に示す分類部12として動作する。また、CPU41は、選択プロセス制御命令54を実行することで、
図8に示す選択部14として動作する。また、CPU41は、指示プロセス制御命令56を実行することで、
図8に示す指示部16として動作する。これにより、第1負荷分散プログラム50を実行したコンピュータ40が、管理装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
【0037】
ノード20は、例えば
図13に示すコンピュータ60で実現されてよい。コンピュータ60は、CPU61と、メモリ62と、記憶装置63と、入出力装置64と、記憶媒体69に対するデータの読み込み及び書き込みを制御するR/W装置65と、通信I/F66とを備える。CPU61、メモリ62、記憶装置63、入出力装置64、R/W装置65、及び通信I/F66は、バス67を介して互いに接続される。
【0038】
記憶装置63には、コンピュータ60を、ノード20として機能させるための第2負荷分散プログラム70が記憶される。第2負荷分散プログラム70は、生成プロセス制御命令72と、通知プロセス制御命令74と、実行プロセス制御命令76とを有する。
【0039】
CPU61は、第2負荷分散プログラム70を記憶装置63から読み出してメモリ62に展開し、第2負荷分散プログラム70が有する制御命令を順次実行する。CPU61は、生成プロセス制御命令72を実行することで、
図10に示す生成部22として動作する。また、CPU61は、通知プロセス制御命令74を実行することで、
図10に示す通知部24として動作する。また、CPU61は、実行プロセス制御命令76を実行することで、
図10に示す実行部26として動作する。これにより、第2負荷分散プログラム70を実行したコンピュータ60が、ノード20として機能することになる。なお、プログラムを実行するCPU61はハードウェアである。
【0040】
なお、第1負荷分散プログラム50及び第2負荷分散プログラム70は、開示の技術の「演算処理装置の負荷分散プログラム」の一例である。また、第1負荷分散プログラム50及び第2負荷分散プログラム70の各々により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)等で実現されてもよい。
【0041】
次に、第1実施形態に係る負荷分散システム100の動作について説明する。まず、管理装置10が、
図14に示す管理処理を実行する。そして、代表ノードとして機能するノード20が、
図15に示す代表ノード処理を実行し、代表ノード以外の他のメンバとして機能するノード20が、
図16に示すメンバ処理を実行する。なお、管理処理、代表ノード処理、及びメンバ処理は、開示の技術の「演算処理装置の負荷分散方法」の一例である。以下、管理処理、代表ノード処理、及びメンバ処理の各々について説明する。
【0042】
【0043】
ステップS10で、分類部12が、HPCのプログラムを実行するために確保された全ノードのIDリストを取得する。次に、ステップS12で、分類部12が、予めユーザにより指定されたメンバ数に基づいて、全ノードを複数のチームに分類する。次に、ステップS14で、選択部14が、各チームに属するノード20のうち、ノードIDが最小のノードを代表ノードとして選択する。
【0044】
次に、ステップS16で、指示部16が、代表ノードに、チームの代表であること、及び代表ノードが属するチームに属する他のメンバのノードIDを通知し、チームタスクリスト34及び自ノードのメンバタスクリスト36の生成を指示する。また、指示部16が、代表ノード以外の他のメンバの各々に、そのメンバが属するチームの代表ノードのノードIDを通知し、代表ノードからの通知を待って、メンバタスクリスト36を生成するよう指示し、管理処理は終了する。
【0045】
次に、
図15に示す代表ノード処理について説明する。代表ノード処理は、管理装置10から代表であることを通知されたノード20において実行される。
【0046】
ステップS20で、生成部22が、共有ファイルシステム30のタスクリスト32にアクセス可能か否かを判定する。タスクリスト32にロックがかかっており、アクセス不可の場合には、ステップS22へ移行し、一定時間待機して、ステップS20に戻る。アクセス可能な場合には、ステップS24へ移行する。
【0047】
ステップS24では、生成部22が、タスクリスト32にロックをかけたうえでタスクリスト32にアクセスする。次に、ステップS26で、生成部22が、タスクリスト32にリガンドがあるか否か、すなわち、タスクリスト32に残りの行があるか否かを判定する。タスクリスト32にリガンドがある場合には、ステップS28へ移行し、リガンドがない場合には、代表ノード処理は終了する。
【0048】
ステップS28では、生成部22が、タスクリスト32から1行目のリガンド群(タスクの情報)を取り出して、チームタスクリスト34に追加する処理を、追加したリガンド群の合計サイズが閾値×メンバ数を超えるまで実行する。次に、ステップS30で、生成部22が、タスクリスト32のロックを解除する。
【0049】
次に、ステップS32で、生成部22が、チームタスクリスト34にアクセス可能か否かを判定する。アクセス不可の場合には、ステップS34へ移行し、一定時間待機して、ステップS32に戻る。アクセス可能な場合には、ステップS36へ移行する。
【0050】
ステップS36では、生成部22が、ロックをかけたうえでチームタスクリスト34にアクセスする。次に、ステップS38で、生成部22が、チームタスクリスト34にリガンドがあるか否かを判定する。チームタスクリスト34にリガンドがある場合には、ステップS40へ移行し、リガンドがない場合には、ステップS20に戻る。
【0051】
ステップS40では、生成部22が、チームタスクリスト34から1行目のリガンド群を取り出して、自ノードのメンバタスクリスト36に追加する処理を、追加したリガンド群の合計サイズが閾値を超えるまで実行する。又は、生成部22は、追加したリガンド群の合計サイズが自ノードのメンバタスクリスト36の容量になるまで実行する。次に、ステップS42で、生成部22が、チームタスクリスト34のロックを解除する。
【0052】
次に、ステップS44で、通知部24が、チームタスクリスト34の生成が完了したことをチームに属する他のメンバに通知したか否かを判定する。通知していない場合には、ステップS46へ移行し、通知済みの場合には、ステップS48へ移行する。ステップS46では、通知部24が、チームに属する他のメンバに、チームタスクリスト34を生成したことを通知する。ステップS48では、実行部26が、自ノードのメンバタスクリスト36に基づいてスクリーニングを実行し、メンバタスクリスト36が空になった場合には、ステップS32に戻る。
【0053】
次に、
図16に示すメンバ処理について説明する。メンバ処理は、管理装置10から代表ノードのノードIDを通知されたノード20、すなわち、代表ノード以外の他のノード20において実行される。
【0054】
ステップS60で、生成部22が、代表ノードから、チームタスクリスト34の生成が完了したことの通知が来るまで待機する。通知が来ると、ステップS62~S72で、生成部22が、代表ノード処理(
図15)のステップS32~S42の処理と同様に、自ノードのメンバタスクリスト36を生成する。次に、ステップS74で、実行部26が、自ノードのメンバタスクリスト36に基づいてスクリーニングを実行し、メンバタスクリスト36が空になった場合には、ステップS62に戻る。
【0055】
各ノード20で実行されたスクリーニングの結果は、管理装置10が集約して、スコアのランキングで、対象の物質と結合するリガンドの候補を提示するようにすればよい。
【0056】
以上説明したように、第1実施形態に係る負荷分散システムによれば、管理装置が、複数のノードを複数のチームに分類し、各チームに属するノードから代表ノードを選択する。そして、管理装置が、代表ノードに、代表であること及び他のメンバのノードIDを通知し、他のメンバに、代表ノードのノードIDを通知する。そして、代表ノードが、共有ファイルであるタスクリストから、チームで共有するチームタスクリストを生成し、各ノードは、チームタスクリストから自ノードのメンバタスクリストを生成し、各ノードが自ノードのメンバタスクリストに基づいてタスクを実行する。これにより、タスクの並列処理を実行する複数の演算処理装置で共有されるタスクリストへのアクセスの待機時間を削減することができ、全ノードでのタスクリストの生成時間を短縮することができる。
【0057】
図17を参照して第1実施形態の効果を具体的に説明する。
図17において、0~5の数字はノードIDである。また、実線で示すボックスは、各ノードによるタスクリスト32からのタスク取得にかかる時間であり、点線で示すボックスは、各ノードによるチームタスクリスト34からのタスク取得にかかる時間である。
【0058】
従来手法では、全ノードが順次、共有ファイルであるタスクリスト32へアクセスする逐次処理であるため、ノード数に比例して、タスク取得にかかる時間が増加する。一方、本実施形態の手法(以下、「本手法」という)は、チームの代表ノードのみが共有ファイルシステムのタスクリスト32からタスクを取得する。そして、各メンバはチームの代表ノードが生成したチームタスクリスト34からタスクを取得する(
図17中の矢印)。そのため、パイプラインのようにファイルアクセスできるため、システム全体でのタスクリストへのアクセスの待機時間を削減することができる。
【0059】
また、チーム数をG、チームのメンバ数をM、1つのノード20によるタスク取得にかかる時間をtとすると、従来手法では、全ノードがメンバタスクリスト36の生成を完了するまでの時間Tは、T=G*M*tである。一方、本手法では、チームタスクリスト34の生成を完了するまでの時間、すなわち、代表ノードがタスクリスト32にアクセスする時間T’はT’=G*tである。また、全ノードがメンバタスクリスト36の生成を完了するまでの時間Tは、T=(G+M)*tであり、従来手法に比べて、大幅に短縮することができる。
【0060】
<第2実施形態>
次に、第2実施形態について説明する。なお、第2実施形態に係る負荷分散システムにおいて、第1実施形態に係る負荷分散システム100と同様の構成については、同一符号を付して詳細な説明を省略する。
【0061】
図7に示すように、第2実施形態に係る負荷分散システム200は、管理装置210と、複数のノード220と、共有ファイルであるタスクリスト32を管理する共有ファイルシステム30とを含む。なお、ノード220は、開示の技術の「演算処理装置」の一例である。
【0062】
図18に、管理装置210の機能ブロック図を示す。
図18に示すように、管理装置210は、機能的には、分類部12と、決定部213と、選択部14と、指示部216とを含む。
【0063】
決定部213は、タスクリスト32に含まれるタスクをチーム数で分割して、タスクリスト32のうち、各チームが担当するタスクの範囲を決定する。例えば、
図19に示すように、ノード220がチームA及びチームBの2チームに分類され、タスクリスト32の行数が0~199の200行であるとする。この場合、決定部213は、0~99行目までをチームAの担当範囲、100~199行目までをチームBの担当範囲として決定する。
【0064】
指示部216は、第1実施形態の指示部16による各ノード220への通知及び指示に加え、各チームの代表ノードに、決定部213で決定された、そのチームの担当範囲を通知する。そして、指示部216は、各代表ノードに、タスクリスト32のうち、そのチームの担当範囲からチームタスクリスト34を生成するように指示する。
【0065】
図10に、ノード220の機能ブロック図を示す。
図10に示すように、ノード220は、機能的には、生成部222と、通知部24と、実行部26とを含む。
【0066】
生成部222は、管理装置210から担当範囲を通知された場合、すなわち、ノード220が代表ノードとして機能する場合、タスクリスト32のうち、通知された担当範囲からチームタスクリスト34を生成する。具体的には、生成部222は、タスクリスト32の自チームの担当範囲にアクセスし、タスクリスト32から担当範囲のタスクの情報を抜き出してチームタスクリスト34に追加することにより、チームタスクリスト34を生成する。この際、予めチーム毎の担当範囲が分割されており、アクセスが競合することがないため、タスクリスト32に対するロックは不要である。したがって、各代表ノードは、同時にタスクリスト32にアクセスすることができる。
【0067】
また、生成部222は、第1実施形態の生成部22と同様に、メンバタスクリスト36を生成する。
【0068】
図20を参照して、2つのチーム(チームA及びチームB)に関するタスクリスト32へのアクセスについて説明する。まず、チームAの代表ノードがタスクリスト32のチームAの担当範囲にアクセスし、チームAのチームタスクリスト34Aを生成する(
図20中の(1A))。これと同時に、チームBの代表ノードがタスクリスト32のチームBの担当範囲にアクセスし、チームBのチームタスクリスト34Bを生成する(
図20中の(1B))。チームAのチームタスクリスト34Aの生成が完了すると、チームAでは、各メンバがチームタスクリスト34Aにアクセスし、各メンバのメンバタスクリスト36Aを生成する(
図20中の(2A))。同様に、チームBのチームタスクリスト34Bの生成が完了すると、チームBでは、各メンバがチームタスクリスト34Bにアクセスし、各メンバのメンバタスクリスト36Bを生成する(
図11中の(2B))。
【0069】
管理装置210は、例えば
図12に示すコンピュータ40で実現されてよい。コンピュータ40の記憶装置43には、コンピュータ40を、管理装置210として機能させるための第1負荷分散プログラム250が記憶される。第1負荷分散プログラム250は、分類プロセス制御命令52と、決定プロセス制御命令253と、選択プロセス制御命令54と、指示プロセス制御命令256とを有する。
【0070】
CPU41は、第1負荷分散プログラム250を記憶装置43から読み出してメモリ42に展開し、第1負荷分散プログラム250が有する制御命令を順次実行する。CPU41は、決定プロセス制御命令253を実行することで、
図18に示す決定部213として動作する。また、CPU41は、指示プロセス制御命令256を実行することで、
図18に示す指示部216として動作する。他の制御命令については、第1実施形態に係る第1負荷分散プログラム50と同様である。これにより、第1負荷分散プログラム250を実行したコンピュータ40が、管理装置210として機能することになる。
【0071】
ノード220は、例えば
図13に示すコンピュータ60で実現されてよい。コンピュータ60の記憶装置63には、コンピュータ60を、ノード220として機能させるための第2負荷分散プログラム270が記憶される。第2負荷分散プログラム270は、生成プロセス制御命令272と、通知プロセス制御命令74と、実行プロセス制御命令76とを有する。
【0072】
CPU61は、第2負荷分散プログラム270を記憶装置63から読み出してメモリ62に展開し、第2負荷分散プログラム270が有する制御命令を順次実行する。CPU61は、生成プロセス制御命令272を実行することで、
図10に示す生成部222として動作する。他の制御命令については、第1実施形態に係る第2負荷分散プログラム70と同様である。これにより、第2負荷分散プログラム270を実行したコンピュータ60が、ノード220として機能することになる。
【0073】
なお、第1負荷分散プログラム250及び第2負荷分散プログラム270は、開示の技術の「演算処理装置の負荷分散プログラム」の一例である。また、第1負荷分散プログラム250及び第2負荷分散プログラム270の各々により実現される機能は、例えば半導体集積回路、より詳しくはASIC、FPGA等で実現されてもよい。
【0074】
次に、第2実施形態に係る負荷分散システム200の動作について説明する。まず、管理装置210が、
図21に示す管理処理を実行する。そして、代表ノードとして機能するノード220が、
図22に示す代表ノード処理を実行し、代表ノード以外の他のメンバとして機能するノード20が、第1実施形態と同様の
図16に示すメンバ処理を実行する。なお、管理処理、代表ノード処理、及びメンバ処理は、開示の技術の「演算処理装置の負荷分散方法」の一例である。以下、管理処理及び代表ノード処理の各々について説明する。なお、第2実施形態に係る管理処理及び代表ノード処理の各々について、第1実施形態に係る管理処理(
図14)及び代表ノード処理(
図15)と同様の処理については、同一のステップ番号を付して詳細な説明を省略する。
【0075】
【0076】
ステップS10及びS12を経て、次のステップS213で、決定部213が、タスクリスト32に含まれるタスクをチーム数で分割して、タスクリスト32のうち、各チームが担当するタスクの範囲を決定する。ステップS14を経て、次のステップS216で、指示部216が、代表ノードに、チームの代表であること、代表ノードが属するチームに属する他のメンバのノードID、及びチームの担当範囲を通知する。そして、決定部213が、代表ノードに、チームタスクリスト34及び自ノードのメンバタスクリスト36の生成を指示する。また、指示部216が、代表ノード以外の他のメンバの各々に、そのメンバが属するチームの代表ノードのノードIDを通知し、代表ノードからの通知を待って、メンバタスクリスト36を生成するよう指示し、管理処理は終了する。
【0077】
なお、ステップS213の処理とステップS14の処理とは順番を入れ替えて実行してもよい。
【0078】
次に、
図22に示す代表ノード処理について説明する。代表ノード処理は、管理装置210から代表であることを通知されたノード220において実行される。
【0079】
ステップS220で、生成部222が、タスクリスト32にアクセスする。次に、ステップS222で、生成部222が、管理装置210から通知された自チームの担当範囲のタスクの情報をタスクリスト32から抜き出してチームタスクリスト34に追加することにより、チームタスクリスト34を生成する。以下、第1実施形態と同様にステップS32~S48の処理が実行され、代表ノード処理は終了する。
【0080】
以上説明したように、第2実施形態に係る負荷分散システムによれば、管理装置が、共有ファイルであるタスクリストに含まれるタスクをチーム数で分割して、タスクリストのうち、各チームが担当するタスクの範囲を決定し、代表ノードに通知する。そして、代表ノードが、タスクリストのうち、自チームの範囲からチームタスクリストを生成する。これにより、タスクの並列処理を実行する複数の演算処理装置で共有されるタスクリストへのアクセスの待機時間を削減することができ、全ノードでのタスクリストの生成時間を短縮することができる。
【0081】
図23を参照して第2実施形態の効果を具体的に説明する。従来手法は、
図17の例と同様である。本手法は、チームの各代表ノードが、共有ファイルシステム30のタスクリスト32の担当範囲に並列にアクセスして、各チームのチームタスクリスト34を生成する。そして、他のメンバはチームの代表ノードが生成したチームタスクリスト34にアクセスする(
図23中の矢印)。そのため、システム全体でのタスクリストへのアクセスの待機時間を削減することができる。
【0082】
また、総ノード数をN、チーム数をG、1つのノード20によるタスク取得にかかる時間をtとすると、従来手法では、全ノードがメンバタスクリスト36の生成を完了するまでの時間Tは、T=N*tである。一方、本手法では、チームタスクリスト34の生成を完了するまでの時間、すなわち、代表ノードがタスクリスト32にアクセスする時間T’はT’=tである。また、全ノードがメンバタスクリスト36の生成を完了するまでの時間Tは、T=(N/G+1)*tであり、従来手法に比べて、大幅に短縮することができる。
【0083】
なお、上記各実施形態では、開示の技術をバーチャルスクリーニングに適用する場合について説明したが、これに限定されない。開示の技術は、共有ファイルへのアクセスを要する負荷分散の処理に適用することができる。特に、各タスクのサイズが異なる場合に有効である。
【0084】
また、上記各実施形態では、各チームのメンバ数を均等とする場合について説明したが、各チームのメンバ数はそれぞれ異なっていてもよい。
【0085】
また、上記各実施形態では、第1負荷分散プログラム及び第2負荷分散プログラムが記憶装置に予め記憶(インストール)されているが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供されてもよい。
【0086】
以上の各実施形態に関し、さらに以下の付記を開示する。
【0087】
(付記1)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類する分類部と、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択する選択部と、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する指示部と、
を含む管理装置。
【0088】
(付記2)
前記分類部は、前記複数のタスクを実行するために確保された前記複数の演算処理装置の識別情報を取得し、予め指定された各演算処理装置群に属する演算処理装置の数に基づいて、前記複数の演算処理装置を前記複数の演算処理装置群に分類する付記1に記載の管理装置。
【0089】
(付記3)
前記選択部は、前記識別情報が数字の場合、前記各演算処理装置群に属する演算処理装置のうち、前記識別情報が最小又は最大の演算処理装置を前記代表の演算処理装置として選択する付記2に記載の管理装置。
【0090】
(付記4)
前記第1タスクリストに含まれるタスクを前記演算処理装置群の数で分割して、前記第1タスクリストのうち、前記複数の演算処理装置群の各々が担当するタスクの範囲を決定する決定部を含み、
前記指示部は、前記代表の演算処理装置に、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成するように指示する
付記1に記載の管理装置。
【0091】
(付記5)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置のいずれかの演算処理装置であって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成する生成部と、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知する通知部と、
前記第3タスクリストに含まれるタスクを実行する実行部と、
を含む演算処理装置。
【0092】
(付記6)
前記生成部は、前記第1タスクリストにロックをかけたうえで前記第1タスクリストにアクセスし、前記第2タスクリストの生成が完了すると、前記第1タスクリストのロックを解除する付記5に記載の演算処理装置。
【0093】
(付記7)
前記生成部は、前記第1タスクリストからタスクの情報を1つずつ取得して前記第2タスクリストに追加していき、取得したタスクの情報の合計サイズが、前記演算処理装置群に含まれる演算処理装置の数に応じた閾値を超えた段階で前記タスクの情報の取得を終了することにより、前記第2タスクリストを生成する付記5又は付記6に記載の演算処理装置。
【0094】
(付記8)
前記生成部は、前記管理装置から、演算処理装置群の代表の演算処理装置の識別情報を通知され、かつ前記代表の演算処理装置から前記第2タスクリストを生成したことを通知された場合、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成する付記5~付記7のいずれか1項に記載の演算処理装置。
【0095】
(付記9)
前記生成部は、前記管理装置から、前記第1タスクリストのうち、自装置が属する演算処理装置群が担当するタスクの範囲を通知された場合、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成する付記5に記載の演算処理装置。
【0096】
(付記10)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類し、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択し、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する
ことを含む処理をコンピュータが実行する演算処理装置の負荷分散方法。
【0097】
(付記11)
前記複数のタスクを実行するために確保された前記複数の演算処理装置の識別情報を取得し、予め指定された各演算処理装置群に属する演算処理装置の数に基づいて、前記複数の演算処理装置を前記複数の演算処理装置群に分類する付記10に記載の演算処理装置の負荷分散方法。
【0098】
(付記12)
前記識別情報が数字の場合、前記各演算処理装置群に属する演算処理装置のうち、前記識別情報が最小又は最大の演算処理装置を前記代表の演算処理装置として選択する付記11に記載の演算処理装置の負荷分散方法。
【0099】
(付記13)
前記第1タスクリストに含まれるタスクを前記演算処理装置群の数で分割して、前記第1タスクリストのうち、前記複数の演算処理装置群の各々が担当するタスクの範囲を決定し、
前記代表の演算処理装置に、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成するように指示する
付記10に記載の演算処理装置の負荷分散方法。
【0100】
(付記14)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置の負荷分散方法であって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成し、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知し、
前記第3タスクリストに含まれるタスクを実行する
ことを含む処理をコンピュータが実行する演算処理装置の負荷分散方法。
【0101】
(付記15)
前記第1タスクリストにロックをかけたうえで前記第1タスクリストにアクセスし、前記第2タスクリストの生成が完了すると、前記第1タスクリストのロックを解除する付記14に記載の演算処理装置の負荷分散方法。
【0102】
(付記16)
前記第1タスクリストからタスクの情報を1つずつ取得して前記第2タスクリストに追加していき、取得したタスクの情報の合計サイズが、前記演算処理装置群に含まれる演算処理装置の数に応じた閾値を超えた段階で前記タスクの情報の取得を終了することにより、前記第2タスクリストを生成する付記14又は付記15に記載の演算処理装置の負荷分散方法。
【0103】
(付記17)
前記管理装置から、演算処理装置群の代表の演算処理装置の識別情報を通知され、かつ前記代表の演算処理装置から前記第2タスクリストを生成したことを通知された場合、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成する付記14~付記16のいずれか1項に記載の演算処理装置の負荷分散方法。
【0104】
(付記18)
前記管理装置から、前記第1タスクリストのうち、自装置が属する演算処理装置群が担当するタスクの範囲を通知された場合、前記第1タスクリストのうち前記範囲から前記第2タスクリストを生成する付記14に記載の演算処理装置の負荷分散方法。
【0105】
(付記19)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置を複数の演算処理装置群に分類し、
各演算処理装置群に属する演算処理装置から、代表の演算処理装置を選択し、
前記代表の演算処理装置に、前記代表の演算処理装置が属する演算処理装置群に属する他の演算処理装置の識別情報を通知し、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成するように指示すると共に、前記他の演算処理装置の各々に、前記代表の演算処理装置の識別情報を通知し、前記代表の演算処理装置が生成した前記第2タスクリストから、前記代表の演算処理装置及び前記他の演算処理装置の各々が実行するタスクの情報を取得して第3タスクリストを生成するように指示する
ことを含む処理をコンピュータに実行させるための演算処理装置の負荷分散プログラム。
【0106】
(付記20)
複数のタスクを負荷分散して並列に実行する複数の演算処理装置の負荷分散プログラムであって、
管理装置から、演算処理装置群の代表であること、及び前記演算処理装置群に属する他の演算処理装置の識別情報を通知された場合、前記複数のタスクに関する情報が記憶された共有ファイルである第1タスクリストから、前記演算処理装置群に属する演算処理装置が実行するタスクの情報を取得して第2タスクリストを生成すると共に、前記第2タスクリストから、自装置が実行するタスクの情報を取得して第3タスクリストを生成し、
前記他の演算処理装置に、前記第2タスクリストを生成したことを通知し、
前記第3タスクリストに含まれるタスクを実行する
ことを含む処理をコンピュータに実行させるための演算処理装置の負荷分散プログラム。
【符号の説明】
【0107】
100、200 負荷分散システム
10、210 管理装置
12 分類部
14 選択部
16、216 指示部
213 決定部
20、220 ノード
22、222 生成部
24 通知部
26 実行部
30 共有ファイルシステム
32 タスクリスト
34、34A、34B チームタスクリスト
36、36A、36B メンバタスクリスト
40、60 コンピュータ
41、61 CPU
42、62 メモリ
43、63 記憶装置
44、64 入出力装置
45、65 R/W装置
46、66 通信I/F
47、67 バス
49、69 記憶媒体
50、250 第1負荷分散プログラム
52 分類プロセス制御命令
54 選択プロセス制御命令
56、256 指示プロセス制御命令
253 決定プロセス制御命令
70、270 第2負荷分散プログラム
72、272 生成プロセス制御命令
74 通知プロセス制御命令
76 実行プロセス制御命令