[go: up one dir, main page]

JP6152786B2 - Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method - Google Patents

Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method 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
Japanese (ja)
Other versions
JP2015106311A (en
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/en
Priority to US14/538,846 priority patent/US9465675B2/en
Priority to EP14193404.2A priority patent/EP2879054A3/en
Publication of JP2015106311A publication Critical patent/JP2015106311A/en
Application granted granted Critical
Publication of JP6152786B2 publication Critical patent/JP6152786B2/en
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

本発明は、通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法に関する。   The present invention relates to a communication control device, an information processing device, a parallel computer system, a control program, and a control method for the parallel computer system.

並列計算機システムにおける並列アプリケーションプログラムの実行時には、主にMessage Passing Interface(MPI)を利用して、複数のプロセスの各々が演算処理とプロセス間通信処理とを繰り返しながら並列に処理を進める。このプロセス間通信処理は、並列計算機システムのあるノード内のプロセス間で行われるとともに、異なるノードのプロセス間でも行われる。このとき、演算処理時間がプロセス間で異なることで、通信処理の開始時刻がプロセス間で異なる場合がある。   When executing a parallel application program in a parallel computer system, mainly using a Message Passing Interface (MPI), each of a plurality of processes proceeds in parallel while repeating arithmetic processing and inter-process communication processing. This inter-process communication process is performed between processes in a node of the parallel computer system, and is also performed between processes of different nodes. At this time, the start time of communication processing may differ between processes due to the difference in the computation processing time between processes.

例えば、図1に示すように、プロセスP0、プロセスP1、及びプロセスP2が並列アプリケーションプログラムを実行する場合、演算処理が早く完了したプロセスP0及びプロセスP1は、プロセスP2との通信処理をそれぞれ試行する。しかし、プロセスP2は、演算処理中であり通信処理を開始できないため、プロセスP0及びプロセスP1は、プロセスP2による演算処理の完了をそれぞれ待つ。この間、プロセスP0及びプロセスP1は、演算処理も通信処理も行わないため、並列計算機システムの利用効率が低下し、台数効果が悪化する。   For example, as shown in FIG. 1, when the process P0, the process P1, and the process P2 execute the parallel application program, the process P0 and the process P1 that have completed the arithmetic processing earlier try communication processing with the process P2, respectively. . However, since the process P2 is performing arithmetic processing and communication processing cannot be started, the process P0 and the process P1 each wait for completion of the arithmetic processing by the process P2. During this time, since the process P0 and the process P1 do not perform arithmetic processing or communication processing, the utilization efficiency of the parallel computer system is lowered and the number effect is deteriorated.

この問題を解決するには、並列アプリケーションプログラムの開発者が各プロセスの演算処理時間を均等化するコード書き換えやパラメータチューニング等を行い、通信処理の開始時刻をプロセス間で揃える方法が考えられる。   In order to solve this problem, a method in which a developer of a parallel application program performs code rewriting, parameter tuning, etc. to equalize the processing time of each process and aligns the start time of communication processing among the processes.

通信処理の開始時刻がプロセス間で揃っているか否かを確認する方法として、同期待ち時間と呼ばれる値の多寡で確認する方法が知られている。同期待ち時間は、例えば、次のようにして求められる。   As a method for confirming whether or not the start time of communication processing is uniform among processes, there is known a method for confirming based on a value called a synchronization waiting time. The synchronization waiting time is obtained, for example, as follows.

1.各プロセスの通信処理ごとに開始時刻を取得する。この開始時刻は、例えば、各プロセスの実行開始時点からの経過時間として取得することができる。
2.通信処理ごとに複数のプロセスの開始時刻の最大値を求める。
3.最大値と各プロセスの通信処理の開始時刻との差分を求め、プロセスごとに複数の通信処理に関する差分を積算し、同期待ち時間として記録する。
1. The start time is acquired for each communication process of each process. This start time can be acquired, for example, as an elapsed time from the execution start time of each process.
2. The maximum value of the start times of a plurality of processes is obtained for each communication process.
3. The difference between the maximum value and the communication processing start time of each process is obtained, and the differences regarding a plurality of communication processes are integrated for each process, and recorded as the synchronization waiting time.

各プロセスの同期待ち時間は、すべての通信処理の開始時刻がプロセス間で一致すると0になり、プロセス間で開始時刻の差が大きいほど、並列アプリケーションプログラムの実行に要した経過時間に近づく。したがって、同期待ち時間が0に近いほど望ましい状態であると判断できる。   The synchronization waiting time of each process becomes 0 when the start times of all communication processes coincide between processes, and the greater the difference in start time between processes, the closer to the elapsed time required to execute the parallel application program. Therefore, it can be determined that the closer the synchronization waiting time is to 0, the more desirable the state is.

図1の1回目の通信処理では、プロセスP0、プロセスP1、及びプロセスP2の開始時刻はそれぞれ20、10、及び30であり、開始時刻の最大値は、矢印101が示す30である。そして、最大値30とプロセスP0、プロセスP1、及びプロセスP2の開始時刻との差分は、それぞれ10、20、及び0となる。   In the first communication process of FIG. 1, the start times of the process P0, the process P1, and the process P2 are 20, 10, and 30, respectively, and the maximum start time is 30 indicated by the arrow 101. Differences between the maximum value 30 and the start times of the process P0, the process P1, and the process P2 are 10, 20, and 0, respectively.

2回目の通信処理では、プロセスP0、プロセスP1、及びプロセスP2の開始時刻はそれぞれ60、70、及び50であり、開始時刻の最大値は、矢印102が示す70である。そして、最大値70とプロセスP0、プロセスP1、及びプロセスP2の開始時刻との差分は、それぞれ10、0、及び20となる。   In the second communication process, the start times of the process P0, the process P1, and the process P2 are 60, 70, and 50, respectively, and the maximum start time is 70 indicated by the arrow 102. Differences between the maximum value 70 and the start times of the process P0, the process P1, and the process P2 are 10, 0, and 20, respectively.

したがって、1回目及び2回目の通信処理に関する差分を積算すると、プロセスP0、プロセスP1、及びプロセスP2の同期待ち時間はそれぞれ20、20、及び20となる。この場合、並列アプリケーションプログラムの実行に要した経過時間は80であり、そのうち20が、他のプロセスによる演算処理の完了を待つための無駄な時間であったと解釈できる。   Therefore, when the differences related to the first and second communication processes are integrated, the synchronization waiting times of the process P0, the process P1, and the process P2 are 20, 20, and 20, respectively. In this case, the elapsed time required to execute the parallel application program is 80, and 20 of them can be interpreted as wasted time for waiting for completion of the arithmetic processing by another process.

米国Cray社の並列アプリケーション性能プロファイリングツールは、同期待ち時間を求めるためにMPIの集団通信関数をフックし、通信処理の開始前にプロセス間同期インタフェース(MPI_Barrier関数)を自動的に呼び出す。そして、並列アプリケーション性能プロファイリングツールは、プロセスごとにMPI_Barrier関数の経過時間の合計値を求める。   The parallel application performance profiling tool of Cray Corporation in the United States hooks the MPI collective communication function to obtain the synchronization waiting time, and automatically calls the inter-process synchronization interface (MPI_Barrier function) before the start of communication processing. Then, the parallel application performance profiling tool obtains the total elapsed time of the MPI_Barrier function for each process.

複数のプロセスが持つデータを対象として、データの総和、最大値、最小値等を求めるリダクション演算を行うリダクション演算装置も知られている(例えば、特許文献1を参照)。   There is also known a reduction operation device that performs a reduction operation for obtaining the sum, maximum value, minimum value, etc. of data for data of a plurality of processes (see, for example, Patent Document 1).

特開2010−122848号公報JP 2010-122848 A

以下の説明では、並列アプリケーションプログラムを、単に、並列アプリケーションと記載する場合がある。   In the following description, the parallel application program may be simply referred to as a parallel application.

従来の並列計算機システムには、以下のような問題がある。
並列アプリケーション性能プロファイリングツールのように、同期待ち時間を求めるためにプロセス間同期インタフェースを呼び出す場合、各プロセスの処理に同期処理が加わるため、並列アプリケーションの挙動を大きく変えてしまうことがある。このため、同期処理を行うことなく、通信処理ごとに開始時刻の最大値を求めることが望ましい。
The conventional parallel computer system has the following problems.
When the inter-process synchronization interface is called to obtain the synchronization waiting time as in the parallel application performance profiling tool, the synchronization processing is added to the processing of each process, so the behavior of the parallel application may be greatly changed. For this reason, it is desirable to obtain the maximum value of the start time for each communication process without performing the synchronization process.

同期処理を行うことなく(非同期に)、通信処理ごとに開始時刻の最大値を求めるには、各プロセスが通信処理ごとに開始時刻を取得して主記憶領域に書き込んだ後に、並列アプリケーションの実行中又は実行後に最大値を計算する方法が考えられる。   To obtain the maximum start time for each communication process without performing synchronous processing (asynchronously), each process acquires the start time for each communication process and writes it to the main storage area before executing the parallel application. A method of calculating the maximum value during or after execution is conceivable.

並列アプリケーションの実行後に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録するため、実行時間が長い並列アプリケーションでは並列アプリケーションが利用できる主記憶領域を圧迫する可能性がある。このような場合、並列アプリケーションの実行中に最大値を計算することが望ましい。   When the maximum value is calculated after the execution of the parallel application, data of the start time of all communication processes is recorded. Therefore, in a parallel application having a long execution time, the main storage area that can be used by the parallel application may be compressed. In such a case, it is desirable to calculate the maximum value during execution of the parallel application.

並列アプリケーションの実行中に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録する必要はなく、過去の通信処理に関する差分の積算値を同期待ち時間として記録すれば足りる。したがって、実行時間が長い並列アプリケーションであっても主記憶領域を圧迫することはない。この場合、演算処理中に、ソフトウェア又はハードウェアの非同期通信インタフェースを利用して、各プロセスの通信処理の開始時刻を送受信する方法が考えられる。   When calculating the maximum value during the execution of the parallel application, it is not necessary to record the data of the start time of all the communication processes, and it is sufficient to record the integrated value of the differences regarding the past communication processes as the synchronization waiting time. Therefore, even in a parallel application having a long execution time, the main storage area is not compressed. In this case, a method of transmitting and receiving the communication processing start time of each process using an asynchronous communication interface of software or hardware during the arithmetic processing is conceivable.

しかし、ソフトウェアの非同期通信インタフェースを利用する方法では、最大値の計算はCentral Processing Unit(CPU)によるソフトウェア処理のため、CPU時間を消費することで並列アプリケーションの挙動が変わる可能性がある。   However, in the method using the asynchronous communication interface of software, the calculation of the maximum value is software processing by the Central Processing Unit (CPU), so that the behavior of the parallel application may change by consuming CPU time.

ハードウェアの非同期通信インタフェースを利用する方法では、各プロセスがネットワークインタフェースに実装されたネットワークリダクション機構に開始時刻のデータを転送し、最大値演算を指示することができる。   In the method using the hardware asynchronous communication interface, each process can transfer start time data to a network reduction mechanism mounted on the network interface and instruct maximum value calculation.

ここで、ある通信処理と次の通信処理との間の演算処理時間が非常に短い場合、稀にではあるが、ネットワークリダクション機構による最大値演算が完了しない可能性がある。ネットワークリダクション機構が同時に単一の最大値演算しか実行できない場合、各プロセスは、先行する最大値演算が完了するまで後続の最大値演算を指示できないため、並列アプリケーションの挙動が変わってしまう。   Here, when the calculation processing time between one communication process and the next communication process is very short, there is a possibility that the maximum value calculation by the network reduction mechanism may not be completed. If the network reduction mechanism can execute only a single maximum value operation at the same time, each process cannot instruct the subsequent maximum value operation until the preceding maximum value operation is completed, and the behavior of the parallel application is changed.

1つの側面において、本発明は、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことを目的とする。   In one aspect, an object of the present invention is to perform an operation using the start time of interprocess communication without changing the behavior of a parallel application during execution of the parallel application.

1つの案では、演算処理装置と主記憶装置とに接続する通信制御装置は、演算部を含む。   In one proposal, the communication control device connected to the arithmetic processing device and the main storage device includes an arithmetic unit.

第1のシーケンス情報は、演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して演算処理装置が付与して、主記憶装置に書き込んだシーケンス情報である。複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合、演算部は、第1の開始時刻を用いた演算を行わない。   The first sequence information is given by the arithmetic processing device to the first start time at which the first process of the plurality of processes included in the program executed by the arithmetic processing device starts the first inter-process communication. Sequence information written to the main memory. When the second sequence information given at the second start time at which the second process of the plurality of processes has started the second inter-process communication is newer than the first sequence information, The calculation using the first start time is not performed.

第2のシーケンス情報が第1のシーケンス情報に対応する場合、演算部は、第1の開始時刻と第2の開始時刻とを用いた演算を行って演算結果を出力する。   When the second sequence information corresponds to the first sequence information, the calculation unit performs a calculation using the first start time and the second start time and outputs a calculation result.

実施形態によれば、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。   According to the embodiment, it is possible to perform an operation using the start time of interprocess communication without changing the behavior of the parallel application during execution of the parallel application.

並列計算機システムにおけるプロセス間通信処理を示す図である。It is a figure which shows the inter-process communication process in a parallel computer system. プロセス間同期インタフェースを用いた場合のプロセス間通信処理を示す図である。It is a figure which shows the inter-process communication process at the time of using an inter-process synchronous interface. ネットワークリダクション機構を示す図である。It is a figure which shows a network reduction mechanism. 第1の通信制御装置の構成図である。It is a block diagram of a 1st communication control apparatus. 並列計算機システムの構成図である。It is a block diagram of a parallel computer system. ノードの構成図である。It is a block diagram of a node. 第2の通信制御装置の構成図である。It is a block diagram of a 2nd communication control apparatus. プロセス間通信の開始時刻を用いた演算処理のフローチャートである。It is a flowchart of the arithmetic processing using the start time of interprocess communication. 演算処理の第1の具体例を示すフローチャートである。It is a flowchart which shows the 1st specific example of a calculation process. 演算処理の第2の具体例を示すフローチャートである。It is a flowchart which shows the 2nd specific example of a calculation process.

以下、図面を参照しながら、実施形態を詳細に説明する。
並列アプリケーション性能プロファイリングツールのように、同期待ち時間を求めるためにプロセス間同期インタフェースを呼び出す場合、各プロセスの処理に同期処理が加わるため、並列アプリケーションの挙動を大きく変えてしまうことがある。
Hereinafter, embodiments will be described in detail with reference to the drawings.
When the inter-process synchronization interface is called to obtain the synchronization waiting time as in the parallel application performance profiling tool, the synchronization processing is added to the processing of each process, so the behavior of the parallel application may be greatly changed.

図2は、図1の並列アプリケーションにおいて、並列アプリケーション性能プロファイリングツールによりプロセス間同期インタフェースを呼び出す例を示している。この場合、各プロセスの通信処理が完了した後に、同期待ち時間を求める同期処理が行われるため、並列アプリケーションの実行に要した経過時間は、80から100に25%増加している。並列アプリケーションにも依存するが、図2のように、経過時間が10%以上増加する例は少なくない。このため、同期処理を行うことなく、通信処理ごとに開始時刻の最大値を求めることが望ましい。   FIG. 2 shows an example in which the inter-process synchronization interface is called by the parallel application performance profiling tool in the parallel application of FIG. In this case, since the synchronization process for obtaining the synchronization waiting time is performed after the communication process of each process is completed, the elapsed time required to execute the parallel application is increased by 25% from 80 to 100. Although it depends on the parallel application, there are many cases where the elapsed time increases by 10% or more as shown in FIG. For this reason, it is desirable to obtain the maximum value of the start time for each communication process without performing the synchronization process.

同期処理を行うことなく(非同期に)、通信処理ごとに開始時刻の最大値を求めるには、各プロセスが通信処理ごとに開始時刻を取得して主記憶領域に書き込んだ後に、並列アプリケーションの実行中又は実行後に最大値を計算する方法が考えられる。   To obtain the maximum start time for each communication process without performing synchronous processing (asynchronously), each process acquires the start time for each communication process and writes it to the main storage area before executing the parallel application. A method of calculating the maximum value during or after execution is conceivable.

まず、並列アプリケーションの実行後に最大値を計算する場合、実行時間が長い並列アプリケーションでは並列アプリケーションが利用できる主記憶領域を圧迫する可能性がある。例えば、100,000個のプロセスが1日間走行する並列アプリケーションにおいて、1msあたり1回の頻度で通信処理が発生すると仮定する。通信処理ごとに8バイトの開始時刻のデータを記録すると、並列アプリケーションが終了する間際には、1プロセスあたり約691Mバイトの主記憶領域が開始時刻のデータで埋まることになる。   First, when the maximum value is calculated after execution of a parallel application, there is a possibility that a parallel application having a long execution time may squeeze the main storage area that the parallel application can use. For example, it is assumed that communication processing occurs at a frequency of once per 1 ms in a parallel application in which 100,000 processes run for one day. If 8 bytes of start time data is recorded for each communication process, about 691 Mbytes of main storage area per process is filled with start time data just before the end of the parallel application.

1ノードあたり32Gバイトの主記憶装置を搭載した並列計算機システムにおいて、各ノード内で16プロセスが並列に動作する場合、約11Gバイトの主記憶領域が開始時刻のデータで埋まり、並列アプリケーションの実行に支障が出る可能性がある。このような場合、並列アプリケーションの実行中に最大値を計算することが望ましい。   In a parallel computer system equipped with a main memory device of 32 GB per node, when 16 processes operate in parallel in each node, the main memory area of about 11 GB is filled with start time data to execute parallel applications. There is a possibility of trouble. In such a case, it is desirable to calculate the maximum value during execution of the parallel application.

並列アプリケーションの実行中に最大値を計算する場合、すべての通信処理の開始時刻のデータを記録する必要はなく、過去の通信処理に関する差分の積算値を同期待ち時間として記録すれば足りる。したがって、実行時間が長い並列アプリケーションであっても主記憶領域を圧迫することはない。この場合、演算処理中に、ソフトウェア又はハードウェアの非同期通信インタフェースを利用して、各プロセスの通信処理の開始時刻を送受信する方法が考えられる。   When calculating the maximum value during the execution of the parallel application, it is not necessary to record the data of the start time of all the communication processes, and it is sufficient to record the integrated value of the differences regarding the past communication processes as the synchronization waiting time. Therefore, even in a parallel application having a long execution time, the main storage area is not compressed. In this case, a method of transmitting and receiving the communication processing start time of each process using an asynchronous communication interface of software or hardware during the arithmetic processing is conceivable.

ソフトウェアの非同期通信インタフェースを利用する方法では、MPIのノンブロッキング通信インタフェース(MPI_Isend関数、MPI_Irecv関数、MPI_Wait関数等)により、プロセス間で開始時刻のデータを送受信することができる。しかし、最大値の計算はCentral Processing Unit(CPU)によるソフトウェア処理のため、CPU時間を消費することで並列アプリケーションの挙動が変わる可能性がある。   In the method using the asynchronous communication interface of software, the data of the start time can be transmitted and received between processes by the MPI non-blocking communication interface (MPI_Isend function, MPI_Irecv function, MPI_Wait function, etc.). However, since the calculation of the maximum value is software processing by the Central Processing Unit (CPU), the behavior of the parallel application may change by consuming CPU time.

ハードウェアの非同期通信インタフェースを利用する方法では、各プロセスがネットワークインタフェースに実装されたネットワークリダクション機構に開始時刻のデータを転送し、最大値演算を指示することができる。ネットワークリダクション機構とは、通信ネットワークで接続された各ノードの各プロセスからデータを受信し、すべてのデータを対象として単一の演算を行った後、演算結果を各ノードで保持するためのハードウェア機構を指す。ネットワークリダクション機構による演算としては、例えば、データの総和、最大値、最小値等を求める演算が挙げられる。   In the method using the hardware asynchronous communication interface, each process can transfer start time data to a network reduction mechanism mounted on the network interface and instruct maximum value calculation. Network reduction mechanism is hardware that receives data from each process of each node connected in the communication network, performs a single operation on all data, and holds the operation result in each node Refers to mechanism. Examples of the calculation by the network reduction mechanism include calculation for obtaining the sum, maximum value, minimum value, and the like of data.

例えば、各プロセスが、ある通信処理の完了時にその通信処理の開始時刻をネットワークリダクション機構に転送して最大値演算を指示した後、次の通信処理の開始時にネットワークリダクション機構から最大値を読み出すことができる。これにより、各プロセスの演算処理中にネットワークリダクション機構が最大値を計算することができる。   For example, each process reads the maximum value from the network reduction mechanism at the start of the next communication process after transferring the communication process start time to the network reduction mechanism at the completion of a certain communication process and instructing the maximum value calculation. Can do. Thereby, the network reduction mechanism can calculate the maximum value during the arithmetic processing of each process.

図3は、図1の並列アプリケーションにおいて、ネットワークリダクション機構301が最大値を計算する例を示している。この場合、ネットワークリダクション機構301は、2回目の演算処理中に、1回目の通信処理の開始時刻の最大値30を計算する。そして、プロセスP0、プロセスP1、及びプロセスP2は、2回目の通信処理の開始時に、最大値30と1回目の通信処理の開始時刻20、10、及び30との差分10、20、及び0をそれぞれ求める。   FIG. 3 shows an example in which the network reduction mechanism 301 calculates the maximum value in the parallel application of FIG. In this case, the network reduction mechanism 301 calculates the maximum value 30 of the start time of the first communication process during the second calculation process. Then, the process P0, the process P1, and the process P2 set the differences 10, 20, and 0 between the maximum value 30 and the start times 20, 10, and 30 of the first communication process at the start of the second communication process. Ask for each.

ここで、ある通信処理と次の通信処理との間の演算処理時間が非常に短い場合、稀にではあるが、ネットワークリダクション機構による最大値演算が完了しない可能性がある。ネットワークリダクション機構が同時に単一の最大値演算しか実行できない場合、各プロセスは、先行する最大値演算が完了するまで後続の最大値演算を指示できないため、並列アプリケーションの挙動が変わってしまう。   Here, when the calculation processing time between one communication process and the next communication process is very short, there is a possibility that the maximum value calculation by the network reduction mechanism may not be completed. If the network reduction mechanism can execute only a single maximum value operation at the same time, each process cannot instruct the subsequent maximum value operation until the preceding maximum value operation is completed, and the behavior of the parallel application is changed.

ネットワークリダクション機構を利用する場合に、並列アプリケーションの挙動が変わることを防ぐ方法はいくつか考えられる。例えば、先行する最大値演算が完了するまで、ネットワークリダクション機構が後続の最大値演算の指示をスキップする方法が挙げられる。しかし、ネットワークリダクション機構による演算がプロセス間で同一時刻に完了するとは限らないため、プロセスごとにスキップした回数が異なる状況が発生し得る。このような状況で後続の最大値演算を行うと、1つの通信処理の開始時刻の最大値の代わりに、複数の異なる通信処理の開始時刻の最大値が計算されてしまう。   There are several ways to prevent the behavior of parallel applications from changing when using a network reduction mechanism. For example, there is a method in which the network reduction mechanism skips the instruction for the subsequent maximum value calculation until the preceding maximum value calculation is completed. However, since the calculation by the network reduction mechanism is not always completed between processes at the same time, a situation may occur in which the number of skips differs for each process. When the subsequent maximum value calculation is performed in such a situation, the maximum value of the start times of a plurality of different communication processes is calculated instead of the maximum value of the start time of one communication process.

他の方法としては、ネットワークインタフェースに複数のネットワークリダクション機構を実装して、それらのネットワークリダクション機構を順番に使用する方法が挙げられる。しかし、ハードウェアの増加が非常に大きくなる。ネットワークリダクション機構による最大値演算が完了しないことは稀に発生する問題であるため、その解決のために大きなハードウェアコストをかけるのは現実的ではない。   As another method, a plurality of network reduction mechanisms are implemented in the network interface, and the network reduction mechanisms are used in order. However, the increase in hardware becomes very large. Since it is a rare problem that the maximum value calculation by the network reduction mechanism is not completed, it is not realistic to apply a large hardware cost to solve the problem.

なお、かかる問題は、並列アプリケーションにおいてプロセス間通信を開始した時刻の最大値を計算する場合に限らず、プロセス間通信を開始した時刻を用いた他の演算を行う場合においても生ずるものである。   Such a problem occurs not only when calculating the maximum value of the time when interprocess communication is started in a parallel application, but also when performing other operations using the time when communication between processes is started.

図4は、実施形態の通信制御装置の構成例を示している。図4の通信制御装置401は、並列計算機システムの各ノードに対応する情報処理装置(コンピュータ)内に設けられ、演算部411を含む。   FIG. 4 shows a configuration example of the communication control apparatus of the embodiment. The communication control device 401 in FIG. 4 is provided in an information processing device (computer) corresponding to each node of the parallel computer system, and includes a calculation unit 411.

情報処理装置内の演算処理装置は、プログラムを実行し、プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する。そして、第1の開始時刻と第1のシーケンス情報とを情報処理装置内の主記憶装置に書き込む。   The arithmetic processing unit in the information processing apparatus executes a program, and a first sequence with respect to a first start time when a first process among the plurality of processes included in the program starts communication between the first processes. Give information. Then, the first start time and the first sequence information are written to the main storage device in the information processing apparatus.

複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合、通信制御装置401内の演算部411は、第1の開始時刻を用いた演算を行わない。一方、第2のシーケンス情報が第1のシーケンス情報に対応する場合、演算部411は、第1の開始時刻と第2の開始時刻とを用いた演算を行って演算結果を出力する。   When the second sequence information given at the second start time when the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, the communication control device 401 The calculation unit 411 does not perform calculation using the first start time. On the other hand, when the second sequence information corresponds to the first sequence information, the calculation unit 411 performs a calculation using the first start time and the second start time and outputs a calculation result.

シーケンス情報は、各プロセスが行う通信処理の順序を示す情報であり、複数のプロセスの間で、同じ順序の通信処理に対して同じシーケンス情報が付与される。例えば、第2のプロセスが行う1回目の通信処理に付与されるシーケンス情報は、第1のプロセスが行う1回目の通信処理に付与されるシーケンス情報と同じである。また、第2のプロセスが行う2回目の通信処理に付与されるシーケンス情報は、第1のプロセスが行う2回目の通信処理に付与されるシーケンス情報と同じである。   The sequence information is information indicating the order of communication processing performed by each process, and the same sequence information is given to the communication processing in the same order among a plurality of processes. For example, the sequence information given to the first communication process performed by the second process is the same as the sequence information given to the first communication process performed by the first process. Further, the sequence information given to the second communication process performed by the second process is the same as the sequence information given to the second communication process performed by the first process.

第1及び第2のプロセスの間で、それぞれの開始時刻に付与されたシーケンス情報を比較することで、2つの開始時刻が同じ順序の通信処理の開始時刻であるか否かを判定することができる。   By comparing the sequence information given at the respective start times between the first and second processes, it is possible to determine whether the two start times are the start times of the communication processes in the same order. it can.

そして、演算部411は、第2の開始時刻に付与された第2のシーケンス情報の方が第1の開始時刻に付与された第1のシーケンス情報よりも新しい場合、第1の開始時刻を用いた演算を行わない。このため、第1のプロセスは、古い開始時刻を用いた演算の完了を待つことなく、最新の開始時刻を用いた演算を演算部411に対して次々に指示することができる。したがって、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。   Then, the calculation unit 411 uses the first start time when the second sequence information given at the second start time is newer than the first sequence information given at the first start time. Do not perform the operation. For this reason, the first process can sequentially instruct the calculation unit 411 to perform the calculation using the latest start time without waiting for the completion of the calculation using the old start time. Therefore, during the execution of the parallel application, it is possible to perform an operation using the start time of the interprocess communication without changing the behavior of the parallel application.

図5は、実施形態の並列計算機システムの構成例を示している。図5の並列計算機システム500は、ノード501−1〜ノード501−nのn個(nは1以上の整数)の計算ノードとディスクノード502とを含む。ノード501−1〜ノード501−nとディスクノード502は、通信ネットワーク503により互いに接続されている。   FIG. 5 shows a configuration example of the parallel computer system of the embodiment. The parallel computer system 500 of FIG. 5 includes n (n is an integer of 1 or more) computation nodes and disk nodes 502, which are nodes 501-1 to 501-n. The nodes 501-1 to 501-n and the disk node 502 are connected to each other by a communication network 503.

図6は、図5のノード501−i(i=1〜n)に対応する情報処理装置の構成例を示している。図6のノード501−iは、CPU601、メモリ602、媒体駆動装置603、及び通信制御装置401を含む。CPU601、メモリ602、媒体駆動装置603、及び通信制御装置401は、バス604により互いに接続されている。   FIG. 6 shows a configuration example of an information processing apparatus corresponding to the nodes 501-i (i = 1 to n) in FIG. 5. A node 501-i in FIG. 6 includes a CPU 601, a memory 602, a medium driving device 603, and a communication control device 401. The CPU 601, the memory 602, the medium driving device 603, and the communication control device 401 are connected to each other via a bus 604.

メモリ602は主記憶装置に対応する。メモリ602は、例えば、Read Only Memory(ROM)、Random Access Memory(RAM)等の半導体メモリであり、並列アプリケーションプログラム及びその処理に用いられるデータを記憶する。 The memory 602 corresponds to the main storage device. The memory 602 is a semiconductor memory such as a read only memory (ROM) or a random access memory (RAM), and stores a parallel application program and data used for the processing.

CPU601は演算処理装置(プロセッサ)に対応し、メモリコントローラ及びネットワークインタフェースコントローラを含むことができる。CPU601は、例えば、メモリ602を利用して並列アプリケーションプログラムを実行する。CPU601は、オペレーティングシステム(OS)及びネットワークインタフェースドライバ等のプログラムも実行することができる。   The CPU 601 corresponds to an arithmetic processing unit (processor) and can include a memory controller and a network interface controller. For example, the CPU 601 uses the memory 602 to execute the parallel application program. The CPU 601 can also execute programs such as an operating system (OS) and a network interface driver.

媒体駆動装置603は、可搬型記録媒体605を駆動し、その記録内容にアクセスする。可搬型記録媒体605は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体605は、Compact Disk Read Only Memory(CD−ROM)、Digital Versatile Disk(DVD)、Universal Serial Bus(USB)メモリ等であってもよい。ユーザ又はオペレータは、この可搬型記録媒体605に並列アプリケーションプログラム及びデータを格納しておき、それらをメモリ602にロードして使用することができる。   The medium driving device 603 drives the portable recording medium 605 and accesses the recorded contents. The portable recording medium 605 is a memory device, a flexible disk, an optical disk, a magneto-optical disk, or the like. The portable recording medium 605 may be a compact disk read only memory (CD-ROM), a digital versatile disk (DVD), a universal serial bus (USB) memory, or the like. A user or an operator can store parallel application programs and data in the portable recording medium 605 and load them into the memory 602 for use.

通信制御装置401は、図5の通信ネットワーク503に接続され、他のノードと通信するネットワークインタフェースである。ノード501−iは、並列アプリケーションプログラム及びデータを、並列計算機システムの外部の装置から通信制御装置401を介して受け取り、それらをメモリ602にロードして使用することができる。   The communication control device 401 is a network interface that is connected to the communication network 503 in FIG. 5 and communicates with other nodes. The node 501-i can receive the parallel application program and data from a device external to the parallel computer system via the communication control device 401 and load them into the memory 602 for use.

なお、ノード501−iが図6のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、可搬型記録媒体605を使用しない場合は、媒体駆動装置603を省略してもよい。   Note that the node 501-i does not have to include all the components shown in FIG. 6, and some of the components can be omitted depending on applications and conditions. For example, when the portable recording medium 605 is not used, the medium driving device 603 may be omitted.

図5のディスクノード502は、例えば、図6のノード501−iの構成にディスク装置を追加した構成を有する。ディスク装置は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置等であり、ハードディスクドライブであってもよい。ディスク装置は、並列アプリケーションプログラムの処理に用いられるデータを格納することができる。   The disk node 502 in FIG. 5 has a configuration in which a disk device is added to the configuration of the node 501-i in FIG. The disk device is, for example, a magnetic disk device, an optical disk device, a magneto-optical disk device, or the like, and may be a hard disk drive. The disk device can store data used for processing parallel application programs.

ノード501−1〜ノード501−nは、例えば、ディスクノード502に格納されたデータを用いて並列アプリケーションを実行する。このとき、各ノード内には1つ以上のプロセスが生成され、ノード501−1〜ノード501−n内の複数のプロセスは、MPIにより並列化されて、すべてのプロセスを対象とする集団通信を繰り返す。   For example, the nodes 501-1 to 501-n execute parallel applications using data stored in the disk node 502. At this time, one or more processes are generated in each node, and a plurality of processes in the nodes 501-1 to 501-n are parallelized by MPI to perform collective communication for all processes. repeat.

なお、ノード501−1〜ノード501−nの各々にディスク装置が設けられている場合は、ディスクノード502を省略してもよい。   If a disk device is provided for each of the nodes 501-1 to 501-n, the disk node 502 may be omitted.

図7は、図6の通信制御装置401内の演算部411の構成例を示している。図7の演算部411は、CPU701、メモリ702、インタフェース703、及びインタフェース704を含む。CPU701、メモリ702、インタフェース703、及びインタフェース704は、バス705により互いに接続されている。   FIG. 7 shows a configuration example of the calculation unit 411 in the communication control apparatus 401 of FIG. The arithmetic unit 411 in FIG. 7 includes a CPU 701, a memory 702, an interface 703, and an interface 704. The CPU 701, the memory 702, the interface 703, and the interface 704 are connected to each other via a bus 705.

CPU701は演算処理装置(プロセッサ)に対応し、メモリ702は主記憶装置に対応する。メモリ702は、例えば、ROM、RAM等の半導体メモリであり、制御プログラム及びデータを記憶する。メモリ702が記憶するデータには、図6のCPU601から転送されたデータ、他のノードから受信したデータ等が含まれる。CPU701は、例えば、メモリ702を利用して制御プログラムを実行することで、ネットワークリダクション機構の演算を行って、演算結果をメモリ702に書き込む。   The CPU 701 corresponds to an arithmetic processing device (processor), and the memory 702 corresponds to a main storage device. The memory 702 is a semiconductor memory such as a ROM and a RAM, for example, and stores a control program and data. Data stored in the memory 702 includes data transferred from the CPU 601 in FIG. 6, data received from other nodes, and the like. For example, the CPU 701 executes a control program using the memory 702 to perform an operation of the network reduction mechanism, and writes the operation result in the memory 702.

ユーザ又はオペレータは、図6の可搬型記録媒体605に制御プログラム及びデータを格納しておき、それらをメモリ702にロードして使用することができる。このように、制御プログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ702又は可搬型記録媒体605のような、物理的な(非一時的な)記録媒体である。   The user or operator can store the control program and data in the portable recording medium 605 of FIG. 6 and load them into the memory 702 for use. As described above, the computer-readable recording medium that stores the control program and data is a physical (non-transitory) recording medium such as the memory 702 or the portable recording medium 605.

インタフェース703は、図6のバス604に接続されてCPU601と通信し、インタフェース704は、図5の通信ネットワーク503に接続されて他のノードと通信する。インタフェース704を介して、ネットワークリダクション機構の部分的な演算結果をノード間で送受信することで、演算が効率化される。演算部411は、制御プログラム及びデータを、並列計算機システムの外部の装置からインタフェース703又はインタフェース704を介して受け取り、それらをメモリ702にロードして使用することもできる。   The interface 703 is connected to the bus 604 in FIG. 6 to communicate with the CPU 601, and the interface 704 is connected to the communication network 503 in FIG. 5 to communicate with other nodes. The calculation is made efficient by transmitting / receiving partial calculation results of the network reduction mechanism between the nodes via the interface 704. The arithmetic unit 411 can receive a control program and data from a device external to the parallel computer system via the interface 703 or the interface 704 and load them into the memory 702 for use.

なお、演算部411の構成は図7の構成には限られず、一部又は全部の処理を布線論理で実装することも可能である。   Note that the configuration of the calculation unit 411 is not limited to the configuration of FIG. 7, and part or all of the processing can be implemented by wiring logic.

図8は、ノード501−1において行われる、プロセス間通信の開始時刻を用いた演算処理の例を示すフローチャートである。この例では、第1のプロセスは、並列アプリケーションの複数のプロセスのうち、ノード501−1内で生成されるプロセスである。第2のプロセスは、並列アプリケーションの複数のプロセスのうち、ノード501−1内で生成されるプロセス、又はノード501−2〜ノード501−nのいずれかで生成されるプロセスである。   FIG. 8 is a flowchart illustrating an example of arithmetic processing using the start time of interprocess communication performed in the node 501-1. In this example, the first process is a process generated in the node 501-1 among a plurality of processes of the parallel application. The second process is a process generated in the node 501-1 among a plurality of processes of the parallel application, or a process generated in any of the nodes 501-2 to 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へ送信する。   The CPU 601 in the node 501-1 gives the first sequence information to the first start time when the first process starts the first inter-process communication. Then, the CPU 601 writes the first start time and the first sequence information to the memory 602 in the node 501-1, and writes the first start time and the first sequence information in the memory 702 in the arithmetic unit 411. Forward to. The communication control device 401 in the node 501-1 transmits the first start time and the first sequence information to the node 501-2 to the node 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へ送信する。   When the second process is generated in the node 501-1, the CPU 601 in the node 501-1 sets the second process time for the second start time when the second process starts the second inter-process communication. Assign sequence information. Then, the CPU 601 writes the second start time and the second sequence information in the memory 602 in the node 501-1, and writes the second start time and the second sequence information in the memory 702 in the arithmetic unit 411. Forward to. The communication control device 401 in the node 501-1 transmits the second start time and the second sequence information to the node 501-2 to the node 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へ送信する。   When the second process is generated in the node 501-2, the CPU 601 in the node 501-2 sets the second process time to the second start time when the second process starts the second inter-process communication. Assign sequence information. Then, the CPU 601 writes the second start time and the second sequence information to the memory 602 in the node 501-2, and writes the second start time and the second sequence information in the memory 702 in the arithmetic unit 411. Forward to. The communication control device 401 in the node 501-2 transmits the second start time and the second sequence information to the node 501-1 and the nodes 501-3 to 501-n.

ノード501−3〜ノード501−nの各CPU601も、同様にして、各プロセスがプロセス間通信を開始した開始時刻に対してシーケンス情報を付与する。そして、そのCPU601は、開始時刻とシーケンス情報とをメモリ602に書き込み、開始時刻とシーケンス情報とを演算部411内のメモリ702へ転送する。ノード501−3〜ノード501−nの通信制御装置401は、開始時刻とシーケンス情報とを他のノードへ送信する。   Similarly, each CPU 601 of the node 501-3 to the node 501-n gives sequence information to the start time when each process starts inter-process communication. Then, the CPU 601 writes the start time and sequence information to the memory 602 and transfers the start time and sequence information to the memory 702 in the calculation unit 411. The communication control devices 401 of the nodes 501-3 to 501-n transmit the start time and sequence information to other nodes.

ノード501−1において、演算部411内のCPU701は、第2の開始時刻に付与された第2のシーケンス情報の方が第1のシーケンス情報よりも新しいか否かをチェックする(ステップ801)。   In node 501-1, CPU 701 in operation unit 411 checks whether or not the second sequence information given at the second start time is newer than the first sequence information (step 801).

第2のシーケンス情報の方が第1のシーケンス情報よりも新しい場合(ステップ801,YES)、CPU701は、第1の開始時刻を用いた演算を行わない。一方、ステップ801のチェック結果がNOの場合、CPU701は、第2のシーケンス情報が第1のシーケンス情報に対応するか否かをチェックする(ステップ802)。   When the second sequence information is newer than the first sequence information (step 801, YES), the CPU 701 does not perform calculation using the first start time. On the other hand, when the check result in step 801 is NO, the CPU 701 checks whether or not the second sequence information corresponds to the first sequence information (step 802).

第2のシーケンス情報が第1のシーケンス情報に対応する場合(ステップ802,YES)、CPU701は、少なくとも第1の開始時刻と第2の開始時刻とを用いた演算を行って、演算結果をメモリ702に書き込む(ステップ803)。   When the second sequence information corresponds to the first sequence information (step 802, YES), the CPU 701 performs calculation using at least the first start time and the second start time, and stores the calculation result in the memory. Write to 702 (step 803).

一方、ステップ802のチェック結果がNOの場合、CPU701は、第2の開始時刻を用いた演算を行わず、第2のプロセスが第3のプロセス間通信を開始した第3の開始時刻と第3のシーケンス情報とを受信するまで待機する(ステップ804)。そして、第3のシーケンス情報が第1のシーケンス情報に対応する場合、CPU701は、少なくとも第1の開始時刻と第3の開始時刻とを用いた演算を行って、演算結果をメモリ702に書き込む。   On the other hand, if the check result in step 802 is NO, the CPU 701 does not perform the calculation using the second start time, and the third start time and the third start time when the second process starts the third inter-process communication. Until the sequence information is received (step 804). When the third sequence information corresponds to the first sequence information, the CPU 701 performs a calculation using at least the first start time and the third start time, and writes the calculation result in the memory 702.

ノード501−2〜ノード501−nの各ノードの演算部411も、ノード501−1の演算部411と同様の演算処理を行うことができる。   The calculation units 411 of the nodes 501-2 to 501-n can perform the same calculation process as the calculation unit 411 of the node 501-1.

図9は、図5のノード501−1〜ノード501−nの各ノード内で1つのプロセスが動作している場合に行われる、図8の演算処理の具体例を示すフローチャートである。   FIG. 9 is a flowchart illustrating a specific example of the arithmetic processing in FIG. 8 performed when one process is operating in each of the nodes 501-1 to 501-n in FIG.

シーケンス情報としては、例えば、昇順の非負の整数であるシーケンス番号が用いられる。シーケンス番号は、ネットワークインタフェースドライバにより管理され、並列アプリケーションの開始時に0にリセットされる。各ノード501−i(i=1〜n)内のメモリ602は、プロセスがプロセス間通信を開始した開始時刻T(i)と、そのプロセスのシーケンス番号S(i)とを記憶する。   As the sequence information, for example, a sequence number that is a non-negative integer in ascending order is used. The sequence number is managed by the network interface driver and is reset to 0 at the start of the parallel application. The memory 602 in each node 501-i (i = 1 to n) stores a start time T (i) at which a process starts inter-process communication and a sequence number S (i) of the process.

各ノード501−i内のCPU601は、並列アプリケーションを実行することでプロセスを動作させ、ネットワークインタフェースドライバのプログラムを実行することでネットワークインタフェースドライバを動作させる。   The CPU 601 in each node 501-i operates a process by executing a parallel application, and operates a network interface driver by executing a network interface driver program.

ノード501−i内のプロセスがプロセス間通信を開始したとき、そのプロセスは、ネットワークインタフェースドライバに対して演算処理を指示する(ステップ901)。次に、CPU601は、ネットワークインタフェースドライバとして動作し、開始時刻T(i)とシーケンス番号S(i)とをメモリ602から読み出す(ステップ902)。次に、CPU601は、読み出した開始時刻T(i)とシーケンス番号S(i)とを演算部411内のメモリ702に書き込み、演算部411内のCPU701に対して演算処理を指示する。そして、CPU601は、メモリ602内のシーケンス番号S(i)を1だけインクリメントする。   When a process in the node 501-i starts inter-process communication, the process instructs the network interface driver to perform arithmetic processing (step 901). Next, the CPU 601 operates as a network interface driver, and reads the start time T (i) and the sequence number S (i) from the memory 602 (step 902). Next, the CPU 601 writes the read start time T (i) and sequence number S (i) in the memory 702 in the calculation unit 411 and instructs the CPU 701 in the calculation unit 411 to perform calculation processing. Then, the CPU 601 increments the sequence number S (i) in the memory 602 by 1.

次に、CPU701は、メモリ702に書き込まれた開始時刻T(i)とシーケンス番号S(i)とを他のノード501−j(1≦j≦n,j≠i)へ送信する(ステップ903)。そして、CPU701は、並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれているか否かをチェックする(ステップ904)。   Next, the CPU 701 transmits the start time T (i) and the sequence number S (i) written in the memory 702 to another node 501-j (1 ≦ j ≦ n, j ≠ i) (step 903). ). Then, the CPU 701 checks whether or not the start times and sequence numbers of all processes of the parallel application are written in the memory 702 (step 904).

いずれかのプロセスの開始時刻とシーケンス番号とが書き込まれていない場合(ステップ904,NO)、CPU701は、他のノードから開始時刻とシーケンス番号とを受信したか否かをチェックする(ステップ908)。   When the start time and sequence number of any process are not written (step 904, NO), the CPU 701 checks whether the start time and sequence number have been received from another node (step 908). .

他のノードから開始時刻とシーケンス番号とを受信していない場合(ステップ908,NO)、CPU701は、ステップ904以降の処理を繰り返す。一方、他のノード501−k(1≦k≦n,k≠i)から開始時刻T(k)とシーケンス番号S(k)とを受信した場合(ステップ908,YES)、CPU701は、受信したシーケンス番号S(k)とシーケンス番号S(i)とを比較する(ステップ909)。   When the start time and the sequence number have not been received from another node (step 908, NO), the CPU 701 repeats the processing after step 904. On the other hand, when the start time T (k) and the sequence number S (k) are received from another node 501-k (1 ≦ k ≦ n, k ≠ i) (step 908, YES), the CPU 701 has received The sequence number S (k) is compared with the sequence number S (i) (step 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)。   When the received sequence number S (k) is smaller than the sequence number S (i) (step 909, NO), the CPU 701 repeats the processing after step 904. On the other hand, when the received sequence number S (k) is greater than or equal to the sequence number S (i) (step 909, YES), the CPU 701 stores the received start time T (k) and the sequence number S (k) in the memory 702. (Step 910). The CPU 701 again compares the received sequence number S (k) with the sequence number S (i) (step 911).

受信したシーケンス番号S(k)がシーケンス番号S(i)と一致する場合(ステップ911,NO)、CPU701は、ステップ904以降の処理を繰り返す。こうして、全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれると(ステップ904,YES)、CPU701は、全プロセスの開始時刻の最大値を求め、メモリ702に書き込む(ステップ905)。   When the received sequence number S (k) matches the sequence number S (i) (step 911, NO), the CPU 701 repeats the processing after step 904. Thus, when the start time and sequence number of all processes are written in the memory 702 (step 904, YES), the CPU 701 obtains the maximum value of the start time of all processes and writes it in the memory 702 (step 905).

次に、CPU701は、CPU601に割り込み(ステップ906)、CPU601は、ネットワークインタフェースドライバを動作させる。そして、CPU601は、メモリ702から開始時刻の最大値を読み出してメモリ602に書き込み、メモリ702を初期化する(ステップ907)。これにより、メモリ702内の全プロセスの開始時刻とシーケンス番号とが消去される。   Next, the CPU 701 interrupts the CPU 601 (step 906), and the CPU 601 operates the network interface driver. The CPU 601 reads out the maximum value of the start time from the memory 702, writes it in the memory 602, and initializes the memory 702 (step 907). As a result, the start times and sequence numbers of all processes in the memory 702 are deleted.

一方、受信したシーケンス番号S(k)がシーケンス番号S(i)より大きい場合(ステップ911,YES)、CPU701は、CPU601に割り込み、指示された演算処理を中止する旨を通知する(ステップ912)。この通知により、CPU601は、メモリ702を初期化することなく、プロセスがネットワークインタフェースドライバに対して指示した演算処理を中止する。その後、プロセスがネットワークインタフェースドライバに対して次の演算処理を指示したとき、CPU601は、改めてステップ901以降の処理を開始する。   On the other hand, when the received sequence number S (k) is larger than the sequence number S (i) (step 911, YES), the CPU 701 interrupts the CPU 601 and notifies that the instructed arithmetic processing is stopped (step 912). . By this notification, the CPU 601 stops the arithmetic processing instructed by the process to the network interface driver without initializing the memory 702. Thereafter, when the process instructs the network interface driver to perform the next calculation process, the CPU 601 starts the process from step 901 onward.

図10は、図5のノード501−1〜ノード501−nの各ノード内で複数のプロセスが動作している場合に行われる、図8の演算処理の具体例を示すフローチャートである。   FIG. 10 is a flowchart illustrating a specific example of the arithmetic processing in FIG. 8 performed when a plurality of processes are operating in each of the nodes 501-1 to 501-n in FIG.

シーケンス情報としては、例えば、昇順の非負の整数であるシーケンス番号が用いられる。シーケンス番号は、ネットワークインタフェースドライバにより管理され、並列アプリケーションの開始時に0にリセットされる。ノード501−1〜ノード501−nで動作するプロセスの総数をpとし、m番目のプロセスの識別情報をP(m)とする(m=1〜p)。各ノード501−i(i=1〜n)内のメモリ602は、ノード501−i内の各プロセスがプロセス間通信を開始した開始時刻T(m)と、そのプロセスのシーケンス番号S(m)とを記憶する。   As the sequence information, for example, a sequence number that is a non-negative integer in ascending order is used. The sequence number is managed by the network interface driver and is reset to 0 at the start of the parallel application. Assume that the total number of processes operating in the nodes 501-1 to 501-n is p, and the identification information of the mth process is P (m) (m = 1 to p). The memory 602 in each node 501-i (i = 1 to n) includes a start time T (m) at which each process in the node 501-i starts inter-process communication, and a sequence number S (m) of the process. And remember.

ノード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だけインクリメントする。   When the process P (r) among the plurality of processes in the node 501-i starts inter-process communication, the process P (r) instructs the network interface driver to perform arithmetic processing (step 1001). Next, the CPU 601 operates as a network interface driver, and reads the start time T (r) and the sequence number S (r) of the process P (r) from the memory 602 (step 1002). Next, the CPU 601 writes the read start time T (r) and sequence number S (r) to the memory 702 in the calculation unit 411 and instructs the CPU 701 in the calculation unit 411 to perform calculation processing. Then, the CPU 601 increments the sequence number S (r) in the memory 602 by 1.

次に、CPU701は、メモリ702に書き込まれた開始時刻T(r)とシーケンス番号S(r)とを他のノード501−j(1≦j≦n,j≠i)へ送信する(ステップ1003)。   Next, the CPU 701 transmits the start time T (r) and the sequence number S (r) written in the memory 702 to another node 501-j (1 ≦ j ≦ n, j ≠ i) (step 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)へ送信する。   Thereafter, when another process P (x) in the node 501-i starts inter-process communication, the process P (x) instructs the network interface driver to perform arithmetic processing, similarly to step 1001. Similarly to step 1002, the CPU 601 writes the start time T (x) of the process P (x) and the sequence number S (x) in the memory 702, and sets the sequence number S (x) in the memory 602 to only 1. Increment. Then, as in step 1003, the CPU 701 transfers the start time T (x) and the sequence number S (x) written in the memory 702 to another node 501-j (1 ≦ j ≦ n, j ≠ i). Send.

次に、CPU701は、並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれているか否かをチェックする(ステップ1004)。いずれかのプロセスの開始時刻とシーケンス番号とが書き込まれていない場合(ステップ1004,NO)、CPU701は、他のノードから開始時刻とシーケンス番号とを受信したか否かをチェックする(ステップ1008)。   Next, the CPU 701 checks whether or not the start time and sequence number of all processes of the parallel application are written in the memory 702 (step 1004). When the start time and sequence number of any process are not written (step 1004, NO), the CPU 701 checks whether the start time and sequence number are received from another node (step 1008). .

他のノードから開始時刻とシーケンス番号とを受信していない場合(ステップ1008,NO)、CPU701は、ステップ1004以降の処理を繰り返す。   When the start time and the sequence number have not been received from another node (step 1008, NO), the CPU 701 repeats the processing after step 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)へ送信する。   During this time, when another process P (y) in the node 501-i starts inter-process communication, the process P (y) instructs the network interface driver to perform arithmetic processing in the same manner as in Step 1001. Similarly to step 1002, the CPU 601 writes the start time T (y) of the process P (y) and the sequence number S (y) to the memory 702, and sets the sequence number S (y) in the memory 602 to only 1. Increment. Then, as in step 1003, the CPU 701 transfers the start time T (y) and the sequence number S (y) written in the memory 702 to another node 501-j (1 ≦ j ≦ n, j ≠ i). Send.

一方、他のノード501−k(1≦k≦n,k≠i)から開始時刻T(q)とシーケンス番号S(q)とを受信した場合(ステップ1008,YES)、CPU701は、ステップ1009の処理を行う。   On the other hand, when the start time T (q) and the sequence number S (q) are received from another node 501-k (1 ≦ k ≦ n, k ≠ i) (step 1008, YES), the CPU 701 proceeds to step 1009. Perform the process.

ステップ1009において、CPU701は、メモリ702に書き込まれたシーケンス番号のうち、ノード501−i内の1つ以上のプロセスに対応するシーケンス番号の最大値を求める。そして、CPU701は、受信したシーケンス番号S(q)とシーケンス番号の最大値とを比較する。受信したシーケンス番号S(q)がシーケンス番号の最大値より小さい場合(ステップ1009,NO)、CPU701は、ステップ1004以降の処理を繰り返す。   In step 1009, the CPU 701 obtains the maximum value of the sequence numbers corresponding to one or more processes in the node 501-i among the sequence numbers written in the memory 702. Then, the CPU 701 compares the received sequence number S (q) with the maximum value of the sequence number. When the received sequence number S (q) is smaller than the maximum value of the sequence number (step 1009, NO), the CPU 701 repeats the processing after step 1004.

一方、受信したシーケンス番号S(q)がシーケンス番号の最大値以上である場合(ステップ1009,YES)、CPU701は、受信した開始時刻T(q)とシーケンス番号S(q)とをメモリ702に書き込む(ステップ1010)。そして、CPU701は、再び、受信したシーケンス番号S(q)とシーケンス番号の最大値とを比較する(ステップ1011)。   On the other hand, when the received sequence number S (q) is greater than or equal to the maximum value of the sequence number (step 1009, YES), the CPU 701 stores the received start time T (q) and the sequence number S (q) in the memory 702. Write (step 1010). The CPU 701 again compares the received sequence number S (q) with the maximum sequence number (step 1011).

受信したシーケンス番号S(q)がシーケンス番号の最大値と一致する場合(ステップ1011,NO)、CPU701は、ステップ1004以降の処理を繰り返す。ノード501−i内の全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれ、それらのシーケンス番号がシーケンス番号S(r)と一致すると、ステップ1009で求められるシーケンス番号の最大値はS(r)となる。   When the received sequence number S (q) matches the maximum value of the sequence number (step 1011, NO), the CPU 701 repeats the processing after step 1004. When the start times and sequence numbers of all processes in the node 501-i are written in the memory 702 and these sequence numbers match the sequence number S (r), the maximum value of the sequence number obtained in step 1009 is S ( r).

並列アプリケーションの全プロセスの開始時刻とシーケンス番号とがメモリ702に書き込まれると(ステップ1004,YES)、CPU701は、全プロセスの開始時刻の最大値を求め、メモリ702に書き込む(ステップ1005)。   When the start times and sequence numbers of all processes of the parallel application are written in the memory 702 (step 1004, YES), the CPU 701 obtains the maximum start time of all processes and writes it in the memory 702 (step 1005).

次に、CPU701は、CPU601に割り込み(ステップ1006)、CPU601は、ネットワークインタフェースドライバを動作させる。そして、CPU601は、メモリ702から開始時刻の最大値を読み出してメモリ602に書き込み、メモリ702を初期化する(ステップ1007)。これにより、メモリ702内の全プロセスの開始時刻とシーケンス番号とが消去される。   Next, the CPU 701 interrupts the CPU 601 (step 1006), and the CPU 601 operates the network interface driver. Then, the CPU 601 reads the maximum value of the start time from the memory 702, writes it in the memory 602, and initializes the memory 702 (step 1007). As a result, the start times and sequence numbers of all processes in the memory 702 are deleted.

一方、受信したシーケンス番号S(q)がシーケンス番号の最大値より大きい場合(ステップ1011,YES)、CPU701は、CPU601に割り込み、指示された演算処理を中止する旨を通知する(ステップ1012)。この通知により、CPU601は、メモリ702を初期化することなく、プロセスP(r)がネットワークインタフェースドライバに対して指示した演算処理を中止する。その後、プロセスP(r)又は別のプロセスがネットワークインタフェースドライバに対して次の演算処理を指示したとき、CPU601は、改めてステップ1001以降の処理を開始する。   On the other hand, when the received sequence number S (q) is larger than the maximum value of the sequence number (step 1011, YES), the CPU 701 interrupts the CPU 601 and notifies it to stop the instructed arithmetic processing (step 1012). With this notification, the CPU 601 stops the arithmetic processing instructed by the process P (r) to the network interface driver without initializing the memory 702. Thereafter, when the process P (r) or another process instructs the network interface driver to perform the next arithmetic processing, the CPU 601 starts the processing from step 1001 onward.

図9又は図10の演算処理によれば、演算部411は、演算処理を指示されても、最新のシーケンス番号を持つ全プロセスの開始時刻がメモリ702に書き込まれるまで、開始時刻を用いた演算を行わない。そして、ノード501−i内のプロセスのシーケンス番号がインクリメントされて、受信したシーケンス番号と同じになったとき、そのシーケンス番号を持つ全プロセスの開始時刻を用いた演算処理が行われる。   According to the arithmetic processing in FIG. 9 or 10, the arithmetic unit 411 uses the start time until the start times of all processes having the latest sequence number are written in the memory 702 even if the arithmetic processing is instructed. Do not do. Then, when the sequence number of the process in the node 501-i is incremented to be the same as the received sequence number, arithmetic processing using the start times of all processes having that sequence number is performed.

このように、常に最新のシーケンス番号を持つ開始時刻を対象として演算処理が行われ、各プロセスは、古い開始時刻を用いた演算処理の完了を待つことなく、最新の開始時刻を用いた演算処理を演算部411に対して次々に指示することができる。したがって、並列アプリケーションの実行中に、並列アプリケーションの挙動を変えることなく、プロセス間通信の開始時刻を用いた演算を行うことができる。   In this way, calculation processing is always performed for the start time having the latest sequence number, and each process uses the latest start time without waiting for completion of the calculation processing using the old start time. Can be instructed to the calculation unit 411 one after another. Therefore, during the execution of the parallel application, it is possible to perform an operation using the start time of the interprocess communication without changing the behavior of the parallel application.

また、通信制御装置401内に1つの演算部411を設ければよく、複数のネットワークリダクション機構を設ける必要がないため、ハードウェアの増加を抑えることができる。特に、大規模並列計算機システムにおいて、図9又は図10の演算処理による大きな効果が期待できる。   In addition, it is only necessary to provide one arithmetic unit 411 in the communication control device 401, and it is not necessary to provide a plurality of network reduction mechanisms, so that an increase in hardware can be suppressed. In particular, in a large-scale parallel computer system, a great effect can be expected from the arithmetic processing of FIG. 9 or FIG.

図4及び図7の通信制御装置401、図5の並列計算機システム500、及び図6のノード501−iの構成は一例に過ぎず、並列計算機システムの用途や条件に応じて一部の構成要素を省略又は変更してもよい。   The configurations of the communication control device 401 in FIGS. 4 and 7, the parallel computer system 500 in FIG. 5, and the node 501-i in FIG. 6 are merely examples, and some of the components depend on the use and conditions of the parallel computer system May be omitted or changed.

図8〜図10のフローチャートは一例に過ぎず、並列計算機システムの構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、図9又は図10の演算処理において、シーケンス番号以外の通信処理の順序を示す情報をシーケンス情報として用いることもできる。また、図9のステップ905又は図10のステップ1005において、CPU701は、開始時刻の最大値を求める代わりに、開始時刻の総和、開始時刻の最小値等の他の数値を求めることもできる。   The flowcharts of FIGS. 8 to 10 are merely examples, and some processes may be omitted or changed depending on the configuration and conditions of the parallel computer system. For example, in the arithmetic processing of FIG. 9 or FIG. 10, information indicating the order of communication processing other than the sequence number can be used as sequence information. Further, in step 905 of FIG. 9 or step 1005 of FIG. 10, the CPU 701 can obtain other numerical values such as the sum of the start times and the minimum value of the start times instead of obtaining the maximum value of the start times.

開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。   Although the disclosed embodiments and their advantages have been described in detail, those skilled in the art can make various modifications, additions and omissions without departing from the scope of the present invention as explicitly set forth in the claims. Let's go.

図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の開始時刻とを用いた演算を行って演算結果を出力する、
ことを特徴とする制御方法。
Regarding the embodiment described with reference to FIGS. 4 to 10, the following additional notes are disclosed.
(Appendix 1)
A communication control device connected to the arithmetic processing device and the main storage device,
The main processing unit assigns the main memory to a first start time at which a first process among the plurality of processes included in a program executed by the arithmetic processing unit starts a first inter-process communication. The second sequence information given at the second start time at which the second process of the plurality of processes started the second inter-process communication is newer than the first sequence information written in the apparatus. In the case where the calculation using the first start time is not performed and the second sequence information corresponds to the first sequence information, the first start time and the second start time are used. A computation unit that performs the computation and outputs the computation result,
A communication control device comprising:
(Appendix 2)
The first sequence information is newer than the second sequence information, and the third sequence information given at the third start time when the second process starts the third inter-process communication is In the case of corresponding to the first sequence information, the calculation unit does not perform calculation using the second start time, but performs calculation using the first start time and the third start time. The communication control apparatus according to appendix 1, wherein a calculation result is output.
(Appendix 3)
The arithmetic processing unit executes the first process, and the arithmetic processing unit included in the information processing apparatus connected via the communication control unit executes the second process. Or the communication control apparatus of 2.
(Appendix 4)
The first sequence information includes a fourth start time when a fourth process executed by the arithmetic processing unit that executes the first process among the plurality of processes starts a fourth inter-process communication. The communication control device according to supplementary note 3, wherein the communication control device corresponds to the fourth sequence information given to or is newer than the fourth sequence information.
(Appendix 5)
The communication control apparatus according to appendix 1 or 2, wherein the arithmetic processing unit executes the first process and the second process.
(Appendix 6)
An arithmetic processing unit that executes a program and assigns first sequence information to a first start time at which a first process among the plurality of processes included in the program starts first inter-process communication;
A main storage device for storing the first start time and the first sequence information;
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. A communication control device for outputting a calculation result,
An information processing apparatus comprising:
(Appendix 7)
A parallel computer system having a plurality of information processing devices,
At least one information processing apparatus among the plurality of information processing apparatuses is
An arithmetic processing unit that executes a program and assigns first sequence information to a first start time at which a first process among the plurality of processes included in the program starts first inter-process communication;
A main storage device for storing the first start time and the first sequence information;
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. A communication control device for outputting a calculation result,
A parallel computer system characterized by comprising:
(Appendix 8)
A control program for an information processing device having an arithmetic processing device, a communication control device, and a main storage device,
The main processing unit assigns the main memory to a first start time at which a first process among the plurality of processes included in a program executed by the arithmetic processing unit starts a first inter-process communication. The second sequence information given at the second start time at which the second process of the plurality of processes started the second inter-process communication is newer than the first sequence information written in the apparatus. In the case where the calculation using the first start time is not performed and the second sequence information corresponds to the first sequence information, the first start time and the second start time are used. Output the calculation result.
A control program that causes an arithmetic processing unit in the communication control unit to execute processing.
(Appendix 9)
A method for controlling a parallel computer system having a plurality of information processing devices,
At least one information processing device of the plurality of information processing devices is
Run the program
The first sequence information is given to the first start time when the first process among the plurality of processes included in the program starts the first inter-process communication,
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. Output the calculation result.
A control method characterized by that.

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 インタフェース
101, 102 arrow 301 network reduction mechanism 401 communication control device 411 arithmetic unit 500 parallel computer system 501-1 to 501-n, 501-i node 502 disk node 503 communication network 601, 701 CPU
602, 702 Memory 603 Medium drive device 604, 705 Bus 605 Portable recording medium 703, 704 Interface

Claims (7)

演算処理装置と主記憶装置とに接続する通信制御装置であって、
前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する演算部、
を有することを特徴とする通信制御装置。
A communication control device connected to the arithmetic processing device and the main storage device,
The main processing unit assigns the main memory to a first start time at which a first process among the plurality of processes included in a program executed by the arithmetic processing unit starts a first inter-process communication. The second sequence information given at the second start time at which the second process of the plurality of processes started the second inter-process communication is newer than the first sequence information written in the apparatus. In the case where the calculation using the first start time is not performed and the second sequence information corresponds to the first sequence information, the first start time and the second start time are used. A computation unit that performs the computation and outputs the computation result,
A communication control device comprising:
前記第2のシーケンス情報よりも前記第1のシーケンス情報の方が新しく、前記第2のプロセスが第3のプロセス間通信を開始した第3の開始時刻に付与された第3のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記演算部は、前記第2の開始時刻を用いた演算を行わず、前記第1の開始時刻と前記第3の開始時刻とを用いた演算を行って演算結果を出力することを特徴とする請求項1記載の通信制御装置。   The first sequence information is newer than the second sequence information, and the third sequence information given at the third start time when the second process starts the third inter-process communication is In the case of corresponding to the first sequence information, the calculation unit does not perform calculation using the second start time, but performs calculation using the first start time and the third start time. The communication control apparatus according to claim 1, wherein a calculation result is output. 前記演算処理装置は、前記第1のプロセスを実行し、前記通信制御装置を介して接続された情報処理装置が有する演算処理装置は、前記第2のプロセスを実行することを特徴とする請求項1又は2記載の通信制御装置。   The arithmetic processing device executes the first process, and the arithmetic processing device included in an information processing device connected via the communication control device executes the second process. The communication control apparatus according to 1 or 2. プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
を有することを特徴とする情報処理装置。
An arithmetic processing unit that executes a program and assigns first sequence information to a first start time at which a first process among the plurality of processes included in the program starts first inter-process communication;
A main storage device for storing the first start time and the first sequence information;
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. A communication control device for outputting a calculation result,
An information processing apparatus comprising:
複数の情報処理装置を有する並列計算機システムであって、
前記複数の情報処理装置のうち少なくとも1つの情報処理装置は、
プログラムを実行し、前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与する演算処理装置と、
前記第1の開始時刻と前記第1のシーケンス情報とを記憶する主記憶装置と、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する通信制御装置と、
を有することを特徴とする並列計算機システム。
A parallel computer system having a plurality of information processing devices,
At least one information processing apparatus among the plurality of information processing apparatuses is
An arithmetic processing unit that executes a program and assigns first sequence information to a first start time at which a first process among the plurality of processes included in the program starts first inter-process communication;
A main storage device for storing the first start time and the first sequence information;
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. A communication control device for outputting a calculation result,
A parallel computer system characterized by comprising:
演算処理装置と通信制御装置と主記憶装置とを有する情報処理装置の制御プログラムであって、
前記演算処理装置が実行するプログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して前記演算処理装置が付与して、前記主記憶装置に書き込んだ第1のシーケンス情報よりも、前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
処理を前記通信制御装置内の演算処理装置に実行させることを特徴とする制御プログラム。
A control program for an information processing device having an arithmetic processing device, a communication control device, and a main storage device,
The main processing unit assigns the main memory to a first start time at which a first process among the plurality of processes included in a program executed by the arithmetic processing unit starts a first inter-process communication. The second sequence information given at the second start time at which the second process of the plurality of processes started the second inter-process communication is newer than the first sequence information written in the apparatus. In the case where the calculation using the first start time is not performed and the second sequence information corresponds to the first sequence information, the first start time and the second start time are used. Output the calculation result.
A control program that causes an arithmetic processing unit in the communication control unit to execute processing.
複数の情報処理装置を有する並列計算機システムの制御方法であって、
前記複数の情報処理装置のうち少なくとも1つの情報処理装置が、
プログラムを実行し、
前記プログラムに含まれる複数のプロセスのうち第1のプロセスが第1のプロセス間通信を開始した第1の開始時刻に対して第1のシーケンス情報を付与し、
前記複数のプロセスのうち第2のプロセスが第2のプロセス間通信を開始した第2の開始時刻に付与された第2のシーケンス情報の方が前記第1のシーケンス情報よりも新しい場合、前記第1の開始時刻を用いた演算を行わず、前記第2のシーケンス情報が前記第1のシーケンス情報に対応する場合、前記第1の開始時刻と前記第2の開始時刻とを用いた演算を行って演算結果を出力する、
ことを特徴とする制御方法。
A method for controlling a parallel computer system having a plurality of information processing devices,
At least one information processing device of the plurality of information processing devices is
Run the program
The first sequence information is given to the first start time when the first process among the plurality of processes included in the program starts the first inter-process communication,
When the second sequence information given at the second start time at which the second process of the plurality of processes starts the second inter-process communication is newer than the first sequence information, When the calculation using the start time of 1 is not performed and the second sequence information corresponds to the first sequence information, the calculation using the first start time and the second start time is performed. Output the calculation result.
A control method characterized by that.
JP2013248579A 2013-11-29 2013-11-29 Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method Expired - Fee Related JP6152786B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013248579A JP6152786B2 (en) 2013-11-29 2013-11-29 Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method
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 (en) 2013-11-29 2013-11-29 Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method

Publications (2)

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

Family

ID=51951611

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013248579A Expired - Fee Related JP6152786B2 (en) 2013-11-29 2013-11-29 Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method

Country Status (3)

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

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 (en) * 2018-08-28 2022-10-25 富士通株式会社 Information processing device, parallel computer system and control method
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 (en) * 2019-04-30 2020-10-30 伊姆西Ip控股有限责任公司 Method, apparatus and computer program product for processing tasks
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 (en) * 1996-07-31 2004-05-31 富士通株式会社 Parallel computer
JPH1063550A (en) 1996-08-23 1998-03-06 Fujitsu Ltd Execution performance analysis display method and medium recording program for executing the method
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 (en) * 2007-09-04 2009-03-19 Nec Corp Measuring device, measurement program, and measuring method
JP2009176116A (en) * 2008-01-25 2009-08-06 Univ Waseda Multiprocessor system and method for synchronizing multiprocessor system
JP5304194B2 (en) * 2008-11-19 2013-10-02 富士通株式会社 Barrier synchronization apparatus, barrier synchronization system, and control method of barrier synchronization apparatus
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 (en) * 2010-03-25 2014-06-18 富士通株式会社 Analysis device, analysis method, and analysis program
JP5139486B2 (en) 2010-08-30 2013-02-06 株式会社東芝 Trace generation device, system, and program thereof
JP5549575B2 (en) 2010-12-17 2014-07-16 富士通株式会社 Parallel computer system, synchronization device, and control method for parallel computer system
WO2012095762A1 (en) 2011-01-10 2012-07-19 International Business Machines Corporation Activity recording system for a concurrent software environment

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6152786B2 (en) Communication control apparatus, information processing apparatus, parallel computer system, control program, and parallel computer system control method
CN102981864B (en) Signal conditioning package and information processing method
US10025533B2 (en) Logical block addresses used for executing host commands
CN111522640A (en) Parallel execution method and equipment of computational graph
WO2020173092A1 (en) Data processing method, redundant array of independent disks controller, and data storage system
JPWO2017163441A1 (en) Image processing apparatus, image processing method, and image processing program
CN112631994A (en) Data migration method and system
JPWO2019053915A1 (en) Image processing apparatus, image processing method, and image processing program
JP6449487B2 (en) Software security verification method, device, and system
JP6464739B2 (en) Information processing system control program, information processing apparatus, and information processing system
JP6433645B2 (en) Arithmetic processing apparatus and method for processing application at high speed
JP6228318B2 (en) Computer and computer system
US8806078B2 (en) Information processing device and program product
CN114490074B (en) Arbitration system, method, electronic device, storage medium and chip
JP7225904B2 (en) Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device
CN114442925A (en) Nonvolatile storage hard disk multi-queue submission scheduling method, device and storage medium
JP2022178916A (en) Machine learning system, machine learning program, and machine learning method
JP4548505B2 (en) Information processing apparatus, information processing method, and computer program
JP6957910B2 (en) Information processing device
JPWO2004068356A1 (en) Data communication system, data communication method, and data communication program
CN109254936B (en) Method and device for inserting data transmission queue structure
JP6580288B2 (en) Information processing apparatus, information processing method, and information processing program
JP6217386B2 (en) Program generation method for multiprocessor
CN118860492A (en) Method, device, computer equipment and storage medium for generating control instructions
JP7533939B2 (en) Calculation processing method

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