JP6152786B2 - 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法 - Google Patents

通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法 Download PDF

Info

Publication number
JP6152786B2
JP6152786B2 JP2013248579A JP2013248579A JP6152786B2 JP 6152786 B2 JP6152786 B2 JP 6152786B2 JP 2013248579 A JP2013248579 A JP 2013248579A JP 2013248579 A JP2013248579 A JP 2013248579A JP 6152786 B2 JP6152786 B2 JP 6152786B2
Authority
JP
Japan
Prior art keywords
start time
sequence information
communication
calculation
inter
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.)
Expired - Fee Related
Application number
JP2013248579A
Other languages
English (en)
Other versions
JP2015106311A (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 JP2013248579A priority Critical patent/JP6152786B2/ja
Priority to US14/538,846 priority patent/US9465675B2/en
Priority to EP14193404.2A priority patent/EP2879054A3/en
Publication of JP2015106311A publication Critical patent/JP2015106311A/ja
Application granted granted Critical
Publication of JP6152786B2 publication Critical patent/JP6152786B2/ja
Expired - Fee Related 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/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • G06F11/3423Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time where the assessed time is active or idle time
    • 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
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

本発明は、通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法に関する。
並列計算機システムにおける並列アプリケーションプログラムの実行時には、主にMessage Passing Interface(MPI)を利用して、複数のプロセスの各々が演算処理とプロセス間通信処理とを繰り返しながら並列に処理を進める。このプロセス間通信処理は、並列計算機システムのあるノード内のプロセス間で行われるとともに、異なるノードのプロセス間でも行われる。このとき、演算処理時間がプロセス間で異なることで、通信処理の開始時刻がプロセス間で異なる場合がある。
例えば、図1に示すように、プロセスP0、プロセスP1、及びプロセスP2が並列アプリケーションプログラムを実行する場合、演算処理が早く完了したプロセスP0及びプロセスP1は、プロセスP2との通信処理をそれぞれ試行する。しかし、プロセスP2は、演算処理中であり通信処理を開始できないため、プロセスP0及びプロセスP1は、プロセスP2による演算処理の完了をそれぞれ待つ。この間、プロセスP0及びプロセスP1は、演算処理も通信処理も行わないため、並列計算機システムの利用効率が低下し、台数効果が悪化する。
この問題を解決するには、並列アプリケーションプログラムの開発者が各プロセスの演算処理時間を均等化するコード書き換えやパラメータチューニング等を行い、通信処理の開始時刻をプロセス間で揃える方法が考えられる。
通信処理の開始時刻がプロセス間で揃っているか否かを確認する方法として、同期待ち時間と呼ばれる値の多寡で確認する方法が知られている。同期待ち時間は、例えば、次のようにして求められる。
1.各プロセスの通信処理ごとに開始時刻を取得する。この開始時刻は、例えば、各プロセスの実行開始時点からの経過時間として取得することができる。
2.通信処理ごとに複数のプロセスの開始時刻の最大値を求める。
3.最大値と各プロセスの通信処理の開始時刻との差分を求め、プロセスごとに複数の通信処理に関する差分を積算し、同期待ち時間として記録する。
各プロセスの同期待ち時間は、すべての通信処理の開始時刻がプロセス間で一致すると0になり、プロセス間で開始時刻の差が大きいほど、並列アプリケーションプログラムの実行に要した経過時間に近づく。したがって、同期待ち時間が0に近いほど望ましい状態であると判断できる。
図1の1回目の通信処理では、プロセスP0、プロセスP1、及びプロセスP2の開始時刻はそれぞれ20、10、及び30であり、開始時刻の最大値は、矢印101が示す30である。そして、最大値30とプロセスP0、プロセスP1、及びプロセスP2の開始時刻との差分は、それぞれ10、20、及び0となる。
2回目の通信処理では、プロセスP0、プロセスP1、及びプロセスP2の開始時刻はそれぞれ60、70、及び50であり、開始時刻の最大値は、矢印102が示す70である。そして、最大値70とプロセスP0、プロセスP1、及びプロセスP2の開始時刻との差分は、それぞれ10、0、及び20となる。
したがって、1回目及び2回目の通信処理に関する差分を積算すると、プロセスP0、プロセスP1、及びプロセスP2の同期待ち時間はそれぞれ20、20、及び20となる。この場合、並列アプリケーションプログラムの実行に要した経過時間は80であり、そのうち20が、他のプロセスによる演算処理の完了を待つための無駄な時間であったと解釈できる。
米国Cray社の並列アプリケーション性能プロファイリングツールは、同期待ち時間を求めるためにMPIの集団通信関数をフックし、通信処理の開始前にプロセス間同期インタフェース(MPI_Barrier関数)を自動的に呼び出す。そして、並列アプリケーション性能プロファイリングツールは、プロセスごとにMPI_Barrier関数の経過時間の合計値を求める。
複数のプロセスが持つデータを対象として、データの総和、最大値、最小値等を求めるリダクション演算を行うリダクション演算装置も知られている(例えば、特許文献1を参照)。
特開2010−122848号公報
以下の説明では、並列アプリケーションプログラムを、単に、並列アプリケーションと記載する場合がある。
従来の並列計算機システムには、以下のような問題がある。
並列アプリケーション性能プロファイリングツールのように、同期待ち時間を求めるためにプロセス間同期インタフェースを呼び出す場合、各プロセスの処理に同期処理が加わるため、並列アプリケーションの挙動を大きく変えてしまうことがある。このため、同期処理を行うことなく、通信処理ごとに開始時刻の最大値を求めることが望ましい。
同期処理を行うことなく(非同期に)、通信処理ごとに開始時刻の最大値を求めるには、各プロセスが通信処理ごとに開始時刻を取得して主記憶領域に書き込んだ後に、並列アプリケーションの実行中又は実行後に最大値を計算する方法が考えられる。
並列アプリケーションの実行後に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録するため、実行時間が長い並列アプリケーションでは並列アプリケーションが利用できる主記憶領域を圧迫する可能性がある。このような場合、並列アプリケーションの実行中に最大値を計算することが望ましい。
並列アプリケーションの実行中に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録する必要はなく、過去の通信処理に関する差分の積算値を同期待ち時間として記録すれば足りる。したがって、実行時間が長い並列アプリケーションであっても主記憶領域を圧迫することはない。この場合、演算処理中に、ソフトウェア又はハードウェアの非同期通信インタフェースを利用して、各プロセスの通信処理の開始時刻を送受信する方法が考えられる。
しかし、ソフトウェアの非同期通信インタフェースを利用する方法では、最大値の計算はCentral Processing Unit(CPU)によるソフトウェア処理のため、CPU時間を消費することで並列アプリケーションの挙動が変わる可能性がある。
ハードウェアの非同期通信インタフェースを利用する方法では、各プロセスがネットワークインタフェースに実装されたネットワークリダクション機構に開始時刻のデータを転送し、最大値演算を指示することができる。
ここで、ある通信処理と次の通信処理との間の演算処理時間が非常に短い場合、稀にではあるが、ネットワークリダクション機構による最大値演算が完了しない可能性がある。ネットワークリダクション機構が同時に単一の最大値演算しか実行できない場合、各プロセスは、先行する最大値演算が完了するまで後続の最大値演算を指示できないため、並列アプリケーションの挙動が変わってしまう。
1つの側面において、本発明は、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことを目的とする。
1つの案では、演算処理装置と主記憶装置とに接続する通信制御装置は、演算部を含む。
第1のシーケンス情報は、演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して演算処理装置が付与して、主記憶装置に書き込んだシーケンス情報である。複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合、演算部は、第1の開始時刻を用いた演算を行わない。
第2のシーケンス情報が第1のシーケンス情報に対応する場合、演算部は、第1の開始時刻と第2の開始時刻とを用いた演算を行って演算結果を出力する。
実施形態によれば、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。
並列計算機システムにおけるプロセス間通信処理を示す図である。 プロセス間同期インタフェースを用いた場合のプロセス間通信処理を示す図である。 ネットワークリダクション機構を示す図である。 第1の通信制御装置の構成図である。 並列計算機システムの構成図である。 ノードの構成図である。 第2の通信制御装置の構成図である。 プロセス間通信の開始時刻を用いた演算処理のフローチャートである。 演算処理の第1の具体例を示すフローチャートである。 演算処理の第2の具体例を示すフローチャートである。
以下、図面を参照しながら、実施形態を詳細に説明する。
並列アプリケーション性能プロファイリングツールのように、同期待ち時間を求めるためにプロセス間同期インタフェースを呼び出す場合、各プロセスの処理に同期処理が加わるため、並列アプリケーションの挙動を大きく変えてしまうことがある。
図2は、図1の並列アプリケーションにおいて、並列アプリケーション性能プロファイリングツールによりプロセス間同期インタフェースを呼び出す例を示している。この場合、各プロセスの通信処理が完了した後に、同期待ち時間を求める同期処理が行われるため、並列アプリケーションの実行に要した経過時間は、80から100に25%増加している。並列アプリケーションにも依存するが、図2のように、経過時間が10%以上増加する例は少なくない。このため、同期処理を行うことなく、通信処理ごとに開始時刻の最大値を求めることが望ましい。
同期処理を行うことなく(非同期に)、通信処理ごとに開始時刻の最大値を求めるには、各プロセスが通信処理ごとに開始時刻を取得して主記憶領域に書き込んだ後に、並列アプリケーションの実行中又は実行後に最大値を計算する方法が考えられる。
まず、並列アプリケーションの実行後に最大値を計算する場合、実行時間が長い並列アプリケーションでは並列アプリケーションが利用できる主記憶領域を圧迫する可能性がある。例えば、100,000個のプロセスが1日間走行する並列アプリケーションにおいて、1msあたり1回の頻度で通信処理が発生すると仮定する。通信処理ごとに8バイトの開始時刻のデータを記録すると、並列アプリケーションが終了する間際には、1プロセスあたり約691Mバイトの主記憶領域が開始時刻のデータで埋まることになる。
1ノードあたり32Gバイトの主記憶装置を搭載した並列計算機システムにおいて、各ノード内で16プロセスが並列に動作する場合、約11Gバイトの主記憶領域が開始時刻のデータで埋まり、並列アプリケーションの実行に支障が出る可能性がある。このような場合、並列アプリケーションの実行中に最大値を計算することが望ましい。
並列アプリケーションの実行中に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録する必要はなく、過去の通信処理に関する差分の積算値を同期待ち時間として記録すれば足りる。したがって、実行時間が長い並列アプリケーションであっても主記憶領域を圧迫することはない。この場合、演算処理中に、ソフトウェア又はハードウェアの非同期通信インタフェースを利用して、各プロセスの通信処理の開始時刻を送受信する方法が考えられる。
ソフトウェアの非同期通信インタフェースを利用する方法では、MPIのノンブロッキング通信インタフェース(MPI_Isend関数、MPI_Irecv関数、MPI_Wait関数等)により、プロセス間で開始時刻のデータを送受信することができる。しかし、最大値の計算はCentral Processing Unit(CPU)によるソフトウェア処理のため、CPU時間を消費することで並列アプリケーションの挙動が変わる可能性がある。
ハードウェアの非同期通信インタフェースを利用する方法では、各プロセスがネットワークインタフェースに実装されたネットワークリダクション機構に開始時刻のデータを転送し、最大値演算を指示することができる。ネットワークリダクション機構とは、通信ネットワークで接続された各ノードの各プロセスからデータを受信し、すべてのデータを対象として単一の演算を行った後、演算結果を各ノードで保持するためのハードウェア機構を指す。ネットワークリダクション機構による演算としては、例えば、データの総和、最大値、最小値等を求める演算が挙げられる。
例えば、各プロセスが、ある通信処理の完了時にその通信処理の開始時刻をネットワークリダクション機構に転送して最大値演算を指示した後、次の通信処理の開始時にネットワークリダクション機構から最大値を読み出すことができる。これにより、各プロセスの演算処理中にネットワークリダクション機構が最大値を計算することができる。
図3は、図1の並列アプリケーションにおいて、ネットワークリダクション機構301が最大値を計算する例を示している。この場合、ネットワークリダクション機構301は、2回目の演算処理中に、1回目の通信処理の開始時刻の最大値30を計算する。そして、プロセスP0、プロセスP1、及びプロセスP2は、2回目の通信処理の開始時に、最大値30と1回目の通信処理の開始時刻20、10、及び30との差分10、20、及び0をそれぞれ求める。
ここで、ある通信処理と次の通信処理との間の演算処理時間が非常に短い場合、稀にではあるが、ネットワークリダクション機構による最大値演算が完了しない可能性がある。ネットワークリダクション機構が同時に単一の最大値演算しか実行できない場合、各プロセスは、先行する最大値演算が完了するまで後続の最大値演算を指示できないため、並列アプリケーションの挙動が変わってしまう。
ネットワークリダクション機構を利用する場合に、並列アプリケーションの挙動が変わることを防ぐ方法はいくつか考えられる。例えば、先行する最大値演算が完了するまで、ネットワークリダクション機構が後続の最大値演算の指示をスキップする方法が挙げられる。しかし、ネットワークリダクション機構による演算がプロセス間で同一時刻に完了するとは限らないため、プロセスごとにスキップした回数が異なる状況が発生し得る。このような状況で後続の最大値演算を行うと、1つの通信処理の開始時刻の最大値の代わりに、複数の異なる通信処理の開始時刻の最大値が計算されてしまう。
他の方法としては、ネットワークインタフェースに複数のネットワークリダクション機構を実装して、それらのネットワークリダクション機構を順番に使用する方法が挙げられる。しかし、ハードウェアの増加が非常に大きくなる。ネットワークリダクション機構による最大値演算が完了しないことは稀に発生する問題であるため、その解決のために大きなハードウェアコストをかけるのは現実的ではない。
なお、かかる問題は、並列アプリケーションにおいてプロセス間通信を開始した時刻の最大値を計算する場合に限らず、プロセス間通信を開始した時刻を用いた他の演算を行う場合においても生ずるものである。
図4は、実施形態の通信制御装置の構成例を示している。図4の通信制御装置401は、並列計算機システムの各ノードに対応する情報処理装置(コンピュータ)内に設けられ、演算部411を含む。
情報処理装置内の演算処理装置は、プログラムを実行し、プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する。そして、第1の開始時刻と第1のシーケンス情報とを情報処理装置内の主記憶装置に書き込む。
複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合、通信制御装置401内の演算部411は、第1の開始時刻を用いた演算を行わない。一方、第2のシーケンス情報が第1のシーケンス情報に対応する場合、演算部411は、第1の開始時刻と第2の開始時刻とを用いた演算を行って演算結果を出力する。
シーケンス情報は、各プロセスが行う通信処理の順序を示す情報であり、複数のプロセスの間で、同じ順序の通信処理に対して同じシーケンス情報が付与される。例えば、第2のプロセスが行う1回目の通信処理に付与されるシーケンス情報は、第1のプロセスが行う1回目の通信処理に付与されるシーケンス情報と同じである。また、第2のプロセスが行う2回目の通信処理に付与されるシーケンス情報は、第1のプロセスが行う2回目の通信処理に付与されるシーケンス情報と同じである。
第1及び第2のプロセスの間で、それぞれの開始時刻に付与されたシーケンス情報を比較することで、2つの開始時刻が同じ順序の通信処理の開始時刻であるか否かを判定することができる。
そして、演算部411は、第2の開始時刻に付与された第2のシーケンス情報の方が第1の開始時刻に付与された第1のシーケンス情報よりも新しい場合、第1の開始時刻を用いた演算を行わない。このため、第1のプロセスは、古い開始時刻を用いた演算の完了を待つことなく、最新の開始時刻を用いた演算を演算部411に対して次々に指示することができる。したがって、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。
図5は、実施形態の並列計算機システムの構成例を示している。図5の並列計算機システム500は、ノード501−1〜ノード501−nのn個(nは1以上の整数)の計算ノードとディスクノード502とを含む。ノード501−1〜ノード501−nとディスクノード502は、通信ネットワーク503により互いに接続されている。
図6は、図5のノード501−i(i=1〜n)に対応する情報処理装置の構成例を示している。図6のノード501−iは、CPU601、メモリ602、媒体駆動装置603、及び通信制御装置401を含む。CPU601、メモリ602、媒体駆動装置603、及び通信制御装置401は、バス604により互いに接続されている。
メモリ602は主記憶装置に対応する。メモリ602は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)等の半導体メモリであり、並列アプリケーションプログラム及びその処理に用いられるデータを記憶する。
CPU601は演算処理装置(プロセッサ)に対応し、メモリコントローラ及びネットワークインタフェースコントローラを含むことができる。CPU601は、例えば、メモリ602を利用して並列アプリケーションプログラムを実行する。CPU601は、オペレーティングシステム(OS)及びネットワークインタフェースドライバ等のプログラムも実行することができる。
媒体駆動装置603は、可搬型記録媒体605を駆動し、その記録内容にアクセスする。可搬型記録媒体605は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体605は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体605に並列アプリケーションプログラム及びデータを格納しておき、それらをメモリ602にロードして使用することができる。
通信制御装置401は、図5の通信ネットワーク503に接続され、他のノードと通信するネットワークインタフェースである。ノード501−iは、並列アプリケーションプログラム及びデータを、並列計算機システムの外部の装置から通信制御装置401を介して受け取り、それらをメモリ602にロードして使用することができる。
なお、ノード501−iが図6のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、可搬型記録媒体605を使用しない場合は、媒体駆動装置603を省略してもよい。
図5のディスクノード502は、例えば、図6のノード501−iの構成にディスク装置を追加した構成を有する。ディスク装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等であり、ハードディスクドライブであってもよい。ディスク装置は、並列アプリケーションプログラムの処理に用いられるデータを格納することができる。
ノード501−1〜ノード501−nは、例えば、ディスクノード502に格納されたデータを用いて並列アプリケーションを実行する。このとき、各ノード内には1つ以上のプロセスが生成され、ノード501−1〜ノード501−n内の複数のプロセスは、MPIにより並列化されて、すべてのプロセスを対象とする集団通信を繰り返す。
なお、ノード501−1〜ノード501−nの各々にディスク装置が設けられている場合は、ディスクノード502を省略してもよい。
図7は、図6の通信制御装置401内の演算部411の構成例を示している。図7の演算部411は、CPU701、メモリ702、インタフェース703、及びインタフェース704を含む。CPU701、メモリ702、インタフェース703、及びインタフェース704は、バス705により互いに接続されている。
CPU701は演算処理装置(プロセッサ)に対応し、メモリ702は主記憶装置に対応する。メモリ702は、例えば、ROM、RAM等の半導体メモリであり、制御プログラム及びデータを記憶する。メモリ702が記憶するデータには、図6のCPU601から転送されたデータ、他のノードから受信したデータ等が含まれる。CPU701は、例えば、メモリ702を利用して制御プログラムを実行することで、ネットワークリダクション機構の演算を行って、演算結果をメモリ702に書き込む。
ユーザ又はオペレータは、図6の可搬型記録媒体605に制御プログラム及びデータを格納しておき、それらをメモリ702にロードして使用することができる。このように、制御プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ702又は可搬型記録媒体605のような、物理的な(非一時的な)記録媒体である。
インタフェース703は、図6のバス604に接続されてCPU601と通信し、インタフェース704は、図5の通信ネットワーク503に接続されて他のノードと通信する。インタフェース704を介して、ネットワークリダクション機構の部分的な演算結果をノード間で送受信することで、演算が効率化される。演算部411は、制御プログラム及びデータを、並列計算機システムの外部の装置からインタフェース703又はインタフェース704を介して受け取り、それらをメモリ702にロードして使用することもできる。
なお、演算部411の構成は図7の構成には限られず、一部又は全部の処理を布線論理で実装することも可能である。
図8は、ノード501−1において行われる、プロセス間通信の開始時刻を用いた演算処理の例を示すフローチャートである。この例では、第1のプロセスは、並列アプリケーションの複数のプロセスのうち、ノード501−1内で生成されるプロセスである。第2のプロセスは、並列アプリケーションの複数のプロセスのうち、ノード501−1内で生成されるプロセス、又はノード501−2〜ノード501−nのいずれかで生成されるプロセスである。
ノード501−1内のCPU601は、第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する。そして、そのCPU601は、第1の開始時刻と第1のシーケンス情報とをノード501−1内のメモリ602に書き込み、第1の開始時刻と第1のシーケンス情報とを演算部411内のメモリ702へ転送する。ノード501−1内の通信制御装置401は、第1の開始時刻と第1のシーケンス情報とをノード501−2〜ノード501−nへ送信する。
第2のプロセスがノード501−1内で生成される場合、ノード501−1内のCPU601は、第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に対して第2のシーケンス情報を付与する。そして、そのCPU601は、第2の開始時刻と第2のシーケンス情報とをノード501−1内のメモリ602に書き込み、第2の開始時刻と第2のシーケンス情報とを演算部411内のメモリ702へ転送する。ノード501−1内の通信制御装置401は、第2の開始時刻と第2のシーケンス情報とをノード501−2〜ノード501−nへ送信する。
第2のプロセスがノード501−2内で生成される場合、ノード501−2内のCPU601は、第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に対して第2のシーケンス情報を付与する。そして、そのCPU601は、第2の開始時刻と第2のシーケンス情報とをノード501−2内のメモリ602に書き込み、第2の開始時刻と第2のシーケンス情報とを演算部411内のメモリ702へ転送する。ノード501−2内の通信制御装置401は、第2の開始時刻と第2のシーケンス情報とをノード501−1及びノード501−3〜ノード501−nへ送信する。
ノード501−3〜ノード501−nの各CPU601も、同様にして、各プロセスがプロセス間通信を開始した開始時刻に対してシーケンス情報を付与する。そして、そのCPU601は、開始時刻とシーケンス情報とをメモリ602に書き込み、開始時刻とシーケンス情報とを演算部411内のメモリ702へ転送する。ノード501−3〜ノード501−nの通信制御装置401は、開始時刻とシーケンス情報とを他のノードへ送信する。
ノード501−1において、演算部411内のCPU701は、第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しいか否かをチェックする(ステップ801)。
第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合(ステップ801,YES)、CPU701は、第1の開始時刻を用いた演算を行わない。一方、ステップ801のチェック結果がNOの場合、CPU701は、第2のシーケンス情報が第1のシーケンス情報に対応するか否かをチェックする(ステップ802)。
第2のシーケンス情報が第1のシーケンス情報に対応する場合(ステップ802,YES)、CPU701は、少なくとも第1の開始時刻と第2の開始時刻とを用いた演算を行って、演算結果をメモリ702に書き込む(ステップ803)。
一方、ステップ802のチェック結果がNOの場合、CPU701は、第2の開始時刻を用いた演算を行わず、第2のプロセスが第3のプロセス間通信を開始した第3の開始時刻と第3のシーケンス情報とを受信するまで待機する(ステップ804)。そして、第3のシーケンス情報が第1のシーケンス情報に対応する場合、CPU701は、少なくとも第1の開始時刻と第3の開始時刻とを用いた演算を行って、演算結果をメモリ702に書き込む。
ノード501−2〜ノード501−nの各ノードの演算部411も、ノード501−1の演算部411と同様の演算処理を行うことができる。
図9は、図5のノード501−1〜ノード501−nの各ノード内で1つのプロセスが動作している場合に行われる、図8の演算処理の具体例を示すフローチャートである。
シーケンス情報としては、例えば、昇順の非負の整数であるシーケンス番号が用いられる。シーケンス番号は、ネットワークインタフェースドライバにより管理され、並列アプリケーションの開始時に0にリセットされる。各ノード501−i(i=1〜n)内のメモリ602は、プロセスがプロセス間通信を開始した開始時刻T(i)と、そのプロセスのシーケンス番号S(i)とを記憶する。
各ノード501−i内のCPU601は、並列アプリケーションを実行することでプロセスを動作させ、ネットワークインタフェースドライバのプログラムを実行することでネットワークインタフェースドライバを動作させる。
ノード501−i内のプロセスがプロセス間通信を開始したとき、そのプロセスは、ネットワークインタフェースドライバに対して演算処理を指示する(ステップ901)。次に、CPU601は、ネットワークインタフェースドライバとして動作し、開始時刻T(i)とシーケンス番号S(i)とをメモリ602から読み出す(ステップ902)。次に、CPU601は、読み出した開始時刻T(i)とシーケンス番号S(i)とを演算部411内のメモリ702に書き込み、演算部411内のCPU701に対して演算処理を指示する。そして、CPU601は、メモリ602内のシーケンス番号S(i)を1だけインクリメントする。
次に、CPU701は、メモリ702に書き込まれた開始時刻T(i)とシーケンス番号S(i)とを他のノード501−j(1≦j≦n,j≠i)へ送信する(ステップ903)。そして、CPU701は、並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれているか否かをチェックする(ステップ904)。
いずれかのプロセスの開始時刻とシーケンス番号とが書き込まれていない場合(ステップ904,NO)、CPU701は、他のノードから開始時刻とシーケンス番号とを受信したか否かをチェックする(ステップ908)。
他のノードから開始時刻とシーケンス番号とを受信していない場合(ステップ908,NO)、CPU701は、ステップ904以降の処理を繰り返す。一方、他のノード501−k(1≦k≦n,k≠i)から開始時刻T(k)とシーケンス番号S(k)とを受信した場合(ステップ908,YES)、CPU701は、受信したシーケンス番号S(k)とシーケンス番号S(i)とを比較する(ステップ909)。
受信したシーケンス番号S(k)がシーケンス番号S(i)より小さい場合(ステップ909,NO)、CPU701は、ステップ904以降の処理を繰り返す。一方、受信したシーケンス番号S(k)がシーケンス番号S(i)以上である場合(ステップ909,YES)、CPU701は、受信した開始時刻T(k)とシーケンス番号S(k)とをメモリ702に書き込む(ステップ910)。そして、CPU701は、再び、受信したシーケンス番号S(k)とシーケンス番号S(i)とを比較する(ステップ911)。
受信したシーケンス番号S(k)がシーケンス番号S(i)と一致する場合(ステップ911,NO)、CPU701は、ステップ904以降の処理を繰り返す。こうして、全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれると(ステップ904,YES)、CPU701は、全プロセスの開始時刻の最大値を求め、メモリ702に書き込む(ステップ905)。
次に、CPU701は、CPU601に割り込み(ステップ906)、CPU601は、ネットワークインタフェースドライバを動作させる。そして、CPU601は、メモリ702から開始時刻の最大値を読み出してメモリ602に書き込み、メモリ702を初期化する(ステップ907)。これにより、メモリ702内の全プロセスの開始時刻とシーケンス番号とが消去される。
一方、受信したシーケンス番号S(k)がシーケンス番号S(i)より大きい場合(ステップ911,YES)、CPU701は、CPU601に割り込み、指示された演算処理を中止する旨を通知する(ステップ912)。この通知により、CPU601は、メモリ702を初期化することなく、プロセスがネットワークインタフェースドライバに対して指示した演算処理を中止する。その後、プロセスがネットワークインタフェースドライバに対して次の演算処理を指示したとき、CPU601は、改めてステップ901以降の処理を開始する。
図10は、図5のノード501−1〜ノード501−nの各ノード内で複数のプロセスが動作している場合に行われる、図8の演算処理の具体例を示すフローチャートである。
シーケンス情報としては、例えば、昇順の非負の整数であるシーケンス番号が用いられる。シーケンス番号は、ネットワークインタフェースドライバにより管理され、並列アプリケーションの開始時に0にリセットされる。ノード501−1〜ノード501−nで動作するプロセスの総数をpとし、m番目のプロセスの識別情報をP(m)とする(m=1〜p)。各ノード501−i(i=1〜n)内のメモリ602は、ノード501−i内の各プロセスがプロセス間通信を開始した開始時刻T(m)と、そのプロセスのシーケンス番号S(m)とを記憶する。
ノード501−i内の複数のプロセスのうちプロセスP(r)がプロセス間通信を開始したとき、プロセスP(r)は、ネットワークインタフェースドライバに対して演算処理を指示する(ステップ1001)。次に、CPU601は、ネットワークインタフェースドライバとして動作し、プロセスP(r)の開始時刻T(r)とシーケンス番号S(r)とをメモリ602から読み出す(ステップ1002)。次に、CPU601は、読み出した開始時刻T(r)とシーケンス番号S(r)とを演算部411内のメモリ702に書き込み、演算部411内のCPU701に対して演算処理を指示する。そして、CPU601は、メモリ602内のシーケンス番号S(r)を1だけインクリメントする。
次に、CPU701は、メモリ702に書き込まれた開始時刻T(r)とシーケンス番号S(r)とを他のノード501−j(1≦j≦n,j≠i)へ送信する(ステップ1003)。
その後、ノード501−i内の別のプロセスP(x)がプロセス間通信を開始したとき、プロセスP(x)は、ステップ1001と同様に、ネットワークインタフェースドライバに対して演算処理を指示する。また、CPU601は、ステップ1002と同様に、プロセスP(x)の開始時刻T(x)とシーケンス番号S(x)とをメモリ702に書き込み、メモリ602内のシーケンス番号S(x)を1だけインクリメントする。そして、CPU701は、ステップ1003と同様に、メモリ702に書き込まれた開始時刻T(x)とシーケンス番号S(x)とを他のノード501−j(1≦j≦n,j≠i)へ送信する。
次に、CPU701は、並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれているか否かをチェックする(ステップ1004)。いずれかのプロセスの開始時刻とシーケンス番号とが書き込まれていない場合(ステップ1004,NO)、CPU701は、他のノードから開始時刻とシーケンス番号とを受信したか否かをチェックする(ステップ1008)。
他のノードから開始時刻とシーケンス番号とを受信していない場合(ステップ1008,NO)、CPU701は、ステップ1004以降の処理を繰り返す。
この間に、ノード501−i内の別のプロセスP(y)がプロセス間通信を開始したとき、プロセスP(y)は、ステップ1001と同様に、ネットワークインタフェースドライバに対して演算処理を指示する。また、CPU601は、ステップ1002と同様に、プロセスP(y)の開始時刻T(y)とシーケンス番号S(y)とをメモリ702に書き込み、メモリ602内のシーケンス番号S(y)を1だけインクリメントする。そして、CPU701は、ステップ1003と同様に、メモリ702に書き込まれた開始時刻T(y)とシーケンス番号S(y)とを他のノード501−j(1≦j≦n,j≠i)へ送信する。
一方、他のノード501−k(1≦k≦n,k≠i)から開始時刻T(q)とシーケンス番号S(q)とを受信した場合(ステップ1008,YES)、CPU701は、ステップ1009の処理を行う。
ステップ1009において、CPU701は、メモリ702に書き込まれたシーケンス番号のうち、ノード501−i内の1つ以上のプロセスに対応するシーケンス番号の最大値を求める。そして、CPU701は、受信したシーケンス番号S(q)とシーケンス番号の最大値とを比較する。受信したシーケンス番号S(q)がシーケンス番号の最大値より小さい場合(ステップ1009,NO)、CPU701は、ステップ1004以降の処理を繰り返す。
一方、受信したシーケンス番号S(q)がシーケンス番号の最大値以上である場合(ステップ1009,YES)、CPU701は、受信した開始時刻T(q)とシーケンス番号S(q)とをメモリ702に書き込む(ステップ1010)。そして、CPU701は、再び、受信したシーケンス番号S(q)とシーケンス番号の最大値とを比較する(ステップ1011)。
受信したシーケンス番号S(q)がシーケンス番号の最大値と一致する場合(ステップ1011,NO)、CPU701は、ステップ1004以降の処理を繰り返す。ノード501−i内の全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれ、それらのシーケンス番号がシーケンス番号S(r)と一致すると、ステップ1009で求められるシーケンス番号の最大値はS(r)となる。
並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれると(ステップ1004,YES)、CPU701は、全プロセスの開始時刻の最大値を求め、メモリ702に書き込む(ステップ1005)。
次に、CPU701は、CPU601に割り込み(ステップ1006)、CPU601は、ネットワークインタフェースドライバを動作させる。そして、CPU601は、メモリ702から開始時刻の最大値を読み出してメモリ602に書き込み、メモリ702を初期化する(ステップ1007)。これにより、メモリ702内の全プロセスの開始時刻とシーケンス番号とが消去される。
一方、受信したシーケンス番号S(q)がシーケンス番号の最大値より大きい場合(ステップ1011,YES)、CPU701は、CPU601に割り込み、指示された演算処理を中止する旨を通知する(ステップ1012)。この通知により、CPU601は、メモリ702を初期化することなく、プロセスP(r)がネットワークインタフェースドライバに対して指示した演算処理を中止する。その後、プロセスP(r)又は別のプロセスがネットワークインタフェースドライバに対して次の演算処理を指示したとき、CPU601は、改めてステップ1001以降の処理を開始する。
図9又は図10の演算処理によれば、演算部411は、演算処理を指示されても、最新のシーケンス番号を持つ全プロセスの開始時刻がメモリ702に書き込まれるまで、開始時刻を用いた演算を行わない。そして、ノード501−i内のプロセスのシーケンス番号がインクリメントされて、受信したシーケンス番号と同じになったとき、そのシーケンス番号を持つ全プロセスの開始時刻を用いた演算処理が行われる。
このように、常に最新のシーケンス番号を持つ開始時刻を対象として演算処理が行われ、各プロセスは、古い開始時刻を用いた演算処理の完了を待つことなく、最新の開始時刻を用いた演算処理を演算部411に対して次々に指示することができる。したがって、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。
また、通信制御装置401内に1つの演算部411を設ければよく、複数のネットワークリダクション機構を設ける必要がないため、ハードウェアの増加を抑えることができる。特に、大規模並列計算機システムにおいて、図9又は図10の演算処理による大きな効果が期待できる。
図4及び図7の通信制御装置401、図5の並列計算機システム500、及び図6のノード501−iの構成は一例に過ぎず、並列計算機システムの用途や条件に応じて一部の構成要素を省略又は変更してもよい。
図8〜図10のフローチャートは一例に過ぎず、並列計算機システムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図9又は図10の演算処理において、シーケンス番号以外の通信処理の順序を示す情報をシーケンス情報として用いることもできる。また、図9のステップ905又は図10のステップ1005において、CPU701は、開始時刻の最大値を求める代わりに、開始時刻の総和、開始時刻の最小値等の他の数値を求めることもできる。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図4乃至図10を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
演算処理装置と主記憶装置とに接続する通信制御装置であって、
前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する演算部、
を有することを特徴とする通信制御装置。
(付記2)
前記第2のシーケンス情報よりも前記第1のシーケンス情報の方が新しく、前記第2のプロセスが第3のプロセス間通信を開始した第3の開始時刻に付与された第3のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記演算部は、前記第2の開始時刻を用いた演算を行わず、前記第1の開始時刻と前記第3の開始時刻とを用いた演算を行って演算結果を出力することを特徴とする付記1記載の通信制御装置。
(付記3)
前記演算処理装置は、前記第1のプロセスを実行し、前記通信制御装置を介して接続された情報処理装置が有する演算処理装置は、前記第2のプロセスを実行することを特徴とする付記1又は2記載の通信制御装置。
(付記4)
前記第1のシーケンス情報は、前記複数のプロセスのうち、前記第1のプロセスを実行する前記演算処理装置が実行する第4のプロセスが、第4のプロセス間通信を開始した第4の開始時刻に付与された第4のシーケンス情報に対応するか、又は前記第4のシーケンス情報よりも新しいことを特徴とする付記3記載の通信制御装置。
(付記5)
前記演算処理装置は、前記第1のプロセス及び前記第2のプロセスを実行することを特徴とする付記1又は2記載の通信制御装置。
(付記6)
プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
を有することを特徴とする情報処理装置。
(付記7)
複数の情報処理装置を有する並列計算機システムであって、
前記複数の情報処理装置のうち少なくとも1つの情報処理装置は、
プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
を有することを特徴とする並列計算機システム。
(付記8)
演算処理装置と通信制御装置と主記憶装置とを有する情報処理装置の制御プログラムであって、
前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
処理を前記通信制御装置内の演算処理装置に実行させることを特徴とする制御プログラム。
(付記9)
複数の情報処理装置を有する並列計算機システムの制御方法であって、
前記複数の情報処理装置のうち少なくとも1つの情報処理装置が、
プログラムを実行し、
前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与し、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
ことを特徴とする制御方法。
101、102 矢印
301 ネットワークリダクション機構
401 通信制御装置
411 演算部
500 並列計算機システム
501−1〜501−n、501−i ノード
502 ディスクノード
503 通信ネットワーク
601、701 CPU
602、702 メモリ
603 媒体駆動装置
604、705 バス
605 可搬型記録媒体
703、704 インタフェース

Claims (7)

  1. 演算処理装置と主記憶装置とに接続する通信制御装置であって、
    前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する演算部、
    を有することを特徴とする通信制御装置。
  2. 前記第2のシーケンス情報よりも前記第1のシーケンス情報の方が新しく、前記第2のプロセスが第3のプロセス間通信を開始した第3の開始時刻に付与された第3のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記演算部は、前記第2の開始時刻を用いた演算を行わず、前記第1の開始時刻と前記第3の開始時刻とを用いた演算を行って演算結果を出力することを特徴とする請求項1記載の通信制御装置。
  3. 前記演算処理装置は、前記第1のプロセスを実行し、前記通信制御装置を介して接続された情報処理装置が有する演算処理装置は、前記第2のプロセスを実行することを特徴とする請求項1又は2記載の通信制御装置。
  4. プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
    前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
    前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
    を有することを特徴とする情報処理装置。
  5. 複数の情報処理装置を有する並列計算機システムであって、
    前記複数の情報処理装置のうち少なくとも1つの情報処理装置は、
    プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
    前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
    前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
    を有することを特徴とする並列計算機システム。
  6. 演算処理装置と通信制御装置と主記憶装置とを有する情報処理装置の制御プログラムであって、
    前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
    処理を前記通信制御装置内の演算処理装置に実行させることを特徴とする制御プログラム。
  7. 複数の情報処理装置を有する並列計算機システムの制御方法であって、
    前記複数の情報処理装置のうち少なくとも1つの情報処理装置が、
    プログラムを実行し、
    前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与し、
    前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
    ことを特徴とする制御方法。
JP2013248579A 2013-11-29 2013-11-29 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法 Expired - Fee Related JP6152786B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013248579A JP6152786B2 (ja) 2013-11-29 2013-11-29 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法
US14/538,846 US9465675B2 (en) 2013-11-29 2014-11-12 Communication control device, information processing apparatus, parallel computer system, and control method for parallel computer system
EP14193404.2A EP2879054A3 (en) 2013-11-29 2014-11-17 Communication control device, information processing apparatus, parallel computer system, and control method for parallel computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013248579A JP6152786B2 (ja) 2013-11-29 2013-11-29 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法

Publications (2)

Publication Number Publication Date
JP2015106311A JP2015106311A (ja) 2015-06-08
JP6152786B2 true JP6152786B2 (ja) 2017-06-28

Family

ID=51951611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013248579A Expired - Fee Related JP6152786B2 (ja) 2013-11-29 2013-11-29 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法

Country Status (3)

Country Link
US (1) US9465675B2 (ja)
EP (1) EP2879054A3 (ja)
JP (1) JP6152786B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
JP7159696B2 (ja) * 2018-08-28 2022-10-25 富士通株式会社 情報処理装置,並列計算機システムおよび制御方法
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
CN111858017A (zh) * 2019-04-30 2020-10-30 伊姆西Ip控股有限责任公司 用于处理任务的方法、设备和计算机程序产品
US11750699B2 (en) 2020-01-15 2023-09-05 Mellanox Technologies, Ltd. Small message aggregation
US11252027B2 (en) 2020-01-23 2022-02-15 Mellanox Technologies, Ltd. Network element supporting flexible data reduction operations
US11876885B2 (en) 2020-07-02 2024-01-16 Mellanox Technologies, Ltd. Clock queue with arming and/or self-arming features
US11556378B2 (en) 2020-12-14 2023-01-17 Mellanox Technologies, Ltd. Offloading execution of a multi-task parameter-dependent operation to a network device
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3532037B2 (ja) * 1996-07-31 2004-05-31 富士通株式会社 並列計算機
JPH1063550A (ja) 1996-08-23 1998-03-06 Fujitsu Ltd 実行性能解析表示方法およびその方法を実施するプログラムを記録した媒体
US7100021B1 (en) * 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
US8056087B2 (en) * 2006-09-25 2011-11-08 International Business Machines Corporation Effective use of a hardware barrier synchronization register for protocol synchronization
JP2009059316A (ja) * 2007-09-04 2009-03-19 Nec Corp 測定装置、測定プログラム、および、測定方法
JP2009176116A (ja) * 2008-01-25 2009-08-06 Univ Waseda マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法
JP5304194B2 (ja) * 2008-11-19 2013-10-02 富士通株式会社 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
US8972702B2 (en) 2009-11-30 2015-03-03 Intenational Business Machines Corporation Systems and methods for power management in a high performance computing (HPC) cluster
JP5526914B2 (ja) * 2010-03-25 2014-06-18 富士通株式会社 解析装置、解析方法および解析プログラム
JP5139486B2 (ja) 2010-08-30 2013-02-06 株式会社東芝 トレース生成装置、システム、およびそのプログラム
JP5549575B2 (ja) 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
JP5889332B2 (ja) 2011-01-10 2016-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 並行ソフトウェア環境のためのアクティビティ記録システム

Also Published As

Publication number Publication date
EP2879054A2 (en) 2015-06-03
US20150154058A1 (en) 2015-06-04
JP2015106311A (ja) 2015-06-08
EP2879054A3 (en) 2016-06-22
US9465675B2 (en) 2016-10-11

Similar Documents

Publication Publication Date Title
JP6152786B2 (ja) 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法
CN102981864B (zh) 信息处理装置和信息处理方法
US10025533B2 (en) Logical block addresses used for executing host commands
WO2020173092A1 (zh) 数据处理方法、独立硬盘冗余阵列控制器和数据存储系统
JPWO2017163441A1 (ja) 画像処理装置、画像処理方法、及び画像処理プログラム
JP2015225396A (ja) 車両制御装置
JP6449487B2 (ja) ソフトウェアセキュリティ検証方法、デバイス、およびシステム
JP6464739B2 (ja) 情報処理システムの制御プログラム,情報処理装置,及び情報処理システム
CN112631994A (zh) 数据迁移方法及系统
CN110741408B (zh) 图像处理装置、图像处理方法和图像处理程序
EP3495960A1 (en) Program, apparatus, and method for communicating data between parallel processor cores
JP6433645B2 (ja) アプリケーションを高速に処理する演算処理装置及び方法
US8806078B2 (en) Information processing device and program product
JPWO2016042635A1 (ja) 計算機及び計算機システム
JP7225904B2 (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JP6957910B2 (ja) 情報処理装置
JP4548505B2 (ja) 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
CN109254936B (zh) 插入数据传输队列结构体的方法和装置
JP2010231295A (ja) 解析システム
JP6580288B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JPWO2004068356A1 (ja) データ通信システムおよびデータ通信方法、データ通信プログラム
JP6217386B2 (ja) マルチプロセッサ用プログラム生成方法
WO2018173300A1 (ja) I/o制御方法およびi/o制御システム
JP2018185615A (ja) 電子機器、方法、及びプログラム
JP7503198B2 (ja) ハードウェアオートローダ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170515

R150 Certificate of patent or registration of utility model

Ref document number: 6152786

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees