JP6417727B2 - Information aggregation system, program, and method - Google Patents
Information aggregation system, program, and method Download PDFInfo
- Publication number
- JP6417727B2 JP6417727B2 JP2014118467A JP2014118467A JP6417727B2 JP 6417727 B2 JP6417727 B2 JP 6417727B2 JP 2014118467 A JP2014118467 A JP 2014118467A JP 2014118467 A JP2014118467 A JP 2014118467A JP 6417727 B2 JP6417727 B2 JP 6417727B2
- Authority
- JP
- Japan
- Prior art keywords
- identifier
- node
- individual
- information
- work area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 343
- 230000002776 aggregation Effects 0.000 title claims description 118
- 238000004220 aggregation Methods 0.000 title claims description 118
- 238000007726 management method Methods 0.000 claims description 261
- 230000008569 process Effects 0.000 claims description 207
- 238000012545 processing Methods 0.000 claims description 189
- 230000009467 reduction Effects 0.000 claims description 165
- 230000007246 mechanism Effects 0.000 claims description 134
- 230000006854 communication Effects 0.000 claims description 124
- 238000004891 communication Methods 0.000 claims description 123
- 230000005540 biological transmission Effects 0.000 claims description 107
- 238000004364 calculation method Methods 0.000 claims description 105
- 238000004458 analytical method Methods 0.000 claims description 64
- 230000004931 aggregating effect Effects 0.000 claims description 35
- 238000000611 regression analysis Methods 0.000 claims description 29
- 238000004422 calculation algorithm Methods 0.000 claims description 25
- 230000004888 barrier function Effects 0.000 claims description 7
- 230000015654 memory Effects 0.000 description 136
- 239000013598 vector Substances 0.000 description 105
- 230000006870 function Effects 0.000 description 102
- 230000002829 reductive effect Effects 0.000 description 47
- 230000014509 gene expression Effects 0.000 description 36
- 239000000047 product Substances 0.000 description 36
- 238000010586 diagram Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 21
- 238000012544 monitoring process Methods 0.000 description 20
- 230000000694 effects Effects 0.000 description 16
- 238000012546 transfer Methods 0.000 description 13
- 230000000670 limiting effect Effects 0.000 description 12
- 239000000654 additive Substances 0.000 description 11
- 230000000996 additive effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 11
- 230000002159 abnormal effect Effects 0.000 description 10
- 230000005856 abnormality Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 9
- 238000009825 accumulation Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 230000001174 ascending effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 4
- 238000012417 linear regression Methods 0.000 description 4
- 210000000707 wrist Anatomy 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- 238000012804 iterative process Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 108090000623 proteins and genes Proteins 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000002096 quantum dot Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0896—Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0817—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Description
本発明は、分散システムにおいて複数ノードから情報を集約する情報集約システム、プログラム、および方法に関する。 The present invention relates to an information aggregation system, program, and method for aggregating information from a plurality of nodes in a distributed system.
大規模な分散システムで複数ノードを使用して実行される並列ジョブの制御や、システム全体でノードあるいはノードの構成部品などを「資源」として管理するためには、ジョブないしシステム全体の制御を行うノードに対して、管理対象の状態情報をリアルタイムに集約する必要がしばしば生ずる。 In order to control parallel jobs executed using multiple nodes in a large-scale distributed system, or to manage nodes or node components as "resources" in the entire system, control the job or the entire system. It is often necessary to collect state information of management targets in real time for nodes.
このような集約を行うための情報集約型の通信では、ネットワーク上の送受信に伴う通信量または伝送時間が問題になる。近年の計算機システムは各ノードを構成するコンピュータの処理速度に比べ、ノード間をつなぐネットワークの通信速度が格段に遅いため、ネットワーク上を伝送される管理対象の状態情報の通信量が、情報集約システム全体の負荷の大きさを決める主要因となる。 In information intensive communication for performing such aggregation, there is a problem in the amount of communication or transmission time associated with transmission / reception on the network. In recent computer systems, the communication speed of the network that connects the nodes is much slower than the processing speed of the computers that make up each node. This is the main factor that determines the overall load.
上述のような負荷を低減するために、従来、以下のようなネットワーク管理システムが知られている(例えば特許文献1)。端末装置は、装置内部の状態を管理情報として出力する。LAN(ローカルエリアネットワーク)内でこれらに接続された、インテリジェントエージェント(中間管理装置)は、これらのMIB(Management Information Base:管理情報ベース)を取得し、これらを集約し、集約MIBを作成する。バックボーンLANによってこれらに接続された、管理装置は、この集約MIBを管理することによって、端末装置を管理する。この従来技術は、ネットワーク管理装置に負荷がかからず、ネットワーク管理装置と各端末装置との間のトラフィックが低く、管理情報の解析が容易で、ベンダ各社固有の管理情報の違いを管理者が意識しなくても管理ができる、ネットワーク管理システムを実現する。 In order to reduce the load as described above, the following network management system is conventionally known (for example, Patent Document 1). The terminal device outputs the state inside the device as management information. An intelligent agent (intermediate management apparatus) connected to these in a LAN (local area network) acquires these MIBs (Management Information Base), aggregates them, and creates an aggregate MIB. The management apparatus connected to these by the backbone LAN manages the terminal apparatus by managing the aggregate MIB. With this conventional technology, the network management device is not burdened, the traffic between the network management device and each terminal device is low, the management information can be easily analyzed, and the administrator can identify the differences in management information unique to each vendor. Realize a network management system that can be managed without awareness.
前述した従来のネットワーク管理システムは、集約中間装置及び管理装置が端末情報を記号化して配下の装置分を集約して管理する階層ノードの情報集約に関する従来技術である。 The above-described conventional network management system is a related art relating to information aggregation of hierarchical nodes, in which the aggregation intermediate device and the management device symbolize terminal information and aggregate and manage the devices under the terminal.
しかし、階層構造を持たない分散システムにおける情報集約型通信では、送信側ノードから受信側ノードにメッセージを送信する過程で、ノード間をつなぐネットワーク上の通信量を効率良く削減することができないという問題点を有していた。 However, in information-intensive communication in a distributed system that does not have a hierarchical structure, the amount of communication on the network that connects nodes cannot be efficiently reduced in the process of sending messages from the sending node to the receiving node. Had a point.
そこで、本発明の1つの側面では、分散システムにおける情報集約型通信において、情報集約時のノード間の通信量を低減することを目的とする。 Accordingly, an object of one aspect of the present invention is to reduce the amount of communication between nodes during information aggregation in information-intensive communication in a distributed system.
態様の一例では、送信側ノードに設けられ、情報の通知元に固有の個別識別子と、情報の通知元からの個別識別子による通知を集約して集団識別子とを生成して送信する識別子集約機構と、受信側ノードに設けられ、集団識別子を受信し個別識別子を復元する処理と、個別識別子から情報の通知元を特定する処理を実行する識別子分析機構とを、情報集約システムは備える。 In one example, an identifier aggregation mechanism that is provided in a transmission side node and generates a collective identifier by aggregating notifications by individual identifiers unique to information notification sources and individual identifiers from information notification sources; The information aggregating system includes a process for receiving a collective identifier and restoring an individual identifier, and an identifier analysis mechanism for executing a process for specifying a notification source of information from the individual identifier.
分散システムにおける情報集約型通信において、情報集約時のノード間の通信量を低減することが可能となる。 In information intensive communication in a distributed system, it is possible to reduce the amount of communication between nodes during information aggregation.
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
まず、いくつかの実施形態について説明する前に、前提として本出願人が通常考え得る技術およびその技術における課題について説明する。
Hereinafter, embodiments for carrying out the present invention will be described in detail with reference to the drawings.
First, before describing some embodiments, as a premise, a technique that can be generally considered by the present applicant and problems in the technique will be described.
分散システムにおける情報集約の例として、例えば、次のような場合に、割当て時点に十分近い時点での各システム資源の状態が、割当て制御を行うノードに集約されている必要がある。例えば、ジョブへのノード割当て時点で、ジョブの予想実行時間やアクセスする予定のハードウェア資源に合わせた最適化を行う場合である。あるいは例えば、実行開始後に、チェックポイント間隔やマイグレーション先を決定する場合である。さらに例えば、各ノード自体の構成部品の状態、ファイルサーバの負荷分散、さらにはサーバにアクセスする通信経路の予想負荷などを考慮して、割り当てを行う場合である。 As an example of information aggregation in a distributed system, for example, in the following cases, the state of each system resource at a time sufficiently close to the time of allocation needs to be aggregated in a node that performs allocation control. For example, when a node is assigned to a job, optimization is performed according to the expected execution time of the job or the hardware resource to be accessed. Alternatively, for example, the checkpoint interval and the migration destination are determined after execution is started. Further, for example, the allocation is performed in consideration of the state of the components of each node itself, the load distribution of the file server, and the expected load of the communication path accessing the server.
また、各ハードウェア資源の状態や負荷を継続的に監視し、随時適切に変更するためには、短い間隔での情報集約が望ましい。 Also, in order to continuously monitor the state and load of each hardware resource and change them appropriately as needed, it is desirable to collect information at short intervals.
状態情報の集約以外にも、並列計算機の環境において、複数ノードで並列に一部分を計算した結果を、ある時点で特定の1ノードに集約する場合や、複数ノード間で互いの計算結果を共有する必要が、しばしば生ずる。このような情報集約型の通信は、並列計算全体のボトルネック、ないしクリティカルパスになりやすい。 In addition to state information aggregation, in a parallel computer environment, the results of partial computations in parallel at multiple nodes may be aggregated into one specific node at a certain point in time, or the mutual computation results are shared between multiple nodes The need often arises. Such information-intensive communication tends to be a bottleneck or a critical path for the entire parallel computation.
情報集約型の通信では、ネットワーク上の送受信に伴う通信量または伝送時間が問題になる。近年の計算機システムは各ノードを構成するコンピュータの処理速度に比べ、ノード間のネットワークの通信速度が格段に遅いため、ネットワーク上を伝送される管理対象の状態情報の通信量が、情報集約システム全体の負荷の大きさを決める主要因となる。従って,データ量に比例する部分だけではなく、データ量に関わらず送受信動作1回あたりに必要な時間の大きさが無視できない。 In information-intensive communication, the amount of communication or transmission time associated with transmission / reception on the network becomes a problem. In recent computer systems, the communication speed of the network between nodes is much slower than the processing speed of the computers that make up each node. This is the main factor that determines the size of the load. Therefore, not only the portion proportional to the data amount, but also the amount of time required for one transmission / reception operation cannot be ignored regardless of the data amount.
俣、情報集約型の通信では、ネットワーク上の送受信に伴う伝送時間だけでなく、情報を集約するノードでの処理負荷も問題になる。近年の計算機システムはCPU の演算処理の速度に比べ、メモリへのアクセス速度が数桁のオーダで遅いため、アクセスすべきメモリの量が、ノードでの負荷の大きさを決める主要因となる。 In the information-intensive communication, not only the transmission time associated with transmission / reception on the network but also the processing load on the node that collects information becomes a problem. In recent computer systems, the memory access speed is slow, in the order of several orders of magnitude, compared to the CPU processing speed, so the amount of memory to be accessed is the main factor that determines the amount of load on the node.
情報集約型の通信に固有の課題は、情報拡散型の通信の典型である「同報通信」と対比すると明確になる。 Problems inherent in information-intensive communication become clear when compared with “broadcast communication”, which is typical of information diffusion communication.
多数ノードに対しての同報通信の場合は、同報通信機構を持つハードウェアを利用する事で、送信側ノードの負荷が1ノードへの送信と同じオーダまで改善される。ただし、状態情報の通知や並列計算への適用では、動画配信等の同報通信と異なりデータのビット化けやパケット欠落への厳密な対策を含むリライアブルマルチキャスト(reliable multicast)の実現が必要になり、単純にハードウェアの同報通信機構を使うだけでは実現できない場合も多い。しかし、各システム環境で利用できる同報通信機能を利用したreliable multicast の実現方法が複数知られている。これらの技術により送信側ノードの負荷はノード数をパラメタとしてO(1)となり、通信の実所要時間に関する要件も、比較的満たしやすい。 In the case of broadcast communication to a large number of nodes, the load on the transmission side node is improved to the same order as that for transmission to one node by using hardware having a broadcast communication mechanism. However, notification of status information and application to parallel computing require realization of reliable multicast including strict measures against data bit corruption and packet loss unlike broadcast communication such as video distribution, There are many cases that cannot be realized simply by using a hardware broadcast communication mechanism. However, there are a number of methods for realizing reliable multicast using the broadcast function that can be used in each system environment. With these technologies, the load on the transmitting side node becomes O (1) with the number of nodes as a parameter, and the requirements concerning the actual communication time are relatively easy to satisfy.
ここでO() は「ランダウの記号」で、一般にある量が() 内で指定される量と同じオーダで増加あるいは減少する事(記号で言及された量と() 内で指定された量の比の極限が定数である事)を示す。O(1) とは、「比較の基準となる量(あるいはパラメタ)が変化しても、一定である事」を意味する。 Where O () is a "Landau symbol", and generally an amount increases or decreases in the same order as the amount specified in () (the amount mentioned in the symbol and the amount specified in () The limit of the ratio is a constant). O (1) means “even if the reference amount (or parameter) changes, it remains constant”.
複数ノードから特定1ノードへ情報を集約する通信は、例えばメッセージパッシングインタフェース(Message Passing Interface(MPI))規格では、MPI_gather というAPI として規定されている。一方、最終的には参加した全てのノードが通信対象データを共有する場合のMPIでの通信API はMPI_Allgather と呼ばれている。以下の説明では、MPI で規定されたAPI を使用しない場合も通信パターンが共通である場合、gather あるいはallgather と呼ぶ。 Communication for aggregating information from a plurality of nodes to a specific one node is defined as an API called MPI_gather in the Message Passing Interface (MPI) standard, for example. On the other hand, the communication API in MPI when all participating nodes share communication target data is called MPI_Allgather. In the following explanation, even if the API specified by MPI is not used, if the communication pattern is common, it is called gather or allgather.
gather の所要時間削減について、例えば、以下の動作(この動作を実現するための通信ハードウェア機能を含む)に基づく技術が知られている。 For reducing the time required for gather, for example, a technique based on the following operation (including a communication hardware function for realizing this operation) is known.
Write RDMA (Write Remote Direct Memory Access:ライトリモートDMA)という「送信側でのコマンドのみで通信を開始し、受信側メモリの所定領域を更新する」事を特徴とする通信機能を利用する技術。この技術により、受信側が通信コマンドを発行するオーバヘッドが削減される。 Write RDMA (Write Remote Direct Memory Access) is a technology that uses a communication function characterized by "communication is started only by a command on the transmitting side and a predetermined area of the receiving side memory is updated". With this technique, the overhead of issuing a communication command on the receiving side is reduced.
個々の通信毎の割り込み動作を抑制する技術。この技術においては、複数のノードからのデータを受信する際、個々のデータでは受信割り込みを起こさず、送信側全ノードのデータ送信完了を送信側全ノードと受信側ノードとのバリア同期などによる別の手段で知る。特に大規模システムで、仮に送信側ノード数に比例した割り込みが発生するとすれば、コンテキスト切り替えによるオーバヘッドが非常に大きくなる。従って、この技術による割り込み回数の削減は、性能改善に有効である。 Technology that suppresses interrupt operations for each individual communication. In this technology, when receiving data from a plurality of nodes, a reception interrupt is not generated for each data, and the data transmission completion of all the transmission side nodes is separated by barrier synchronization between all the transmission side nodes and the reception side node. Know by means of In particular, if an interrupt proportional to the number of transmitting nodes occurs in a large-scale system, the overhead due to context switching becomes very large. Therefore, the reduction in the number of interrupts by this technique is effective for improving the performance.
gather に関する、上記従来技術の組み合わせによる受信側ノードのオーバヘッド削減には、以下の要因(1), (2) による限界が存在する。 There is a limitation due to the following factors (1) and (2) in reducing overhead of the receiving node by the combination of the above-mentioned conventional techniques regarding gather.
(1) 個々のノードから受信する1回のデータ量は、少なくとも「最小パケット長」以上になる。 (1) The amount of data received from each node is at least “minimum packet length”.
write RDMA に対し(より一般にread を含めたRDMA に対しても)、パケット長の最小値とは別に、メモリアクセス単位としてサポートされる最小データ長(以下L と書く(単位は通常はバイト))が存在する。 For write RDMA (and more generally for RDMA including read), apart from the minimum packet length, the minimum data length supported as a memory access unit (hereinafter written as L (unit is usually bytes)) Exists.
(2) 通信相手のノード数N に伴って受信すべきデータ量はO(N) で増加する。 (2) The amount of data to be received increases with O (N) as the number of communicating nodes N increases.
前述したwrite RDMA により個々のノードから所定形式のデータを受信する場合、N*Lバイト以上の領域が必要になる。ただし、受信に要する時間は、各ノードからのデータが比較的小さい場合(すなわち、通信時間に対する通信遅延時間(latency)項の寄与が大きい場合)は、O(log(N)) となる。一方、データが比較的大きく、通信時間が「データの大きさ/バンド幅」で評価できる場合は、O(N) となる。一般に数十ノード以上からの受信の場合は、何段階かの中継ノードを設定する事で、「(中継段数)×(中継を含む受信側ノード毎の通信相手ノード数)」に比例する時間が必要になる。 When data of a predetermined format is received from each node by the write RDMA described above, an area of N * L bytes or more is required. However, the time required for reception is O (log (N)) when the data from each node is relatively small (that is, when the contribution of the communication delay time (latency) term to the communication time is large). On the other hand, if the data is relatively large and the communication time can be evaluated by “data size / bandwidth”, O (N). In general, in the case of reception from several tens of nodes or more, a time proportional to “(number of relay stages) × (number of communication partner nodes for each receiving side node including relay)” is set by setting several stages of relay nodes. I need it.
各中継段で受信側ノード毎の通信相手ノード数a が一定とすると、中継段数はa を底とする対数に比例する。送信元ノード数をN として、通信所要時間は、ほぼ「a×log(N)/log(a)」となる。中継処理をノード上で行う場合、ここでのa は、2 ないし3 程度の比較的小さい値にする事が大規模システムでは有利な事が、理論モデル、シミュレーションや実測に基づく裏付けを伴った研究により、広く知られている。ここで、log(N)/log(a) は「a を底とするN の対数」を「標準の固定値」を底とする対数によって表す式である。対数の底となる「標準の固定値」は文脈により異なるが、どの場合でも、式の形は同じである。「標準の固定値」には、以下のような値が使われる。
- 「常用対数」の場合10
- 「自然対数」の場合e (Napier's constant ; ネイピアの定数)
- コンピュータ科学の多くの文献の場合2
以下、「a を底とするx の対数」を表記する際、log_a(x) という記法も用いる。例えば、log_a(x) = log_10(x)/log_10(a) = log_e(x)/log_e(a) = log_2(x)/log_2(a) となる。
If the number of communicating nodes a for each receiving node is constant at each relay stage, the number of relay stages is proportional to the logarithm with a as the base. When the number of source nodes is N, the required communication time is approximately “a × log (N) / log (a)”. When relay processing is performed on a node, it is advantageous to set a to a relatively small value of about 2 to 3 for large-scale systems. This is a study with support based on theoretical models, simulations, and actual measurements. Is widely known. Here, log (N) / log (a) is an expression expressing “logarithm of N with a as the base” by logarithm with “standard fixed value” as the base. The “standard fixed value” that forms the base of the logarithm varies depending on the context, but in all cases the form of the formula is the same. The following values are used for “standard fixed values”.
-10 for "Logarithm"
-In the case of “natural logarithm” e (Napier's constant)
-2 for many literatures in computer science
In the following, the notation log_a (x) is also used when expressing “the logarithm of x with a as the base”. For example, log_a (x) = log_10 (x) / log_10 (a) = log_e (x) / log_e (a) = log_2 (x) / log_2 (a).
中継に際して、一段前のノードからのWrite RDMA による転送が全て完了するのを待ってから受信したデータを含む領域全体を上位にRDMA 一回で転送すれば、中継に要するCPU の処理時間は、必ずしもノード数に依存しないようにする事ができる。しかしながら、通信にかかる実時間全体がノード数に伴って増加する事自体は避けられない。 When relaying, if the entire area including the received data is transferred to the upper level once after waiting for all the transfer by Write RDMA from the previous node to be completed, the processing time of the CPU required for relaying is not necessarily It can be made independent of the number of nodes. However, it is inevitable that the entire real time for communication increases with the number of nodes.
ここで、後述するいくつかの実施形態が比較対象として想定する技術は、上述してきたgather による情報集積である。図1(a)は後述するいくつかの実施形態が比較対象として想定する本出願人が通常考える技術の方式を示す図である(図1(b)については後述する)。想定される通常考える技術は、図1(a)に示されるように、1つ以上のノード102内の1つ以上の管理対象101から受信側ノード103に情報を集約する方式104が、gather による情報集積であるものである。gather による情報集積の方式104は例えば、情報を、管理対象101の識別子と、管理対象101についての各1ビットの情報(所定の状態なら:1、そうでないなら:0)で表す方式である。
Here, a technique assumed as a comparison target in some embodiments described later is information collection by gather described above. FIG. 1A is a diagram showing a method of a technique normally considered by the applicant of the present invention, which is assumed as a comparison target in some embodiments described later (FIG. 1B will be described later). As shown in FIG. 1A, the assumed normal technique is that a
後述するいくつかの実施形態が比較対象として想定する通常考える技術は、「管理対象に所定の状態が発生した事を感知したノードから割り込み処理を伴う通信を行い、そうでないノードは何も通知しない」という方法(X) ではない。この理由は、以下の通りである。 The technology that is normally considered that some embodiments to be described later assume as a comparison target is: “Communication with interrupt processing is performed from a node that senses that a predetermined state has occurred in the management target, and no other node notifies anything. This is not the method (X). The reason for this is as follows.
方法(X) は、管理対象で所定の状態が発生する割合が想定通り少数ノードであれば、受信側の負荷は十分小さくなるはずなので、一見、自然な監視方法に見えるかも知れない。しかし、方法(X) は大規模システムでの安定的な動作の観点から見て以下の(A)および(B)の問題がある。 Method (X) may seem to be a natural monitoring method at first glance because the load on the receiving side should be sufficiently small if the rate at which a predetermined state occurs in the management target is a small number of nodes as expected. However, the method (X) has the following problems (A) and (B) from the viewpoint of stable operation in a large-scale system.
(A) 「管理対象が所定の状態にないため、管理担当ノードからメッセージが送られない」場合と「ノードに深刻な異常が発生したためメッセージを送信できない状態にある」場合の区別がつかない。 (A) There is no distinction between “a message cannot be sent from the node in charge of management because the management target is not in a predetermined state” and “a message cannot be sent because a serious abnormality has occurred in the node”.
後者の状態については別に監視が行われているとすれば、ノードの状態は、最終的には、適切に検知されるかも知れない。しかし、管理対象の状態に対し誤認が発生し記録されてしまう事の回避や、その誤認の影響からの回復は必ずしも容易ではない。 If the latter state is monitored separately, the state of the node may eventually be detected appropriately. However, it is not always easy to avoid the occurrence of misidentification and record the status of the management target and to recover from the influence of the misidentification.
(B) 多くのノードで同時に所定の状態が発生した場合に、受信側ノードが過負荷になる恐れがある。図2(a)は、大規模システムでの割り込み集約処理の必要性の説明図である。図2(a)に示されるように、受信側ノード202内のNIC(Network Information Controller)203が、各送信側ノード201からのメッセージを受信する毎にIO割り込みを発生させた場合を考える。この場合、NIC203からのIO割り込みに基づいてCPU204が受信側のコンテクスト205を切り替えて、割り込みハンドラを起動し、プロセスを起動する。この場合の割り込み回数の最悪値は、送信側ノード201のノード数に比例してしまう。また、NIC203に接続されるネットワーク上のトラフィックも、送信側ノード201の数に応じて増加為てしまい、ネットワーク上の通信量が増加する。
(B) If a predetermined state occurs simultaneously in many nodes, the receiving node may be overloaded. FIG. 2A is an explanatory diagram of the necessity of interrupt aggregation processing in a large-scale system. As shown in FIG. 2A, consider a case where a NIC (Network Information Controller) 203 in the receiving
割り込みを伴う通信は、図2(a)に示されるように、必ず割り込みに対応するためのコンテキスト切り替え処理のオーバヘッドを生ずる。このため、大規模システムで通常時より桁違いに多くのノードからの受信割り込みを処理しようとすれば、受信側ノード202における過負荷の発生は避けがたい。
As shown in FIG. 2A, the communication accompanied by the interruption always causes an overhead of context switching processing to cope with the interruption. For this reason, if it is attempted to process reception interrupts from a large number of nodes by an order of magnitude in a large-scale system, it is difficult to avoid an overload in the receiving
k 個のメッセージを受信した時点で、受信側ハードウェアの機能として割り込みを停止する事が、受信側ノードの過負荷対策として考えられるが、この場合、割り込みを発生する状態に戻すタイミングを適切に決定する事は容易ではない。さらに、受信側ハードウェア仕様上の割り込み停止指定可能範囲が、ネットワーク・インターフェース毎ないしポート毎の場合、割り込みを停止する事は、同じネットワーク・インターフェースや上ポートを利用する通信を妨げる事になる。この場合、そのネットワーク装置による他の用途での通信での必要性の観点からは、割り込みを停止するとシステム運用上の支障を生じるため、割り込みの停止が不都合な場合も考えられる。 Stopping interrupts as a function of the receiving hardware when k messages have been received can be considered as a countermeasure for overloading the receiving node. It is not easy to decide. Furthermore, when the interrupt stop specifiable range in the hardware specification on the receiving side is for each network interface or port, stopping the interrupt prevents communication using the same network interface or upper port. In this case, from the viewpoint of necessity for communication for other uses by the network device, stopping the interrupt causes a problem in system operation. Therefore, it may be inconvenient to stop the interrupt.
ここでの問題は「送信側ノードで、ある時点で特定状態のノードが全体でいくつあるか」は「送信前に決まっている情報」ではないので、通知情報の種類に対応するパケット属性に応じた(送信側の)指定で割り込みの発生の有無を決める」手法は使えない事である。 The problem here is that “how many nodes are in a particular state at a certain point in time” is not “information determined before transmission”, so depending on the packet attribute corresponding to the type of notification information It is impossible to use the “determining whether or not an interrupt has occurred by specifying (on the sending side)” method.
以上の考察により、受信時に割り込みを伴う通信を使用する場合、一斉に多数のノードからの通知を受ける場合を想定すると、次のような対策が必要となる。図2(b)の206に示されるように、システム内の送信側ノード201(管理対象)の数に応じた階層化などすることにより、ネットワーク上のトラフィックを削減し、また各ノードでの負荷分散を行い、かつ、最大負荷を想定してシステム資源を用意する必要がある。 Based on the above considerations, the following measures are required when using communication with interrupts at the time of reception, assuming that notifications from a large number of nodes are received simultaneously. As shown by 206 in FIG. 2 (b), traffic on the network is reduced by layering according to the number of transmission side nodes 201 (managed objects) in the system, and the load on each node. It is necessary to distribute and to prepare system resources assuming the maximum load.
さらに、不定期の割り込み発生は並列計算時の「集団通信」性能を劣化させる事が知られている。つまり、このような監視情報を受信するノードは、並列計算を行うノードと別にするか、少なくとも、各ノードで上記割り込みを処理するシステム資源を並列計算用のシステム資源と分けて別に持たないと、システムの並列計算性能が著しく劣化する。 Furthermore, it is known that the occurrence of irregular interrupts degrades the “collective communication” performance during parallel computation. In other words, a node that receives such monitoring information is separate from a node that performs parallel calculation, or at least does not have a system resource that handles the interrupt at each node separately from a system resource for parallel calculation. The parallel computing performance of the system is significantly degraded.
しかし、そのように、目的別に独立のシステム資源を通常時の処理には過剰な程度に余裕を見て用意しておく方法は、システムコストの大幅な増加につながる。 However, such a method of preparing independent system resources for each purpose with an extra margin for normal processing leads to a significant increase in system cost.
以上の考察により、管理対象の状態分布が想定通りである場合と、そうでない場合との間で、受信側ノードの負荷に大差がない監視方法が大規模システムでは極めて望ましい事が分かる。「所定の状態が発生した時のみ割り込みを伴う通信を行う」方法(X) は、この条件を満たさない。 From the above considerations, it can be seen that a monitoring method in which there is no great difference in the load on the receiving side node between the case where the state distribution of the management target is as expected and the case where it is not so is extremely desirable in a large scale system. The method (X) of “performing communication with an interrupt only when a predetermined state occurs” does not satisfy this condition.
後述するいくつかの実施形態が解決すべき課題を要約すると、次の3つの技術課題となる。 To summarize the problems to be solved by some embodiments described later, the following three technical problems are obtained.
技術課題1:
情報集約型通信で、受信側ノードが各ノードからのメッセージ毎に最小メッセージサイズの領域を参照せざるを得ない事によるネットワーク上の通信量の増加および各ノードでのメモリアクセス負荷の削減限界を超える事。
Technical issue 1:
In information-intensive communication, the receiving node must refer to the area of the minimum message size for each message from each node, increasing the amount of communication on the network and reducing the memory access load at each node. To exceed.
技術課題2:
情報集約型通信で、受信側ノードがアクションを起こす必要がないノードからの情報にも全てアクセスせざるを得ない事によるネットワーク上の通信量の増加および各ノードでのメモリアクセス負荷の削減限界を超える事。
Technical issue 2:
With information-intensive communication, the receiving node must access all information from nodes that do not need to take action, increasing the amount of communication on the network and reducing the memory access load at each node. To exceed.
技術課題3:
情報集約型通信で、事前に設定した閾値を越えた数の管理対象が「監視中の状態」となった場合「閾値を越えた」事のみを認識すればよいという条件下で、全管理対象の状態を識別する必要がある場合よりも小さいネットワーク上の通信量および各ノードでのメモリアクセス負荷を実現する事。
Technical issue 3:
In information-intensive communication, if the number of management targets that exceed a preset threshold value is "monitoring status", all management targets must be recognized under the condition that only "threshold value exceeded" needs to be recognized. The amount of communication on the network and the memory access load at each node must be reduced compared with the case where it is necessary to identify the state of the network.
これらの技術課題全てに共通する前提は「ある1つのノードが、多数のノードから、それと同数、ないし、より多数の管理対象についての情報を、各々について1ビットずつ受信する」という状況における通常考えられる情報集約技術の通信効率およびメモリ使用効率の低さが、システム全体の通信性能を制限している事である。 The common premise of all these technical issues is the normal idea in the situation that a certain node receives information about the same number or a larger number of managed objects from multiple nodes, one bit for each. The low communication efficiency and memory use efficiency of the information aggregation technology that is used limit the communication performance of the entire system.
また、技術課題2と技術課題3に共通する前提は、上記の共通前提の下で「受信するビットの大多数が0 (1 であるビットが少数)」という状況における通常考えられる情報集約技術の通信効率およびメモリアクセス効率の低さが、システム全体の通信性能を制限している事である。図3は、疎な(ほとんど全てのビットが0の)ビット列の例を示す図である。これを見れば、大多数が0である情報列に対しても、各ビットごとに通信を行わねばならず、かつ各ノードにおいてメモリ領域を割り当てなければならず、通信効率およびメモリアクセス効率が悪いことが理解できる。
Also, the premise common to
以下では、本出願人が通常考える技術との関連を含めて、上述の3つの課題についてさらに詳細に説明する。 In the following, the above three problems will be described in more detail, including the relationship with the technology that the applicant normally considers.
大規模なシステムでの一斉受信時には、一般的な情報受信に共通の課題と、「例外的な状態」が発生した場合の情報受信に特有の課題がある。 At the time of simultaneous reception in a large-scale system, there are problems common to general information reception and problems specific to information reception when an “exceptional state” occurs.
まず、大規模システムでの多数ノードからの情報受信に共通の課題を説明する。
情報の中継が行われるには、管理ノード、あるいは各段の個々の中間ノードの通信相手ノード数と中継段数の間に次のトレードオフがあるため、通信遅延を大きく削減する事は難しい。
各段での通信相手ノード数を減らすと、中継段数が増加する。
各段での通信相手ノード数を増やすと、受信用のメモリ領域が増加する。
受信処理時に必要なメモリ領域が増加し、かつ、受信(あるいは中継)処理に伴うオーバヘッドが、各段の通信相手ノード数に比例して増加する。
First, common problems in receiving information from a large number of nodes in a large-scale system will be described.
In order to relay information, there is the following trade-off between the number of communication counterpart nodes and the number of relay stages of the management node or each intermediate node in each stage, so it is difficult to greatly reduce the communication delay.
Decreasing the number of communicating nodes at each stage increases the number of relay stages.
Increasing the number of correspondent nodes at each stage increases the memory area for reception.
The memory area required for reception processing increases, and the overhead associated with reception (or relay) processing increases in proportion to the number of communication partner nodes at each stage.
ノードでの中継動作を伴う通信は、中継段数の増加に伴い通信遅延時間(latency) が、少なくとも「ノード数の対数」に比例して増加する。通信遅延時間の短縮は、各段の「中継動作」の所要時間削減で達成せざるを得ず、そのために、通信データ量と中継の各段での処理時間の各々を削減する必要がある。 In communication involving relay operation at a node, the communication delay time (latency) increases in proportion to “logarithm of the number of nodes” as the number of relay stages increases. The reduction of the communication delay time must be achieved by reducing the time required for the “relay operation” at each stage. Therefore, it is necessary to reduce the amount of communication data and the processing time at each stage of the relay.
多数ノードからの情報集積の処理性能を支配する要素としては、受信側ノードでの処理時間、特に、受信側ノードでのメモリアクセスの所要時間の占める割合も大きい。 As a factor governing the processing performance of information accumulation from a large number of nodes, the processing time at the receiving side node, particularly the proportion of the time required for memory access at the receiving side node is also large.
メモリアクセスの所要時間はアクセスすべきメモリ量の増加関数となるため、アクセスすべきメモリ量の削減が性能改善の鍵となるが、以下の要因により削減の下限が規定されてしまう。この問題が前述した「技術課題1」である。
1ビットの受信時にも、少なくとも最小パケットサイズのメモリ領域は必要である。
受信時の割り込み処理によるCPUオーバヘッドを減らすため、割り込みを抑止したままで全ノードのパケットを受信しようとした場合、ノード数×最小パケットサイズのメモリがメッセージ保存用に必要になる。なぜならば、全メッセージを受信するまでメモリを解放できないためである。
Since the time required for memory access is an increasing function of the amount of memory to be accessed, the reduction in the amount of memory to be accessed is the key to improving the performance, but the lower limit of the reduction is defined by the following factors. This problem is “
Even when receiving 1 bit, a memory area of at least the minimum packet size is required.
In order to reduce the CPU overhead due to interrupt processing at the time of reception, when trying to receive packets of all nodes while interrupts are suppressed, memory of the number of nodes × minimum packet size is required for storing messages. This is because the memory cannot be released until all messages are received.
次に、「管理対象に例外的な状態が発生した場合」の情報受信に特有の課題を説明する。 Next, a problem peculiar to information reception when “an exceptional state occurs in the management target” will be described.
ここで、「例外的な状態」は、「異常な状態」と言い換えられる場合が多いが、「正常な状態で、単に稀であるだけ」の場合もある。「異常ではないが例外的」な状態としては、例えば大規模な疎行列の積を並列計算する際、「大部分の成分が0 である事」が分かっていれば、0 でない成分は「例外的」と考えられる。疎行列は、全ての成分に1つの領域を割り当てるのではなく、「「0 でない成分の位置」と「その位置の値」の対」として表現される場合が多く、入力データや(最終的な)出力データとしては、各成分を直接管理対象とする事は少ない。ただし、演算を並列処理する際に大多数のノードの分担部分が0 になる事はある。しかしながら、分かりやすさの観点から以下では「異常な状態」が発生する場合の状態監視の場合を例にして説明する。 Here, the “exceptional state” is often rephrased as an “abnormal state”, but may be “normal state, simply rare”. For example, when the product of a large sparse matrix is calculated in parallel, if it is known that “most components are 0”, a non-zero component is It is thought. A sparse matrix is often expressed as “a pair of“ position of non-zero component ”and“ value of that position ”” rather than assigning one region to all components, and the input data or (final ) As output data, each component is rarely directly managed. However, when processing operations in parallel, the share of the majority of nodes may be zero. However, from the viewpoint of easy understanding, a case of state monitoring in the case where an “abnormal state” occurs will be described below as an example.
一般に大規模な並列システムを構成する個々のハードウェア部品の故障率は非常に低いので、システム上で複数のノードあるいは複数の部品に共通する原因箇所がある場合を除き、複数のノードないし部品が同時に故障する確率は、1つが故障する確率に比べて何桁も小さい。なぜならば、各ノードあるいは部品の異常が「独立事象」とすれば、複数の管理対象が同時に異常な状態になる確率は、1つが異常な状態になる確率の積になるためである。 In general, the failure rate of individual hardware components that make up a large-scale parallel system is very low, so there are multiple nodes or parts in the system unless there is a common cause for multiple nodes or multiple components. The probability of failure at the same time is many orders of magnitude smaller than the probability of one failure. This is because if the abnormality of each node or component is an “independent event”, the probability that a plurality of management targets will be in an abnormal state simultaneously is the product of the probability that one will be in an abnormal state.
このため、全管理対象の状態を受信した後で個々の管理対象の状態を確認する場合は、大半の管理対象についての状態を「読み飛ばす」事になる。言い換えれば、ほとんど全ての管理対象に対しては受信側がアクションを起こす必要はないにも関わらず、多くの管理対象の状態を通信およびメモリを参照するための負荷自体は発生する。この問題が、前述した技術課題2である。
For this reason, when checking the status of each management target after receiving the status of all the management targets, the status of most of the management targets is “skip”. In other words, although there is no need for the receiving side to take action for almost all management targets, a load for referring to the communication and memory for the status of many management targets is generated. This problem is the
こうした場合、異常があったノード全てを識別する処理が不要な場合がある事に注意する。 Note that in such cases, it may not be necessary to identify all the nodes that have anomalies.
例えば、1つの並列ジョブに割り当てたノード全ての異常を監視するシステムにおいて、異常があるノード数が事前に定めた閾値以下の場合と閾値を越えた場合では、次のような異なる対応を行うとする。
閾値以下の場合は、ただちに代替ノードの割当てジョブを継続する。
閾値を越えた場合は、いったんジョブを打ち切る。
For example, in a system that monitors the abnormality of all the nodes assigned to one parallel job, if the number of nodes with an abnormality is less than or equal to a predetermined threshold and the threshold is exceeded, To do.
If it is less than or equal to the threshold, the alternative node assignment job is immediately continued.
If the threshold is exceeded, the job is terminated.
このようなシステムでは、前者の場合は、異常が発生したノードを識別する必要があるが、後者の場合、「異常なノードの数が閾値を越えた」事が分かれば、当面の処理自体は可能と考えられるので、異常が発生したノードを識別する必要はない。 In such a system, in the former case, it is necessary to identify the node in which the abnormality has occurred. In the latter case, if it is known that “the number of abnormal nodes has exceeded the threshold value”, the current processing itself is Since it is considered possible, it is not necessary to identify the node where the abnormality occurred.
より一般に、信頼性確保のために用意された冗長資源の数を越えた異常が発生した場合は、冗長資源数の決定根拠が妥当だとすれば、同時に異常が発生した場合それらの異常が独立な事象である可能性は低い。従って、仮に冗長資源の数を多くしておいても、回復可能であるかは不確実である。想定していない「単一の故障原因箇所(single point of failre)」が存在する場合、冗長資源割当てによる処理継続は不可能なので処理を打ち切らざるを得ない。この状況では、個々の異常箇所の特定は、処理打ち切りの後で必要に応じて行なえばよいと考えられる。 More generally, if an abnormality that exceeds the number of redundant resources prepared for ensuring reliability occurs, assuming that the basis for determining the number of redundant resources is reasonable, if the abnormality occurs at the same time, those abnormalities are independent. Is unlikely. Therefore, it is uncertain whether recovery is possible even if the number of redundant resources is increased. If there is an unexpected “single point of failre”, the process cannot be continued by redundant resource allocation, and the process must be aborted. In this situation, it is considered that the identification of individual abnormal locations may be performed as necessary after the processing is terminated.
ここで、通常考える技術である、複数ノードからのWrite RDMA により受信側ノードに情報を集める方法を使用する場合を考える。この場合、受信オーバヘッド削減のためデータが全て送信された後で受信を確認する限り、「閾値を越えた数のノードから所定の(通常は異常な)状態を受信した」事は、受信後の全データへの探索処理で定める事になる。 Here, consider the case of using a technique that collects information at a receiving node by Write RDMA from a plurality of nodes, which is a normally considered technique. In this case, as long as the reception is confirmed after all the data has been transmitted in order to reduce the reception overhead, “a predetermined (usually abnormal) state has been received from a number of nodes exceeding the threshold” It will be determined by the search process for all data.
このようなケースにおいて、最悪の場合は、「ノード数×最小パケットサイズ」のメモリ全体へのアクセスとなる。平均的にも、少なくとも半分程度のメモリへのアクセスが必要になる。その理由は、異常な状態の個々のノードに対応する領域がアクセス順で先頭から数えて1/2 の地点の前にあるか後にあるかの確率が等しいとすると、1つの異常状態に対応するノードを検出するまでにアクセスするメモリ量の平均は全メモリ量の1/2 だからである。閾値をk として、その閾値k を越える数が発見されるまで探索を続けるとすれば、探索すべき平均メモリ量はk の増加関数になる。 In such a case, the worst case is access to the entire memory of “number of nodes × minimum packet size”. On average, access to at least about half of the memory is required. The reason is that if there is an equal probability that the area corresponding to each node in the abnormal state is in front of or behind the half point counted from the top in the access order, it corresponds to one abnormal state. This is because the average amount of memory accessed until a node is detected is 1/2 of the total amount of memory. If the threshold is k and the search is continued until a number exceeding the threshold k is found, the average amount of memory to be searched is an increasing function of k.
以上により、通常考える技術では、例えばk = 1 で通常時には1つの管理対象の状態を見ればよい場合も、管理対象の総数に比例する通信量およびメモリアクセスが必要になり、かつ管理対象ごとに最小パケットサイズの通信量およびメモリ領域が必要になる。このための通信量の増加および処理負荷は少なくない。 As described above, in the normally considered technology, for example, when k = 1 and it is sufficient to see the state of one managed object at normal time, the communication amount and memory access proportional to the total number of managed objects are required, and for each managed object A communication amount and a memory area with a minimum packet size are required. For this reason, the increase in communication volume and processing load are not small.
しかし、所定の状態の分布状況が想定と異なる場合でも、想定より多くの管理対象が所定の状態にある事を検出した時点で処理を切り替える事は常に可能なので、処理時間に大きな差はない。すなわち、所定状態にある管理対象毎に割り込みを伴う通信を行う方法(前述した方法(X))が想定外の状況で処理時間が増大してしまうのに対して、想定外の場合も安定した動作を実現しやすいという利点はある。 However, even when the distribution state of the predetermined state is different from the assumption, it is always possible to switch the processing when it is detected that more management targets than the assumption are in the predetermined state, so there is no great difference in processing time. In other words, the method of performing communication with interruption for each management target in a predetermined state (method (X) described above) increases the processing time in an unexpected situation, but stable even in unexpected cases There is an advantage that the operation is easy to realize.
従って、「通常時には所定の状態にある管理対象が、閾値k 以下と想定される」状況下で、「想定外の状態での処理時間が通常時の場合の処理時間に較べて大差ない」事の利点を保ったまま、ネットワーク上の通信量および各ノードでの処理時にアクセスが必要なメモリ量を削減する事が課題となる。これが、後述するいくつかの実施形態が解決すべき、前述した技術課題3である。
Therefore, under the situation that “the management target in the normal state is assumed to be below the threshold k”, “the processing time in the unexpected state is not much different from the processing time in the normal state”. The problem is to reduce the amount of communication on the network and the amount of memory that needs to be accessed during processing at each node, while maintaining the above advantages. This is the above-described
以下の説明において、次のような監視方法は、「分解能がk である」と定義する。それは、特定の閾値k を越える数の管理対象に共通する特定の状態(通常は異常状態)に対しては個々の管理対象を必ずしも識別しないが、特定の状態の管理対象の数が閾値k 以下の場合は管理対象を識別する監視方法である。 In the following description, the following monitoring method is defined as “the resolution is k”. It does not necessarily identify individual management targets for a specific state (usually an abnormal state) common to a number of management targets that exceed a specific threshold k, but the number of management targets in a specific state is less than or equal to the threshold k. In this case, the monitoring method identifies the management target.
なお、分解能がk の監視中にk より多くの管理対象について監視条件が成立した際の監視システムの挙動について、次の2つの考え方がある。どちらの考え方が適切であるかは状況に依存する。 There are two ways of thinking about the behavior of the monitoring system when the monitoring condition is satisfied for more than k management targets during monitoring with resolution k. Which idea is appropriate depends on the situation.
(1) k 個より多くの対象も識別できる場合が多い方がよい。
例えば、計算された集団識別子が所定の大きさの領域に収まるため、全ての場合は無理だとしても、k 個より多くの個別識別子を分解できる場合が多いほど好ましい場合である。裏返せば、k 個より多くの管理対象が所定の状態にあって本来は個別識別子を知る必要がない場合に、集団識別子から個別識別子を求める計算を実行してしまう事が多くなる(この事が望ましくない場合もありうる)。
(1) It is better that more than k objects can be identified in many cases.
For example, since the calculated collective identifier fits in an area of a predetermined size, even if it is impossible in all cases, it is preferable that more than k individual identifiers can be decomposed in many cases. In other words, if there are more than k management targets in a given state and it is not necessary to know the individual identifiers, the calculation for obtaining the individual identifiers from the group identifiers is often executed (this is the case). May not be desirable).
(2) k 個より多くの対象を識別する処理が不要ないし軽い場合が多い方がよい。
例えば、集団識別子の大きさだけからk 個より多くの個別識別子を含むと判定可能な場合(リダクション途中の演算のオーバーフローで判定可能な場合を含む)が多い方が好ましい場合である。裏返せば、k 個より多くの個別識別子が分かる場合は少ない(この事が望ましくない場合もありうる)。
(2) The process of identifying more than k objects is unnecessary or light in many cases.
For example, there are cases where it is preferable that there are more cases where it is possible to determine that more than k individual identifiers are included based on the size of the collective identifier (including cases where determination is possible due to an overflow of computation during reduction). In other words, there are few cases where more than k individual identifiers are known (this may not be desirable).
例えば、ある管理対象の集合S を固定して、次のような処理を行うなら、分解能が上限kで制限されているコード化が使用できる。
Sのうちk 個より多くの管理対象で問題としている事象が発生した場合、S の使用自体をいったん取りやめる。
S の中で事象が発生したノードがk 個以下であれば個々のノードに対し何らかの措置を講じてS の使用を続行する。
For example, if a certain set S to be managed is fixed and the following processing is performed, encoding whose resolution is limited by the upper limit k can be used.
If a problem occurs in more than k management targets in S, the use of S is temporarily canceled.
If there are no more than k nodes where an event has occurred in S, take some measures for each node and continue using S.
あるノード全体の状態だけではなく、「あるノードの構成部品」や「あるノードが管理する一連の機器」等の状態の管理にも同じ方法が利用できるので、以下しばらく「管理対象」という一般的な表現を使用する。また、以下に説明する実施形態においては、「ノード」の管理という表現を使う場合もある。つまり、通知は、管理を担当するノードにより、各管理対象毎に行われる。 The same method can be used not only for the state of an entire node but also for the state of "components of a node" and "a series of devices managed by a node". Use simple expressions. In the embodiment described below, the expression “node management” may be used. That is, the notification is performed for each management target by the node in charge of management.
<全ての実施形態に共通の技術的要素>
図1(b)は、後述するいくつかの実施形態において1つ以上のノード102内の1つ以上の管理対象101から受信側ノード103に情報を集約する方式105を説明する図である。図1(b)に示されるように、管理対象101が所定の状態である場合には、コード化されたデータ(後述する個別識別子)が通知され、この通知に対してリダクションの演算が実行されてデータ量が削減されたデータ(後述する集団識別子)が受信側ノード103に通知される。また、管理対象101が所定の状態でない場合には、使用するリダクションの演算の単位元が通知され、この通知に対してリダクションの演算が実行される。すなわち、単位元が通知されることにより、この単位元を入力としたリダクションの演算結果は変化しない。
<Technical elements common to all embodiments>
FIG. 1B is a diagram illustrating a
後述するいくつかの実施形態は、メモリを共有しない分散環境での情報集約手法に関するものであり、図1(b)に示されるように、情報の管理対象101が情報通知元のノード102と一致している場合が、典型例である。すなわち、ノード102全体の(ある観点での)「状態」をノード102自身が通知する場合、管理対象101が、そのノード102自体と考える。しかし、ノード102を構成する特定種類の複数の部品に関する情報集約の場合に適用した場合など、より一般的な状況を考えて、管理対象101と通知元ノード102を概念上は区別する。
Some embodiments to be described later relate to an information aggregation method in a distributed environment that does not share a memory. As illustrated in FIG. 1B, an
しかし、管理対象101がノード102自体で集団識別子の通知処理がノード102間で階層化されている場合と、ノード102上の複数の管理対象101についての情報の集約は、情報集約技術としては同等なので、分かりやすさを重視する場合、管理対象101が情報通知元ノード102自体と想定しても差し支えない場合が多い。
However, when the
<第1の実施形態>
図4は、情報集約システムを構成する計算機の第1の実施形態のブロック図である。第1の実施形態は、以下に示す(1)から(6)の技術内容を有する。
<First Embodiment>
FIG. 4 is a block diagram of a first embodiment of a computer constituting the information aggregation system. The first embodiment has the following technical contents (1) to (6).
(1) 分散システム内の複数の管理対象に対して定められた通知対象事象に対し、当該事象が発生した対象のコード化された識別子を情報として集約する事で、システム全体としての状態を管理する仕組みである。個々の管理対象に対応するコード化された識別子を、以下では「個別識別子」と呼ぶ。 (1) For the notification target events defined for multiple management targets in the distributed system, the status of the entire system is managed by aggregating the coded identifiers of the targets where the events occurred as information It is a mechanism to do. The coded identifier corresponding to each management object is hereinafter referred to as “individual identifier”.
(2) 「対象のコード化された識別子(個別識別子)を情報として集約する仕組み」を、以下では、「識別子集約機構401」と呼ぶ。個別識別子は識別子集約機構401への入力となる。
(2) “Mechanism for aggregating target coded identifiers (individual identifiers) as information” is hereinafter referred to as “
(3) 識別子集約機構401において、識別子の集約を、集団通信の一形態である「リダクション404」によって行う。このリダクション404は、ネットワーク上の通信量を削減すること、および、集約された情報を受信するノード(図1(b)の103)上の、受信に必要なメモリ量および受信に必要なCPU 時間(メモリアクセス時間を含む)を削減することを目的とする。
(3) The
本実施形態における識別子集約機構401は、管理対象を個別識別子にコード化する機能である「識別子のコード化体系403」と「リダクション404」との組み合わせを、計算機システム上で具体化したものと言える。
It can be said that the
ここでリダクション404は分散並列システム上の集団通信(collective communication)の一種で、「複数ノード(図1(b)の102)に分散配置されたデータを入力とし、演算結果を、それらのノードの1つあるいは全てに出力として返す操作を指す。すなわち、リダクション404は、ノード間の一連の通信と演算の組み合わせである。本実施形態では、リダクション404の「メカニズム」としての仕組みは、従来から知られている手法を利用する。リダクション404についての本実施形態での独自の追加部分は、どういうデータを、どのように「リダクション」の対象とするかという点に関するポリシーにある。
Here, the
例えば、リダクション通信でのパケットフォーマットの詳細は、本実施形態では問わない。 For example, the details of the packet format in the reduction communication do not matter in the present embodiment.
「識別子のコード化体系403」により定まる個別識別子から、リダクション404により計算された結果を、以下では「集団識別子」と呼ぶ。リダクション404が集団通信(collective communication) の典型である事を意識し、英語で(collective identifier) と呼ぶ意図で、リダクション404の計算結果を「集団識別子」と呼ぶ。
The result calculated by the
集団識別子の計算に使用された個別識別子を、以下では(その集団識別子の)「生成因子」あるいは単に「因子」と呼ぶ。演算が乗法の場合は、普通の数学用語としての「因子(factor)」に一致する。ただし、本出願ではbitwise or (ビット単位の論理和演算)や加法などの、乗法以外の演算をリダクション404に使う場合に対しても、「生成因子」あるいは「因子」という用語を使用する。
The individual identifier used in the calculation of the group identifier is hereinafter referred to as “generation factor” (of the group identifier) or simply “factor”. If the operation is multiplicative, it corresponds to “factor” as an ordinary mathematical term. However, in the present application, the term “generation factor” or “factor” is used even when operations other than multiplication such as bitwise or (bitwise OR operation) or addition are used for the
(4) 上記の目的(3) を達成するための「識別子のコード化体系とコード化された識別子への演算方法」が、本実施形態の技術的要素である。その技術的要素には、次の2つの側面がある。
識別子(のコード体系)、および各コードに対するアルゴリズムの面での技術。
システムに固有の「ノード間演算装置」(リダクション404の実現に使用される特別なネットワーク、ないしネットワークに接続された特別な装置)の利用方法に関する技術。
(4) “Identifier coding system and calculation method for coded identifier” for achieving the above object (3) are technical elements of this embodiment. The technical element has the following two aspects.
Technology in terms of identifiers (code system) and algorithms for each code.
A technique related to a method of using an “inter-node computing device” (a special network used for realizing the
(5) リダクション404により、個別識別子から識別子集約機構401により複数の管理対象に対応する集団識別子を計算する際、情報通知を担当するノード(図1(b)の101に対応)は、「送信側ノード」と呼ぶ。また、情報の集約を担当するノード(図1(b)の103に対応)は、「受信側ノード」と呼ぶ。
(5) When the group identifier corresponding to a plurality of management objects is calculated from the individual identifier by the
図5は、第1の実施形態における送信側ノードにおける識別子集約機構401(図4)の処理の例を示すフローチャートである。図5のフローチャートの処理は、後述する図7の送信起点ノード701のCPU701−1または中継ノードとして機能する受信・中継ノード702のCPU702−1によって実行される。また、入力パラメタ1また2等の作業領域は、送信起点ノード701のメモリ701−2または受信・中継ノード702のメモリ702−2に記憶される。
FIG. 5 is a flowchart illustrating an example of processing of the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node in the first embodiment. The processing of the flowchart of FIG. 5 is executed by the CPU 701-1 of the
まず、自ノードが通信の起点ノードであるか否かが判定される(ステップS501)。
ステップS501の判定がNO(図中「n」)であるならば、受信済みの値を格納する入力パラメタ1に、受信済みの値(集団識別子)が格納される(ステップS502)。
First, it is determined whether or not the own node is a communication origin node (step S501).
If the determination in step S501 is NO (“n” in the figure), the received value (group identifier) is stored in the
ステップS501の判定がYES(図中「y」)ならば、受信済みの値は無いため、入力パラメタ1に、既定値が格納される(ステップS503)。ここで、既定値は、リダクション404に使用する演算の単位元が好ましい。例えば、演算が加法演算またはbitwise or演算であれば、既定値は0が好ましい。演算が乗法演算であれば、既定値は1が好ましい。自ノードが通信の起点ノードであって、受信済みの値がなければ、入力パラメタ1に単位元が格納されることにより、入力パラメタ1がリダクション404の演算に影響を与えないようにされる。
If the determination in step S501 is YES ("y" in the figure), there is no received value, so a default value is stored in the input parameter 1 (step S503). Here, the default value is preferably the unit of operation used for the
次に、自ノードが管理する管理対象において通知すべき条件が成立したか否かが判定される(ステップS504)。 Next, it is determined whether or not a condition to be notified is established in the management target managed by the own node (step S504).
ステップS504の判定がYESならば、自ノードの状態を格納する入力パラメタ2に、自ノードにおける管理対象(または自ノードそのもの)に対応する個別識別子が格納される(ステップS505)。
If the determination in step S504 is YES, the individual identifier corresponding to the management target in the own node (or the own node itself) is stored in the
ステップS504の判定がNOならば、入力パラメタ2に、既定値が格納される(ステップS506)。ここでの既定値も、ステップS503の場合と同様に、リダクション404に使用する演算の単位元が好ましい。自ノードが管理する管理対象において通知すべき条件が成立していなければ、入力パラメタ2に単位元が格納されることにより、入力パラメタ2がリダクション404の演算に影響を与えないようにされる。
If the determination in step S504 is no, a default value is stored in the input parameter 2 (step S506). The unit value of the calculation used for the
その後、リダクション404に使用する2項演算が、入力パラメタ1および入力パラメタ2に対して実行される(ステップS507)。2項演算の詳細については、後述するいくつかの実施形態において詳述する。
Thereafter, the binary operation used for the
最後に、ステップS507での演算結果が、次の転送先への送信内容である集団識別子とされて出力される(ステップS508)。その後、図5のフローチャートで例示される送信側ノードにおける識別子集約機構401の処理が終了する。
Finally, the calculation result in step S507 is output as a collective identifier that is the transmission content to the next transfer destination (step S508). Thereafter, the processing of the
第1の実施形態における識別子集約機構401の効果は、計算される集団識別子に必要な通信量およびメモリ量がそれぞれ、通知担当ノードから情報が集約されるノードに個別に情報を通知する際に必要な通信量およびメモリ量の合計のそれぞれより少ない事に由来する部分が大きい。
The effect of the
なお、どのノードも情報通知を担当し、かつ情報を集約する場合もある。すなわち送信側ノード、受信側ノードは、必ずしも物理的に特定のノードを指すとは限らず、単にシステム内の役割に対する呼び方である。 In addition, every node is in charge of information notification and may collect information. In other words, the transmitting side node and the receiving side node do not necessarily refer to specific physical nodes, but are merely called for roles in the system.
集団通信用語では、どのノードも情報通知と情報集約の両方を担当する場合は、単純に情報をそのまま集めるならAllgather、リダクション404を行うなら、Allreduce と呼ぶ。Allreduce の実現方法は大別して次の2つある。第1の実現方法は、特定ノードへの集約(reduce)と複数ノードへの放送(broadcast: 同じ内容のデータの一対多通信)を組み合わせる方法である。なお、同じ内容のデータの一対多通信は、文脈によっては一般的な場合をmulticastと呼び、broadcast という用語が「ネットワークの物理的な1セグメント内の全ノードへの一斉通信」という特殊な場合に対してのみ使われる場合もある。第2の実現方法は、集約の過程でノード間が情報を相互に交換する事により、通信処理終了後に集約に参加したノード間で情報が共有されるようにする方法である。例えば、情報集約過程が「各段階で2ノードずつ互いに持っている情報を交換する」事で実現されている場合である。これらの実現方法は、通信メカニズム上の区別であるため、本実施形態では、どちらが用いられていてもよい。
In collective communication terminology, when any node is in charge of both information notification and information aggregation, it is called “Allgather” for simply collecting information as it is, and “Allreduce” for
(6) 受信した集団識別子から監視中の状態にある管理対象を特定する仕組みを「識別子分析機構402」と呼ぶ。識別子分析機構402は、次の2つの部分からなる(図4参照)。第1の部分は、受信した集団識別子から(図4の識別子のコード化体系403に基いて)「生成因子」である個別識別子を特定し復元する処理である。第2の部分は、個別識別子から、その管理対象(図1(b)の101)を特定する処理である。
(6) A mechanism for identifying a management target in a monitored state from the received group identifier is referred to as “
図6は、第1の実施形態における受信側ノードにおける識別子分析機構402(図4)の処理の例を示すフローチャートである。図6のフローチャートの処理は、受信側ノードとして機能する後述する図7の受信・中継ノード702のCPU702−1によって実行される。また、作業領域W等は、受信・中継ノード702のメモリ702−2に記憶される。
FIG. 6 is a flowchart illustrating an example of processing of the identifier analysis mechanism 402 (FIG. 4) in the receiving side node in the first embodiment. The processing of the flowchart of FIG. 6 is executed by the CPU 702-1 of the reception /
まず、ノード間のリダクション404における集団識別子が受信される(ステップS601)。
First, the collective identifier in the
次に、集団識別子が作業領域Wに格納される(ステップS602)。
次に、作業領域Wが示す値がリダクション404の演算における単位元となったか否かが判定される(ステップS603)。
Next, the group identifier is stored in the work area W (step S602).
Next, it is determined whether or not the value indicated by the work area W is a unit element in the calculation of the reduction 404 (step S603).
ステップS603の判定がNOならば、集団識別子から個別識別子が1つ特定される(ステップS604)。この特定の具体的な手法としては、図4の識別子のコード化体系403に依存して例えば以下の手段を用いる。
bit(ビット)操作演算
素因数分解
「集団識別子と(その生成因子である)個別識別子の対照表」の検索
対照表の検索が必要な範囲を限定する事で検索を高速化する「ハッシュ関数」
集団識別子から(その生成因子である)個別識別子を少なくとも1つ求める「完全ハッシュ関数」
これらの手段の詳細については、後述するいくつかの実施形態において詳述する。
If the determination in step S603 is NO, one individual identifier is specified from the group identifier (step S604). As this specific concrete method, for example, the following means is used depending on the
Bit manipulation operation Prime factorization Search for “collection identifier and individual identifier comparison table” Search function “hash function” that speeds up the search by limiting the search range of the comparison table
"Complete hash function" for finding at least one individual identifier (which is its generation factor) from a group identifier
Details of these means will be described later in some embodiments.
その後、ステップS604で特定された個別識別子に対応する管理対象が処理(特定)される(ステップS605)。この特定の具体的な手法としては、図4の識別子のコード化体系403に依存して例えば以下の手段を用いる。
bit 操作演算
「個別識別子と管理番号の対照表」の検索
対照表の検索が必要な範囲を限定する事で検索を高速化する「ハッシュ関数」
個別識別子から管理対象番号を求める「完全ハッシュ関数」
Thereafter, the management target corresponding to the individual identifier specified in step S604 is processed (specified) (step S605). As this specific concrete method, for example, the following means is used depending on the
Bit operation calculation “Search table for individual identifiers and control numbers” “Hash function” that speeds up search by limiting the range of search for the comparison table
"Complete hash function" to obtain the management target number from the individual identifier
次に、リダクション404に使用した演算の逆演算で、ステップS604において作業領域Wから特定された個別識別子が取り外される(ステップS606)。その後、ステップS603の処理に戻って、上述のステップS603からステップS606までの処理が繰り返し実行される。 Next, the individual identifier specified from the work area W in step S604 is removed by the inverse operation of the operation used for the reduction 404 (step S606). Thereafter, the processing returns to step S603, and the processing from step S603 to step S606 described above is repeatedly executed.
ステップS603の判定がYESになると、図6のフローチャートで例示される受信側ノードにおける識別子分析機構402の処理が終了する。
If the determination in step S603 is YES, the processing of the
本実施形態は、上述の(1)-(6) を骨子とする仕組みを、例えば図7の構成を備える情報集約システム上で実現する。本実施形態を実現する情報集約システムの最小限の要件は、「CPU、メモリおよびネットワーク・インターフェースを持つ個々の計算機(ノード)がネットワークにより相互結合された構成」である。すなわち、図7から図10に示されるように、送信起点ノード701と受信・中継ノード702が、スイッチまたはルータである中継装置703と通信線704を含むネットワークにより相互接続されている。なお、図7は、第1の実施形態に従った計算機システムの例示であり、このシステムに含まれるノード701、702または中継装置703の数は、任意であってよい。そして、送信起点ノード701は、CPU701−1、メモリ701−2、およびネットワーク・インターフェースであるNIC701−3を備える。また、受信・中継ノード702は、CPU702−1、メモリ702−2、およびNIC702−3を備える。なお、受信・中継ノード702は、メモリ702−2の記憶領域の使用形態によって、タイプ1(集団識別子の受信領域)またはタイプ2(集団識別子の受信領域と識別子の表の記憶領域)に分類される。
In the present embodiment, the mechanism based on the above (1) to (6) is realized on, for example, an information aggregation system having the configuration of FIG. The minimum requirement of the information aggregation system that realizes the present embodiment is “a configuration in which individual computers (nodes) having a CPU, a memory, and a network interface are interconnected by a network”. That is, as shown in FIGS. 7 to 10, the
図7において、送信起点ノード701は、図1のノード102に対応し、図1の管理対象101を含む。または、送信起点ノード701そのものが管理対象101であってもよい。
In FIG. 7, the
図8は、このようなノードにより管理される管理対象の説明図である。ノードにより管理される管理対象は、図8(a)に示されるように当該ノードの状態であってよく、図2(b)に示されるように当該ノードの各構成部品の状態であってよい。また、ノードにより管理される管理対象は、図2(c)に示されるように当該ノードの構成部品以外の管理対象物であってよく、図2(d)に示されるように当該ノードのメモリ内の特定データであってよい。図2(b)〜図2(d)に示されるように、状態が管理される管理対象は、情報通信元のノードとは概念上区別され得る。しかしながら、情報通信元のノードにより管理される複数の管理対象の状態情報が後述のリダクション404(図4)の処理と同様の情報集約処理によって情報通信元のノードおいて集約されるならば、図2(a)に示されるように両者を概念上一致させた場合と同様に説明し得る。そこで、説明を明確にするために、ノードにより管理される管理対象を便宜的に図2(a)に示されるような当該ノードの状態であるものとして、以下では説明する。 FIG. 8 is an explanatory diagram of management targets managed by such nodes. The management target managed by the node may be the state of the node as shown in FIG. 8A, or the state of each component of the node as shown in FIG. . Further, the management target managed by the node may be a management target other than the component parts of the node as shown in FIG. 2C, and the memory of the node as shown in FIG. It may be specific data. As shown in FIGS. 2B to 2D, the management target whose state is managed can be conceptually distinguished from the information communication source node. However, if the status information of a plurality of management targets managed by the information communication source node is aggregated in the information communication source node by the same information aggregation processing as the processing of reduction 404 (FIG. 4) described later, This can be explained in the same manner as when both are conceptually matched as shown in FIG. Therefore, in order to clarify the explanation, the management target managed by the node will be described below as a state of the node as shown in FIG. 2A for convenience.
送信起点ノード701において、CPU701−1は、それが内蔵する制御プログラムを実行することにより、メモリ701−2を作業領域として使用しながら、図5のフローチャートで例示される識別子集約機構401の処理を実行する。この結果、送信起点ノード701は、自ノードで発生した個別識別子(または前述した単位元)に対するリダクション404(図4)の演算結果を、集団識別子として次の受信・中継ノード702に転送する。ステップS506の説明で前述したように、自ノードが管理する管理対象において通知すべき条件が成立していなければ入力パラメタ2に単位元が格納されてリダクション404の演算が実行される。この結果、この場合にはリダクション404の演算の出力は入力から変化せず、集団識別子は変化しないで次の受信・中継ノード702に転送される。
In the
図7において、受信・中継ノード702は、中継ノードとして動作するときは、送信起点ノード701ともなり得る。この場合、受信・中継ノード702は、送信起点ノード701または中継ノードとして機能する他の受信・中継ノード702から集団識別子を受信する。そして受信・中継ノード702において、CPU702−1は、それが内蔵するプログラムを実行することにより、メモリ702−2を作業領域として使用しながら、図5のフローチャートで例示される識別子集約機構401の処理を実行する。この結果、受信・中継ノード702は、受信した集団識別子と自ノードで発生した個別識別子に対するリダクション404(図4)の演算結果を、新たな集団識別子として次の受信・中継ノード702に転送する。
In FIG. 7, the reception /
受信・中継ノード702は、受信ノードとして動作するときは、図1のノード103に対応し、他の送信起点ノード701または受信・中継ノード702から集団識別子を受信する。そして、受信・中継ノード702において、CPU702−1は、それが内蔵するプログラムを実行することにより、メモリ702−2を作業領域として使用しながら、図6のフローチャートで例示される識別子分析機構402の処理を実行する。この結果、受信・中継ノード702は、受信した集団識別子から、個別識別子およびそれに対応する管理対象を特定する。
When the reception /
第1の実施形態の最も基本的なポイントは、次の2点である。
本実施形態での管理対象の個別識別子とは、通し番号などではなく、特定の方法でコード化されたデータである事。
受信側に送信されるデータが個々の個別識別子自体ではなく、条件が成立している管理対象に対応する個別識別子を入力として、リダクションにより計算される集団識別子である事。
The most basic points of the first embodiment are the following two points.
The individual identifier to be managed in the present embodiment is not a serial number or the like but data encoded by a specific method.
The data transmitted to the receiving side is not an individual identifier itself but a group identifier calculated by reduction using an individual identifier corresponding to a management target for which the condition is satisfied.
これらは、図5のフローチャートで例示される図4に示される識別子集約機構401の処理によって実現される。図9は、管理対象を図4の識別子のコード化体系403によって個別識別子にコード化し、その個別識別子と状態とから図4のリダクション404により集団識別子を計算する動作の説明図である。図9において、定数の前の0bは2進数表記である事を意味する。
These are realized by the processing of the
図4の識別子のコード化体系403は、図9(a)に示されるように、個々の管理対象に対応する各個別識別子を、当該管理対象に対応する位置のbitがonにされたデータによってコード化する。すなわち、所定の条件を満たす管理対象に対しては、その管理対象に対応する個別識別子がリダクションの入力として与えられ、そうでない管理対象に対しては、全てのビットフィールドに0が入力された単位元が個別識別子として与えられる。
As shown in FIG. 9 (a), the
また、図4の「リダクション404」は、図9(a)に示されるように、コード化された個別識別子を入力としてbitwise orにより集団識別子を演算する。ただし、この計算に使用する演算機能は、「各ノードからの入力データが高々1 bitのみonであり、他はoffである」という条件を満足すればよい。したがって、乗法(図9(b))、bitwise exclusive or(ビット単位の排他論理和演算)、整数の加法、または浮動小数点の加法(ただし、仮数部の桁数の範囲での整数加算として使用する)が、集団識別子の計算に使用されてもよい。また、入力データ全てに対してbit反転(bitwise not)を各ノードが施しておくことでbitwise andを使用して集団識別子が計算されてもよい。この場合、受信側ノードにおいて最終結果をbit反転するか、bit のon/off の意味を逆にしてデータを解釈すればよい。
Further, as shown in FIG. 9A, the “
このようにして、第1の実施形態では、「複数のノードからの情報を、1つのパケット/メッセージ内にたたみ込む」事により、前述した「技術課題1」が解決される。すなわち、集団識別子を用いて各ノードからの状態情報がリダクションされる。これによって、ネットワーク(図7の通信線704)上での通信量は、各送信側ノード(図7の送信起点ノード701等)からの状態情報を単に集約して受信する場合と比較して、大幅に削減され得る。同様に、情報を集約する受信側ノード(図7の受信・中継ノード702)において受信に必要なメモリ量および通信処理時間は、各送信側ノード(図7の送信起点ノード701等)からの状態情報を単に集約して受信する場合と比較して、大幅に削減され得る。図10は、リダクションによる情報集積でのメモリ使用量削減の効果の説明図である。図10(a)は、本出願人が通常考える、状態情報を受信側ノードが単に各送信側ノードから集約して受信する場合の説明図である。これに対して図10(b)は、集団識別子を用いてリダクションされた状態情報を受信側ノードが各送信側ノードから集約して受信する場合の説明図である。状態情報を受信側ノードが単に各ノードから集約して受信する場合(図10(a))、各管理対象の状態情報を受信するために受信側ノードに必要とされるメモリ量は、最小書き込みサイズ(2 bits)×管理対象(4つ)となる。一方、集団識別子を用いてリダクションされた状態情報を受信側ノードが各送信側ノードから集約して受信する場合(図10(b))は、次のようになる。各管理対象の状態情報を受信するために受信側ノードに必要とされるメモリ量は、最小書き込みサイズ(4 bits)×管理対象数(4つ)/領域内のビット数(4 bits)で足りる。
In this way, in the first embodiment, the “
本実施形態ではさらに、場合に応じて、メッセージに含める情報の内容に工夫する事、つまり、図4の識別子のコード化体系403により、メッセージに使用されるネットワーク上での通信効率およびメモリ領域の使用効率を高めることができる。以下にコード化方法についての基本的な考え方について説明する。
In the present embodiment, the content of information included in the message is further devised according to circumstances, that is, the
通知対象事象の性質に適したコード化の工夫によって、ネットワーク上での通信に必要な通信量、ならびに、情報集約ノードでの受信に必要なメモリ量および通信処理時間の改善度を大きくすることができる。下記に定義する意味の「分解能」は、コード化に際して考慮すべき「通知対象事象の性質」として特に重要である。 By improving the coding suitable for the nature of the event to be notified, the amount of communication required for communication on the network, the amount of memory required for reception at the information aggregation node, and the degree of improvement in communication processing time can be increased. it can. “Resolution” in the meaning defined below is particularly important as “property of notification target event” to be considered in coding.
正の整数k に対し「通知対象事象が同じ時点で発生した管理対象の数がk 以下の時、かつ、その時に限り、図4の識別子分析機構402が受信した集団識別子から通知対象事象が発生したノードを特定する事ができる」場合を仮定する。この仮定が成立するとき、識別子分析機構402の(識別子集約機構401、個別識別子、集団識別子を含む「システム」としての)「分解能」がk であると定義する。通知対象事象が発生しうる管理対象の数をN とするとN ≧ k となる。
For a positive integer k, “When the number of management targets that occurred at the same time as the notification target event is less than or equal to k, the notification target event occurs from the group identifier received by the
以下の説明においてさらに、
N = k の場合、識別子分析機構402は「分解能」が「完全」
(あるいは制限がない)。
N > k の場合、識別子分析機構402の「分解能」が(上限k で)制限されている。
という表現も用いる事にする。分解能が制限される場合、所定の長さのメッセージ内で伝達すべき情報に「全管理対象についての監視すべき状態の成立、不成立の区別」全てを含める必要がない。このため、同じ長さのメッセージ領域に他の情報、具体的には、監視すべき状態が成立した対象の識別子の一部についての情報を含めれば、なにかしら判別できる情報を送ることができる。複数の情報が入っている(1列に2ビット以上立っている)ときは、監視状態にある管理対象のうちのどれかで異常が発生したかがわかればよいような場合に対応できる。図11は、集団識別子の分解能の概念の説明図である。集団識別子の分解能が完全な場合、図11(a)に示されるように、全ての状態の組み合わせに対し監視状態にある管理対象とそうでない対象が特定される。集団識別子の分解能が制限されている場合、図11(b)に示されるように、監視状態にある対象数が上限を越えない場合は、対象が特定される。一方、監視状態にある対象数が上限を越えた場合は、対象が特定されない。
In the description below,
When N = k, the
(Or no limit).
When N> k, the “resolution” of the
I will also use the expression. When the resolution is limited, it is not necessary to include all “the distinction between establishment and non-establishment of the state to be monitored for all the management targets” in the information to be transmitted in the message having a predetermined length. For this reason, if other information, specifically, information about a part of the identifier of the target whose state to be monitored is included in the message area of the same length, information that can be discriminated can be sent. . When a plurality of pieces of information are contained (2 bits or more are standing in one column), it is possible to cope with a case where it is only necessary to know which one of the management targets in the monitoring state has an abnormality. FIG. 11 is an explanatory diagram of the concept of resolution of the group identifier. When the resolution of the group identifier is perfect, as shown in FIG. 11A, the management target in the monitoring state and the target that is not in the combination of all the states are specified. When the resolution of the group identifier is limited, as shown in FIG. 11B, the target is specified when the number of targets in the monitoring state does not exceed the upper limit. On the other hand, if the number of objects in the monitoring state exceeds the upper limit, no object is identified.
図12は、分解能が完全な場合と制限されている場合における、リダクションによる情報集積での通信量およびメモリ使用量削減の効果の説明図である。例えば図12(a)に示されるように、N個(図中では3個)の管理対象について、分解能を制限せずに各管理対象での監視状態の成立/不成立という1ビットの情報を受取るには、少なくともN ビット(図中では3ビット)が必要である。しかし、例えば図12(b)に示されるように、分解能k が制限されている(k < N) 場合には、N bit より小さい領域で、N 個より多くの管理対象からの監視状態に関する情報を受信する事が原理上可能である。図12(b)では、分解能に上限1 を設定して3 bits の領域で5 個の管理対象の状態を受信する場合を示している。本実施形態は、主として図4の識別子のコード化体系403の工夫により、実際にそれを実現する。
FIG. 12 is an explanatory diagram of the effect of reducing the amount of communication and the amount of memory used for information accumulation by reduction when the resolution is perfect and limited. For example, as shown in FIG. 12A, for N (three in the figure) management targets, 1-bit information is received indicating whether the monitoring state is established or not established for each management target without limiting the resolution. Requires at least N bits (3 bits in the figure). However, for example, as shown in FIG. 12 (b), when the resolution k is limited (k <N), information on monitoring states from more than N management targets in an area smaller than N bits. Is possible in principle. FIG. 12B shows a case where the upper limit of 1 is set for the resolution and five management target states are received in the 3 bits area. In the present embodiment, this is actually realized mainly by the idea of the
本実施形態では、分解能が制限される場合に、「ある領域に格納可能な識別子の集合の数値としての特性」を情報圧縮に利用している。 In this embodiment, when the resolution is limited, “characteristics as a numerical value of a set of identifiers that can be stored in a certain area” is used for information compression.
本実施形態では、分解能が制限される場合には、後述する第5から第9の実施形態等による図4の識別子のコード化体系403の工夫により、前述した技術課題2を解決している。また、完全な分解能が必要なケースにおいては、第4または第10の実施形態で後述するように、管理対象を(必要なら複数の階層に)グループ分けしたものを新たな管理対象と見なすことにより、前述した技術課題2を解決している。
In the present embodiment, when the resolution is limited, the above-described
以上のようにして、第1の実施形態によれば、情報集約型通信の所要時間を削減することが可能となる。特に、受信あるいは中継に必要なネットワーク上の通信量、及び、各ノードでのメモリ領域アクセス量とメモリアクセスに伴うオーバヘッドが大幅に削減される。 As described above, according to the first embodiment, it is possible to reduce the time required for information-intensive communication. In particular, the amount of communication on the network required for reception or relay, the amount of memory area access at each node, and the overhead associated with memory access are greatly reduced.
また、第1の実施形態によれば、中継ノードおよび受信ノードでの参照メモリ領域が小さくなる事で、システム全体として見たメモリバス帯域やキャッシュの使用量も削減されると、状態監視+状態の共有処理に関連する負荷が下がる。これにより、システム全体でのスループットが向上する効果もある。 In addition, according to the first embodiment, when the reference memory area at the relay node and the receiving node is reduced, the memory bus bandwidth and the cache usage viewed as the entire system are reduced. The load related to the sharing process is reduced. This also has the effect of improving the throughput of the entire system.
第1の実施形態によれば、集団識別子の使用により、ネットワーク上での通信量、及び、情報集約ノードで受信に必要なメモリ量および通信処理時間は、各ノードからの状態情報を単に集約して受信する場合と比較して、大幅に削減される。 According to the first embodiment, by using the collective identifier, the amount of communication on the network, the amount of memory necessary for reception at the information aggregation node, and the communication processing time are simply aggregated state information from each node. Compared with the case of receiving, it is greatly reduced.
第1の実施形態により、特に必要な「分解能」に上限がある場合、図12(b)で説明した考え方により、通信量およびメモリ使用量を削減することが可能となる。 According to the first embodiment, when the necessary “resolution” has an upper limit, it is possible to reduce the amount of communication and the amount of memory used according to the concept described in FIG.
さらに、受信に必要なメモリ量の削減は、受信と並行して行われる(受信と独立の)計算処理によるメモリアクセスと受信時のメモリアクセスの競合を減らす事を通じて、計算処理と受信処理がオーバラップして実行されるシステムでの総合的な性能を改善する事による、派生的な効果も大きい。 Furthermore, the amount of memory required for reception can be reduced by reducing contention between memory access and memory access during reception (independent of reception) performed in parallel with reception. Derivative effects are also significant by improving overall performance in systems that are wrapped and executed.
図4の識別子のコード化体系403の詳細については、後述するいくつかの実施形態で詳細に説明する。
Details of the
<第2の実施形態>
次に、第2の実施形態について説明する。
<Second Embodiment>
Next, a second embodiment will be described.
第2の実施形態の基本的な機能構成は、図4で説明した第1の実施形態に係る構成と同じである。また、第2の実施形態の全体的なシステム構成も、図7で説明した第1の実施形態に係る構成と同じである。さらに、第2の実施形態における識別子のコード化体系403およびリダクション404(ともに図4参照)の基本的な機能も、図9で説明した第1の実施形態に係る機能と同様である。
The basic functional configuration of the second embodiment is the same as the configuration according to the first embodiment described with reference to FIG. The overall system configuration of the second embodiment is also the same as the configuration according to the first embodiment described with reference to FIG. Further, the basic functions of the
第1の実施形態で図8(a)を用いて説明したように、図4の識別子のコード化体系403は、個々の管理対象に対応する各個別識別子を当該管理対象に対応する位置のbitがonにされたデータによってコード化する。この場合の個々の管理対象に対応するbit位置は、例えば以下の(1)〜(5)のように定められる。
As described with reference to FIG. 8A in the first embodiment, the
(1)管理対象(ノード、サブシステム、ジョブ...)数がN個である情報集約システム内でのbit単位の情報共有に際して、N bitsの連結なメモリ領域、又は区分的に連結な領域を用意する。連結な領域が用意される場合、1回のbit操作命令の適用対象となる大きさs bits(多くの場合、CPU(の演算器)がサポートする整数の大きさ)ごとに連結な領域が区分して扱われるならば、x番目の領域は、先頭からs×x bits (s×x/9 bytes)目として特定される。区分的に連結な領域の場合に、1回のbit 操作命令の適用対象となる大きさs bits毎に連結な領域が区分して扱われるならば、まずx番目の領域の先頭アドレスを(ポインタを格納した表等により)特定する。 (1) N bits concatenated memory area or piecewise concatenated area when sharing information in bits in an information aggregation system with N management targets (nodes, subsystems, jobs ...) Prepare. When a concatenated area is prepared, the concatenated area is divided according to the size s bits (in many cases, the integer size supported by the CPU) that is applied to one bit manipulation instruction. The x-th area is specified as the s × x bits (s × x / 9 bytes) th from the beginning. In the case of a piecewise linked area, if the linked area is handled separately for each size s bits to which a single bit manipulation instruction is applied, the first address of the xth area is set to (pointer Is specified).
(2)前述のN bitsのメモリ領域をreduction或いはatomic operationによる更新単位m bits 毎に分割する。分割後のbit領域数をnとする。例えば、1024個のノードに対応する1024 bitsに対し、atomic operationが128 bits単位でしか行えない場合、8個の128 bitsの領域を用意する。なお、atomic operationについてのアラインメント制約が16 bytes(=128 bits)単位でもある場合、16 byte境界にある領域を使用する。Nがmの整数倍でない場合には、領域末尾にダミービットを追加してmの整数倍にする。 (2) The above N bits memory area is divided for each update unit m bits by reduction or atomic operation. Let n be the number of bit areas after division. For example, if the atomic operation can be performed only in units of 128 bits for 1024 bits corresponding to 1024 nodes, 8 128-bit areas are prepared. Note that if the alignment constraint for the atomic operation is 16 bytes (= 128 bits), a region on a 16 byte boundary is used. If N is not an integer multiple of m, a dummy bit is added at the end of the area to make it an integer multiple of m.
(3)i番目(iは、1〜Nの整数)の個別識別子をiとし、m bit毎に分割後のn個のbit領域の番号j及び各m bitsの領域内のbit番号をkとして、iと(j,k)とを1対1に対応付ける。例えば、連結領域の場合、j = ((i-1)/m)+1, k = i-j*m というように対応付ける。この場合、逆写像は、i = (j-1)*m + kとして得られる。情報集約システム内での個別識別子と管理対象番号とは、「下位の桁を取る」等の代数的な変換により行うか、管理対象番号と個別識別子との対応表を作成することに対応付けられる。 (3) The i-th individual identifier (i is an integer from 1 to N) is i, and the number j of n bit areas after division for each m bits and the bit number in each m bits area are k. , I and (j, k) are in a one-to-one correspondence. For example, in the case of a connected region, j = ((i−1) / m) +1, k = i−j * m. In this case, the inverse mapping is obtained as i = (j−1) * m + k. The individual identifier and the management target number in the information aggregation system are associated with algebraic conversion such as “take a lower digit” or create a correspondence table between the management target number and the individual identifier. .
(1)〜(3)での処理を図13を用いてさらに説明する。図13は、管理対象番号と受信側ノードのメモリ領域内の集団識別子格納領域のbit位置との対応関係の説明図である。図13に示すように、情報集約システム内で管理対象とされるノードは、整数領域s内のbit数以下の数のノードの集合に分割され、ノードの集合と整数領域とが対応付けられる。また、N bitsのメモリ領域は、m bitsのビットフィールドに分割され、ノードの集合内の管理対象番号(ノード番号)と整数領域内のビット番号とが対応付けられる。管理対象番号と個別識別子とは対応付けられるため、個別識別子とメモリ領域内の所定位置の1 bitとが対応付けられる。 Processing in (1) to (3) will be further described with reference to FIG. FIG. 13 is an explanatory diagram of the correspondence between the management target number and the bit position of the collective identifier storage area in the memory area of the receiving node. As shown in FIG. 13, a node to be managed in the information aggregation system is divided into a set of nodes equal to or less than the number of bits in the integer area s, and the set of nodes is associated with the integer area. The N bits memory area is divided into m bits bit fields, and a management target number (node number) in a set of nodes is associated with a bit number in an integer area. Since the management target number and the individual identifier are associated with each other, the individual identifier is associated with 1 bit at a predetermined position in the memory area.
(1)〜(3)の上述の処理は、情報集約システムの運用開始前に計算機により予め実行される。図14は、管理対象とbit位置とを対応付ける計算機の構成例を示す図である。図14に示すように、計算機は、CPU1401、メモリ1402、入力装置1403、表示装置1404、外部記憶装置1405、記録媒体1409にデータを書き込み可能な記録媒体書き込み装置1406、及び通信インタフェース1407を含む。これらはバス1408により相互に接続される。管理対象とbit位置とを対応付けは、CPU1401により実行され、実行結果は、表示装置1404に表示され、記録媒体書き込み装置1406を介して記録媒体1409に記録される。記録媒体1409に記録された上述の対応関係を示すデータは、図7のシステム構成で管理対象の識別を必要とする送信起点ノード701や受信・中継ノード702のメモリ701−2や702−2内に、特には図示しない記録媒体読み取り装置を介して記録され得る。
The above-described processes (1) to (3) are executed in advance by the computer before the operation of the information aggregation system is started. FIG. 14 is a diagram illustrating a configuration example of a computer that associates a management target with a bit position. As shown in FIG. 14, the computer includes a
図15は、演算が乗法の場合における受信側ノードが持つ個別識別子表の例を示す図である。(a)から(d)が使用される素数または素数冪であり、(e)と(f)が対応関係を示す表である。また、(g)は管理対象番号とガウス整数での「素数」(素元)の実部および虚部との対応関係、(h)は管理対象番号とアイゼンシュタイン整数での「素数」(素元)の1の係数およびωの係数との対応関係を示す表である。 FIG. 15 is a diagram showing an example of an individual identifier table possessed by the receiving node when the operation is multiplication. (A) to (d) are used prime numbers or prime numbers 冪, and (e) and (f) are correspondence tables. (G) is the correspondence between the management target number and the real part and imaginary part of the "prime number" (prime element) in Gaussian integer, and (h) is the "prime number" (prime) in the management target number and Eisenstein integer. It is a table | surface which shows the correspondence with the coefficient of 1 of the former, and the coefficient of (omega).
図16は、演算が加法の場合における受信側ノードが持つ識別子表の例を示す図である。図16は、図4のリダクション404の機能で使用する演算は加法、分解能の上限は2、識別子のフィールド長は7ビットである場合の例示である。(a)は、個別識別子と管理対象番号の対照表である。(b)は、集団識別子とその生成因子である個別識別子のビットマップとの対照表である。このビットマップでは、監視条件が成立するときに値が1、不成立のときに値が0をとる。(c)は、集団識別子と「生成因子として含まれる最大の個別識別子」の対照表である。(d)は、集団識別子と「生成因子として含まれる最小の個別識別子」の対照表である。
FIG. 16 is a diagram illustrating an example of an identifier table possessed by the reception-side node when the operation is additive. FIG. 16 shows an example in which the operation used in the function of the
上記図15および図16ともに、各識別子表は、図4の識別子のコード化体系403を実現するものであり、各識別子表を表すデータは、図7において受信側ノードとして機能する受信・中継ノード702のメモリ702−2上に展開される。
15 and 16, each identifier table implements the
図4の識別子分析機構402が加法を演算として図16の対照表を使用する場合、「受信した集団識別子の生成因子である個別識別子」を得るためには、集団識別子と生成因子である個別識別子の少なくとも1つ、あるいは(ビットマップ、配列、連結されたリストなどで表現された)複数の個別識別子と対応付ける図16(c)または(d)のような対照表が必要になる。
When the
分解能が2 以上の場合、対照表のエントリ数が個別識別子の数より大きくなるため、対照表全体を保持するために必要なメモリ702−2(図7)の記憶容量は大きくなる。従って、ハードディスク記憶装置などの二次記憶媒体が必要になる事もありうる。しかし、本実施形態における識別子の検索(集団識別子から生成因子の個別識別子を求める処理や、個別識別子から管理対象の番号を求める処理)1回あたりのメモリ参照量は例えば、後述する実施形態で説明する「ハッシュ関数」の手法により抑えることが可能である。 When the resolution is 2 or more, the number of entries in the comparison table becomes larger than the number of individual identifiers, so that the storage capacity of the memory 702-2 (FIG. 7) necessary to hold the entire comparison table increases. Therefore, a secondary storage medium such as a hard disk storage device may be required. However, the amount of memory reference per search of identifiers in this embodiment (processing for obtaining individual identifiers of generation factors from group identifiers and processing for obtaining management target numbers from individual identifiers) is described in, for example, embodiments described later. It can be suppressed by the “hash function” technique.
(4)図7の送信起点ノード701や受信・中継ノード702のCPU701−1や702−1が実現する図4の識別子のコード化体系403の機能は、次のような処理を実行する。識別子のコード化体系403は、m bits毎に区分された第j領域に対して第k bitをonにするデータを、必要に応じて(例えばある管理対象の状態フラグがonのときに)、ReductionないしAtomic Operationへの引数として与える。例えば、1024個の管理対象に対応する1024 bitsに対して、atomic operationが128 bits単位でしかデータ処理を行えない場合、ノード番号130のノードは、2番目の128 bits領域へのbitwise or演算を第2 bitをonにしたデータで行う。これにより、識別子のコード化体系403は、当該ノードでの管理対象についての条件成立を通知する。ここで、m bitsに区分された領域内でのbit番号は、どちらから数えてもよい。特に、m bitsが使用する計算機のword長として、その計算機アーキテクチャのEndianでの番号の付け方とbit 番号の付け方とが同じである必要はない。例えば、受信側ノードで集団識別子から個別識別子を特定する処理(の高速化)に都合がよい方が選ばれてよい。
(4) The function of the
図17は、第2の実施形態における送信側ノードにおける識別子集約機構401(図4)による処理の例を示すフローチャートである。 FIG. 17 is a flowchart illustrating an example of processing by the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node in the second embodiment.
ここでは、
集団識別子={全てのリダクション演算結果格納済ビットフィールドの値}
個別識別子=(ビットフィールド番号, ビットフィールド内のビット位置)
であるとする。
here,
Group identifier = {value of all reduction operation result stored bit fields}
Individual identifier = (bit field number, bit position in bit field)
Suppose that
識別子集約機構401の処理が開始されると、図7の送信起点ノード701または受信・中継ノード702のCPU701−1は、当該ノードが管理する管理対象のビットフィールド番号をビットフィールド番号に入力する(ステップS1701)。
When the processing of the
当該ノードが図7の送信起点ノード1701(送信側ノード)である場合(ステップS1702の判定がYES)、図7のCPU701−1は、ビットフィールドの初期値として0(ゼロ)を入力する(ステップS1703)。一方、当該ノードが通信の起点ノードではない、すなわち中継ノードとして機能する図7の受信・中継ノード702である場合(ステップS1702の判定がNO)、次の処理が実行される。CPU702−1は、ビットフィールドの初期値として前段のノードから受信した値を入力する(ステップS1704)。
When the node is the transmission origin node 1701 (transmission side node) in FIG. 7 (Yes in Step S1702), the CPU 701-1 in FIG. 7 inputs 0 (zero) as the initial value of the bit field (Step S1702). S1703). On the other hand, when the node is not the communication origin node, that is, the reception /
自ノードが管理する管理対象において通知すべき条件が成立した場合(ステップS1005の判定がYES)、CPU701−1または702−1は、ステップS1703又はステップS1704で入力されたビットフィールド値と管理対象に対応するビットとをor演算する(ステップS1706)。一方、当該ノードが管理する管理対象において通知すべき条件が成立しない場合(ステップS1705の判定がNO)、CPU701−1または702−1は、ステップS1707の処理へ進む。CPU701−1または702−1は、NIC701−3または702−3を介して、演算結果を集団識別子として次の転送先のノードへの送信内容として送信し(ステップS1707)、一連の識別子集約機構401の処理を終了する。
When the condition to be notified is established in the management target managed by the own node (Yes in step S1005), the CPU 701-1 or 702-1 sets the bit field value input in step S1703 or step S1704 and the management target. The corresponding bit is ORed (step S1706). On the other hand, when the condition to be notified is not satisfied in the management target managed by the node (NO in step S1705), the CPU 701-1 or 702-1 proceeds to the process in step S1707. The CPU 701-1 or 702-1 transmits the calculation result as a collective identifier as transmission contents to the next transfer destination node via the NIC 701-3 or 702-3 (step S1707), and a series of
(5)中継ノード又は受信ノードは、受信されたN bits(n個のm bits領域)を参照することにより、管理対象(システム、サブシステム、ジョブ、装置等)の全体の情報を得る。なお、情報を集約する全ノードが所定の領域を更新したことを確認するには、例えば、各ノードが情報を更新した後でバリア同期が実行されるか、同期機能を含むreduction操作が行われればよい。 (5) The relay node or the reception node obtains the entire information of the management target (system, subsystem, job, device, etc.) by referring to the received N bits (n m bits area). In order to confirm that all nodes that collect information have updated a predetermined area, for example, barrier synchronization is executed after each node has updated information, or a reduction operation including a synchronization function is performed. That's fine.
上述した(1)〜(5)の処理によって、各ノードは、管理対象毎に1 bitの状態情報を集団識別子に含めて受信側ノードに通知できる。また、任意長のデータは、ビット列に分解して通知できる。ただし、reductionの演算対象となるデータ領域のbit数をmとすると、m bitsより大きいデータについては、m bits単位に分けて処理される。 By the processes (1) to (5) described above, each node can notify the receiving side node by including 1-bit state information for each management target in the group identifier. Arbitrary length data can be reported after being decomposed into bit strings. However, if the number of bits in the data area to be reduced is m, data larger than m bits is processed in units of m bits.
図18は、第2の実施形態における受信側ノードにおける識別子分析機構402(図4)の集団識別子全体に渡る受信処理の例を示すフローチャートである。識別子分析機構402の処理が開始されると、図7の受信・中継ノード702のCPU702−1は、ビットフィールド番号の初期値として1を入力する(ステップS1801)。現在のビットフィールド番号がビットフィールド数以下である場合(ステップS1802の判定がYES)、CPU702−1は、自ノードにより受信された集団識別子内の当該ビットフィールド番号のビットフィールドに対する処理が実行される(ステップS1803)。
FIG. 18 is a flowchart illustrating an example of reception processing over the entire group identifier of the identifier analysis mechanism 402 (FIG. 4) in the reception side node in the second embodiment. When the processing of the
ステップS1803での処理が終了すると、CPU702−1は、ビットフィールド番号に1を加算し(ステップS1804)、ステップS1802での処理に戻る。 When the process in step S1803 ends, the CPU 702-1 adds 1 to the bit field number (step S1804), and returns to the process in step S1802.
ビットフィールド番号がビットフィールド数を超えた場合(ステップS1802の判定がNO、CPU702−1は、一連の識別子分析機構402の処理を終了する。
When the bit field number exceeds the number of bit fields (NO in step S1802), the CPU 702-1 ends the series of
図19は、図18のステップS1803の詳細処理である、第2の実施形態における受信側ノードにおける識別子分析機構402による集団識別子を構成する個々のビットフィールドの受信処理の例を示すフローチャートである。
FIG. 19 is a flowchart illustrating an example of reception processing of individual bit fields constituting a collective identifier by the
所定のビットフィールド番号のビットフィールドに対する処理が開始されると、CPU702−1は、所定のビットフィールド番号のビットフィールドの値を取り出し、取り出されたビットフィールド値をメモリ702−2内の作業領域Wに格納する(ステップS1901)。 When the processing for the bit field having the predetermined bit field number is started, the CPU 702-1 extracts the value of the bit field having the predetermined bit field number and uses the extracted bit field value as the work area W in the memory 702-2. (Step S1901).
作業領域Wに格納された値が0(ゼロ)ではない場合(ステップS1902の判定がNO、CPU702−1は、個別識別子内の1が現れるビットBを作業領域WからLeading Zero Count(LZC)又はTrailing Zero Count(TZC)の次のビット位置を見て特定する(ステップS1903)。ここで、LZCとは、Number of Leading Zero(NLZ)を求める操作であり、NLZとは、Most Significant Bit(MSB)から最初に1が現れるまで数えた0の数を指す。また、TZCとは、Number of Trailing Zero(NTZ)を求める操作であり、NTZとは、Least Significant Bit(LSB)から最初に1が現れるまで数えた0の数を指す。
When the value stored in the work area W is not 0 (zero) (NO in step S1902), the CPU 702-1 reads the bit B in which 1 in the individual identifier appears from the work area W as a Reading Zero Count (LZC) or The next bit position of Trailing Zero Count (TZC) is identified (step S1903), where LZC is an operation for obtaining Number of Leading Zero (NLZ), and NLZ is Most Significant Bit (MSB). ) Indicates the number of 0 counted from the first occurrence until 1. Also, TZC is an operation to calculate Number of Trailing Zero (NTZ), which is the first 1 from the least significant bit (LSB). Points to the
CPU702−1は、特定された個別識別子に対応する管理対象番号を特定し、特定された管理対象番号の管理対象に対して事前に定められた処理を実行する(ステップS1904)。CPU702−1は、ステップS1903で特定されたビットBの値を0(ゼロ)にオフし(ステップS1905)、ステップS1902での処理に戻る。 The CPU 702-1 identifies the management target number corresponding to the identified individual identifier, and executes a predetermined process for the management target of the identified management target number (step S1904). The CPU 702-1 turns off the value of the bit B specified in step S1903 to 0 (zero) (step S1905), and returns to the process in step S1902.
作業領域Wに格納された値が0(ゼロ)になった場合(ステップS1902の判定がYES)、CPU702−1は、所定のビットフィールド番号のビットフィールドに対する一連の処理を終了し、図18のステップS1803の処理を終了する。集団識別子は、単位元=0(図17のステップS1704参照)の状態からビット単位のor演算によって個別識別子が順次追加されてゆく(図17のステップS1706)。従って、図19のフローチャートでは、ビット単位or演算の逆演算(ステップS1903)によって個別識別子が順次特定されてそのビットがオフにされてゆき(ステップS1905)、最後は単位元=0にもどる。よって、ステップS1902の判定がYESになると、図19のフローチャートの処理が終了する。 When the value stored in the work area W becomes 0 (zero in step S1902), the CPU 702-1 ends a series of processes for a bit field having a predetermined bit field number, and the process shown in FIG. The process in step S1803 ends. As for the group identifier, individual identifiers are sequentially added from the state of unit element = 0 (see step S1704 in FIG. 17) by bitwise or operation (step S1706 in FIG. 17). Accordingly, in the flowchart of FIG. 19, individual identifiers are sequentially specified by the inverse operation of the bit unit or operation (step S1903) and the bits are turned off (step S1905), and finally the unit element = 0 is returned. Therefore, when the determination in step S1902 is YES, the process of the flowchart in FIG. 19 ends.
各ノードのデータを表すビット列を有限体GF(2)のベクトルと見なし、複数ノードのデータを表すベクトルの集合から行列を作ると、第2の実施形態に従った送信側ノードのデータ送信は、次のような仮想的な転置行列に基づく通信方法にあたる。 When a bit string representing data of each node is regarded as a vector of a finite field GF (2) and a matrix is formed from a set of vectors representing data of a plurality of nodes, the data transmission of the transmitting node according to the second embodiment is as follows. This is a communication method based on the following virtual transpose matrix.
本出願人が通常考えるデータ集約通信では、各送信側ノードに対応するデータを、下記のように、受信側ノードが元のまま「各ノード毎に一つ」の形で、受け取る。
node01 | b11 b12 ... b1m (node01 に対応する「行ベクトル」)
node02 | b21 b22 ... b2m (node02 に対応する「行ベクトル」)
... ... ...
node0N | bN1 bN2 ... bNm (node0N に対応する「行ベクトル」)
In the data aggregation communication normally considered by the present applicant, data corresponding to each transmitting side node is received in the form of “one for each node” as it is, as described below.
node01 | b11 b12 ... b1m ("row vector" corresponding to node01)
node02 | b21 b22 ... b2m ("row vector" corresponding to node02)
... ... ...
node0N | bN1 bN2 ... bNm ("row vector" corresponding to node0N)
一方、第2の実施形態に従った受信側ノードは、全ての送信側ノードから送信されたデータの「同じ種類のデータの同じ位置のビットをノード順に並べたもの」を受信する。個々のノードからbitデータのまとまりを受信側ノードが読む場合、再び下記のような行列と見なした時の各行を見ることによって(リダクションによる送信結果の)転置後の行列から転置前の行列の各列を再現できる。
第1bit | b11 b21 ... bN1 (第1bitに対応する「列ベクトル」)
第2bit | b12 b22 ... bN2 (第2bitに対応する「列ベクトル」)
...
第mbit | b1m b2m ... bNm (第mbitに対応する「列ベクトル」)
On the other hand, the receiving-side node according to the second embodiment receives “data in which bits at the same position of the same type of data are arranged in node order” of data transmitted from all transmitting-side nodes. When the receiving node reads a set of bit data from individual nodes, by looking at each row when it is again considered as a matrix like the following, the matrix of the matrix before transposition (from the transposed matrix) Each column can be reproduced.
1st bit | b11 b21 ... bN1 ("column vector" corresponding to 1st bit)
2nd bit | b12 b22 ... bN2 ("column vector" corresponding to 2nd bit)
...
Mbit | b1m b2m ... bNm ("column vector" corresponding to mbit)
第2の実施形態に従った情報集約システムによれば、第1の実施形態の場合と同様に、情報集約型通信の通信量および所要時間を削減できる。さらに、受信あるいは中継に必要な各ノードでのメモリ領域のアクセス量とメモリアクセスに伴うオーバヘッドが大幅に削減される。中継ノードおよび受信ノードでの参照メモリ領域が小さくなることで、システム全体として見たメモリバス帯域やキャッシュの使用量も削減されると、状態監視及び状態の共有処理に関連する負荷が下がり、システム全体でのスループットが向上する効果も得られる。 According to the information aggregation system according to the second embodiment, as in the case of the first embodiment, it is possible to reduce the traffic and time required for information-intensive communication. Furthermore, the access amount of the memory area at each node required for reception or relay and the overhead associated with the memory access are greatly reduced. When the reference memory area in the relay node and the receiving node is reduced, the memory bus bandwidth and the cache usage seen as the whole system are reduced, and the load related to the state monitoring and state sharing processing is reduced. The effect of improving the overall throughput can also be obtained.
さらに、受信側ノードが各送信側ノードからの1 bitの状態情報を集積して、所定の状態が発生した管理対象に対してのみ特定の処理を行う場合、次のような技術的効果が得られる。所定の状態が発生した管理対象に対してのみ特定の処理を実行する場合、gatherによって各ノードから集めたデータを直接使用する方法よりも、整数領域のbit演算によるreduction により、bit 位置をノードに対応させたデータを参照して処理する方が高速である。なぜなら、gather により管理対象の状態情報を受信側ノードに集積した場合、各々の管理対象の情報は、最小パケット長ないしwrite RDMA の最小長程度に離れた領域にある。このため、受信側ノードは、各管理対象が所定の状態にあることの判定に際して、load命令を管理対象毎に発行する必要がある。一方、実施形態に従ったリダクションを伴う集積方法に従えば、整数を表す領域をm bitsとすると、m個の管理対象の状態が予め1つの整数に統合されている。このため、load命令発行回数が1/mになり、単位時間あたりのキャッシュミスの発生率が大幅に抑えられ、処理が高速化される。 Furthermore, when the receiving side node accumulates 1-bit status information from each transmitting side node and performs specific processing only on the management target in which a predetermined state has occurred, the following technical effect is obtained. It is done. When a specific process is executed only for a management target in which a predetermined state has occurred, the bit position is assigned to the node by reduction by bit operation in the integer area, rather than using the data collected from each node directly by gather. Processing with reference to the corresponding data is faster. This is because, when gathering state information to be managed is gathered in the receiving node, each piece of information to be managed is in an area separated by about the minimum packet length or the minimum length of write RDMA. For this reason, the receiving node needs to issue a load command for each management target when determining that each management target is in a predetermined state. On the other hand, according to the integration method with reduction according to the embodiment, assuming that an area representing an integer is m bits, m management target states are integrated into one integer in advance. For this reason, the number of load instructions issued is 1 / m, the rate of occurrence of cache misses per unit time is greatly suppressed, and the processing speed is increased.
また、複数bits の情報を集積する場合も含めた技術的効果を、使用するメモリ領域の大きさを中心に更に詳述する。第2の実施形態のように、リダクション操作が可能な大きさの領域のビット全てを有効利用すれば、「個々のノードからのパケットに送信元のノードの情報全てを入れてwrite RDMA を使う」場合に比べ、受信用のメモリ領域を小さくし得る。 Further, the technical effect including the case where information of a plurality of bits is accumulated will be described in detail with a focus on the size of the memory area to be used. As in the second embodiment, if all the bits of the area that can be reduced are used effectively, “write RDMA is used by putting all the information of the source node in the packet from each node”. Compared to the case, the memory area for reception can be reduced.
まず、各ノードから通知すべき情報が1 bitとし、write RDMAで書き込める最小単位をW bitsとし、送信側ノード数をNとする。各ノードがwrite RDMAで情報を書き込む方法では、受信側ノードでは、NW bitsのメモリ領域が必要になる。一方、本実施形態での所要領域は、N = qm + r (0≦r<W) と書くとき、(qm) bits 以上((q+1)m) bits未満、すなわち、Nbits 以上(N+m) bits 未満となる。N、W、及びmは、正の整数であり、Wとmは、同程度の大きさである。N>1であれば、常にN+W < NWである。したがって、1 bitの通知(ある事象発生の有無)での第2の実施形態におけるメモリ効率は、各ノードからwrite RDMAで通知を行う場合と比較してNW/(N+W)倍であり、N >> Wならば、W倍程度となる。Wは、数十bits から百数十bits 程度であり得るので、千ノードより大規模な情報集約システムでは、N >> Wと考えてよい。 First, information to be notified from each node is 1 bit, the minimum unit that can be written by write RDMA is W bits, and the number of nodes on the transmitting side is N. In the method in which each node writes information by write RDMA, a NW bits memory area is required at the receiving side node. On the other hand, the required area in the present embodiment, when written as N = qm + r (0 ≤ r <W), is (qm) bits or more and less than ((q + 1) m) bits, that is, Nbits or more (N + m) Less than bits. N, W, and m are positive integers, and W and m are about the same size. If N> 1, always N + W <NW. Therefore, the memory efficiency in the second embodiment with 1-bit notification (whether or not an event has occurred) is NW / (N + W) times as compared with the case where notification is performed by write RDMA from each node. If N >> W, it will be about W times. Since W can range from several tens of bits to one hundred and several tens of bits, it can be considered that N >> W in an information aggregation system having a scale larger than 1,000 nodes.
各ノードから通知すべき情報がX bitsである場合、各ノードがwrite RDMAで情報を書き込む方法では、W bits単位に見て有効利用されていない部分がY bits あれば、YN bits が冗長になるので、一般に冗長ビット数のオーダは、Nの程度で、ランダウの記号でO(N)と書かれる。特にX = 1の場合、Y = W-1であり、(W-1)N bits が冗長となる。一方、第2の実施形態において各ノードから通知すべき情報がX bits の場合、1bit の通知に必要な領域をX組用意することになる。冗長ビット数が最大になるのは、各bitの転送毎に見るとNをmで割った余りrが1になる場合である(m-1) bitsであるから、X 組使う場合は、X(m-1) bitsである。すなわち、第2の実施形態では、ノード数Nが増加しても冗長ビット領域を一定の大きさ以下に止めておく効果があり、N >> X ならば、各ノードがwrite RDMAで情報を書き込む方法と比較して所要メモリ領域を著しく小さくできる。仮に、N及びXが同程度の数である場合であっても、第2の実施形態に従えば、冗長ビット数が少なくなり、メモリ効率が良くなり得る。なぜなら、Nがmで割り切れる場合、1 bitを転送する際の冗長ビット数は、0であり、従って、任意のX > 1 についてX bitsを転送する際の冗長ビットも0になる。Nをmで割った余りrがmに近い場合、1 bitを転送する際の冗長ビット数は、m-rとなり、各ノードがwrite RDMAで情報を書き込む方法における冗長ビット数と第2の実施形態の冗長ビット数との比は、((W-1)/N) / X(m-r)となる。したがって、(m-r) < (X(W-1)/N) であれば、((W-1)/N) / (X(m-r))) > 1となり、第2の実施形態の方が所要メモリ領域が小さくなる。例えばN = Xの場合には、m-r < W-1ならばよい。 When the information to be notified from each node is X bits, YN bits become redundant if there is Y bits where each node writes information by write RDMA and is not effectively used in W bits. Therefore, in general, the order of the number of redundant bits is about N, and is written as O (N) with the Landau symbol. In particular, when X = 1, Y = W-1 and (W-1) N bits are redundant. On the other hand, when the information to be notified from each node in the second embodiment is X bits, X sets of areas necessary for 1-bit notification are prepared. The number of redundant bits is maximized when the remainder r obtained by dividing N by m is 1 for each bit transfer (m-1) bits. (m-1) bits. That is, in the second embodiment, even if the number of nodes N increases, there is an effect of keeping the redundant bit area below a certain size. If N >> X, each node writes information by write RDMA. Compared with the method, the required memory area can be significantly reduced. Even if N and X are about the same number, according to the second embodiment, the number of redundant bits can be reduced and the memory efficiency can be improved. This is because when N is divisible by m, the number of redundant bits when transferring 1 bit is 0, and therefore the redundant bit when transferring X bits for any X> 1 is also 0. When the remainder r obtained by dividing N by m is close to m, the number of redundant bits when transferring 1 bit is mr, and the number of redundant bits in the method in which each node writes information by write RDMA and the second embodiment The ratio to the number of redundant bits is ((W-1) / N) / X (mr). Therefore, if (mr) <(X (W-1) / N), then ((W-1) / N) / (X (mr)))> 1 and the second embodiment is required. The memory area becomes smaller. For example, when N = X, m-r <W-1 is sufficient.
<第3の実施形態>
次に、第3の実施形態について説明する。
<Third Embodiment>
Next, a third embodiment will be described.
第3の実施形態の基本的な機能構成は、図4で説明した第1の実施形態に係る構成と同じである。 The basic functional configuration of the third embodiment is the same as the configuration according to the first embodiment described in FIG.
第3の実施形態に従った情報集約システムは、第2の実施形態に従った情報集約システムと同様に、各管理対象に対応する個別識別子を管理対象の通し番号に対応するビットとする。しかしながら、第3の実施形態に従った情報集約システムでは、第1または第2の実施形態に係る図7とは、構成が異なる。第3の実施形態では、図20、図21、図22に示されるように、図4のリダクション404におけるbit演算を、ノード内のCPU701−1や702−1ではなく、Atomic Operationやネットワークのreduction機能等のノード間演算装置を用いて実現する。
Similar to the information aggregation system according to the second embodiment, the information aggregation system according to the third embodiment uses the individual identifier corresponding to each management target as a bit corresponding to the serial number of the management target. However, the information aggregation system according to the third embodiment has a configuration different from that of FIG. 7 according to the first or second embodiment. In the third embodiment, as shown in FIGS. 20, 21, and 22, the bit operation in the
図20は、第3の実施形態に従った情報集約システムの第1の構成例を示す図である。図21は、第3の実施形態に従った情報集約システムの第2の構成例を示す図である。図22は、第3の実施形態に従った情報集約システムの第3の構成例を示す図である。 FIG. 20 is a diagram illustrating a first configuration example of the information aggregation system according to the third embodiment. FIG. 21 is a diagram illustrating a second configuration example of the information aggregation system according to the third embodiment. FIG. 22 is a diagram illustrating a third configuration example of the information aggregation system according to the third embodiment.
図20、図21、または図22の情報集約システムの構成例において、図7の場合と同じ機能を有する部分には、同じ番号を付してある。 In the configuration example of the information aggregation system in FIG. 20, FIG. 21, or FIG. 22, parts having the same functions as those in FIG.
図20、図21、または図22に示すように、第3の実施形態に従った情報集約システムでは、第1または第2の実施形態に従った情報集約システムとは異なって、送信起点ノード701のCPU701−1や受信・中継ノード702のCPU702−1には、図4の識別子集約機構401や識別子分析機構402が含まれない。一方、第3の実施形態に従った情報集約システムでは、個別識別子を集団識別子にまとめる識別子集約機構401を実行する独立筐体型のノード間演算装置2001が、図20に示されるようにノード外の中継装置703に接続され得る。また、図21に示すように、ノード間演算装置2101または2102が、送信起点ノード701または受信・中継ノード702内の各構成要素とは別個に、各ノード内に実装され得る。さらに、図22に示すように、ノード間演算機能が、送信起点ノード701または受信・中継ノード702内のNIC2201または2202と一体化されて実装され得る。
As shown in FIG. 20, FIG. 21, or FIG. 22, in the information aggregation system according to the third embodiment, unlike the information aggregation system according to the first or second embodiment, a
図4のリダクション404の機能は、例えば、Message Passing Interface(MPI)規格でMPI_reduceという名のAPI で定義される処理を指し、個別のデータを指定した2項演算の反復により演算前と同じ型の1つのデータに縮約することを指す。例えば、指定する2項演算が加法であれば、対応するリダクションの結果は、全ノードのデータの総和となる。MPI規格では、MPI_reduceによるリダクションで指定可能な演算として、加法以外にも乗法、bitwise or、「最大値と場所の対」等を指定するマクロが定義されている。
The function of the
分散メモリシステムの環境における上記のリダクション404の性能は、ノード間の通信時間によって決まり、演算の所要時間は、無視できる割合になる。しかしながら、システム規模の増大に伴って、リダクション404は、入力情報を持つ全ノード間での、複数段階の中継動作を伴う処理になり得る。
The performance of the above-described
ノード間の通信時間の相当部分は、ネットワーク装置の主記憶装置へのアクセスオーバヘッド、すなわち、IOバスをデータが通過する時間と、IO処理を制御し演算を行うためのCPU時間である。CPU上で演算を行うためには、まずメモリに格納された演算対象のデータをCPUに取り込む必要があり、演算結果をメモリに再び格納する必要がある。さらに、ネットワーク上で複数段の中継処理をしながらリダクション404の演算をCPU上で行う場合には、IOバスとメモリバスをデータが各段の中継について2回通過することになる。これに対し、ノード間演算機能を有するネットワーク装置の内部で演算が行われれば、IOバスとメモリバスをデータが通過することによるオーバヘッドは削減され、リダクション性能は、大幅に向上する。
A considerable part of the communication time between nodes is the access overhead of the network device to the main storage device, that is, the time for data to pass through the IO bus and the CPU time for controlling the IO processing and performing the calculation. In order to perform the calculation on the CPU, it is necessary to first fetch the calculation target data stored in the memory into the CPU and store the calculation result in the memory again. Further, when the calculation of the
第3の実施形態に従った情報集約システムにおいて、識別子の集約処理の手順は、bit演算がノード間演算装置により実行される点を除いて第1の実施形態と同様である。ただし、ノード間演算装置で利用可能な演算の種類は、CPU上のソフトウェアによって演算が実行される場合と比較して限定されるため、ノード間演算装置で利用可能な機能を用いて演算処理を実現するように工夫を要する。 In the information aggregating system according to the third embodiment, the procedure of the identifier aggregating process is the same as that of the first embodiment except that the bit operation is performed by the inter-node arithmetic device. However, since the types of operations that can be used in the inter-node arithmetic device are limited compared to the case where arithmetic is executed by software on the CPU, arithmetic processing is performed using the functions that are available in the inter-node arithmetic device. Ingenuity is required to realize.
以下に示す文献[1]から[5]は、上述ような機能を持つ装置に関する技術である。
[1] A. Gara et al,"Overview of the Blue Gene/L system architecture",IBM Journal of Research and Development VOL. 49 NO. 2/3 March/May 2005, p.7-8.
この文献[1]では、「複数ノード上のデータに対する演算を CPUとは独立に行う装置」の例であるBlue Gene/Lの Collective Network の機能が開示されている。ノード間演算機能は、各ノードの「Collective Network 用ネットワーク・インターフェース」に内蔵されている。
Documents [1] to [5] shown below are techniques related to a device having the functions described above.
[1] A. Gara et al, "Overview of the Blue Gene / L system architecture", IBM Journal of Research and Development VOL. 49 NO. 2/3 March / May 2005, p.7-8.
This document [1] discloses the function of the collective network of Blue Gene / L, which is an example of “an apparatus that performs operations on data on a plurality of nodes independently of a CPU”. The inter-node calculation function is built in the “Network Interface for Collective Network” of each node.
[2] 石畑宏明,「高機能・高性能システムインターコネクト技術の開発」 p.3 [平成26年4月1日検索]、インターネット
(URL: http://ngarch.isit.or.jp/psi/images/event/hiroaki_ishihata_20061220.pdf)
[3] 清水俊幸,「コレクティブ通信をサポートする高機能スイッチの開発」 p.2,p10 [平成26年4月1日検索]、インターネット
(URL:http://ngarch.isit.or.jp/psi/images/event/toshiyuki_shimizu_20080218.pdf)
[2] Hiroaki Ishihata, “Development of high-performance, high-performance system interconnect technology” p.3 [Search April 1, 2014], Internet
(URL: http://ngarch.isit.or.jp/psi/images/event/hiroaki_ishihata_20061220.pdf)
[3] Toshiyuki Shimizu, “Development of high-function switches that support collective communication” p.2, p10 [Search April 1, 2014], Internet
(URL: http://ngarch.isit.or.jp/psi/images/event/toshiyuki_shimizu_20080218.pdf)
上記文献[2],[3]では、「複数ノード上のデータに対する演算をCPUとは独立に行う通信装置」の中で「独立筐体型のノード間演算装置」の一例である「高機能スイッチ」の機能と内部構造が開示されている。 In the above documents [2] and [3], “high function switch” is an example of “independent enclosure type inter-node arithmetic device” in “communication device that performs operation on data on multiple nodes independently of CPU”. ”And the internal structure are disclosed.
[4] Y. Ajima, S. Sumimoto, T. Shimizu,"Tofu: A 6d mesh/torus interconnect for exascale computers",IEEE Computer, Vol. 42, No. 11, pp.36-40 (2009)
[5] Y. Ajima, T. Inoue, S. Hiramoto, T. Shimizu, Y. Takagi,"The Tofu Interconnect",IEEE Micro, Vol. 32, Issue 1, p.21-31(2012)
[4] Y. Ajima, S. Sumimoto, T. Shimizu, "Tofu: A 6d mesh / torus interconnect for exascale computers", IEEE Computer, Vol. 42, No. 11, pp. 36-40 (2009)
[5] Y. Ajima, T. Inoue, S. Hiramoto, T. Shimizu, Y. Takagi, "The Tofu Interconnect", IEEE Micro, Vol. 32,
上記文献[4],[5]では、スーパコンピュータ「京」(The K computer) 独自のネットワークであるTorus fusion (tofu)のICC(InterConnect Controller:ネットワーク・インターフェースとルータを兼ねる)のTBI(Torus Barrier Interface)の機能が開示されている。TBIは、本出願における図22のノード間演算機能を内蔵したNIC2201または2202の例である。文献[2],[3]での「高機能スイッチ」と実現形態は異なるが、機能的には同等である旨が文献[4]で述べられている。
In [4] and [5] above, TBI (Torus Barrier) of ICC (InterConnect Controller: Network Interface and Router) of Torus fusion (tofu), the original network of the super computer “K” (The K computer) Interface) function is disclosed. TBI is an example of the
第3の実施形態では、上記文献[1]から[5]に開示されているようなハードウェア機構を、ノード間演算装置2001(図20)、2101または2102(図21)、NIC2201または2202(図22)として利用できる。
In the third embodiment, the hardware mechanism as disclosed in the above documents [1] to [5] is used as an inter-node computing device 2001 (FIG. 20), 2101 or 2102 (FIG. 21),
reduction機能をサポートするネットワーク装置(ノード間演算装置)は、整数の加法、乗法、bitwise {and, or, exclusive or}、max, min、浮動小数点の加法等の比較的多様な種類の演算機能を持つ場合が多い。しかしながら、サポートされる演算の種類、対応されているデータ型、及び一度に操作できるデータの大きさや個数は、ネットワーク装置の種類によって異なる。サポートされるデータの大きさやデータ数の範囲内ではAtomic Operationやreductionが実現できない場合、階層化、複数領域の使用、及び反復使用等によって適用範囲を広げる必要があり得る。そこで、第2の実施形態で説明した、使用可能な演算のいずれかで、ネットワーク装置がサポートしている演算を使用する。 Network devices that support the reduction function (inter-node arithmetic devices) have relatively diverse types of arithmetic functions such as integer addition, multiplication, bitwise {and, or, exclusive or}, max, min, and floating-point addition. Often have. However, the types of operations that are supported, the data types that are supported, and the size and number of data that can be manipulated at one time depend on the type of network device. If atomic operation and reduction cannot be realized within the range of supported data size and number of data, it may be necessary to expand the application range by hierarchization, use of multiple areas, repeated use, etc. Therefore, any of the available operations described in the second embodiment uses an operation supported by the network device.
また、並列処理でのreductionに関するAPI標準であるMPI規格でのリダクション機能は、同期機能を含意するため、並列処理環境のネットワーク装置が提供するリダクション機能には、完了時の同期機能が含まれる場合が多い。この場合、受信側ノードは、全ての送信側ノードからのデータが揃った事を同期完了により知ることができる。 In addition, because the reduction function in the MPI standard, which is an API standard for reduction in parallel processing, implies a synchronization function, the reduction function provided by the network device in the parallel processing environment includes a synchronization function at completion. There are many. In this case, the receiving side node can know from the completion of synchronization that the data from all the transmitting side nodes is ready.
一方、例えばInfiniBandのFetch and Addのように、他のノードが行った演算の完了が通知されないノード間演算機能が用いられる場合には、送信側の全ノードのデータが揃ったタイミングを別の方法で知る必要がある。そこで、送信側ノードと受信側ノードとの間では、次の(a)又は(b)のような同期手続きが行われる。 On the other hand, when the inter-node operation function that does not notify the completion of the operation performed by other nodes, such as Fetch and Add of InfiniBand, is used, the timing when the data of all the nodes on the transmission side are gathered is another method. Need to know at. Therefore, the following synchronization procedure (a) or (b) is performed between the transmission side node and the reception side node.
(a)全送信側ノードと受信側ノードとの間で、次のようにバリア同期を実行する。すなわち、送信側ノードは、自ノードからの個別識別子コードの送信完了後、バリア同期を開始する。受信側ノードは、バリア同期を最初から開始しておく。 (a) Barrier synchronization is executed between all transmitting nodes and receiving nodes as follows. That is, the transmission side node starts barrier synchronization after the transmission of the individual identifier code from the own node is completed. The receiving node starts barrier synchronization from the beginning.
(b)受信側ノードが送信側ノードの更新する特定の領域を監視する。すなわち、送信側ノードは、自ノードからの個別識別子コードの送信完了後、受信側ノード上の領域(初期値は0)に対し、Fetch and Andで、自ノードが情報通知を担当する管理対象の数を加える。受信側ノードは、送信側ノードがFetch and Addで更新する領域を監視し、領域内のデータが管理対象の数に一致したら終了と判定する。 (b) The receiving node monitors a specific area updated by the transmitting node. In other words, after the transmission of the individual identifier code from the own node, the transmitting side node performs Fetch and And on the area on the receiving node (initial value is 0), and the management target node is in charge of information notification. Add a number. The receiving side node monitors the area that the transmitting side node updates with Fetch and Add, and determines that the process is finished when the data in the area matches the number of management targets.
なお、送信側の全ノードが直接受信側ノードの領域にFetch and Add を実行する事は(カウンタがオーバーフローする事がなくても)性能的に得策とは限らないので、Fetch and Add による同期を複数階層に分けて段階的に実施した方が有利な場合もある。この階層化はソフトウェアよって行われるが、各階層の演算をネットワーク側のハードウェアが割り込みによるCPU への通知に伴うオーバヘッドなしでデータが集約される事、およびこれらの機構を使わずにCPU 上のソフトウェアがでリダクションを行う場合と比較すれば、1階層で集約可能なノード数を大きくとれる事も、第3の実施形態における性能上の利点となる。なぜならば、ノード間演算機構やFetch and Add を使わない場合は、1階層あたりのノード数と同じ回数、情報集約に関しての上位ノード側が通信処理を反復する必要があるため、大規模なシステムでは、各段での遅延が大きくなり過ぎる事を防ぐため、1階層での集約ノード数を2や3などの小さい数にせざるを得ず、中継段数が増える傾向になるからである。 Note that it is not always a good idea in terms of performance (even if the counter does not overflow) because all nodes on the sending side directly execute Fetch and Add on the area of the receiving side node. In some cases, it may be advantageous to divide into multiple hierarchies. This layering is performed by software, but the hardware on the network side aggregates data without overhead associated with notification to the CPU by interrupts, and on the CPU without using these mechanisms. Compared to the case where the software performs reduction, it is also possible to increase the number of nodes that can be aggregated in one layer, which is a performance advantage in the third embodiment. This is because when the inter-node operation mechanism and Fetch and Add are not used, the upper node side for information aggregation needs to repeat the communication process as many times as the number of nodes per layer. This is because in order to prevent the delay at each stage from becoming too large, the number of aggregation nodes in one layer must be reduced to a small number such as 2 or 3, and the number of relay stages tends to increase.
第3の実施形態に従った情報集約システムによれば、第1または第2の実施形態に従った情報集約システムと同様の前述した技術的効果が得られる。また、第3の実施形態に従った情報集約システムによれば、通信完了までの実時間が短縮され、受信側ノード(階層的な処理をする場合の中間ノードを含む)の負荷が軽減できる。 According to the information aggregation system according to the third embodiment, the above-described technical effect similar to that of the information aggregation system according to the first or second embodiment can be obtained. In addition, according to the information aggregation system according to the third embodiment, the real time until the communication is completed is shortened, and the load on the receiving side node (including intermediate nodes in the case of hierarchical processing) can be reduced.
<第4の実施形態>
次に第4の実施形態について説明する。
<Fourth Embodiment>
Next, a fourth embodiment will be described.
本実施形態は、第1、第2,第3の実施形態を前提に、受信側ノードが集団識別子を受信した後の処理の高速化に関する実施形態である。 This embodiment is an embodiment relating to speeding up of processing after a receiving node receives a group identifier on the premise of the first, second, and third embodiments.
各管理対象のデータは1 bit で代表される。対応する管理対象が所定の状態にある場合、管理対象に対応する位置のbit がon (1) であり、そうでない場合off (0) とする。 Each managed data is represented by 1 bit. If the corresponding management target is in a predetermined state, the bit at the position corresponding to the management target is on (1), otherwise it is off (0).
受信のための集団識別子の記憶領域は、各々が「整数」として処理できる複数のm bits領域から構成されるとする。 It is assumed that the collective identifier storage area for reception is composed of a plurality of m bits areas each of which can be processed as an “integer”.
「所定の状態にある管理対象に対し特定の処理を行う」場合「各mbits 領域中のbit を全て順に見て、1ならば処理を行い、0 ならば次に進む」という処理が、よく行われる。 When performing a specific process for a management target in a predetermined state, the process of “viewing all the bits in each mbits area in order, performing 1 if it is 0, and proceeding if it is 0” is often performed. Is called.
しかし、この方法では、第1の実施形態において説明した図3のように、ほとんど全てのビットが0の疎なbit列で示されるように、比較的少数のノードが所定の状態にある場合に、多くの条件判定とbit 参照を、結局は処理を行わないノードに対応するbit に対しても行う事になる。 However, in this method, as shown in FIG. 3 described in the first embodiment, when a relatively small number of nodes are in a predetermined state as shown by a sparse bit string in which almost all bits are 0. Therefore, many condition judgments and bit references are performed for the bit corresponding to the node that does not perform processing.
すなわち、このような種類の処理では、所定の状態にある管理対象が比較的少数である時、結局は処理を行わない管理対象に対応する領域を多く参照するために、キャッシュミスと引き続くメモリ参照が多発して、受信側ノードの処理時間が大きくなる。 That is, in this type of processing, when there are a relatively small number of management targets in a predetermined state, in order to refer to many areas corresponding to the management targets that are not processed in the end, a memory reference following a cache miss is performed. Frequently occurs, and the processing time of the receiving node increases.
所定の状態にある管理対象が比較的少数の場合、「予め管理対象のグループに対応する複数の領域のlogical or を取り、結果が0 となるグループは飛ばして処理する」事でbit 操作回数が減って高速化される可能性がある。しかし、この方法では全管理対象に対応する領域へのload 命令が発行されるという点では変わりがないので、大幅な高速化は期待できない。 If there are a relatively small number of management targets in a given state, the number of bit operations can be reduced by taking the logical or multiple areas corresponding to the management target group in advance and skipping the group that results in 0. There is a possibility that the speed will be reduced. However, with this method, there is no change in that a load command is issued to the area corresponding to all management targets, so a significant speedup cannot be expected.
そこで、例えば、各グループ毎に代表のノードで「取りまとめ」を行うことを考える。例えば、前述した第3の実施形態のように、InfiniBand 等のFetch and Add を利用するリダクションを使用する実施形態において、もともと「取りまとめ」ノードが存在する場合には、この方法を使用する際に追加で必要になるシステム資源は少ないため、この方法も考えられる。 For this reason, for example, it is considered that “grouping” is performed by a representative node for each group. For example, in the embodiment using the reduction using Fetch and Add such as InfiniBand as in the third embodiment described above, when the “combined” node originally exists, it is added when using this method. This method is also conceivable because it requires less system resources.
本実施形態では、管理対象を(必要なら複数の階層で)グループ分けしたものを新たな管理対象と見なす。図23は、管理対象(ノード)のグループ化の階層の説明図である。また、図24は、管理対象のグループ化階層と各サブグループに対して「割当てられた識別子」の対応関係の説明図である。また、図25は、図24の具体例である。本実施形態では送信側ノードで予めグループ内の管理対象に対してlogical or を実行しておく。すなわち、図23に示されるように、管理対象を階層的にグループに分ける。次に、図24および図25の具体例に示されるように、「グループ内に一つでも所定の状態にある管理対象がある」場合、そのグループを管理するノードが、グループに対応するbit位置をon、他のbit 位置(他のグループに対応するbit 位置)をoffにしたデータを作る。そして、このようなデータを入力として、元々の管理対象の状態通知とは別にreduction を行う。 In the present embodiment, a group of management targets (with a plurality of hierarchies if necessary) is regarded as a new management target. FIG. 23 is an explanatory diagram of a hierarchy of grouping of management targets (nodes). FIG. 24 is an explanatory diagram of the correspondence relationship between the grouping hierarchy to be managed and the “assigned identifiers” for each subgroup. FIG. 25 is a specific example of FIG. In the present embodiment, logical or is executed in advance on the management target in the group at the transmission side node. That is, as shown in FIG. 23, management targets are hierarchically divided into groups. Next, as shown in the specific examples of FIGS. 24 and 25, when “there is at least one management target in a predetermined state”, the node that manages the group has a bit position corresponding to the group. Creates data with on turned off and other bit positions (bit positions corresponding to other groups) turned off. Then, using such data as input, reduction is performed separately from the status notification of the original management target.
以上の処理は、「管理対象のグループ」を「(仮想的な)上位の管理対象」に設定した事に他ならず、送信側ノードでの処理手順には、一部のノードでの管理対象が増える以外には、グループ分けをしない第1、第2,または第3の実施形態場合と同様の処理が実行される。すなわち、第4の実施形態では、集団識別子を格納すべき記憶領域に、グループ用の領域を指定するのみでよい。 The above processing is nothing other than setting “managed group” to “(virtual) higher-level managed target”, and the processing procedure at the sending node is subject to management at some nodes. Other than the increase, the same processing as in the first, second, or third embodiment without grouping is executed. That is, in the fourth embodiment, it is only necessary to designate a group area as a storage area in which a group identifier is to be stored.
受信側ノードは、各グループ(上位の管理対象)に対応する領域内のbit のon / off に基いて、グループ内の(下位の)管理対象に対する領域参照の必要性を判定し、参照不要な領域を飛ばして処理を行う。すなわち、図25の具体例に示されるように、各階層の管理領域でbit on の位置を枝とした木構造として扱う。 The receiving node determines the necessity of area reference for the (lower) management target in the group based on on / off of the bit in the area corresponding to each group (higher management target). Process by skipping the area. That is, as shown in the specific example of FIG. 25, it is treated as a tree structure with the bit on position as a branch in the management area of each hierarchy.
特に、最下層の識別子領域の探索の高速化のみを目的にグループ分けを行う場合には、後述するように、この木構造に対し深さ優先探索を行う事で、探索中に保持すべきメモリ領域の大きさを節約する事ができる。 In particular, when grouping is performed only for the purpose of speeding up the search of the lowest identifier region, as described later, a depth-first search is performed on this tree structure, so that the memory to be held during the search The size of the area can be saved.
図26は、階層的なグループ分けで疎なビット列の0でないビットの検索範囲を限定する際の送信メッセージと受信領域の例を示す図である。図26において、定数の前の0xは16進数表記である事を意味する。図26に示されるように、階層ごとに、
第n階層領域アドレス|領域内のビット
という識別子送信メッセージフォーマットで、集団識別子の送信パケットを生成すればよい。「第n階層」は、第1階層、第2階層、第3階層、・・・を示す。「第n階層領域アドレス」は、受信側ノードにおけるメモリ(例えば、図7の受信・中継ノード702のメモリ702−1)における、集団識別子の記憶領域の第n階層に対応するアドレスを示す。「領域内のビット」は、「第n階層領域アドレス」は、第n階層に対応する集団識別子のビット列である。あとは、各階層ごとに、第1、第2、または第3の実施形態で説明したようにして、自ノードの管理対象に関する個別識別子のビット情報をセットすればよい。
FIG. 26 is a diagram illustrating an example of a transmission message and a reception area when limiting a search range of non-zero bits in a sparse bit string by hierarchical grouping. In FIG. 26, 0x before the constant means that it is in hexadecimal notation. As shown in FIG. 26, for each hierarchy,
It is sufficient to generate a collective identifier transmission packet in the identifier transmission message format of bits in the nth layer region address | bit. The “nth layer” indicates the first layer, the second layer, the third layer,. The “nth layer region address” indicates an address corresponding to the nth layer of the storage region of the collective identifier in the memory at the receiving side node (for example, the memory 702-1 of the reception /
図27は、第4の実施形態における送信側ノードにおける識別子集約機構401(図4)による階層的にグループ化された集団識別子の送信処理の例を示すフローチャートである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子集約機構401の処理が開始されると、図7の送信起点ノード701または中継ノードとして機能する受信・中継ノード702のCPU701−1または702−1は、グループ階層番号の初期値として1を入力する(ステップS2701)。現在のグループ階層番号が既定のグループ階層数以下である場合(ステップS2702の判定がYES)、CPU701−1または702−1は、自ノードにより受信された「グループ階層番号」が示す現グループ階層での個別識別子から図4のリダクション404により集団識別子を求める(ステップS2703)。
FIG. 27 is a flowchart illustrating an example of a transmission process of group identifiers grouped hierarchically by the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node in the fourth embodiment. The functional block and system configuration will be described with reference to FIG. 4 and FIG. 7 in the first embodiment. Of course, the system configuration of FIG. 20, FIG. 21, FIG. 22, etc. may be adopted. When the processing of the
ステップS2703での処理が終了すると、CPU701−1または702−1は、グループ階層番号を1増やして(ステップS2704)、ステップS2702での処理に戻る。 When the process in step S2703 ends, the CPU 701-1 or 702-1 increments the group hierarchy number by 1 (step S2704) and returns to the process in step S2702.
グループ階層番号が既定のグループ階層数を超えた場合(ステップS2702の判定がYES、CPU701−1または702−1は、一連の識別子集約機構401の処理を終了し、グループ階層化された集団識別子を送信する(ステップS2705)。
If the group hierarchy number exceeds the predetermined number of group hierarchies (YES in step S2702), the CPU 701-1 or 702-1 ends the series of
図28は、第4の実施形態における受信側ノードにおける識別子分析機構402(図4)による深さ優先探索を伴う受信処理の例を示すフローチャートである。「深さ優先探索」とは、木構造の階層構造において、階層ごとに横方向に探索するのではなく、階層の最下層まで行ったら最下層管理対象の処理を行い、その後また第1階層に戻り次の最下層の探索を行う処理である。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子分析機構402の処理が開始されると、図7の受信・中継ノード702のCPU702−1は、グループ階層番号の初期値として1を入力する(ステップS2801)。現在のグループ階層番号が既定のグループ階層数以下である場合(ステップS2802の判定がYES)、CPU702−1は、自ノードにより受信された「グループ階層番号」が示す現グループ階層の次階層にゼロでない領域があるか否かを判定する(ステップS2803)。
FIG. 28 is a flowchart illustrating an example of a reception process involving a depth-first search performed by the identifier analysis mechanism 402 (FIG. 4) in the reception-side node according to the fourth embodiment. “Depth-first search” means that in the hierarchical structure of the tree structure, the search is not performed in the horizontal direction for each hierarchy, but the processing of the lowest management target is performed when the lowest hierarchy is reached, and then the first hierarchy is again entered. This is a process for searching for the next lowest layer. The functional block and system configuration will be described with reference to FIG. 4 and FIG. 7 in the first embodiment. Of course, the system configuration of FIG. 20, FIG. 21, FIG. 22, etc. may be adopted. When the processing of the
ステップS2803の判定がYESならば、CPU702−1は、図29で後述する「下層識別子領域の探索」の処理により、現グループ階層の1つ下の階層のゼロでない領域を求める(ステップS2804)。 If the determination in step S2803 is YES, the CPU 702-1 obtains a non-zero area in the hierarchy immediately below the current group hierarchy by the process of “search for lower layer identifier area” described later in FIG. 29 (step S2804).
その後、グループ階層番号を1増やして(ステップS2805)、ステップS2802の処理に戻る。 Thereafter, the group hierarchy number is incremented by 1 (step S2805), and the process returns to step S2802.
グループ階層番号がグループ階層数に達して最下層となり、ステップS2802の判定がNOになると、CPU702−1は、ステップS2804により最下層から取り出されている個別識別子より、管理対象を抽出する処理を実行する(ステップS2806)。その後、CPU702−1は、ステップS2801の処理に戻り、他のグループ階層に対する探索を続行する。 When the group hierarchy number reaches the number of group hierarchies and becomes the lowest layer, and the determination in step S2802 is NO, the CPU 702-1 executes a process of extracting a management target from the individual identifier extracted from the lowest layer in step S2804. (Step S2806). Thereafter, the CPU 702-1 returns to the process of step S2801 and continues searching for another group hierarchy.
図29は、図28のステップS2804の下層識別子領域の探索の処理の詳細処理の例を示すフローチャートである。 FIG. 29 is a flowchart illustrating an example of detailed processing of the lower layer identifier area search processing in step S2804 of FIG.
まず、CPU702−1は、図28のグループ階層番号によって指定されたグループ階層(これを「g」とする)に対応する指定された領域番号のビットフィールドの値を取り出し、メモリ702−2の作業領域 W(g) に格納する(ステップS2901)。 First, the CPU 702-1 takes out the value of the bit field of the designated area number corresponding to the group hierarchy designated by the group hierarchy number in FIG. 28 (this is referred to as “g”), and operates the memory 702-2. Store in the area W (g) (step S2901).
次に、CPU702−1は、作業領域W(g)の内容が0(ゼロ)であるか否かを判定する(ステップS2902)。ステップS2902の判定がYESならば、CPU702−1は、後述するS2906の処理に移行する。 Next, the CPU 702-1 determines whether or not the content of the work area W (g) is 0 (zero) (step S2902). If determination of step S2902 is YES, CPU702-1 will transfer to the process of S2906 mentioned later.
ステップS2902の判定がNOならば、CPU702−1は、個別識別子内の1が現れるビットBを作業領域W(g)からLZC又はTZC(図19のステップS1903の説明を参照)の次のビット位置を見て特定する(ステップS2903)。 If the determination in step S2902 is NO, CPU 702-1 sets bit B in which 1 in the individual identifier appears to the bit position next to LZC or TZC (see description of step S1903 in FIG. 19) from work area W (g). Is identified (step S2903).
次に、CPU702−1は、グル―プ階層番号、階層内の識別子領域番号、およびBから次の階層の識別子領域番号 rを求める(ステップS2904)。 Next, the CPU 702-1 obtains the identifier area number r of the next hierarchy from the group hierarchy number, the identifier area number in the hierarchy, and B (step S2904).
その後、CPU702−1は、ステップS2903で特定されたビットBの値を0(ゼロ)にオフする(ステップS2905)。 After that, the CPU 702-1 turns off the value of bit B specified in step S2903 to 0 (zero) (step S2905).
ステップS2905の処理の後またはステップS2902の判定がNOの場合、CPU702−1は、次の階層の識別子領域番号 rと作業領域W(g)の内容を呼び出し元のプログラム(図28)に通知する(ステップS2906)。その後、CPU702−1は、図29のフローチャートの処理を終了し、図28のステップS2804の処理を終了する。 After the process of step S2905 or when the determination in step S2902 is NO, the CPU 702-1 notifies the caller program (FIG. 28) of the identifier area number r of the next layer and the contents of the work area W (g). (Step S2906). Thereafter, the CPU 702-1 ends the process of the flowchart of FIG. 29 and ends the process of step S2804 of FIG.
第4の実施形態において、以上の動作に加えて、各階層の管理対象に対応する一つのm bits の(整数として扱う)領域内のbit 参照に際して「1 が比較的少ない」場合の高速化を目的とする処理について説明する。この処理の詳細については、下記文献[6]に開示されている。
[6] Henry S. Warren,"Hacker's Delight (2nd Edition)",2012/9/14
In the fourth embodiment, in addition to the above operation, the speed is increased when “1 is relatively small” when referring to a bit in an area of m bits (handled as an integer) corresponding to the management target of each layer. The target process will be described. Details of this processing are disclosed in the following document [6].
[6] Henry S. Warren, "Hacker's Delight (2nd Edition)", 2012/9/14
この文献は、指定された整数領域内のbitの数え上げ(Population Count) や、整数領域の先頭ないし末尾にある0 であるbits の数え上げLZCやTZCおよび3, 5, 7 など特定の定数での除法について、現在知られている高速なアルゴリズムを開示している。このアルゴリズムは、一般的な計算機で実現することができる。 This document describes how to count bits in a specified integer area (Population Count), count bits that are 0 at the beginning or end of an integer area, LZC, TZC, and division by specific constants such as 3, 5, 7, etc. Discloses a currently known fast algorithm. This algorithm can be realized by a general computer.
整数データ領域内で、次のようなbit 演算を高速に実行する手段が知られている。
(a) 整数領域内の1 (bit on) の数を調べる。
(b) 整数領域の末尾(LSB: Least Significant Bit)から数えて最初に1 が現れるbit 位置を求める。
(c) 整数領域の先頭(MSB: Most Significat Bit) から数えて最初に1 が現れるbit位置を求める。
Means for executing the following bit operations at high speed in the integer data area are known.
(a) Check the number of 1 (bit on) in the integer area.
(b) Find the bit position where 1 appears first, counting from the end of the integer area (LSB: Least Significant Bit).
(c) Find the bit position where 1 appears first, counting from the beginning of the integer area (MSB: Most Significat Bit).
なお、最初に1 が現れるbit 位置を求める事は、最初に1 が現れるまでの0 の数を求める事と同等である事に注意しておく。関連する用語、略語を定義しておく。
Population Count: 領域内の1 の数を調べる操作
NTZ: Number of Trailing Zero: LSB から最初に1 が現れるまで数えた0の数
TZC: Trailing Zero Count: NTZ を求める操作
NLZ: Number of Leading Zero: MSB から最初に1 が現れるまで数えた0 の数
LZC: Trailing Zero Count: NLZ を求める操作
Note that finding the bit position where 1 appears first is equivalent to finding the number of 0s until 1 appears first. Define related terms and abbreviations.
Population Count: Checking the number of 1s in the region
NTZ: Number of Trailing Zero: Number of 0s counted from the LSB until the first 1 appears
TZC: Trailing Zero Count: Operation to find NTZ
NLZ: Number of Leading Zero: Number of 0s counted from the MSB until the first 1 appears
LZC: Trailing Zero Count: Operation to find NLZ
なお、前述の手段(a)の高速演算を手段(b)の高速演算の実現に利用する場合などもある。例えば、32 bits 整数領域内の1 の数は、判定やループを含まない、下記のような5回の代入の繰り返し演算が知られている。ここでbits は32 bits の整数領域、= は代入、& はbitwise and、「a>>b」はaのb bitsのshift(ビットシフト処理)を表し、定数の前の0xは16進数表記である事を意味する。
bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
bits = (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
In some cases, the high-speed calculation of the above-described means (a) is used to realize the high-speed calculation of the means (b). For example, the number of 1's in the 32 bits integer area is known to perform the following five repetitions of assignment without judgment or loop. Where bits is an integer field of 32 bits, = is assignment, & is bitwise and, “a >> b” indicates a shift of b bits of a (bit shift processing), and 0x before the constant is expressed in hexadecimal notation Means something.
bits = (bits & 0x55555555) + (bits >> 1 &0x55555555);
bits = (bits & 0x33333333) + (bits >> 2 &0x33333333);
bits = (bits & 0x0f0f0f0f) + (bits >> 4 &0x0f0f0f0f);
bits = (bits & 0x00ff00ff) + (bits >> 8 &0x00ff00ff);
bits = (bits & 0x0000ffff) + (bits >> 16 &0x0000ffff);
また、CPU が「所定の整数領域内の1 の数を求める命令」(例えば、Intel 社製CPU のSSE 命令の一つであるPOPCNT 命令など)を備える場合、その命令を使用する事で領域内の1 の数は高速に求められる。 In addition, if the CPU has an “instruction for finding the number of 1s in a given integer area” (for example, the POPCNT instruction, which is one of the SSE instructions for Intel CPUs), the instruction can be used to The number of 1 is required at high speed.
前述の手段(b)は、現在の一般的なCPUでの負の数の表現形式が「2の補数」に基づくため、例えば「((x & (-x))-1)」に対するpopulation countにより、NTZを求める事ができる。 The above-mentioned means (b) is based on “two's complement” in the expression format of the negative number in the current general CPU. For example, population count for “((x & (−x)) − 1)” You can ask for NTZ.
前述の手段(c)は手段(b)に比べると、多くのCPUが備える一般的な命令で高速実行する事が難しいとされている。例えばSun Microsystemsが開発し現在SPARC International Inc. が登録商標を保有するSPARC64 IXfx などのCPU が備えるLZC 命令を使用する方法がある。 Compared with the means (b), the above means (c) is difficult to execute at high speed with general instructions provided in many CPUs. For example, there is a method of using an LZC instruction provided in a CPU such as SPARC64 IXfx developed by Sun Microsystems and currently registered trademark of SPARC International Inc.
また、整数とIEEE754 で規定された浮動小数点数の変換がレジスタ間で直接行えるCPUでは、浮動小数点形式への変換での指数部が「2を底とする対数の整数部分」である事を利用した比較的高速な計算方法が知られている。
In addition, on CPUs that can directly convert between integers and floating-point numbers specified in IEEE754 between registers, use that the exponent part in the conversion to floating-point format is the "integer part of the logarithm with
第2の実施形態の手順(4)で説明した「個別識別子の特定処理(の高速化)に都合が良い方を選ぶ」とは、例えば、受信側ノードがLZC命令を備えるならLSBから、そうでない場合MSBから、管理対象の番号とbitを対応させていく事を指す。 As described in the procedure (4) of the second embodiment, “select the one that is convenient for the identification processing (acceleration) of the individual identifier” means that, for example, if the receiving side node has an LZC command, the LSB If not, it refers to the correspondence between the management target number and bit from the MSB.
1であるbitが比較的少ない場合、「LZCないしTZCを利用して、1であるbitを順次求めて管理対象を特定する」方法は、「1 bitずつ参照位置をずらし、そのbitが1か否か判定するループ」による方法と比較すれば、いずれにせよ高速である。 If the number of bits that are 1 is relatively small, the method of “using LZC or TZC to determine the management target by sequentially finding the bits that are 1” shifts the reference position by 1 bit and whether the bit is 1 In any case, it is faster than the method based on the “determination loop”.
LZCを使うかTZCを使うかを、受信側ノードでどちらが高速に実行できるかを基準に選択する事は、システムとしての最適化の一環としての意味を持つ。 Selecting whether to use LZC or TZC based on which can be executed at the high speed at the receiving node is meaningful as part of system optimization.
以上説明した第4の実施形態によれば、「所定の状態の管理対象」の割合が少なく、m bits の整数領域単位で見て、1であるbitが1つも存在しない領域が多いと想定される場合、管理対象を階層的にグループ化して、「上位の管理対象」についての判定を先に行う事で、処理を高速化することが可能となる。 According to the fourth embodiment described above, it is assumed that the ratio of “target management objects in a predetermined state” is small, and there are many areas in which no one bit is 1 when viewed in units of an integer area of m bits. In this case, it is possible to speed up the processing by grouping the management targets hierarchically and making the determination on the “higher management target” first.
<第5の実施形態>
次に、第5の実施形態について説明する。本実施形態では、個別識別子のコード化方法について説明する。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。
<Fifth Embodiment>
Next, a fifth embodiment will be described. In this embodiment, an individual identifier encoding method will be described. The functional block and system configuration will be described with reference to FIG. 4 and FIG. 7 in the first embodiment. Of course, the system configuration of FIG. 20, FIG. 21, FIG. 22, etc. may be adopted.
図4の「リダクション404」で使用する演算は、第1の実施形態において図9(b)を用いて説明したように、乗法演算により、素数だけでなく、「素数冪の数で、冪の指数自体が再び素数冪である数」を使って、個別識別子の割当てを行う。特に、「冪の指数自体が2の冪」の場合が、「所定の大きさ以下の個別識別子」の数を増やす観点からは、最も効率がよい。
As described with reference to FIG. 9B in the first embodiment, the operation used in “
本実施形態は、第1の実施形態で説明した分解能が完全である必要がない(固定の上限k より多くの管理対象が所定の状態になった場合は、それらの管理対象を識別する必要がない)事を前提とする。 In this embodiment, the resolution described in the first embodiment does not need to be complete (if more management targets than the fixed upper limit k are in a predetermined state, it is necessary to identify those management targets. Not).
乗法による「リダクション」でコード化された個別識別子から計算された集団識別子からは、例えば各個別識別子による除法により、その個別識別子が乗法の因子として含まれているか否かを判定することができる。例えば、個別識別子を「互いに素な整数」ないし「全て異なる素数」を選んでおく事で、集団識別子から個別識別子を乗法の因子として取り出すことが可能となる。 Whether or not the individual identifier is included as a factor of multiplication can be determined from the group identifier calculated from the individual identifier encoded by “reduction” by multiplication, for example, by division with each individual identifier. For example, the individual identifier can be extracted as a multiplicative factor from the group identifier by selecting “a relatively prime integer” or “all different prime numbers” as the individual identifier.
個別識別子の割当てについては、第1の実施形態で図9(b)、図12(b)、図8の(a)、(b)、(c)、(d)を用いて説明した場合と同様である。 The assignment of individual identifiers is the same as that described in the first embodiment with reference to FIGS. 9B, 12B, and 8A, 8B, 8C, and 8D. It is the same.
まず、分かりやすい例として、次の条件を満たすような整数を個別識別子として割り当てる場合を考察する(より一般的な割当て方法については後述する)。
「異なる管理対象に対応する整数は、共通の素因数を持たない。」
この条件は、次のように言い換える事もできる。
「異なる管理対象に対応する整数は、互いに素である。」
例えば、異なる管理対象に異なる素数を割り当てれば、上記の条件は満たされる。
First, as an easy-to-understand example, consider the case where an integer that satisfies the following condition is assigned as an individual identifier (a more general assignment method will be described later).
“Integers corresponding to different management targets do not have a common prime factor.”
This condition can be rephrased as follows.
“Integers corresponding to different management targets are relatively prime.”
For example, if different prime numbers are assigned to different management targets, the above condition is satisfied.
ここで、所定の状態にある管理対象には個別識別子を対応させ、そうでない管理対象に1を対応させておいて、集団識別子は乗法によるリダクション404で与える。なお、格納用の領域は任意の個別識別子k 個以下の積についてはオーバーフローしない大きさにする。例えば、大きい順にk個の個別識別子を取り、それらの積を格納可能な大きさにする。
Here, an individual identifier is made to correspond to a management object in a predetermined state, and 1 is made to correspond to a management object that is not, and the collective identifier is given by
「個別識別子が共通の素因数を持たない」という条件は、集団識別子となった積でオーバーフローが起きていない場合に、「ある管理対象の所定の事象を通知した」事が「管理対象の個別識別子が集団識別子を割り切る」事で判定可能である事を保証する。 The condition that “individual identifiers do not have a common prime factor” is that when a product that has become a group identifier has not overflowed, the fact that a “predetermined event of a certain managed object has been notified” Guarantees that it can be determined by dividing the group identifier.
このように、分解能が上限k で制限されている場合、k 個より多くの識別子に対する演算がオーバーフローする可能性を許容して、k 個以下での演算結果からは入力となった識別子を復元できる演算、例えば整数の乗法によるリダクションや整数あるいは浮動小数点数の加算を利用する。なお「オーバーフロー」は、通常の計算での発生時は計算手順の誤りを示す場合が多いが、本実施形態では、「複数の管理対象の状態を一括して受け取る情報通知経路」の一つとして、「オーバーフロー」を積極的に活用していることになる。 In this way, when the resolution is limited by the upper limit k, it is possible to overflow the calculation for more than k identifiers, and the identifiers that were input can be restored from the operation results of k or less. Uses arithmetic, for example, reduction by integer multiplication or addition of integers or floating point numbers. Note that “overflow” often indicates an error in the calculation procedure when it occurs in normal calculation. In this embodiment, “overflow” is one of “information notification paths for collectively receiving a plurality of management target states”. , "Overflow" is actively used.
本実施形態は、分解能に関する制約条件がある(完全である必要がない)事を利用して、同じ大きさの領域で、第1から第4の実施形態の場合に比べて、多くの管理対象に対応する(あるいは同数の管理対象に対して、より小さい領域で対応する)。 In the present embodiment, by utilizing the fact that there is a constraint on resolution (it is not necessary to be complete), in the same size area, compared with the case of the first to fourth embodiments, more management targets are available. (Or correspond to the same number of management targets with a smaller area).
例えば、k = 2 、管理対象数が54 として、各管理対象に小さい順に素数を対応させた場合、53番目の素数は241,54番目の素数は251 で、241*251<(256*256)-1=2^16-1(「^」は冪乗を表す)に注意すると、格納用領域は、16ビットで十分である。k=1とすると、16 bit領域で2^16-1より小さい素数の個数=6542個の管理対象に対応できる。 For example, if k = 2 and the number of management targets is 54, and the prime numbers correspond to the management targets in ascending order, the 53rd prime number is 241, the 54th prime number is 251 and 241 * 251 <(256 * 256) Note that -1 = 2 ^ 16-1 ("^" indicates power), and 16 bits are enough for the storage area. If k = 1, the number of prime numbers smaller than 2 ^ 16-1 in the 16-bit area = 6542 management targets can be handled.
第1から第3の実施形態では、16bitで対応可能な管理対象は16個である。16<54<6542であるのは、kが小さくなるほど「複数の対象についての情報の、より少ない一部」しか送信する必要がないためである。例えば「2個以上の管理対象が所定の状態にある」事と「1個だけが所定の状態にある」事を区別する必要もないとして、「分解能がk=1」よりも条件を緩和すると、さらに多くの管理対象に対応できる事になる。例えば16 bit領域に格納できる0以外の任意の整数を個別識別子として、所定の状態にある管理対象は個別識別子、そうでない管理対象には0(ゼロ)を対応させて「最大値」でのリダクションを実行する事で、16bit領域で2^16-1=65535個の管理対象に対応できる。 In the first to third embodiments, 16 management targets can be handled with 16 bits. The reason why 16 <54 <6542 is that it is necessary to transmit only “a smaller part of the information about a plurality of objects” as k decreases. For example, if it is not necessary to distinguish between “two or more management targets are in a predetermined state” and “only one is in a predetermined state”, the condition is relaxed rather than “resolution is k = 1” It will be possible to deal with more management targets. For example, any integer other than 0 that can be stored in a 16-bit area is used as an individual identifier. A management target in a predetermined state is associated with an individual identifier, and other management targets are associated with 0 (zero). By executing, 2 ^ 16-1 = 65535 management targets can be handled in the 16bit area.
図30は、第5の実施形態における送信側ノードにおける識別子集約機構401(図4)の処理の例を示すフローチャートである。図30は、第1の実施形態に係る図5のフローチャートにおいて、リダクション404の演算が加法から乗法に置き換えられたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子集約機構401の処理が開始されると、図7の送信起点ノード701のCPU701−1または中継ノードとして機能する受信・中継ノード702のCPU702−1が実行する。入力パラメタ1または2等の作業領域は、送信起点ノード701のメモリ701−2または受信・中継ノード702のメモリ702−2に記憶される。
FIG. 30 is a flowchart illustrating an example of processing of the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node according to the fifth embodiment. FIG. 30 is obtained by replacing the calculation of the
まず、自ノードが通信の起点ノードであるか否かが判定される(ステップS3001)。 First, it is determined whether or not the own node is a communication origin node (step S3001).
ステップS3001の判定がNOであるならば、受信済みの値を格納する入力パラメタ1に、受信済みの値(集団識別子)が格納される(ステップS3002)。
If the determination in step S3001 is NO, the received value (group identifier) is stored in the
ステップS3001の判定がYESならば、受信済みの値は無いため、入力パラメタ1に、乗法演算の単位元の値1が格納される(ステップS3003)。自ノードが通信の起点ノード(図7の送信起点ノード701)であって、受信済みの値がなければ、入力パラメタ1に単位元が格納されることにより、入力パラメタ1がリダクション404の演算に影響を与えないようにされる。
If the determination in step S3001 is YES, since there is no received value, the
次に、自ノードが管理する管理対象において通知すべき条件が成立したか否かが判定される(ステップS3004)。 Next, it is determined whether or not a condition to be notified is established in the management target managed by the node (step S3004).
ステップS3004の判定がYESならば、自ノードの状態を格納する入力パラメタ2に、自ノードにおける管理対象(または自ノードそのもの)に対応する個別識別子が格納される(ステップS3005)。
If the determination in step S3004 is YES, the individual identifier corresponding to the management target in the own node (or the own node itself) is stored in the
ステップS3004の判定がNOならば、入力パラメタ2に、単位元の値1が格納される(ステップS3006)。自ノードが管理する管理対象において通知すべき条件が成立していなければ、入力パラメタ2に単位元が格納されることにより、入力パラメタ2がリダクション404の演算に影響を与えないようにされる。
If the determination in step S3004 is NO, the
その後、リダクション404に使用する乗法演算が、入力パラメタ1および入力パラメタ2に対して実行される(ステップS3007)。
Thereafter, the multiplicative operation used for the
最後に、ステップS3007での演算結果が、次の転送先への送信内容である集団識別子とされて出力される(ステップS3708)。その後、図30のフローチャートで例示される送信側ノードにおける識別子集約機構401の処理が終了する。
Finally, the calculation result in step S3007 is output as a collective identifier that is the content of transmission to the next transfer destination (step S3708). Thereafter, the processing of the
図31は、第5の実施形態における受信側ノードにおける識別子分析機構402(図4)の処理の例を示すフローチャートである。図31は、第1の実施形態に係る図6のフローチャートにおいて、リダクション404の演算が加法から乗法に置き換えられたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子分析機構402の処理が開始されると、受信側ノードとして機能する図7の受信・中継ノード702のCPU702−1が実行する。また、作業領域WやX等は、受信・中継ノード702のメモリ702−2に記憶される。
FIG. 31 is a flowchart illustrating an example of processing of the identifier analysis mechanism 402 (FIG. 4) in the receiving side node according to the fifth embodiment. FIG. 31 is obtained by replacing the calculation of the
まず、ノード間のリダクション404における集団識別子が受信される(ステップS3101)。
First, the collective identifier in the
次に、集団識別子においてオーバーフロー(図中「overflow」)が発生しているか否かが判定される(ステップS3102)。ステップS3102の判定がYESならば、受信処理は実質的に何も行われずに、図31で例示される受信側ノードにおける識別子分析機構402の処理が終了する。
Next, it is determined whether or not an overflow (“overflow” in the figure) has occurred in the group identifier (step S3102). If the determination in step S3102 is YES, substantially no reception process is performed, and the process of the
次に、ステップS3102の判定がNOならば、集団識別子が作業領域Wに格納される(ステップS3103)。 Next, if the determination in step S3102 is NO, the group identifier is stored in the work area W (step S3103).
次に、作業領域Wが示す値がリダクション404の乗法演算における単位元の値1となったか否かが判定される(ステップS3104)。
Next, it is determined whether or not the value indicated by the work area W has become the
ステップS3104の判定がNOならば、集団識別子から個別識別子が1つ特定され、その結果が作業領域Xに格納される(ステップS3105)。具体的には、集団識別子が各個別識別子で割り切れるかを判定して、割り切れた場合、その個別識別子の表す対象で所定の事象が発生したと判定して、その個別識別子を特定する。 If the determination in step S3104 is NO, one individual identifier is specified from the group identifier, and the result is stored in the work area X (step S3105). Specifically, it is determined whether the group identifier is divisible by each individual identifier. If the group identifier is divisible, it is determined that a predetermined event has occurred in the target represented by the individual identifier, and the individual identifier is specified.
その後、ステップS3105で作業領域Xに格納された個別識別子に対応する管理対象が処理(特定)される(ステップS3106)。この特定の具体的な手法は、第1の実施形態に係る図6のステップS605の場合と同様である。 Thereafter, the management target corresponding to the individual identifier stored in the work area X in step S3105 is processed (specified) (step S3106). This specific specific method is the same as that in step S605 of FIG. 6 according to the first embodiment.
次に、リダクション404に使用した乗法演算の逆演算すなわち除法演算で、ステップS3105において作業領域Wから特定され作業領域Xに格納された個別識別子が取り外される(ステップS3107)。すなわち、W/Xという除法演算が実行され、その結果が再び作業領域Wに格納される。その後、ステップS3104の処理に戻って、上述のステップS3104からステップS3107までの処理が繰り返し実行される。
Next, the individual identifier stored in the work area X identified from the work area W in step S3105 is removed by the inverse operation of the multiplication operation used for the
作業領域Wが示す値がリダクション404の乗法演算における単位元の値1となった結果、ステップS3104の判定がYESになると、図31のフローチャートで例示される受信側ノードにおける識別子分析機構402の処理が終了する。集団識別子は、単位元=1(図30のステップS3003参照)の状態から乗法演算によって個別識別子が順次追加されてゆく(図30のステップS3007)。従って、図31のフローチャートでは、乗法の逆演算である除法演算(ステップS3107)によって個別識別子が順次取り去られてゆき、最後は単位元=1にもどる。よって、ステップS3104の判定がYESになると、図31のフローチャートの処理が終了する。
As a result of the value indicated by the work area W being the
以上の第5の実施形態の動作において、「各ノードの識別子が互いに素」という条件と「整数論」という分野の数学でよく知られた「素因数分解の一意性」という事実により、判定の正しさが保証される。 In the operation of the fifth embodiment described above, due to the condition that “the identifiers of the nodes are relatively prime” and the fact that “uniqueness of prime factorization”, which is well known in mathematics in the field of “number theory”, is correct. Guarantee is guaranteed.
ここまで、個別識別子は互いに素ないし全て素数としたが、より一般的な条件で個別識別子の割当てが可能な事を説明する(「互いに素」あるいは「素数」としたのは、説明を簡略にするためである)。 Up to this point, the individual identifiers are relatively prime or all prime numbers. However, it is explained that the individual identifiers can be assigned under more general conditions ("relatively prime" or "prime number" is a simple explanation. To do that).
すなわち、任意の個別識別子a と集団識別子b に対し「a がb を割り切る」事と「a がb を計算する乗算の過程で使われた」事が互いに他の必要十分条件になればよい。後者が前者の十分条件である事は明らかなので、後者が前者の必要条件であればよい。 That is, it is only necessary that “a divides b” and “a was used in the process of multiplication to calculate b” for any individual identifier a and group identifier b. Since it is clear that the latter is a sufficient condition of the former, the latter may be a necessary condition of the former.
複数の個別識別子a1 とa2 が素因数p を共有しても、a1 がp を1つだけ、a2 がp を2つ含む(つまり、p^2 で割り切れ、p^3 では割り切れない)とし、他には素因数p を持つ個別識別子がないとする。素因数p がb に何回含まれるかによりa1 とa2 がb を計算する過程で使われたかどうかは、図32の表のように決まるので、後者が前者の必要条件となる。 Even if multiple individual identifiers a1 and a2 share a prime factor p, a1 contains only one p, a2 contains two p (ie, divisible by p ^ 2 and not divisible by p ^ 3), etc. Suppose that there is no individual identifier with prime factor p. Whether or not a1 and a2 are used in the process of calculating b depending on how many times the prime factor p is included in b is determined as shown in the table of FIG. 32, the latter is a necessary condition for the former.
同様に、複数の個別識別子に共有されている素因数に対し、それぞれの個別識別子が素因数を含む個数が「任意の個別識別子の積の組み合わせの積を含む集団識別子から個別識別子を決定可能な数になっていれば、個別識別子が「互いに素」である必要はない。 Similarly, for a prime factor shared by a plurality of individual identifiers, the number of each individual identifier including a prime factor is “a number that can determine an individual identifier from a group identifier including a product of combinations of products of arbitrary individual identifiers”. If so, the individual identifiers do not have to be “disjoint”.
例えば、素因数p に対して整数q の冪からなる集合Q={q^a|a=0,1,2,...}があって、「素因数p を共有する個別識別子の各々がp を含む回数」が、互いに異なるQ の要素であるならば、「集団識別子がp を含む回数」をq 進法で表したときの0 でない桁の任意の1つをa として、「素因数p をq^a回含む個別識別子」が、集団識別子の生成因子であると判定できる。 For example, for a prime factor p, there is a set Q = {q ^ a | a = 0,1,2, ...} consisting of 冪 of integer q, and `` each individual identifier sharing a prime factor p is assigned p If the "number of times included" is an element of Q different from each other, any one of the non-zero digits when "the number of times the group identifier contains p" is expressed in q notation as a, and "the prime factor p is q It can be determined that the “unique identifier including ^ a times” is a group identifier generation factor.
図33から図36は、図31のステップS3105の個別識別子を特定する処理の、上述の理論に基づく詳細処理例を示すフローチャートである。 FIGS. 33 to 36 are flowcharts showing detailed processing examples based on the above-described theory of the processing for specifying the individual identifier in step S3105 of FIG.
まず、図33のフローチャートの処理について説明する。このフローチャートは、集団識別子からの素数冪の個別識別子成分の抽出の機能(A)を実現するものである。 First, the processing of the flowchart of FIG. 33 will be described. This flowchart implements the function (A) for extracting the individual identifier component of the prime number from the group identifier.
作業領域Wに、受信された集団識別子の成分が格納される(ステップS3301)。
次に、作業領域L に、個別識別子の成分リストが格納される(ステップS3302)。
The component of the received group identifier is stored in the work area W (step S3301).
Next, a component list of individual identifiers is stored in the work area L 1 (step S3302).
次に、作業領域Lの先頭位置が、作業領域Xに格納される(ステップS3303)。
次に、ステップS3305で作業領域Xの値が作業領域Lの末端位置になったと判定されるまで、ステップS3307で作業領域L内の次の位置が順次作業領域Xに格納されながら、ステップS3306とS3307の処理が繰返し実行される。
Next, the start position of the work area L is stored in the work area X (step S3303).
Next, until it is determined in step S3305 that the value of the work area X has reached the end position of the work area L, the next position in the work area L is sequentially stored in the work area X in step S3307. The process of S3307 is repeatedly executed.
すなわち、ステップS3306では、作業領域L内の作業領域Xが示す位置の個別識別子の成分が、作業領域Qに格納される。 That is, the component of the individual identifier at the position indicated by the work area X in the work area L is stored in the work area Q in step S3306.
そして、ステップS3307では、作業領域Qの値が作業領域Wの値を割り切るか否かが判定される。 In step S3307, it is determined whether the value of the work area Q is less than the value of the work area W.
ステップS3307の判定がYESであれば、処理を終了する。
ステップS3307の判定がNOであれば、ステップS3308で作業領域Xが示す作業領域L内の位置が更新されて、ステップS3305の処理に戻る。
If the determination in step S3307 is YES, the process ends.
If the determination in step S3307 is NO, the position in the work area L indicated by the work area X is updated in step S3308, and the process returns to step S3305.
以上の繰返し動作の結果、作業領域Xの値が作業領域Lの末端位置になりステップS3305の判定がYESとなると、処理を終了する。 As a result of the above repeated operation, when the value of the work area X becomes the end position of the work area L and the determination in step S3305 is YES, the process is terminated.
上記フローチャートの処理において、作業領域Lのリストの探索結果は作業領域Qの値で区別できる。作業領域Qの値が0(ゼロ)でないということは、個別識別子が作業領域Lのリスト内で見つかったということを示している。 In the process of the flowchart, the search result of the list of work areas L can be distinguished by the value of the work area Q. That the value of the work area Q is not 0 (zero) indicates that the individual identifier is found in the list of the work areas L.
次に、図34のフローチャートの処理について説明する。このフローチャートは、集団識別子からの素数冪の個別識別子成分の抽出の機能(B)を実現するものである。 Next, the process of the flowchart of FIG. 34 will be described. This flowchart implements the function (B) for extracting the individual identifier component of the prime number from the group identifier.
作業領域Wに、受信された集団識別子の成分が格納される(ステップS3401)。
次に、作業領域pに、作業領域Wの素因数の1つが格納される(ステップS3402)。
The component of the received group identifier is stored in the work area W (step S3401).
Next, one of the prime factors of the work area W is stored in the work area p (step S3402).
次に、作業領域pの値が格納される(ステップS3403)。
次に、作業領域fに、値1が格納される(ステップS3404)。
Next, the value of the work area p is stored (step S3403).
Next, the
次に、作業領域Wの値を作業領域pの値で除算した結果が、作業領域Vに格納される(ステップS3405)。 Next, the result of dividing the value of the work area W by the value of the work area p is stored in the work area V (step S3405).
次に、ステップS3406で作業領域pの値が作業領域Vの値を割り切らなくなったと判定されるまで、ステップS3407からS3409の処理が繰り返し実行される。 Next, the processing of steps S3407 to S3409 is repeatedly executed until it is determined in step S3406 that the value of the work area p is no longer divisible by the value of the work area V.
すなわち、作業領域pの値が作業領域Vの値を割り切った結果ステップS3406の判定がYESになると、ステップS3407で、作業領域Vの値を作業領域pの値で除算した結果が、作業領域Vに格納される。 That is, if the result of dividing the work area p by the value of the work area V is YES in step S3406, the result of dividing the value of the work area V by the value of the work area p is obtained in step S3407. Stored in
次に、ステップS3408で、作業領域pの値に作業領域qの値を乗算した結果が作業領域qに格納される。この作業領域qの値は、作業領域Wに含まれる作業領域pの素数についての最大冪因子である。つまり、W/qが素数pの因子を含まず、fを指数として、q=p^fである。 In step S3408, the result of multiplying the value of the work area p by the value of the work area q is stored in the work area q. The value of the work area q is the maximum power factor for the prime number of the work area p included in the work area W. That is, W / q does not include a factor of a prime number p, and q = p ^ f where f is an exponent.
そして、ステップS3409で、作業領域fの値が+1される。
以上の繰返し処理の結果、作業領域pの値が作業領域Vの値を割り切らなくなった結果ステップS3407の判定がNOになると、処理を終了する。
In step S3409, the value of the work area f is incremented by one.
As a result of the above iterative process, when the value of the work area p is not divisible by the value of the work area V, the process ends when the determination in step S3407 is NO.
次に、図35のフローチャートの処理について説明する。このフローチャートは、図34のフローチャートに引き続いて実行され、集団識別子からの素数冪の個別識別子成分の抽出の機能(C)を実現するものである。 Next, the processing of the flowchart of FIG. 35 will be described. This flowchart is executed subsequent to the flowchart of FIG. 34, and realizes the function (C) of extracting the individual identifier component of the prime number from the group identifier.
まず、作業領域gに図34における作業領域fの値が格納される(ステップS3501)。 First, the value of the work area f in FIG. 34 is stored in the work area g (step S3501).
次に、個別識別子になる素数冪因子の値が作業領域Xに格納される(ステップS3502)。 Next, the value of the prime power factor that becomes the individual identifier is stored in the work area X (step S3502).
次に、作業領域gの値であるか否かが判定される(ステップS3503)。
ステップS3503の判定がYESであれば、ステップS3502に戻って、個別識別子になる次の素数冪因子の値が作業領域Xに格納される。
Next, it is determined whether or not the value is the work area g (step S3503).
If the determination in step S3503 is YES, the process returns to step S3502, and the value of the next prime power factor that becomes the individual identifier is stored in the work area X.
ステップS3503の判定がNOになると、処理を終了する。
上述の図35のフローチャートで示される処理の代わりに、LZC(g)(gへのleading zero count)をdとして MSBから数えた(d+1) ビット目を0にする手順が実行されてもよい。
If the determination in step S3503 is NO, the process ends.
Instead of the process shown in the flowchart of FIG. 35 above, even if a procedure is executed in which LZC (g) (leading zero count to g) is d and the (d + 1) -th bit counted from the MSB is 0 Good.
次に、図36のフローチャートの処理について説明する。このフローチャートは、集団識別子からの素数冪の個別識別子成分の抽出の機能(D)を実現するものである。 Next, the process of the flowchart of FIG. 36 will be described. This flowchart implements the function (D) of extracting the individual identifier component of the prime number from the group identifier.
まず、TZC(g)の値が作業領域cに格納される(ステップS3601)。ここで、TZC(g)は作業領域gの値へのtrailing zero count(g内でLSB(Least Siginificant Bit)から数えた)連続してbitが0の数)である。作業領域gは、図35のフローチャートでセットされたものである。TZC(g)の代わりに、LZC(g)(leading zero cunt)が用いられてもよい。 First, the value of TZC (g) is stored in the work area c (step S3601). Here, TZC (g) is a trailing zero count (counted from LSB (Least Siginificant Bit) within g) continuously to the value of the work area g). The work area g is set in the flowchart of FIG. Instead of TZC (g), LZC (g) (leading zero cunt) may be used.
次に、p^(c+1)(素因数pを作業領域cの値に+1して得られる値で冪乗した値)が作業領域Xに格納される(ステップS3602)。 Next, p ^ (c + 1) (a value obtained by raising the prime factor p to a value obtained by adding +1 to the value of the work area c) is stored in the work area X (step S3602).
そして、作業領域gにおいて、LSBから数えて(c+1)ビット目の値が0(ゼロ)に変更される(ステップS3603)。 In the work area g, the value of the (c + 1) -th bit counted from the LSB is changed to 0 (zero) (step S3603).
ここで述べた一般化された個別識別子の取り方の中で、領域の大きさを固定にして分解能kを大きくする際は、上記q を2 とした場合の{全ての素数ないし素数の冪で指数が2の冪である数}、記号で書けば、{p^(2^a)|pは素数、a=0,1,2,...}を個別識別子の成分の集合に使う事が有利である。第1の実施形態の説明した図9(b)および図15の(C)、(D)は、この場合を例示している。 In the generalized individual identifier method described here, when the resolution k is increased with the size of the region fixed, {when all the prime numbers or prime numbers are If the number is a power of 2 with a power of 2}, the symbol {p ^ (2 ^ a) | p is a prime number and a = 0,1,2, ...} is used for the set of components of the individual identifier Is advantageous. FIG. 9B and FIG. 15C and FIG. 15D described in the first embodiment illustrate this case.
一方、分解能k を固定し、k より多くの管理対象が所定の状態になった場合、なるべく早くオーバーフローが起こるようにするには「k 個までの積ではオーバーフローしない範囲の数」の中から、素数の冪以外の数も含めて大きい順に、必要な個数、個別識別子の集合に含めていく事が有利である。 On the other hand, if the resolution k is fixed, and more than k management targets are in a given state, the overflow will occur as soon as possible. It is advantageous to include the necessary number in the set of individual identifiers in ascending order including the number other than the prime number.
以上のようにして、第5の実施形態によれば、必要な分解能k が比較的小さい場合、第1から第4の実施形態に比べ、メモリ領域を削減することが可能となる。 As described above, according to the fifth embodiment, when the required resolution k is relatively small, it is possible to reduce the memory area compared to the first to fourth embodiments.
<第6の実施形態>
次に、第6の実施形態について説明する。
<Sixth Embodiment>
Next, a sixth embodiment will be described.
本実施形態は、第5の実施形態の発展形である。本実施形態での個別識別子の割当ては、第1の実施形態の説明において示した図15の(e)および(f)に従う。 This embodiment is a development of the fifth embodiment. The assignment of individual identifiers in the present embodiment follows (e) and (f) of FIG. 15 shown in the description of the first embodiment.
本実施形態では、第5の実施形態と同一のシステム構成で各ノードに複数の整数からなる順序付けられた組を対応させる。i,j をノード番号とし各ノードにm 個の数の組を対応させる。 In this embodiment, an ordered set of a plurality of integers is associated with each node in the same system configuration as in the fifth embodiment. Let i, j be the node number, and associate m number pairs with each node.
すなわち、以下に示されるような、m 個の整数を要素とするベクトルを、管理対象の個別識別子とする。
Z(i) = (zi1, zi2, ..., zim)
Z(j) = (zj1, zj2, ..., zjm)
That is, a vector having m integers as elements as shown below is set as an individual identifier to be managed.
Z (i) = (zi1, zi2, ..., zim)
Z (j) = (zj1, zj2, ..., zjm)
i≠j ならば、m 個の組の中で、少なくとも一つの場所の数が異なるとする。すなわち、「∨」で、論理式としてのor を表すと、
i ≠j ⇔ (zi1 ≠ zj1 ∨ zi1 ≠ zj1 ∨ ... ∨ zim ≠ zjm)
である。
If i ≠ j, the number of at least one place in the m sets is different. In other words, “∨” represents or as a logical expression.
i ≠ j ⇔ (zi1 ≠ zj1 ∨ zi1 ≠ zj1 ∨ ... ∨ zim ≠ zjm)
It is.
ここで、ベクトルの各成分毎に、使われる整数の集合は同じであっても異なっていてもよいが、それぞれの集合毎に、異なる要素は互いに素であるとする。すなわち、
S1 = {ベクトルの第1成分用の整数の集合}
...
Sm = {ベクトルの第m成分用の整数の集合}
とする、S1, ..., Sm は、全て異なる2要素が互いに素であるような整数の集合である。
全ての成分が1 の場合を除いて、成分には1 が現れてもよい。
Here, the set of integers used may be the same or different for each component of the vector, but the different elements for each set are disjoint. That is,
S1 = {a set of integers for the first component of the vector}
...
Sm = {set of integers for the mth component of the vector}
, S1, ..., Sm is a set of integers such that two different elements are all prime.
Except for the case where all components are 1, 1 may appear in the components.
以下の説明において、一般にx 個の互いに素な整数の集合に現れる素因数の数は、x 以上であり、素因数の数がx 個になるのは、x 個の数全てが素数である場合に限る。 In the following description, the number of prime factors that generally appear in a set of x disjoint integers is greater than or equal to x, and the number of prime factors is x only if all the x numbers are prime. .
また、第5および第6の実施形態において、ノードの識別のための因数分解は、事前に定めた数の集合の要素により、reduction の結果が割れるかを順次試行していく処理に他ならない。 In the fifth and sixth embodiments, the factorization for node identification is nothing but a process of sequentially trying to determine whether the reduction result is broken by a predetermined number of sets of elements.
本実施形態は単一の数を使って管理対象を識別する第5の実施形態に比べ、使用するフィールド数は増加するが同一管理対象数のシステムに対して、比較的少数かつ大きさも小さい数からなる集合でノードの識別が可能になる。よって、各要素の因数分解を高速に行う事が可能になり、ノードの特定の処理時間が第5の実施形態に比べて、短縮される。 Compared with the fifth embodiment in which a single number is used to identify a management target, this embodiment increases the number of fields to be used, but is a relatively small number and a small size for a system with the same number of management targets. Nodes can be identified by a set of Therefore, factorization of each element can be performed at high speed, and the specific processing time of the node is shortened as compared with the fifth embodiment.
第5の実施形態で使用する数の集合S の要素数はノード数N 以上である必要があるが、本実施形態で使用する集合S1 ... Sm の要素数はN/m を越える最小の自然数でよい。どちらの実施形態でも、必要な除算の最大回数および平均回数は等しい。なぜならば、本実施形態では、各成分の因数分解をm 回繰り返すことになるが、各成分に必要な除算回数は1/m になるためである。 The number of elements of the set S used in the fifth embodiment needs to be greater than or equal to the number N of nodes, but the number of elements in the set S1... Sm used in this embodiment is the smallest exceeding N / m. A natural number is sufficient. In both embodiments, the maximum and average number of divisions required are equal. This is because, in this embodiment, factorization of each component is repeated m times, but the number of divisions required for each component is 1 / m.
なお、ここまでの個別識別子の整数を互いに素としているが、第5の実施形態と同様「指数自体が素数冪であるような素数冪」の数を素因数に含むような、より一般的な割当て方法が可能である(ここまで「互いに素」としたのは、説明を簡略にするためである)。 Although the integers of the individual identifiers so far are relatively prime, as in the fifth embodiment, a more general allocation in which the prime factor includes the number of “prime number よ う な whose index itself is a prime number 冪” A method is possible (the term “disjoint” so far is for the sake of simplicity).
ここで、これから後に説明他の実施形態と共通する基本原理について言及しておく。
第5および第6の実施形態は共に、「自然数についての素因数分解の一意性」という共通の原理に基づく。相違点は、「各ノードに割り当てる識別子が単一の数か、複数の数の組か」のみである。
Here, reference will be made to the basic principle common to other embodiments described later.
Both the fifth and sixth embodiments are based on the common principle of “uniqueness of prime factorization for natural numbers”. The only difference is “whether the identifier assigned to each node is a single number or a set of a plurality of numbers”.
0 と負の数を含めた(通常の意味の)整数全体についても、0 を分解の対象から除外して、「+1,-1は素因数と見なさない(言い換えれば、負の数の積での符号の各因数への付き方の違いでは異なる分解と見なさない)」事に注意すると、素因数分解の一意性が成立する。 Even for whole integers (in the usual sense) including zero and negative numbers, 0 is excluded from decomposition and “+ 1, -1 is not considered a prime factor (in other words, it is a product of negative numbers). Note that the difference in how the sign of each is attached to each factor is not considered to be a different decomposition).
一般的な集合で定義された「乗算」で、整数の場合と同様な意味での「一意的」な「素因数分解」が可能な場合、その集合での「素数」に関する条件を第5および第6の実施形態と同様に設定して、識別子をコード化する事ができる。(一般に、1や-1のような、「逆数も整数である数」は「素因数」には含めない)。 If “unique” “prime factorization” in the same meaning as in the case of integers is possible with “multiplication” defined in a general set, the conditions for “prime numbers” in that set are the fifth and In the same manner as in the sixth embodiment, the identifier can be encoded. (In general, "numbers whose reciprocals are integers" such as 1 and -1 are not included in "prime factors").
整数の場合と同様な意味で「一意的」な「素因数分解」が可能な集合の例としては、任意の「体」の要素を係数とする多項式のなす集合がある。多項式の集合において「既約多項式」が「素数」に相当する。 An example of a set capable of “unique” “prime factorization” in the same meaning as in the case of an integer is a set made up of polynomials having coefficients of arbitrary “field” elements. In the set of polynomials, “irreducible polynomial” corresponds to “prime number”.
ここで、「体」とは、四則演算が定義され、加法、乗法共に交換法則と結合法則を満たし、0, 1 を含み、0 以外の全要素に対し「掛けて1 になる数」である「逆元」が存在する集合を指す。 Here, the “field” is a number in which four arithmetic operations are defined, both addition and multiplication satisfy the exchange law and the coupling law, include 0 and 1, and all elements other than 0 are “multiplied to be 1”. It refers to the set where “inverse element” exists.
「体」としては「有理数全体」、「実数全体」、あるいは「複素数全体」、有限体GF(q)(ただしq は集合としての要素数)などがある。なお、「有理数全体」、「実数全体」、あるいは「複素数全体」の集合が「体」である事を強調する際「有理数体」、「実数体」、あるいは「複素数体」と呼ぶ。 “Field” includes “whole rational number”, “whole real number”, or “whole complex number”, and finite field GF (q) (where q is the number of elements as a set). In order to emphasize that the set of “whole rational numbers”, “whole real numbers”, or “whole complex numbers” is “field”, it is called “rational number field”, “real number field”, or “complex number field”.
「素因数分解の一意性」の成り立つ乗法を持つ集合は、整数や「体」係数の多項式以外にもある。そのような集合の一種である「代数的整数」を利用した実施形態については、第7の実施形態の説明で後述する。 There are other sets with multiplicatives that hold “uniqueness of prime factorization” besides polynomials with integers and “field” coefficients. An embodiment using “algebraic integer” which is a kind of such a set will be described later in the description of the seventh embodiment.
図37は、上述の理論に基づく、第6の実施形態における送信側ノードにおける識別子集約機構401(図4)の処理の例を示すフローチャートである。このフローチャートにおける処理の基本的な考え方は、前述した図5(第1の実施形態)、図17(第2の実施形態)、図30(第5の実施形態)などと同様である。図37は、第1の実施形態に係る図5のフローチャートにおいて、リダクション404の演算が加法から乗法に置き換えられ、かつ上述の理論に基づいて個別識別子および集団識別子がベクトル化されたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子集約機構401の処理が開始されると、図7の送信起点ノード701のCPU701−1または中継ノードとして機能する受信・中継ノード702のCPU702−1が実行する。入力ベクトル1または2等の作業領域は、送信起点ノード701のメモリ701−2または受信・中継ノード702のメモリ702−2に記憶される。
FIG. 37 is a flowchart showing an example of processing of the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node in the sixth embodiment based on the above theory. The basic concept of the processing in this flowchart is the same as that of FIG. 5 (first embodiment), FIG. 17 (second embodiment), FIG. 30 (fifth embodiment), and the like. FIG. 37 is obtained by replacing the operation of
本実施例での識別子は整数の順序付けられた集合である。ここでは、「順序付けられた集合」を「ベクトル」と呼び、「順序つけられた集合」の要素である整数を成分と呼ぶ。識別子がベクトルである事を強調する際は、「個別識別子ベクトル」、「集団識別子ベクトル」、さらに両者を合わせ「識別子ベクトル」と呼ぶ。識別子ベクトル間の演算は、対応する位置の成分間の演算で定める。 The identifier in this example is an ordered set of integers. Here, an “ordered set” is called a “vector”, and an integer that is an element of the “ordered set” is called a component. When emphasizing that the identifier is a vector, the “individual identifier vector”, the “collective identifier vector”, and the combination thereof are called “identifier vector”. The calculation between identifier vectors is determined by the calculation between components at corresponding positions.
図37において、まず、自ノードが通信の起点ノードであるか否かが判定される(ステップS3701)。 In FIG. 37, first, it is determined whether or not the own node is a communication origin node (step S3701).
ステップS3701の判定がNOであるならば、受信済みの値を格納する入力ベクトル1に、受信済みの集団識別子ベクトルが格納される(ステップS3702)。
If the determination in step S3701 is NO, the received group identifier vector is stored in the
ステップS3701の判定がYESならば、受信済みの値は無いため、入力ベクトル1の全成分に、乗法演算の単位元の値1が格納される(ステップS3703)。
If the determination in step S3701 is YES, since no value has been received, the
次に、自ノードが管理する管理対象において通知すべき条件が成立したか否かが判定される(ステップS3704)。 Next, it is determined whether or not a condition to be notified is established in the management target managed by the own node (step S3704).
ステップS3704の判定がYESならば、自ノードの状態を格納する入力ベクトル2に、自ノードにおける管理対象(または自ノードそのもの)に対応する個別識別子ベクトルが格納される(ステップS3705)。
If the determination in step S3704 is YES, the individual identifier vector corresponding to the management target in the own node (or the own node itself) is stored in the
ステップS3704の判定がNOならば、入力ベクトル2の全成分に、単位元の値1が格納される(ステップS3706)。
If the determination in step S3704 is NO,
その後、入力ベクトル1,2の全成分の間で、リダクション404に使用する乗法演算が実行される(ステップS3707)。
Thereafter, a multiplicative operation used for the
最後に、ステップS3707での演算結果が、次の転送先への送信内容である集団識別子ベクトルとされて出力される(ステップS3708)。その後、図37のフローチャートで例示される送信側ノードにおける識別子集約機構401の処理が終了する。
Finally, the calculation result in step S3707 is output as a collective identifier vector that is the content of transmission to the next transfer destination (step S3708). Thereafter, the processing of the
図38は、上述の理論に基づく、第6の実施形態における受信側ノードにおける識別子分析機構402(図4)の処理の例を示すフローチャートである。このフローチャートにおける処理の基本的な考え方は、前述した図6(第1の実施形態)、図18(第2の実施形態)、図31(第5の実施形態)などと同様である。図38は、第1の実施形態に係る図5のフローチャートにおいて、リダクション404の演算が加法から乗法に置き換えられ、かつ上述の理論に基づいて個別識別子および集団識別子がベクトル化されたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子分析機構402の処理が開始されると、受信側ノードとして機能する図7の受信・中継ノード702のCPU702−1が実行する。また、作業領域ベクトルWやX等は、受信・中継ノード702のメモリ702−2に記憶される。
FIG. 38 is a flowchart showing an example of processing of the identifier analysis mechanism 402 (FIG. 4) in the receiving side node in the sixth embodiment based on the above theory. The basic concept of the processing in this flowchart is the same as that in FIG. 6 (first embodiment), FIG. 18 (second embodiment), FIG. 31 (fifth embodiment), and the like. FIG. 38 is obtained by replacing the operation of
まず、ノード間のリダクション404における集団識別子ベクトルが受信される(ステップS3801)。
First, the collective identifier vector in the
次に、集団識別子ベクトルにおいてオーバーフロー(図中「overflow」)が発生しているか否かが判定される(ステップS3802)。ステップS3802の判定がYESならば、受信処理は実質的に何も行われずに、図38で例示される受信側ノードにおける識別子分析機構402の処理が終了する。
Next, it is determined whether or not an overflow (“overflow” in the figure) has occurred in the collective identifier vector (step S3802). If the determination in step S3802 is YES, the reception process is not substantially performed, and the process of the
次に、ステップS3802の判定がNOならば、集団識別子ベクトルが作業領域ベクトルWに格納される(ステップS3803)。 Next, if the determination in step S3802 is NO, the group identifier vector is stored in the work area vector W (step S3803).
次に、作業領域ベクトルWの全成分値がリダクション404の乗法演算における単位元の値1となったか否かが判定される(ステップS3804)。
Next, it is determined whether or not all the component values of the work area vector W have become the
ステップS3804の判定がNOならば、集団識別子ベクトルから個別識別子ベクトルが1つ特定され、その結果が作業領域ベクトルXに格納される(ステップS3805)。 If the determination in step S3804 is NO, one individual identifier vector is specified from the group identifier vector, and the result is stored in the work area vector X (step S3805).
その後、ステップS3805で作業領域ベクトルXに格納された個別識別子ベクトルに対応する管理対象が処理(特定)される(ステップS3806)。 Thereafter, the management target corresponding to the individual identifier vector stored in the work area vector X in step S3805 is processed (specified) (step S3806).
次に、リダクション404に使用した乗法演算の逆演算すなわち除法演算が作業領域ベクトルWと作業領域ベクトルXの各成分に適用され、ステップS3805において作業領域ベクトルWから特定され作業領域ベクトルXに格納された個別識別子が取り外される(ステップS3807)。その後、ステップS3804の処理に戻って、上述のステップS3804からステップS3807までの処理が繰り返し実行される。
Next, the inverse operation of the multiplication operation used for the
ステップS3804の判定がYESになると、図38のフローチャートで例示される受信側ノードにおける識別子分析機構402の処理が終了する。
If the determination in step S3804 is YES, the processing of the
一般に、除算を実行するには被除数と除数をメモリからfetch する必要があり、実施形態5では、成分の集合を全て同じにすれば、メモリからfetch すべき除数の数が1/m になり、N >> m (N がm に比べて十分大きい)となる大規模システムでは除数がキャッシュヒットする回数が多くなる利益の方が、被除数が1 個からm 個になる事により、キャッシュミス回数が多くなる損失を上回る。よって、N >> m であれば、本実施形態の方が計算処理時間の面で第5の実施形態よりも有利である。 In general, in order to perform division, it is necessary to fetch the dividend and the divisor from the memory. In the fifth embodiment, if all the component sets are the same, the number of divisors to be fetched from the memory is 1 / m. In a large-scale system where N >> m (N is sufficiently larger than m), the benefit of increasing the number of times the divisor hits the cache increases the number of cache misses by changing the dividend from 1 to m. Exceeds increasing losses. Therefore, if N >> m, the present embodiment is more advantageous than the fifth embodiment in terms of calculation processing time.
また、N が十分大きい場合、使用メモリ量に関しても、本実施形態は不利にならない。なぜならば、「x 以下の素数の数」を表す関数をπ(x) と書くと、整数論で「素数定理」と呼ばれる事実によりπ(x) と(x/log(x)) の比はx→∞のとき1 に収束する事が知られているからである。 Further, when N is sufficiently large, the present embodiment is not disadvantageous with respect to the amount of memory used. This is because if we write π (x) as a function representing the number of prime numbers less than or equal to x, the ratio of π (x) to (x / log (x)) This is because it is known to converge to 1 when x → ∞.
つまり、「素数の密度」(π(x) /x )が対数関数の逆数1/log(x) 程度になる(ここでの対数は自然対数)。すなわち、ノード数が多くなって成分の素因数として使える素数を追加する場合、平均的には指数関数的に大きくする必要がある。このため、オーバーフローせずに格納するために必要なメモリ領域のビット数は、本実施形態で比較的小さな素数ないし素数の冪の複数の組による個別識別子の集合を使う方が、単一の素数ないし素数の冪による第5の実施形態に比べて小さくなる場合が増えていく。 In other words, the “prime number density” (π (x) / x) is approximately the reciprocal 1 / log (x) of the logarithmic function (the logarithm here is a natural logarithm). In other words, when adding a prime number that can be used as a prime factor of a component due to an increase in the number of nodes, it is necessary to increase the average exponentially. For this reason, the number of bits of the memory area necessary for storing without overflowing is a single prime number in the present embodiment when a set of individual identifiers by a plurality of combinations of relatively small prime numbers or prime numbers is used. In addition, the number of cases becomes smaller as compared with the fifth embodiment using a prime number.
<第7の実施形態>
次に、第7の実施形態について説明する。
<Seventh Embodiment>
Next, a seventh embodiment will be described.
整数の乗法以外でも、ある集合内の演算が「複数要素の演算結果から元の要素を復元できる」という意味で整数の乗法と共通する性質を持つなら、その演算を図4の機能の実現に利用することができる。特に、「素因数分解の一意性」が成立する乗法を持つ集合を使って、通常の整数での乗法を使用する場合と、ほぼ同じ方法で図4の機能の各演算を実施できる。 In addition to integer multiplication, if an operation in a set has the same nature as integer multiplication in the sense that "the original element can be restored from the result of the operation of multiple elements", that operation can be used to implement the functions shown in Fig. 4. Can be used. In particular, each operation of the function of FIG. 4 can be performed in substantially the same manner as when using a normal integer multiplication by using a set having multiplication that establishes “unique factorization uniqueness”.
第7の実施形態での個別識別子の割当ては、第1の実施形態の説明において示した図15の(g)および(h)に従う。 The assignment of the individual identifier in the seventh embodiment follows (g) and (h) in FIG. 15 shown in the description of the first embodiment.
任意の「体」について、その「体」を「係数体」とする「ベクトル空間」が、要素である「ベクトル」の間に交換法則、結合法則を満たす加法と、指定した体の要素をスカラーとする「スカラー倍」の演算を持つ集合として定義される。 For any "body", the "vector space" with the "body" as the "coefficient field" is an addition that satisfies the exchange law and the coupling law between the elements "vector", and the specified body element is a scalar. Defined as a set having the operation of “scalar multiplication”.
有理数体を含む体で、ベクトル空間として有限次元である体K は「(有限次元)代数体」(algebraic number field) 呼ばれる(以下では「有限次元」を省略する)。K に含まれる「代数的整数」全体をO_K と書く。(ここで「代数的整数」とは最高次の係数が1の整数係数の既約多項式をf(x) として、方程式f(x) = 0 の根になる複素数の事を指す)。 A field K including a rational number field and having a finite dimension as a vector space is called a “(finite dimension) algebraic number field” (hereinafter, “finite dimension” is omitted). Write the whole "algebraic integer" in K as O_K. (Here, “algebraic integer” refers to a complex number that is the root of the equation f (x) = 0, where f (x) is an irreducible polynomial with an integer coefficient of highest order 1).
O_K は加法、減法、乗法について閉じている集合になる事が知られているので、O_K にの中で、「素数」の役割を果たす数をp|ab → p|a ∨ p|b (ここで「x | y」はx はyを割り切る事、「→」は「ならば」、「∨」は「または」の意味である)で定義する。 Since O_K is known to be a closed set for addition, subtraction, and multiplication, the number that plays the role of "prime number" in O_K is p | ab → p | a ∨ p | b (here "X | y" is defined by x being divisible by y, "→" is "if", and "∨" is "or".
この定義により、O_K での「素因数分解の一意性」が成り立つ条件や実例が、「代数的整数論」と呼ばれる数学の一分野で、良く知られている。よって「素因数分解の一意性」が成り立つ任意のO_K を使って、第5または第6の実施形態と類似した方法で、図4の機能の各演算を実施できる。 By this definition, the conditions and examples that satisfy “uniqueness of prime factorization” in O_K are well known in a field of mathematics called “algebraic number theory”. Therefore, each operation of the function of FIG. 4 can be performed by using a method similar to the fifth or sixth embodiment using any O_K that satisfies “unique factorization”.
その際のポイントは、代数体K が有理数体上有限次元である。従って、その次元をn として、K からn 個の要素k1,k2,...,knを適切に選んで、任意のK の要素を、有理数係数の線形結合{c1*k1+c2*k2+...cn*kn|ciは有理数、ki∈K (i=1,2,...n)}として表せるので格納用の領域を固定長にできる事である。さらに、O_K の要素係数が全て整数になるk1,...,knを選んでn 個の整数の組とO_K の要素を1対1対応させる。代数体K は有理数体に1つの代数的整数α(および、その冪)を付け加えて得られる事が知られている。従って、このようなk1,...,knは、「最高次の係数が1の整数係数の既約多項式f(x)」を1つ取り、f(α)=0を満たすをαを使って、k1=1,k2=α,...,kn=α^(n-1)として定めればよい。
The point at that time is that the algebraic field K has a finite dimension on the rational field. Therefore, with n as its dimension, n elements k1, k2, ..., kn are appropriately selected from K, and any element of K is a linear combination of rational coefficients {c1 * k1 + c2 * k2 +. ..cn * kn | ci can be expressed as a rational number, ki∈K (i = 1,2, ... n)}, so that the storage area can be a fixed length. Further, k1,..., Kn, in which the element coefficients of O_K are all integers, are selected, and a set of n integers and O_K elements are made to correspond one-to-one. It is known that the algebraic field K is obtained by adding one algebraic integer α (and its power) to the rational number field. Therefore, for k1, ..., kn, take one "irreducible polynomial f (x) with integer coefficient of
ここで、k1,...,knは(有理数体上のベクトル空間として)、K の基底である。なお、n 個のK の要素が基底である事の必要十分条件は、有理数体上のベクトル空間の要素として「線形独立」である事なので、{k1,...,kn}の選び方は1通りではない。特に断らなければ、K に含まれる代数的整数αにより、{1,α,...,α^(n-1)}としておく。
Where k1, ..., kn (as a vector space over a rational field) are the basis of K. Note that the necessary and sufficient condition that n elements of K are bases is “linearly independent” as an element of the vector space on the rational number field, so the choice of {k1, ..., kn} is 1 Not street. Unless otherwise noted, {1, α, ..., α ^ (n-1)} is set by an algebraic integer α included in
以下では、n=2 であるような例を2つ示す。一般のn についても原理は同じである。
まず、虚数単位i はx^2+1=0の根なので、代数的整数である。有理数体に虚数単位i を追加して得られる体Q[i]は、有理数体上、2次元のベクトル空間となる。
In the following, two examples where n = 2 are shown. The principle is the same for general n.
First, the imaginary unit i is an algebraic integer because it is the root of x ^ 2 + 1 = 0. A field Q [i] obtained by adding an imaginary unit i to a rational number field is a two-dimensional vector space on the rational number field.
集合Z[i]={実部と虚部の係数が共に整数である複素数}を「ガウス整数」という。ガウス整数は、K=Q[i]に対する上述したO_K の例である。ガウス整数について「素因数分解の一意性」が成立する事が知られている。 The set Z [i] = {complex number whose real part and imaginary part coefficients are both integers} is called "Gaussian integer". A Gaussian integer is an example of O_K described above for K = Q [i]. It is known that “uniqueness of prime factorization” holds for Gaussian integers.
例えば、「ガウス整数」中では、2=(1+i)×(1-i)のように2 は2つのガウス整数の積として表されるので、2 は「ガウス整数としての素数」ではない。しかし、1+i,1-iは(実数部、虚数部の絶対値を考えれば明らかなように)「ガウス整数の中での「素数」」になる。そして、2 を「ガウス整数の中での素数」に分解する方法は、この2つのガウス整数の積への分解に限られる。 For example, in “Gaussian integer”, 2 is expressed as the product of two Gaussian integers, such as 2 = (1 + i) × (1-i), so 2 is not a “prime number as a Gaussian integer” . However, 1 + i, 1-i is “a“ prime number in a Gaussian integer ”” (as is clear from the absolute values of the real and imaginary parts). The method of decomposing 2 into “prime numbers in Gaussian integers” is limited to the decomposition of these two Gaussian integers into products.
ガウス整数を実数部と虚数部に分けて2つの通常の整数用の領域に格納し、各管理対象の個別識別子を、「ガウス整数の中での「素数」」についての条件で第5、第6の実施形態での素数についての条件を置き換えて設定する。そうすると、「ガウス整数としての積(複素数としての積)」を2項演算とするリダクションにより、集団識別子を求める事ができる。なぜならば、2つのガウス整数A,Bに対し、あるガウス整数C を取ってA=B×Cとできるか否かは、B の複素数としての逆数Dを取ってD×Aの係数が実部、虚部ともに整数であるか否かで判定できるからである。前述したガウス整数内での素因数分解の一意性により、どの個別識別子の積で生成されたかの判定も、第5,第6の実施形態と同様に実行できる。 A Gaussian integer is divided into a real part and an imaginary part and stored in two ordinary integer areas. The individual identifiers of each management object are the fifth and the second under the condition of “prime number in Gaussian integer” The conditions for prime numbers in the sixth embodiment are replaced and set. Then, a group identifier can be obtained by reduction using “product as Gaussian integer (product as complex number)” as a binary operation. This is because, for two Gaussian integers A and B, a certain Gaussian integer C can be taken to be A = B × C. The reciprocal D as a complex number of B is taken and the coefficient of D × A is the real part. This is because it can be determined whether or not both imaginary parts are integers. Due to the uniqueness of prime factorization within the above-mentioned Gaussian integer, the determination of which individual identifier product is generated can be performed as in the fifth and sixth embodiments.
なお、ガウス整数同士の間では、商と余りを生成する除法が定義され、この除法での余りが0 か否かで、集団識別子(の成分)が個別識別子(の成分)で割り切れるか否かで判定する事も可能である事が知られている。 In addition, a division method that generates a quotient and a remainder is defined between Gaussian integers, and whether or not the group identifier (component) is divisible by the individual identifier (component) depending on whether the remainder in this division is zero or not. It is known that it is possible to make a judgment with
次に、ω=(-1+i√3)/2 (i は虚数単位)とおくと、ωはx^2+x+1=0 の根なので代数的整数である。ωを有理数体に追加した体Q(ω) は、有理数体上2次元のベクトル空間になる。なぜならば、加法と乗法について Q[ω]={A+Bω|A,Bは有理数}が閉じている事は明らかなので、除法についても閉じていれば、Q(ω)=Q[ω]となるので有理数体上2次元である事が分かるからである。特に逆数について閉じていればよい。a+bω≠0である任意の2つの有理数a,b に対し、1/(a+bω)=(a+bω^2)/(a^2-ab+b^2)=((a-b)-ω)/(a^2-ab+b^2)∈ Q[ω]と確認できる。 Next, if ω = (-1 + i√3) / 2 (i is an imaginary unit), ω is an algebraic integer because it is the root of x ^ 2 + x + 1 = 0. A field Q (ω) obtained by adding ω to a rational number field becomes a two-dimensional vector space on the rational number field. Because it is clear that Q [ω] = {A + Bω | A, B is a rational number} for addition and multiplication, so if the division is also closed, Q (ω) = Q [ω] This is because it is understood that it is two-dimensional on the rational number field. In particular, the reciprocal may be closed. For any two rational numbers a and b where a + bω ≠ 0, 1 / (a + bω) = (a + bω ^ 2) / (a ^ 2-ab + b ^ 2) = ((ab) -ω) / (a ^ 2-ab + b ^ 2) ∈ Q [ω]
集合Z[ω]={a+bω|a,bは通常の整数}を「アイゼンシュタイン整数」という。
(a + bω)*(c + dω) = ac + (bc+ad)ω + bdω^2
にω^2=-1-ωを代入すると、以下のように計算できる。
(a + bω)*(c + dω) = (ac-bd) + (bc+ad-bd)ω
The set Z [ω] = {a + bω | a, b is a normal integer} is called “Eisenstein integer”.
(a + bω) * (c + dω) = ac + (bc + ad) ω + bdω ^ 2
Substituting ω ^ 2 = -1-ω for, it can be calculated as follows.
(a + bω) * (c + dω) = (ac-bd) + (bc + ad-bd) ω
従って、「アイゼンシュタイン整数」同士の積は「2つの整数の組」の間の演算として表せるので、2つの通常の整数用の領域によって「アイゼンシュタイン整数」1つを保持しておき、「アイゼンシュタイン整数」を個別識別子とする事ができる。 Therefore, since the product of “Eisenstein integers” can be expressed as an operation between “two integer pairs”, one “Eisenstein integer” is held by two ordinary integer regions, and “Eisenstein integers” are stored. "Stein integer" can be an individual identifier.
2つのアイゼンシュタイン整数A,B に対し、あるアイゼンシュタイン整数C が存在してA=B×CであるかはB の複素数での逆数D に対しD × A がアイゼンシュタイン整数であるかにより判定される。下記等式から任意のアイゼンシュタイン整数B の逆数D に対し、あるアイゼンシュタイン整数E と通常の整数Z の組によりD=(E/Z)と表せるので、A=B×Cと書けるか否かはE×Aの係数がZ で割り切れるか否かにより判定できる。
(a + bω)*(a + bω^2) = a^2 -ab + b^2
∴1/(a + bω) = (a + bω^2)/(a^2 -ab + b^2 )
「アイゼンシュタイン整数」の中でも「素因数分解の一意性」が成立する。
For two Eisenstein integers A and B, whether a certain Eisenstein integer C exists and A = B × C is determined by whether D × A is an Eisenstein integer with respect to the inverse D of the complex number of B Is done. From the following equation, for any reciprocal number D of Eisenstein integer B, D = (E / Z) can be expressed by a combination of a certain Eisenstein integer E and a normal integer Z. Can be determined by whether the E × A coefficient is divisible by Z or not.
(a + bω) * (a + bω ^ 2) = a ^ 2 -ab + b ^ 2
∴1 / (a + bω) = (a + bω ^ 2) / (a ^ 2 -ab + b ^ 2)
“Uniqueness of prime factorization” holds among “Eisenstein integers”.
また、「アイゼンシュタイン整数」の中で商と余りを生成する除法が定義され、この除法での余りが0 か否かでも「割り切れるか否か」の判定ができる事が知られている。 Also, it is known that a division method for generating a quotient and a remainder is defined in “Eisenstein integer”, and it is possible to determine whether or not it is divisible even if the remainder in this division is 0 or not.
以上から「アイゼンシュタイン整数」(ないし、その組)を個別識別子とし、積によるリダクションで集団識別子を求めることにより、図4の演算機能を実現する事ができる。 From the above, the calculation function of FIG. 4 can be realized by using “Eisenstein integer” (or a set thereof) as an individual identifier and obtaining a group identifier by reduction by product.
一般のn 次代数体でも、最高次の係数が1のn 次既約多項式f(x) についてf(x)=0の根をαとして、O_K の要素を{1,α,α^2,...,α^(n-1)}の整数係数の線形結合として表しておく。これにより、O_K の要素同士の積は、f(α)=0によりα^n をαのn 次より小さい冪の線形結合で置き換える事で、「n 個の整数の組」の間の演算として表現できる事が分かる。 Even in a general nth-order algebraic field, the root of f (x) = 0 is α for the nth-order irreducible polynomial f (x) with the highest-order coefficient of 1, and the elements of O_K are {1, α, α ^ 2, ..., α ^ (n-1)} is expressed as a linear combination of integer coefficients. As a result, the product of the elements of O_K can be calculated as an operation between “n sets of integers” by replacing α ^ n with a linear combination of で smaller than the n-th order of α by f (α) = 0. I understand that I can express it.
任意のn 次代数体K と、その中の代数的整数の集合O_K に対し、下記(a),(b)を満たす(「(γの)ノルム」と呼ばれる)関数N(γ)が存在する事が知られている。 For any nth-order algebraic field K and a set of algebraic integers O_K, there exists a function N (γ) that satisfies the following (a) and (b) (called “(norm) norm”) Things are known.
(a) K の任意の要素に対して、(1),(2)が成り立つ。
(1) K の任意の要素γに対し、N(γ)は有理数となる。
(2) K の任意の2要素γ1,γ2に対し、N(γ1×γ2)=N(γ1)×N(γ2)
(a) For any element of K, (1) and (2) hold.
(1) For any element γ of K, N (γ) is a rational number.
(2) For any two elements γ1 and γ2 of K, N (γ1 × γ2) = N (γ1) × N (γ2)
(b) O_K の任意の要素βに対しては、(a)に加えて、次の(1),(2)も成り立つ。
(1) N(β)は整数となる。
(2) βの逆数δは、あるO_K の要素εによりδ = (ε / N(β)) と表される。
例えば、ガウス整数a+biに対してはN(a+bi)=a^2+b^2、アイゼンシュタイン整数a+bωに対しては、N(a+bω)=a^2-ab+b^2である。
(b) In addition to (a), the following (1) and (2) also hold for any element β of O_K.
(1) N (β) is an integer.
(2) The reciprocal δ of β is expressed as δ = (ε / N (β)) by an element ε of O_K.
For example, N (a + bi) = a ^ 2 + b ^ 2 for Gaussian integer a + bi, N (a + bω) = a ^ 2-ab + for Eisenstein integer a + bω b ^ 2.
よって、一般のn 次代数体K についても、その中の代数的整数全体O_K に対して素因数分解の一意性が成立すれば、O_K の要素(ないし、その組)を個別識別子として積によるリダクションで集団識別子を求めて、図4の演算機能を実現する事ができる。ここで、ノルムの性質(b)-(2)により「個別識別子が集団識別子を割り切る」事を判定する。素因数分解の一意性により、個別識別子に含まれる素因数の性質を第5,第6の実施形態と同様に選べば、「割り切れる」事によって、「その個別識別子が集団識別子を計算する過程で使われた」事が保証される。 Therefore, even for a general nth-order algebraic field K, if the uniqueness of prime factorization is established for the entire algebraic integer O_K, it is possible to reduce the number of elements of O_K (or a set of them) as an individual identifier. By obtaining the group identifier, the calculation function of FIG. 4 can be realized. Here, it is determined that the “individual identifier divides the collective identifier” by the property (b)-(2) of the norm. If the nature of the prime factor included in the individual identifier is selected in the same way as in the fifth and sixth embodiments due to the uniqueness of the prime factorization, it will be “divisible” and “the individual identifier will be used in the process of calculating the group identifier. It is guaranteed.
ただし、一般のn 次代数体K の中の代数的整数O_K について素因数分解の一意性は成立するとは限らない。また、O_K の中では、商と余りを生成する除法を定義して、その除法の余りが0 である事によって割り切れるか否かを判定できるとは限らない。 However, the uniqueness of prime factorization does not always hold for an algebraic integer O_K in a general nth-order algebraic field K. Also, in O_K, a division that generates a quotient and a remainder is defined, and it is not always possible to determine whether or not it is divisible by the remainder of the division being zero.
しかし、代数的整数O_K について素因数分解の一意性が成立するための必要十分条件は、よく知られている。「素因数分解の一意性」が成立する任意のO_K から、第5,第6の実施形態と同様の「素数」についての条件により、個別識別子の集合を定める事ができる。 However, the necessary and sufficient conditions for the uniqueness of prime factorization to hold for the algebraic integer O_K are well known. A set of individual identifiers can be determined from any O_K for which “uniqueness of prime factorization” is established, according to the same conditions for “prime numbers” as in the fifth and sixth embodiments.
図39から図41は、第7の実施形態の処理の例を示すフローチャートである。
第5または第6の実施形態において図4の識別子集約機構401のリダクション404を実現するリダクション演算は、図30のステップS3007または図37のステップS3707)で実行されている。これらのリダクション演算では、個別識別子が「普通の整数としての素数か素数ベキ」である。これに対して、本実施形態における個別識別子は、有理数体でない代数体が1つ固定され、その代数体の中での「素元」(代数的整数としての素数)になっている。具体的には、ガウス整数としての素数などが用いられる。これらの関係より、第5の実施形態における「普通の整数の積、商」であるところが、本実施形態における「代数的整数の積、商」になる。これらを踏まえて、本実施形態における図9は、例えば第5の実施形態における図30のステップS3007または第6の実施形態における図37のステップS3707の処理を置き換えるものである。
39 to 41 are flowcharts illustrating an example of processing according to the seventh embodiment.
In the fifth or sixth embodiment, the reduction calculation for realizing the
また、第5または第6の実施形態において図4の識別子分析機構402の「集団識別子から生成因子の個別識別子を復元する処理」は、図31のステップS3107または図38のステップS3807で実行されている。本実施形態における図40は、これらの処理を置き換えるものである。
Further, in the fifth or sixth embodiment, the “processing for restoring individual identifiers of generation factors from population identifiers” of the
さらに、本実施形態における図41は、図40の処理を、別の形態で一般化したフローチャートである。 Furthermore, FIG. 41 in the present embodiment is a flowchart in which the process of FIG. 40 is generalized in another form.
まず、図39のフローチャートの処理の前提として、代数体K の基底が以下の性質を満たす代数的整数αにより、{1,α,α^2,…,α^(n-1)}として与えられている。
f(x)=x^n+a_(n-1)×x^(n-1)+....a_k*x×k+...+a_0
f(α)=0
First, as a premise of the processing of the flowchart of FIG. 39, the basis of the algebraic field K is given as {1, α, α ^ 2, ..., α ^ (n-1)} by an algebraic integer α satisfying the following properties. It has been.
f (x) = x ^ n + a_ (n-1) × x ^ (n-1) + .... a_k * x × k + ... + a_0
f (α) = 0
そして、代数的整数β,γを、αの多項式で次式のように表しておく。
g(x)=b_m^x^m+b_(m-1)*x^(m-1)+....b_1*x+b_0
β=g(α)
h(x)=c_l^x^l+b_(l-1)*x^(l-1)+....c_1*x+c_0
γ=h(α)
Then, the algebraic integers β and γ are expressed by the polynomial of α as follows.
g (x) = b_m ^ x ^ m + b_ (m-1) * x ^ (m-1) + .... b_1 * x + b_0
β = g (α)
h (x) = c_l ^ x ^ l + b_ (l-1) * x ^ (l-1) + .... c_1 * x + c_0
γ = h (α)
以上のようにして定義される代数的整数β,γを用いて、図39のフローチャートが動作する。 The flowchart of FIG. 39 operates using the algebraic integers β and γ defined as described above.
まず、代数的整数βの係数ベクトルが作業領域Bに格納される(ステップS3901)。 First, the coefficient vector of the algebraic integer β is stored in the work area B (step S3901).
次に、代数的整数γの係数ベクトルが作業領域Cに格納される(ステップS3902)。 Next, the coefficient vector of the algebraic integer γ is stored in the work area C (step S3902).
さらに、代数的整数1,2の積の係数ベクトルが演算され、その係数ベクトルが作業領域Dに格納される(ステップS3903)。
Further, a coefficient vector of the product of the
以上の図39のフローチャートにより、例えば第5の実施形態における図30のステップS3007または第6の実施形態における図37のステップS3707の処理が置き換えられる。 The above-described flowchart of FIG. 39 replaces, for example, the process of step S3007 of FIG. 30 in the fifth embodiment or step S3707 of FIG. 37 in the sixth embodiment.
次に、図40のフローチャートの処理について説明する。
まず、被除数の係数ベクトルが作業領域bに格納される(ステップS4001)。次に、除数の係数ベクトルが作業領域cに格納される(ステップS4002)。
Next, the process of the flowchart of FIG. 40 will be described.
First, the coefficient vector of the dividend is stored in the work area b (step S4001). Next, the coefficient vector of the divisor is stored in the work area c (step S4002).
さらに、dの逆数がe/N(c)の形で表される(eはKの代数的整数、N(c)はcのノルム)(ステップS4003)。 Further, the reciprocal of d is expressed in the form of e / N (c) (e is an algebraic integer of K, N (c) is the norm of c) (step S4003).
次に、e×b の係数ベクトルが作業領域fに格納される(ステップS4004)。
そして、作業領域fのベクトル成分がN(c)の各成分で割り切れるか否かが判定される(ステップS4005)。
Next, the e × b coefficient vector is stored in the work area f (step S4004).
Then, it is determined whether or not the vector component of the work area f is divisible by each component of N (c) (step S4005).
以上の図40のフローチャートにより、例えば第5の実施形態における図31のステップS3107または図38のステップS3807の処理が置き換えられる。 For example, the process in step S3107 in FIG. 31 or step S3807 in FIG. 38 in the fifth embodiment is replaced by the flowchart in FIG.
次に、図41のフローチャートの処理について説明する。このフローチャートでは、iの値が、ステップS4101で0(ゼロ)にリセットされた後、ステップS4110で+1ずつインクリメントされながら、ステップS4103でmに達したと判断されるまで、0からmまで変化させられる。また、iの1つの値ごとに、jの値が、ステップS4102で0にリセットされた後、ステップS4109で+1ずつインクリメントされながら、ステップS4104でlに達したと判断されるまで、0からlまで変化させられる。 Next, the processing of the flowchart of FIG. 41 will be described. In this flowchart, after the value of i is reset to 0 (zero) in step S4101, it is incremented by +1 in step S4110, and changes from 0 to m until it is determined in step S4103 that m has been reached. Be made. Further, for each value of i, after the value of j is reset to 0 in step S4102, it is incremented by +1 in step S4109, and from 0 until it is determined that it has reached l in step S4104. Can be changed to l.
このようにして変化するiとjを用いて、ステップS4105でi+jの値がn以上であると判定されると、ステップS4106で、代数的整数αに対してi+jの値を冪乗とする演算結果α^(i+j)の係数が作業領域dに格納される。 If it is determined in step S4105 that the value of i + j is greater than or equal to n using i and j that change in this way, in step S4106, the value of i + j is set to the algebraic integer α. The coefficient of the calculation result α ^ (i + j) to be raised is stored in the work area d.
そして、ステップS4107で、α^(i+j)の中のα^nがf(α)=0の関係式でαのn-1次以下の冪の項で置き換えられる。 In step S4107, α ^ n in α ^ (i + j) is replaced with a term of 冪 that is less than or equal to the n−1 order of α in the relational expression f (α) = 0.
その後、ステップS4108で、α^(i+j)の項からの係数が乗算結果係数格納用領域Dの各項に加えられる。
以上の処理がiとjがインクリメントされながら繰返し実行される。
Thereafter, in step S4108, the coefficient from the term α ^ (i + j) is added to each term in the multiplication result coefficient storage area D.
The above processing is repeatedly executed while i and j are incremented.
コード化された識別子に対する演算を効率的に行うためには、識別子をCPU やノード間演算装置がサポートする、特定の固定長の領域、ないし、それらの領域の組に格納しておく必要がある。「ガウス整数」や「アイゼンシュタイン整数」などの代数的整数の中での「素数」(素元)は、係数の大きさが一定の範囲で比較すると通常の素数より多数ある。従って、本実施形態により、代数的整数を使用すると、同じ大きさの領域を使って分解能k を大きくするような個別識別子の割当てが比較的容易になる。 In order to efficiently perform operations on coded identifiers, identifiers must be stored in a specific fixed-length area or a set of those areas that are supported by the CPU or inter-node arithmetic device. . There are more “prime numbers” (prime elements) in algebraic integers such as “Gaussian integers” and “Eisenstein integers” than ordinary prime numbers when the coefficients are compared within a certain range. Therefore, according to the present embodiment, when an algebraic integer is used, it is relatively easy to assign an individual identifier so as to increase the resolution k using the same size region.
さらに、「整数用領域を2つ使って2進数での桁数が2倍の整数を表わす」方法と比較すると、「ガウス整数」や「アイゼンシュタイン整数」(のような有理数体上2次元の代数体の中の代数的整数)の集合では、比較的絶対値が小さい数の範囲内で両方の領域が有効に使える。2つの整数領域で桁数が2倍の整数を表す場合、上位桁を表すために使う領域は片方の領域だけでは表せない大きさの整数を使わない限り個別識別子の格納に使用されない。このため、「ガウス整数」や「アイゼンシュタイン整数」を個別識別子とする方が、同じ程度の計算量を前提としたメモリ効率の比較で、桁数2倍の領域で通常の整数を個別識別子とするより有利である。 Furthermore, when compared with the method of “representing an integer whose number of digits in binary number is doubled by using two integer regions”, the two-dimensional upper bound on a rational field such as “Gaussian integer” or “Eisenstein integer” ( For a set of algebraic integers in an algebraic field, both regions can be used effectively within a range of numbers with relatively small absolute values. When two integer areas represent integers with twice the number of digits, the area used to represent the upper digits is not used for storing individual identifiers unless an integer of a size that cannot be represented by only one area is used. For this reason, using “Gaussian integers” and “Eisenstein integers” as individual identifiers compares memory efficiency on the assumption of the same amount of computation. It is more advantageous to do.
同様の事が、有理数体上n次元の代数体の中の代数的整数をn個の整数用領域を使って表す方法と、「整数用領域をn 個使って2進数での桁数がn 倍の整数を表わす」方法と比較する場合にも成り立つ。 The same thing can be expressed by the method of representing an algebraic integer in an algebraic field of n dimensions over a rational number using n integer areas, and “the number of digits in binary number is n using n integer areas. This is also true when compared to the “representing a double integer” method.
<第8の実施形態>
次に、第8の実施形態について説明する。
<Eighth Embodiment>
Next, an eighth embodiment will be described.
乗法を演算とするリダクションの利用のために図4の識別子のコード化体系403があれば、各識別子の対数を使って乗法を加法に変換する事で、加法をサポートするノード間演算装置を使って実現する事、およびそれによる高速化が可能である。ただし、個別識別子として利用する数の選定に際して、以下のような注意、工夫が必要になる。以下に、その詳細について説明する。
If the
「最も近い整数を選んで因数分解する場合に浮動小数点演算での誤差の累積による誤判定がない事を、事前に検証するか、精度保証付き演算などで保証する。対数を取る際にデータは浮動小数点形式になるので、その後の計算では整数での計算における「等しい」事の判定は、「誤差が事前に定めた値(例えば「machine epsilon」と呼ばれる値)より小さい」事で置き換える必要がある。データを伝送上の都合に従って、そのまま、ないし固定小数点形式(整数形式)に変換して和を取り、その結果を浮動小数点形式に戻したものを指数関数への入力とする事で、対数を取る前の積を復元する、という一連の処理の各過程で誤差が累積する。 “When selecting the nearest integer and factoring it, it is verified in advance that there is no misjudgment due to error accumulation in floating point arithmetic, or it is guaranteed by accuracy-compensated arithmetic. Since it will be in floating point format, in subsequent calculations it will be necessary to replace the “equal” determination in integer calculations with “the error is less than a predetermined value (eg a value called“ machine epsilon ”)” is there. Convert the data as it is or convert it to a fixed-point format (integer format), take the sum, and return the result to the floating-point format as the input to the exponential function. Errors accumulate in each process of a series of processing to restore the previous product.
浮動小数点形式での演算での桁落ち誤差の影響を小さくするためには、元の(対数を取る前の)数を、「同じ程度の大きさ」にしておく事が有効である。この場合、個別識別子の範囲を「最大値を決めて降順に定める」方針が有利である。 In order to reduce the influence of the precision error in the calculation in the floating point format, it is effective to set the original number (before taking the logarithm) to “the same size”. In this case, the policy of “determining the maximum value and determining the range in descending order” is advantageous.
本実施形態も、第5から第7の実施形態と同様に、分解能が正の整数k を上限として制限される場合に適用される。 Similarly to the fifth to seventh embodiments, the present embodiment is also applied when the resolution is limited to a positive integer k.
本実施形態では個別識別子の対数を利用するが、複素数の対数関数を利用する場合の記述は、原理的に共通点が多いとは言え煩雑になるため、以下、個別識別子は通常の正の整数とする。 Although the logarithm of the individual identifier is used in the present embodiment, the description in the case of using the logarithm function of the complex number is complicated in spite of having many common points in principle. And
第5、第6の実施形態で整数の乗法で実現した機能を、本実施形態では加法により実現する。ただし、浮動小数点の加法を使用する場合と整数(固定小数点)の加法を使用する場合の両方がある。 The functions realized by the multiplication of integers in the fifth and sixth embodiments are realized by addition in this embodiment. However, both floating point addition and integer (fixed point) addition are used.
第5の実施形態は第6の実施形態で成分の数が1の場合と見なす事ができる。一方、第6の実施形態は、第5の実施形態をベクトルの複数の成分に対して実施したと見なすことができる。本実施形態では記述を簡略化するため、以下では1つの成分について説明する。 The fifth embodiment can be regarded as a case where the number of components is 1 in the sixth embodiment. On the other hand, the sixth embodiment can be regarded as having implemented the fifth embodiment on a plurality of components of a vector. In the present embodiment, in order to simplify the description, one component will be described below.
第5,第6の実施形態と同様に、各管理対象(例えば各ノード)に対し個別識別子を割当て、集団識別子を第5,第6の実施形態の場合と同様に「整数の乗法でのリダクション結果」と定義する。ただし、本実施形態は「整数の乗法でのリダクション結果」を、対数を経由する加法でのリダクション操作を使用して求める(「積の対数」が「対数の和」である事に基づく)。 As in the fifth and sixth embodiments, an individual identifier is assigned to each management target (for example, each node), and the group identifier is “reduction by integer multiplication” as in the fifth and sixth embodiments. Defined as “result”. However, in the present embodiment, the “reduction result by multiplication by integers” is obtained by using a reduction operation by addition via logarithm (based on “logarithm of product” is “sum of logarithms”).
ただし、対数の底の冪である数以外の対数は整数ではないので、浮動小数点形式にする際に誤差が生じ、さらに、対数の浮動小数点数での加法を計算する際にも誤差が生ずる事を考慮すると、識別子の割当て時に工夫を要する。 However, since the logarithm other than the number that is the base of the logarithm is not an integer, an error occurs when the floating-point format is used, and an error also occurs when calculating the addition of the logarithmic floating-point number. Considering the above, it is necessary to devise when assigning identifiers.
集団識別子から個別識別子を求める計算手順自体は、「積の対数」が「対数の和」である事を利用する事を除き、第5、第6の実施形態と同様である。個別識別子の対数の計算を個別識別子割当時に行っておき、通知する側のノードが対数値を記憶しておく事により、情報通知時には対数計算を不要にできる。個別識別子の値の対数への変換後、あるいは、対数への変換後さらに定数倍して整数形式にした変換後の値は、「変形個別識別子」と呼んで本来の個別識別子と区別する。同様に「変形個別識別子」に対するリダクション(総和)の結果は、「変形集団識別子」と呼んで本来の集団識別子と区別する。 The calculation procedure itself for obtaining the individual identifier from the group identifier is the same as in the fifth and sixth embodiments, except that the “logarithm of product” is “sum of logarithms”. The logarithm of the individual identifier is calculated at the time of assigning the individual identifier, and the logarithmic value is stored in the notifying node so that the logarithm calculation is not required at the time of information notification. A value after conversion into a logarithm of the value of the individual identifier, or after conversion into a logarithm and further multiplied by a constant to form an integer form is called a “modified individual identifier” to be distinguished from the original individual identifier. Similarly, the result of reduction (summation) for the “modified individual identifier” is called a “modified group identifier” to distinguish it from the original group identifier.
(a) 浮動小数点の加法を使用する場合
(1) 情報を通知する各ノードで管理対象の個別識別子の対数を取るか、予め記憶しておいた個別識別子の対数をリダクションへの入力として用意する。後者の方法では、送信側ノードで対数を計算する必要がない。情報を集約するノードが管理対象の個別識別子の対数の加法によるリダクション結果を受け取るようにリダクション操作を行う。
(2) 情報を集約するノードは対数の総和から、個別識別子の積を復元する。元データは整数なので、指数関数によって対数から復元した結果に最も近い整数を取る事で、集団識別子を求める。
(3) 集団識別子を割り切る個別識別子を求める。
(a) When using floating-point addition
(1) The logarithm of the individual identifier to be managed is taken at each node that notifies the information, or the logarithm of the individual identifier stored in advance is prepared as an input to the reduction. In the latter method, there is no need to calculate the logarithm at the transmitting node. The reduction operation is performed so that the node that collects the information receives the reduction result obtained by adding the logarithm of the individual identifier to be managed.
(2) The node that aggregates information restores the product of individual identifiers from the sum of logarithms. Since the original data is an integer, the group identifier is obtained by taking the integer closest to the result restored from the logarithm by an exponential function.
(3) Find individual identifiers that divide group identifiers.
(b) 整数の加法を使用する場合
(1) 情報を通知する各ノードで管理対象の個別識別子の対数を取る、あるいは予め記憶済の個別識別子の対数をリダクションへの入力として用意する。ここで「用意」とは、浮動小数点形式の個別式識別子の対数を定数倍して整数に変換するあるいは、予め定数倍して整数に変換しておいたデータ入力にする事を意味する。後者の方法では、送信側ノードが浮動小数点演算を行う必要がない。
(2) 情報を集約するノードが「管理対象の個別識別子の対数を定数倍し、整数に変換した数」の加法によるリダクション結果を受け取るようにリダクション操作を行う。ここでは、「ある桁までの固定小数点形式とした後、小数点以下の桁数m に対し2^m を掛けて、「対数の近似値を整数形式で表現する」事を「整数に変換する」と呼んでいる。
(3) 情報を集約するノードは(2) のリダクション結果を浮動小数点形式に戻し、(2) で整数形式への変換で使用した大きさ調整用の定数2^m で割って、大きさも元に戻す。
(4) 情報を集約するノードは、浮動小数点形式に戻した「個別識別子の対数の総和」から、元の個別識別子の積である集団識別子を復元する。元データは整数なので、指数関数によって復元した結果に最も近い整数を取る事により、集団識別子を求める。
(5) 集団識別子を割り切る個別識別子を求める。
(b) When using integer addition
(1) The logarithm of the individual identifier to be managed is taken at each node that notifies the information, or the logarithm of the individual identifier stored in advance is prepared as an input to the reduction. Here, “preparation” means that the logarithm of the individual expression identifier in the floating-point format is multiplied by a constant and converted into an integer, or data input that has been converted into an integer by multiplying by a constant in advance. The latter method does not require the sending node to perform floating point operations.
(2) The node that collects the information performs a reduction operation so as to receive a reduction result obtained by adding “the number obtained by multiplying the logarithm of the individual identifier to be managed by a constant and converting it into an integer”. Here, after converting to a fixed-point format up to a certain digit, multiplying the number of digits m after the decimal point by 2 ^ m, "expressing the approximate value of the logarithm in integer format" means "converting to an integer" It is called.
(3) The node that aggregates the information returns the reduction result of (2) to the floating-point format, and divides by the size adjustment constant 2 ^ m used in the conversion to the integer format in (2). Return to.
(4) The node that collects the information restores the collective identifier that is the product of the original individual identifiers from the “total sum of logarithms of individual identifiers” returned to the floating-point format. Since the original data is an integer, the group identifier is obtained by taking the integer closest to the result restored by the exponential function.
(5) Find individual identifiers that divide group identifiers.
本実施形態のポイントは、対数を取る操作自体、および結果を有限桁数で表現する事に伴う誤差による誤判定を排除する事にある。言い換えれば誤差の大きさを判定結果に及ぼさない程度に小さくする事が、高速な実現の鍵になる。(「多倍長計算」を使用すれば、誤差をいくらでも小さくできるが、メモリ領域の所要量や通知する側のノードを含めてメモリアクセス量が増加するため、固定長領域での演算による実現が、性能上有利である)。 The point of the present embodiment is to eliminate an erroneous determination due to an error associated with the operation of taking the logarithm itself and expressing the result with a finite number of digits. In other words, reducing the magnitude of the error to an extent that does not affect the determination result is the key to achieving high speed. (By using “multiple-length calculation”, the error can be reduced as much as possible, but since the memory access amount including the required amount of memory area and the node on the notification side increases, it can be realized by calculation in a fixed-length area. Is advantageous in terms of performance).
「精度保証付き演算」により誤差の範囲を制限する手法もあるが、より単純な方法は予め定めておく個別識別子の集合に対し、上記(a), (b) の手順で所定の状態にある個別識別子を復元可能な事を実際に計算して確認しておく事である。この計算は、個別識別子の集合を定める際に行えばよい。例えば事前に十分多くの要素を持つ個別識別子の集合を用意しておけば、上記の精度確認計算はシステムが動作する際の性能には悪影響を及ばさない。 Although there is a method to limit the error range by “calculation with accuracy guarantee”, a simpler method is in a predetermined state according to the procedure of (a) and (b) above for a set of predetermined individual identifiers. It is to actually calculate and confirm that the individual identifier can be restored. This calculation may be performed when a set of individual identifiers is determined. For example, if a set of individual identifiers having a sufficiently large number of elements is prepared in advance, the above accuracy check calculation does not adversely affect the performance when the system operates.
動的に管理対象を増やす必要があるシステムにおいても、使用可能な個別識別子のプールから切り出して使う事で、運用時に精度確認計算する事は避けられる。 Even in a system that needs to dynamically increase the number of management targets, it is possible to avoid calculating accuracy check during operation by using it by extracting it from the pool of available individual identifiers.
確認計算は、例えば、分解能k の場合、個別識別子を大きい方からk 個とった積をU(k) として、U(k) を越えない積を与える個別識別子の組合わせ全てについて、(a), (b) の手順での誤差によって誤判定が起こらない事を確認しておけばよい。 For example, in the case of resolution k, the confirmation calculation is performed for (a) all combinations of individual identifiers that give a product that does not exceed U (k), where U (k) is the product of k largest individual identifiers. , (b) It should be confirmed that there is no misjudgment due to errors in the procedure.
ここで、上記の精度確認計算で誤判定となる場合が検出された場合、個別識別子の集合を取り替えるか、その組み合わせでの集団識別子の値を、正しい個別識別子の組と合わせて「例外値リスト」に格納しておき、集団識別子から個別識別子を計算する際に例外値リストを確認する処理を最初に行う事で対応する。 Here, if a case of erroneous determination is detected in the accuracy check calculation described above, the set of individual identifiers is replaced, or the value of the group identifier in the combination is combined with the set of correct individual identifiers as “exception value list” This is handled by first performing the process of checking the exceptional value list when calculating the individual identifier from the group identifier.
大きさが極端に違う浮動小数点形式の数の加算では、桁落ちにより有効数字が失われやすい事を考慮すると、浮動小数点形式の数の加算を使う場合の本実施形態では、個別識別子の大きさを、可能な範囲内で、なるべく揃える事が望ましい。 In the case of adding floating-point numbers with extremely different sizes, in consideration of the fact that significant digits are likely to be lost due to digit loss, in this embodiment when using floating-point number addition, the size of the individual identifier is used. It is desirable to arrange them as much as possible within the possible range.
また、計算量が比較的大きい除算を行う必要がない数値の大きさで判定できる場合を多くするためには、全ての個別識別子を条件を満たす範囲で、なるべく大きく取る方が有利であるため、例えば「個別識別子になりうる数の中から大きい順に個別識別子を選ぶ」事が有効である。 In addition, in order to increase the number of cases where it is possible to determine with a numerical value that does not require a relatively large division, it is advantageous to take all individual identifiers as large as possible within a range that satisfies the conditions. For example, it is effective to “select individual identifiers in descending order from numbers that can become individual identifiers”.
例えば、用意された領域に格納できる最大の整数をz として、z のk 乗根をz^(1/k)=yとおき、y から降順に、個別識別子とする数(あるいは、個別識別子の候補としてプールしておく数)を取り出す。 For example, if the maximum integer that can be stored in the prepared area is z, the kth root of z is z ^ (1 / k) = y, and the number of individual identifiers (or individual identifiers in descending order from y) Take out the number of pooled candidates.
一方、「分解能k より多くの個別識別子を区別する場合を多くしたい」場合は、個別識別子をなるべく小さく取る方が有利であるため、例えば「必要な個数の個別識別子を、区間の最大値から出来るだけ離す」事が有効である。 On the other hand, when it is desired to “discretely distinguish more than individual identifiers than resolution k”, it is advantageous to make individual identifiers as small as possible. It is effective to "release only".
ただし、対数をとる前の整数の候補から小さい順に選ぶと、「誤差を小さくするため大きさを揃える」観点からの条件を満たしにくい。例えば、必要な個別識別子の個数から定まる区間の端点となる数(最小と最大)の桁数の差が浮動小数点ないし定数倍をかけて整数(固定小数点)に変換する際の有効数字の桁数の範囲より小さくなるように選ぶ。 However, if the selection is made in ascending order of the integer candidates before taking the logarithm, it is difficult to satisfy the condition from the viewpoint of “equalizing the size in order to reduce the error”. For example, the number of significant digits when the difference between the number of digits (minimum and maximum) that is the end point of the interval determined from the number of required individual identifiers is converted to an integer (fixed point) by multiplying it by a floating point or a constant multiple Choose to be smaller than the range.
誤差が大きくなる組み合わせを含む数を個別識別子として使用しない事により、例外値リストへの登録数を減らす事も可能である。さらに、受信時の個別識別子の探索処理の高速化の観点からは、例外値リストの大きさ(要素数)は、なるべく小さい方が有利である(例外値リストの大きさが結果的に0 の場合(すなわち、例外値リストが必要なくなる場合)も、論理的にはありうる)。 It is possible to reduce the number of registrations in the exception value list by not using a number including a combination with a large error as an individual identifier. Furthermore, from the viewpoint of speeding up the search process of the individual identifier at the time of reception, it is advantageous that the size (number of elements) of the exception value list is as small as possible (the size of the exception value list is 0 as a result). (That is logically possible if the exception value list is no longer needed).
図42は、上述の理論に基づく、第8の実施形態における送信側ノードにおける識別子集約機構401(図4)の処理の例を示すフローチャートである。このフローチャートにおける処理の基本的な考え方は、前述した図5(第1の実施形態)、図17(第2の実施形態)、図30(第5の実施形態)、図37(第6の実施形態)などと同様である。図37は、第5、第6の実施形態に係る図30または図37のフローチャートにおいて、リダクション404の演算が乗法から対数の加法に置き換えられ、かつ第6の実施形態の場合と同様に、個別識別子および集団識別子がベクトル化されたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子集約機構401の処理が開始されると、図7の送信起点ノード701のCPU701−1または中継ノードとして機能する受信・中継ノード702のCPU702−1が実行する。入力ベクトル1または2等の作業領域は、送信起点ノード701のメモリ701−2または受信・中継ノード702のメモリ702−2に記憶される。
FIG. 42 is a flowchart showing an example of processing of the identifier aggregation mechanism 401 (FIG. 4) in the transmission side node in the eighth embodiment based on the above theory. The basic concept of the processing in this flowchart is as shown in FIG. 5 (first embodiment), FIG. 17 (second embodiment), FIG. 30 (fifth embodiment), and FIG. 37 (sixth embodiment). Form) and the like. FIG. 37 is a flowchart of FIG. 30 or FIG. 37 according to the fifth and sixth embodiments, in which the operation of the
なお、本実施例での識別子は整数の順序付けられた集合である。ただし、送信側ノードが保持しているのは必ずしも本来の個別識別子自体ではなく対数あるいは対数と定数倍後の整数への変換を行った変形個別識別子であり、受信側ノードは受信した変形集団識別子から本来の集団識別子を復元して個別識別子を取り出す。ここでは、「順序付けられた集合」を「ベクトル」と呼び、「順序つけられた集合」の要素である整数を成分と呼ぶ。本来の個別識別子と本来の集団識別子の総称が「識別子」であり、変形個別識別子と変形集団識別子の総称が「変形識別子」である。識別子ベクトルあるいは変形識別子間の演算は、対応する位置の成分間の演算で定める。 The identifier in this embodiment is an ordered set of integers. However, the transmitting node does not necessarily hold the original individual identifier itself, but a modified individual identifier obtained by conversion to a logarithm or a logarithm and an integer after a constant multiple, and the receiving node receives the received modified group identifier. The original group identifier is restored from and the individual identifier is extracted. Here, an “ordered set” is called a “vector”, and an integer that is an element of the “ordered set” is called a component. The generic name of the original individual identifier and the original group identifier is “identifier”, and the generic name of the modified individual identifier and the modified group identifier is “modified identifier”. The calculation between the identifier vector or the modified identifier is determined by the calculation between the components at the corresponding positions.
図42において、まず、自ノードが通信の起点ノードであるか否かが判定される(ステップS4201)。 In FIG. 42, first, it is determined whether or not the own node is a communication origin node (step S4201).
ステップS4201の判定がNOであるならば、受信済みの値を格納する入力ベクトル1に、受信済みの変形集団識別子ベクトルが格納される(ステップS4202)。
If the determination in step S4201 is NO, the received modified population identifier vector is stored in the
ステップS4201の判定がYESならば、受信済みの値は無いため、入力ベクトル1の全成分に、対数加法演算の単位元の値0が格納される(ステップS4203)。
If the determination in step S4201 is YES, since no value has been received, the
次に、自ノードが管理する管理対象において通知すべき条件が成立したか否かが判定される(ステップS4204)。 Next, it is determined whether or not a condition to be notified is established in the management target managed by the own node (step S4204).
ステップS4204の判定がYESならば、自ノードの状態を格納する入力ベクトル2に、自ノードにおける管理対象(または自ノードそのもの)に対応する変形個別識別子ベクトルが格納される(ステップS4205)。
If the determination in step S4204 is YES, the modified individual identifier vector corresponding to the management target in the own node (or the own node itself) is stored in the
ステップS4204の判定がNOならば、入力ベクトル2の全成分に、単位元の値0が格納される(ステップS4206)。
If the determination in step S4204 is NO,
その後、入力ベクトル1,2の全成分の間で、リダクション404に使用する対数加法演算が実行される(ステップS4207)。
Thereafter, a logarithmic addition operation used for the
最後に、ステップS4207での演算結果が、次の転送先への送信内容である変形集団識別子ベクトルとされて出力される(ステップS4208)。その後、図42のフローチャートで例示される送信側ノードにおける識別子集約機構401の処理が終了する。
Finally, the calculation result in step S4207 is output as a modified group identifier vector that is the content of transmission to the next transfer destination (step S4208). Thereafter, the processing of the
図43は、上述の理論に基づく、第8の実施形態における受信側ノードにおける識別子分析機構402(図4)の処理の例を示すフローチャートである。このフローチャートにおける処理の基本的な考え方は、前述した図6(第1の実施形態)、図18(第2の実施形態)、図31(第5の実施形態)、図38(第6の実施形態)などと同様である。図43は、第5、第6の実施形態に係る図31または図38のフローチャートにおいて、リダクション404の演算が乗法から対数の加法に置き換えられ、かつ第6の実施形態の場合と同様に個別識別子および集団識別子がベクトル化されたものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子分析機構402の処理が開始されると、受信側ノードとして機能する図7の受信・中継ノード702のCPU702−1が実行する。また、作業領域ベクトルWやX等は、受信・中継ノード702のメモリ702−2に記憶される。
FIG. 43 is a flowchart showing an example of processing of the identifier analysis mechanism 402 (FIG. 4) in the receiving side node in the eighth embodiment based on the above theory. The basic concept of the processing in this flowchart is the above-described FIG. 6 (first embodiment), FIG. 18 (second embodiment), FIG. 31 (fifth embodiment), and FIG. 38 (sixth embodiment). Form) and the like. FIG. 43 is a flowchart of FIG. 31 or FIG. 38 according to the fifth and sixth embodiments, in which the operation of the
まず、受信された変形集団識別子ベクトルにおいてオーバーフロー(図中「overflow」)が発生しているか否かが判定される(ステップS4301)。ステップS4301の判定がYESならば、受信処理は実質的に何も行われずに、図43で例示される受信側ノードにおける識別子分析機構402の処理が終了する。
First, it is determined whether or not an overflow (“overflow” in the figure) has occurred in the received modified group identifier vector (step S4301). If the determination in step S4301 is YES, the reception process is not substantially performed, and the process of the
次に、ステップS4301の判定がNOならば、変形集団識別子ベクトルが作業領域ベクトルVに格納される(ステップS4302)。 Next, if the determination in step S4301 is NO, the modified group identifier vector is stored in the work area vector V (step S4302).
次に、作業領域ベクトルVの各要素が例外値に含まれるか否かが判定される(ステップS4303)。 Next, it is determined whether or not each element of the work area vector V is included in the exceptional value (step S4303).
ステップS4303の判定がNOならば、作業領域ベクトルVの各要素値ごとに、指数演算が実行され(これを「exp(V)」と表記する)、その演算結果に最も近い整数が、作業領域ベクトルWの対応する要素に格納される(ステップS4304)。 If the determination in step S4303 is NO, an exponential operation is performed for each element value of the work area vector V (this is expressed as “exp (V)”), and the integer closest to the operation result is the work area. It is stored in the corresponding element of the vector W (step S4304).
作業領域ベクトルVのいずれかの要素についてステップS4303の判定がYESならば、その要素について例外値での誤差を補正した値が、作業領域ベクトルWの対応する要素に格納される(ステップS4305)。このステップで必要な例外値リストの作成処理について、図44から図46のフローチャートを用いて後述する。 If the determination in step S4303 is YES for any element of work area vector V, a value obtained by correcting the error in the exceptional value for that element is stored in the corresponding element of work area vector W (step S4305). The process for creating the exception value list necessary in this step will be described later with reference to the flowcharts of FIGS.
次に、作業領域ベクトルWの全成分値が、リダクション404の対数加法演算領域から乗法演算領域に戻された状態(ステップS4304参照)での単位元の値1となったか否かが判定される(ステップS4306)。
Next, it is determined whether or not all the component values of the work area vector W have become the
ステップS4306の判定がNOならば、集団識別子ベクトルから個別識別子ベクトルが1つ特定され、その結果が作業領域ベクトルXに格納される(ステップS4307)。 If the determination in step S4306 is NO, one individual identifier vector is specified from the group identifier vector, and the result is stored in the work area vector X (step S4307).
その後、ステップS4307で作業領域ベクトルXに格納された個別識別子ベクトルに対応する管理対象が処理(特定)される(ステップS4308)。 Thereafter, the management target corresponding to the individual identifier vector stored in the work area vector X in step S4307 is processed (specified) (step S4308).
次に、リダクション404に使用した対数変換前の乗法演算の逆演算すなわち除法演算が作業領域ベクトルWと作業領域ベクトルXの各成分に適用され、ステップS4307において作業領域ベクトルWから特定され作業領域ベクトルXに格納された個別識別子が取り外される(ステップS4309)。その後、ステップS4306の処理に戻って、上述のステップS4306からステップS4309までの処理が繰り返し実行される。
Next, the inverse operation of the multiplication operation before logarithmic transformation used for the
ステップS4306の判定がYESになると、図43のフローチャートで例示される受信側ノードにおける識別子分析機構402の処理が終了する。
If the determination in step S4306 is YES, the processing of the
図44および図45は、図43のステップS4305での補正処理に必要な例外値リストの作成処理の例を示すフローチャートである。 FIG. 44 and FIG. 45 are flowcharts showing an example of exception value list creation processing necessary for the correction processing in step S4305 of FIG.
まず、整列済の個別識別子成分リストが作業領域Lに格納される(ステップS4401)。 First, the sorted individual identifier component list is stored in the work area L (step S4401).
次に、誤差チェックが必要な個識別子の成分個数の上限値が算出され、作業領域Kに格納される(ステップS4402)。この処理の詳細については、図46のフローチャートを用いて後述する。 Next, the upper limit value of the number of components of the individual identifier that needs an error check is calculated and stored in the work area K (step S4402). Details of this processing will be described later with reference to the flowchart of FIG.
次に、作業領域Lの要素からK個を取り出す組み合わせのリストが作成され、作業領域Uに格納される(ステップS4403)。 Next, a list of combinations for extracting K elements from the work area L is created and stored in the work area U (step S4403).
次に、作業領域Uの先頭位置が作業領域Xに格納される(ステップS4404)。
次に、ステップS4405で作業領域Xが作業領域Uの末端位置と判定されるまで、図45のステップS4413で作業領域Xに作業領域Uの次の位置が順次格納されながら、図44のステップS4406から図45のステップS4412までの処理が実行される。
Next, the start position of the work area U is stored in the work area X (step S4404).
Next, until the work area X is determined as the end position of the work area U in step S4405, the next position of the work area U is sequentially stored in the work area X in step S4413 of FIG. To S4412 in FIG. 45 are executed.
まず、ステップS4405の判定がNOになると、作業領域U内の作業領域Xが示す現在の位置の個別識別子の組が、作業領域Tに格納される(ステップS4406)。 First, when the determination in step S4405 is NO, a set of individual identifiers at the current position indicated by the work area X in the work area U is stored in the work area T (step S4406).
次に、作業領域Tに対応する変形個別識別子の組(要素が対数)が、作業領域Sに格納される(ステップS4407)。 Next, a set of modified individual identifiers (elements are logarithm) corresponding to the work area T is stored in the work area S (step S4407).
次に、作業領域Tに対応する集団識別子が作業領域tに格納される(ステップS4408)。 Next, the group identifier corresponding to the work area T is stored in the work area t (step S4408).
次に、作業領域Sの順序を変えた和のうち最小値を取った値min(Σ(S))に対し、指数関数で変換が実行されることにより、対数の効果がキャンセルされ、その演算結果が作業領域sに格納される(図45のステップS4409)。 Next, by converting the value min (Σ (S)) that takes the minimum value among the sums in which the order of the work areas S is changed, the logarithmic effect is canceled by performing the conversion with an exponential function, and the calculation is performed. The result is stored in the work area s (step S4409 in FIG. 45).
ステップS4409の演算結果がオーバーフローしたか否かが判定される(ステップS4410)。 It is determined whether or not the calculation result of step S4409 has overflowed (step S4410).
ステップS4410の判定がYESならば、S4413へ移行する。
ステップS4410の判定がNOならば、作業領域sの値に最も近い整数は作業領域tの値か否かが判定される(ステップS4411)。
If the determination in step S4410 is YES, the process proceeds to S4413.
If the determination in step S4410 is NO, it is determined whether the integer closest to the value of work area s is the value of work area t (step S4411).
ステップS4411の判定がYESならば、S4413へ移行する。
ステップS4411の判定がNOならば、作業領域sの値と作業領域T の値の対が、例外値リストに登録される(ステップS4412)。
If the determination in step S4411 is YES, the process proceeds to S4413.
If the determination in step S4411 is NO, the pair of the value of the work area s and the value of the work area T is registered in the exception value list (step S4412).
その後、作業領域U内の次の位置が作業領域Xに格納され(ステップS4413)、ステップS4405に戻る。 Thereafter, the next position in the work area U is stored in the work area X (step S4413), and the process returns to step S4405.
以上のステップS4405からステップS4413までの繰返し処理の結果、ステップS4405の判定がYESになったら、例外値リストの作成処理が終了する。 As a result of the repetition processing from step S4405 to step S4413 as described above, if the determination in step S4405 is YES, the exception value list creation processing ends.
図46は、図44のステップS4402の、誤差チェックが必要な個識別子の成分個数の上限値を算出して作業領域Kに格納する処理の詳細例を示すフローチャートである。 FIG. 46 is a flowchart illustrating a detailed example of the process of calculating the upper limit value of the number of components of the individual identifier that requires error checking and storing it in the work area K in step S4402 of FIG.
まず、整列済の個別識別子成分リストが作業領域Lに格納される(ステップS4601)。ここで、作業領域Lは、最小要素が先頭になるように整列される。 First, the sorted individual identifier component list is stored in the work area L (step S4601). Here, the work area L is aligned so that the smallest element is at the top.
次に、分解能の上限値が作業領域kに格納される(ステップS4602)。
次に、作業領域Lの先頭位置が作業領域Yに格納される(ステップS4603)。
Next, the upper limit value of the resolution is stored in the work area k (step S4602).
Next, the start position of the work area L is stored in the work area Y (step S4603).
次に、作業領域fに値1が格納される(ステップS4604)。
次に、作業領域Kに、作業領域kの値が初期値として格納される(ステップS4605)。
Next, the
Next, the value of the work area k is stored in the work area K as an initial value (step S4605).
次に、作業領域Yの位置が作業領域Lの末端位置になったか否かが判定される(ステップS4606)。 Next, it is determined whether or not the position of the work area Y has reached the end position of the work area L (step S4606).
ステップS4606の判定がNOならば、作業領域L内の作業領域Yが示す現在位置の要素が作業領域gに格納される(ステップS4607)。 If the determination in step S4606 is NO, the element at the current position indicated by the work area Y in the work area L is stored in the work area g (step S4607).
次に、作業領域fの値に作業領域gの値を乗算した結果が作業領域fに格納される(ステップS4608)。 Next, the result of multiplying the value of the work area f by the value of the work area g is stored in the work area f (step S4608).
ステップS4608の演算結果がオーバーフローしたか否かが判定される(ステップS4609)。 It is determined whether or not the calculation result of step S4608 has overflowed (step S4609).
ステップS4609の判定がYESならば、処理が終了する。
ステップS4609の判定がNOならば、作業領域Kの値が+1インクリメントされる(ステップS4610)。
If the determination in step S4609 is YES, the process ends.
If the determination in step S4609 is NO, the value of work area K is incremented by +1 (step S4610).
作業領域L内の次の位置が作業領域Yに格納され(ステップS4611)、ステップS4606の処理に戻る。 The next position in the work area L is stored in the work area Y (step S4611), and the process returns to step S4606.
以上のステップS4606からステップS4611までの繰返し処理の結果、ステップS4606の判定がYESになると、図46のフローチャートの処理が終了し、作業領域Kに誤差チェックが必要な個識別子の成分個数の上限値が格納され、図44のステップS4402の処理が終了する。 As a result of the repetitive processing from step S4606 to step S4611, if the determination in step S4606 becomes YES, the processing of the flowchart in FIG. 46 ends, and the upper limit value of the number of components of the individual identifier that requires error check in the work area K Is stored, and the process of step S4402 of FIG. 44 ends.
以上説明した第8の実施形態は、ノード間演算機構(Reduction あるいはAtomic Operation 機能)として加法のみ利用できる場合に特に有効である。ノード間演算機構を使わずに、各ノードがCPU 上で演算を行う場合と比較すると、第3の実施形態で説明したように、ノード間演算機構を使う方が、性能的に有利であるからである。 The eighth embodiment described above is particularly effective when only addition can be used as an inter-node operation mechanism (Reduction or Atomic Operation function). Compared with the case where each node performs computation on the CPU without using the inter-node arithmetic mechanism, as described in the third embodiment, it is more advantageous in terms of performance to use the inter-node arithmetic mechanism. It is.
なお、各ノードの個別識別子の対数は、予め計算して各ノードに配布しておく事が可能であるため、指数関数や対数関数の計算、および例外値リストの表を引く操作は、受信側で実行できればよく、送信側ノードでは、そのための演算装置や表を格納するメモリは不要である。 Since the logarithm of the individual identifier of each node can be calculated in advance and distributed to each node, the calculation of the exponential function and logarithmic function, and the operation of pulling the exception value list table are performed on the receiving side. The transmission side node does not need an arithmetic unit or a memory for storing the table.
<第9の実施形態>
次に、第9の実施形態について説明する。
<Ninth Embodiment>
Next, a ninth embodiment will be described.
上述した第8の実施形態では、集団識別子を求めるリダクションは加法で行い、個別識別子を取り出す際に(対数関数の逆関数である指数関数によって変換した後)除法を使用したが、本実施形態では、加算結果を元に表を引く事で個別識別子を取り出す。 In the above-described eighth embodiment, the reduction for obtaining the group identifier is performed by addition, and the division method is used when the individual identifier is extracted (after conversion by an exponential function that is an inverse function of the logarithmic function). Then, an individual identifier is extracted by drawing a table based on the addition result.
いわば、本実施形態の計算方法は、第8の実施形態で全ての集団識別子を「例外値リスト」に登録した場合に相当する。ただし、本実施形態での個別識別子は、「第5,第6の実施形態での個別識別子」から求めたものである必要はなく、例えば、次の条件(P) かつ(Q) を満たす「加算が定義された集合」の要素であればよい。
(P) 所定の大きさの領域での計算でオーバーフローしない個別識別子の組み合わせによる和は全て異なる
(Q) k 個より多くの個別識別子の和は全て特定の数より大きく、k 個以下の個別識別子の和は全て異なる。
In other words, the calculation method of this embodiment corresponds to the case where all group identifiers are registered in the “exception value list” in the eighth embodiment. However, the individual identifier in this embodiment does not have to be obtained from the “individual identifier in the fifth and sixth embodiments”, and for example, satisfies the following conditions (P) and (Q): Any element of the “set with defined addition” may be used.
(P) The sums of combinations of individual identifiers that do not overflow in calculations in a predetermined size area are all different.
(Q) The sum of more than k individual identifiers is all greater than a specific number, and the sum of k or less individual identifiers is all different.
例えば、整数の加算に対して上記性質を持つ集合は、識別子を格納する領域に格納可能な数の上限をa として、次のように選ぶ事ができる。
k = 1 の場合: a/2 以上a 以下の整数全ての集合を個別識別子の集合として使用できる。
k ≧ 2 の場合: a/k 以下の範囲で、以下のように集合S の要素を大きい方から追加する。こうして求めたS の任意の部分集合は個別識別子の集合として使用できる。
For example, a set having the above property for integer addition can be selected as follows, with the upper limit of the number that can be stored in the identifier storage area as a.
When k = 1: A set of all integers between a / 2 and a can be used as a set of individual identifiers.
If k ≥ 2: Add elements of the set S from the largest in the range below a / k as follows. Any subset of S thus obtained can be used as a set of individual identifiers.
(1) 集合S を{[a/k]+1} という1要素の集合とする。ここでの記号[x] は、「ガウスの記号」で、x を越えない最大の整数を意味する。a がm bits 領域とすると、a=2^m-1と表される。[a/k]+1から降順に連続してk 個の整数を選んで和をとってもオーバーフローしない(すなわち、和がa 以下である)事は、容易に確かめられる。 (1) A set S is a set of one element {[a / k] +1}. The symbol [x] here is a “Gaussian symbol” and means the largest integer that does not exceed x. If a is the m bits region, a = 2 ^ m-1. It is easy to see that even if k integers are selected in descending order from [a / k] +1, the sum does not overflow (ie, the sum is less than or equal to a).
(2) 集合S の最小値をb として、b 未満の正の整数c でS∪{c}が前述の条件(P) かつ(Q) を保つか否かをb-1 から始めて降順に試していく。条件を保つ整数c が見つかれば、S∪{c}を改めてS とおき(2) を繰り返す。必ずしもb-1 以下の正の整数全てを試す必要はなく、事前に定めた大きさ、あるいは事前に定めた個数の個別識別子候補が見つかった時点で処理を終了してもよい。例えば、「k+1 個の和ではオーバーフローする」大きさでの打ち切りや(システムの管理対象の数より十分大きい)必要な数の個別識別子が得られた時点での打ち切りなど。 (2) Let b be the minimum value of set S, and test whether S∪ {c} maintains the above conditions (P) and (Q) with a positive integer c less than b, starting from b-1 in descending order. To go. If an integer c that keeps the condition is found, replace S∪ {c} with S and repeat (2). It is not always necessary to try all positive integers less than or equal to b-1, and the processing may be terminated when a predetermined size or a predetermined number of individual identifier candidates are found. For example, censoring at a size that “overflows with the sum of k + 1” or censoring when a required number of individual identifiers (which is sufficiently larger than the number of systems to be managed) is obtained.
k≧2の場合、a が「m bit 領域に格納可能な整数」とするとき、分解能が完全な場合は、管理対象数の上限であるm 個より多くの管理対象に使用できるためには、S の要素数がmより大きい事も確認する必要がある。 In the case of k ≧ 2, when a is `` an integer that can be stored in the m bit area '' and the resolution is perfect, it can be used for more management targets than the upper limit of the number of management targets. It is also necessary to confirm that the number of elements in S is greater than m.
例えば、分解能の上限k=2として、7bits 領域での{64,63,62,60,57,52,44,35}という集合は8 要素であり、条件を満たす。(上記の手順(1),(2)でa=127) For example, with the upper limit of resolution k = 2, the set of {64, 63, 62, 60, 57, 52, 44, 35} in the 7bits region has 8 elements and satisfies the condition. (A = 127 in steps (1) and (2) above)
まず、第1の実施形態の説明で示した図16(b)を見れば、「2要素の和」が全て異なる事が確かめられる。また、3要素以上の和が全て7 bits 領域ではオーバーフローする事は35+44+52=131>127つまり、小さい方からの3要素の和が7 bits 領域ではオーバーフローする事から明らかである。 First, referring to FIG. 16B shown in the description of the first embodiment, it is confirmed that “sum of two elements” is all different. It is clear from the fact that the sum of all three elements or more overflows in the 7 bits area, that is 35 + 44 + 52 = 131> 127, that is, the sum of the three elements from the smaller one overflows in the 7 bits area.
上記の例で降順に調べている理由は「k 個を越える数の和がオーバーフローする範囲では、k個以下の組み合わせの和を計算するだけでよい」事を利用して、確認の計算量を減らす事を意図している。ただし、個別識別子の集合を用意するのは、システムが運用される時ではなくシステムの設計時点であるため、個別識別子の集合を決定するための計算時間はシステム運用時の性能には影響を及ぼさない。 The reason for checking in descending order in the above example is that, in the range where the sum of more than k numbers overflows, it is only necessary to calculate the sum of combinations of k or less. Intended to reduce. However, since the set of individual identifiers is prepared not at the time of system operation but at the time of system design, the calculation time for determining the set of individual identifiers will affect the performance during system operation. Absent.
集団識別子の生成時に使用された個別識別子を調べるための表、あるいはハッシュ関数では、ある集団識別子を生成する個別識別子の中の少なくとも1つを与えれば、改めて表を引く、あるいはハッシュ関数を適用しなおして、残りの個別識別子も順次求める事ができる。例えば、ある集団識別子を生成する個別識別子のうち最大の数を与える表かハッシュ関数を事前に用意しておけば、受信した集団識別子を生成した個別識別子を全て求める事ができる。 In the table or hash function for examining the individual identifier used when generating the group identifier, if at least one of the individual identifiers for generating a certain group identifier is given, the table is redrawn or the hash function is applied. The remaining individual identifiers can be obtained sequentially. For example, if a table or hash function that provides the maximum number of individual identifiers for generating a certain group identifier is prepared in advance, all the individual identifiers that have generated the received group identifier can be obtained.
図47は、上述の理論に基づく、第9の実施形態における送信側ノードにおける識別子集約機構401(図4)の処理の例を示すフローチャートである。図47は、第1の実施形態に係る図5のフローチャートの場合と同様にして、リダクション404の演算として加法が使用され、かつ個別識別子および集団識別子がベクトル化されたものである。ただし、本実施形態における加法演算は、前述した条件(p)および(q)を満たすものである。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子集約機構401の処理が開始されると、図7の送信起点ノード701のCPU701−1または中継ノードとして機能する受信・中継ノード702のCPU702−1が実行する。入力ベクトル1または2等の作業領域は、送信起点ノード701のメモリ701−2または受信・中継ノード702のメモリ702−2に記憶される。
FIG. 47 is a flowchart showing an example of processing of the identifier aggregating mechanism 401 (FIG. 4) in the transmission side node in the ninth embodiment based on the above theory. 47, as in the case of the flowchart of FIG. 5 according to the first embodiment, addition is used as the calculation of the
本実施例での識別子は整数の順序付けられた集合である。ここでは、「順序付けられた集合」を「ベクトル」と呼び、「順序つけられた集合」の要素である整数を成分と呼ぶ。識別子ベクトル間の演算は、対応する位置の成分間の演算で定める。 The identifier in this example is an ordered set of integers. Here, an “ordered set” is called a “vector”, and an integer that is an element of the “ordered set” is called a component. The calculation between identifier vectors is determined by the calculation between components at corresponding positions.
図47において、まず、自ノードが通信の起点ノードであるか否かが判定される(ステップS4701)。 In FIG. 47, first, it is determined whether or not the own node is a communication origin node (step S4701).
ステップS3401の判定がNOであるならば、受信済みの値を格納する入力ベクトル1に、受信済みの集団識別子ベクトルが格納される(ステップS4702)。
If the determination in step S3401 is NO, the received group identifier vector is stored in the
ステップS4701の判定がYESならば、受信済みの値は無いため、入力ベクトル1の全成分に、加法演算の単位元の値0が格納される(ステップS4703)。
If the determination in step S4701 is YES, since no value has been received, the
次に、自ノードが管理する管理対象において通知すべき条件が成立したか否かが判定される(ステップS4704)。 Next, it is determined whether a condition to be notified is established in the management target managed by the own node (step S4704).
ステップS4704の判定がYESならば、自ノードの状態を格納する入力ベクトル2に、自ノードにおける管理対象(または自ノードそのもの)に対応する個別識別子ベクトルが格納される(ステップS4705)。
If the determination in step S4704 is YES, the individual identifier vector corresponding to the management target in the own node (or the own node itself) is stored in the
ステップS4704の判定がNOならば、入力ベクトル2の全成分に、単位元の値0が格納される(ステップS4706)。
If the determination in step S4704 is NO,
その後、入力ベクトル1,2の全成分の間で、リダクション404に使用する加法演算が実行される(ステップS4707)。
Thereafter, an addition operation used for the
最後に、ステップS4707での演算結果が、次の転送先への送信内容である集団識別子ベクトルとされて出力される(ステップS4708)。その後、図47のフローチャートで例示される送信側ノードにおける識別子集約機構401の処理が終了する。
Finally, the calculation result in step S4707 is output as a collective identifier vector that is the content of transmission to the next transfer destination (step S4708). Thereafter, the processing of the
図48は、上述の理論に基づく、第9の実施形態における受信側ノードにおける識別子分析機構402(図4)の処理の例を示すフローチャートである。このフローチャートにおける処理の基本的な考え方は、受信側ノードは集団識別子をキーとする個別識別子(成分)構成表を引いて、個別識別子(成分)を取り出すという点である。個別識別子および集団識別子は前述したようにベクトル化されている。機能ブロックおよびシステム構成は、第1の実施形態における図4および図7を例として説明する。もちろん、図20、図21、図22等のシステム構成が採用されてもよい。図4の識別子分析機構402の処理が開始されると、受信側ノードとして機能する図7の受信・中継ノード702のCPU702−1が実行する。また、作業領域ベクトルWやX等は、受信・中継ノード702のメモリ702−2に記憶される。
FIG. 48 is a flowchart showing an example of processing of the identifier analysis mechanism 402 (FIG. 4) in the receiving side node in the ninth embodiment based on the above theory. The basic concept of the processing in this flowchart is that the receiving side node extracts an individual identifier (component) by drawing an individual identifier (component) configuration table using a group identifier as a key. The individual identifier and the group identifier are vectorized as described above. The functional block and system configuration will be described with reference to FIG. 4 and FIG. 7 in the first embodiment. Of course, the system configuration of FIG. 20, FIG. 21, FIG. 22, etc. may be adopted. When the processing of the
まず、ノード間のリダクション404における集団識別子ベクトルが受信される(ステップS4801)。
First, the collective identifier vector in the
次に、集団識別子ベクトルにおいてオーバーフロー(図中「overflow」)が発生しているか否かが判定される(ステップS4802)。ステップS4802の判定がYESならば、受信処理は実質的に何も行われずに、図48で例示される受信側ノードにおける識別子分析機構402の処理が終了する。
Next, it is determined whether or not an overflow (“overflow” in the figure) has occurred in the collective identifier vector (step S4802). If the determination in step S4802 is YES, the reception process is not substantially performed, and the process of the
次に、ステップS4802の判定がNOならば、集団識別子ベクトルが作業領域ベクトルWに格納される(ステップS4803)。 Next, if the determination in step S4802 is NO, the group identifier vector is stored in the work area vector W (step S4803).
そして、作業領域ベクトルWの各成分について、図16(b)に例示されるような、集団識別子と生成因子である個別識別子のビットマップとの対照表を引いて、個別識別子が特定される(ステップS4804)。この対照表は、例えば受信・中継ノード702のメモリ702−2に保持されている。
Then, for each component of the work area vector W, an individual identifier is specified by drawing a comparison table between a group identifier and a bitmap of individual identifiers that are generation factors as illustrated in FIG. Step S4804). This comparison table is held in the memory 702-2 of the reception /
その後、図48のフローチャートで例示される受信側ノードにおける識別子分析機構402の処理が終了する。
Thereafter, the processing of the
図49および図50は、第9の実施形態において、加法のリダクションで集団識別子の成分を求めた場合の、受信側ノードで使用する個別識別子成分の対応リストの作成処理の例を示すフローチャートである。この処理は、図7の受信・中継ノード702以外の計算機によって実行されてよい。
FIG. 49 and FIG. 50 are flowcharts showing an example of a process for creating a correspondence list of individual identifier components used in the receiving node when the component of the collective identifier is obtained by additive reduction in the ninth embodiment. . This process may be executed by a computer other than the reception /
まず、整列済の個別識別子成分リストが、作業領域Lに格納される(ステップS4901)。 First, the sorted individual identifier component list is stored in the work area L (step S4901).
次に、各成分での誤差チェックが必要な個識別子の成分個数の上限値が算出され、作業領域Kに格納される(ステップS4902)。この処理の詳細については、図51のフローチャートを用いて後述する。 Next, the upper limit value of the number of components of the individual identifier that needs to be checked for errors in each component is calculated and stored in the work area K (step S4902). Details of this processing will be described later with reference to the flowchart of FIG.
次に、作業領域Lの要素からK個を取り出す組み合わせとそのK個の要素の総和の対のリストが、作業領域Uに格納される(ステップS4903)。 Next, a list of pairs of combinations for extracting K elements from the work area L and the sum of the K elements is stored in the work area U (step S4903).
次に、作業領域Uが、その要素の和について先頭を最小にするように整列される(ステップS4904)。 Next, the work areas U are aligned so that the top of the sum of the elements is minimized (step S4904).
次に、作業領域Uの先頭位置が、作業領域Xに格納される。
図50のフローチャートに移り、作業領域Xが示す位置が作業領域Uの末端位置であるか否かが判定される(ステップS4906)。
Next, the start position of the work area U is stored in the work area X.
Moving to the flowchart in FIG. 50, it is determined whether or not the position indicated by the work area X is the end position of the work area U (step S4906).
ステップS4906の判定がNOならば、作業領域Xの値が作業領域Zに格納される。
次に、作業領域U内の次の位置が、作業領域Xに格納される(ステップS4908)。
If the determination in step S4906 is NO, the value of work area X is stored in work area Z.
Next, the next position in the work area U is stored in the work area X (step S4908).
次に、作業領域Xの値が示す位置の要素の和が算出され、作業領域S(X)に格納される(ステップS4909)。 Next, the sum of the elements at the position indicated by the value of the work area X is calculated and stored in the work area S (X) (step S4909).
次に、作業領域Zの値が示す位置の要素の和が算出され、作業領域S(Z)に格納される(ステップS4910)。 Next, the sum of the elements at the position indicated by the value of the work area Z is calculated and stored in the work area S (Z) (step S4910).
作業領域S(X)と作業領域S(Z)の値が等しいか否かが判定される(ステップS4911)。 It is determined whether or not the values of the work area S (X) and the work area S (Z) are equal (step S4911).
ステップS4911の判定がYESならば、作業領域Xの値が示す作業領域Uの値U(X)と作業領域Zの値が示す作業領域Uの値U(Z)の2組が相互に識別不可能と判明した場合に対して、予め定められている処理が実行される(ステップS4912)。例えば、対照となる値の対照表への登録が禁止される。 If the determination in step S4911 is YES, two sets of the work area U value U (X) indicated by the work area X value and the work area U value U (Z) indicated by the work area Z value cannot be distinguished from each other. When it is determined that it is possible, a predetermined process is executed (step S4912). For example, registration of a reference value in the comparison table is prohibited.
ステップS4911の判定がNOならば、ステップS4912の処理はスキップされる。 If the determination in step S4911 is NO, the process in step S4912 is skipped.
その後、ステップS4906の処理に戻り、作業領域Xの値が示す次の位置に対する処理が続行される。 Thereafter, the process returns to step S4906, and the process for the next position indicated by the value of the work area X is continued.
作業領域Xが示す位置が作業領域Uの末端位置に到達した結果ステップS4906の判定がYESになると、図49および図50のフローチャートの処理を終了して、対照表の作成を終了する。 If the determination in step S4906 is YES as a result of the position indicated by the work area X reaching the end position of the work area U, the processing of the flowcharts of FIGS. 49 and 50 is terminated, and the creation of the comparison table is terminated.
図51は、図49のステップS4902の、各成分での誤差チェックが必要な個識別子の成分個数の上限値を算出して作業領域Kに格納する処理の詳細例を示すフローチャートである。このフローチャートは、第8の実施形態において対数の加法による乗算を利用する場合の例外値リストの作成処理において前述した図46のフローチャートの処理と、ほとんどの処理が同じである。すなわち、ステップS46・・・で始まる処理は、図46の場合と同じ処理である。図51が図46と異なるのは、図46のステップS4608に対応する図51のステップS5101で、作業領域fの値と作業領域gの値とを、乗算ではなく加算して、新たな作業領域fの値を算出する点である。これは、第9の実施形態におけるリダクション404の演算が乗算ではなく加算であるからである。その他の上限値算出のアルゴリズムは図46の場合と同じである。
FIG. 51 is a flowchart showing a detailed example of the process of calculating the upper limit value of the number of components of the individual identifier that needs to be checked for errors in each component and storing it in the work area K in step S4902 of FIG. This flowchart is almost the same as the process of the flowchart of FIG. 46 described above in the exception value list creation process in the case of using multiplication by logarithmic addition in the eighth embodiment. That is, the process starting from step S46... Is the same process as in FIG. 51 differs from FIG. 46 in step S5101 in FIG. 51 corresponding to step S4608 in FIG. 46, by adding the value of the work area f and the value of the work area g instead of multiplication, thereby creating a new work area. This is the point where the value of f is calculated. This is because the operation of the
上述した図49から図51のフローチャートをベースとして、前述した図16(b)の対照表を作成する具体的な手順について、以下に説明する。 A specific procedure for creating the above-described comparison table of FIG. 16B will be described below based on the flowcharts of FIGS. 49 to 51 described above.
<処理フロー>
初期集合を、
S={64}
とする。
64+63=127
なのでオーバーフローしない。ゆえに、
S={64,63}
としてもよい。
ここで、Sの最小値63を取る。
64+63,64+62,63+62はすべて異なるので、
(P) 所定の大きさの領域での計算でオーバーフローしない個別識別子の組み合わせによる和は全て異なる
(Q) k 個より多くの個別識別子の和は全て特定の数より大きく、k 個以下の個別識別子の和は全て異なる。
という条件が満たされる。このため、62を追加可能である。ゆえに、
S={64,63,62}
としてもよい。ただし、
S={64,63,62,61}とはできない。なぜならば、
64+61=63+62
であるからである。よって、61がスキップされる。
S={64,63,62,60}
としてもよい事は、以下のように確認できる。
<Processing flow>
The initial set
S = {64}
And
64 + 63 = 127
So it will not overflow. therefore,
S = {64,63}
It is good.
Here, the
64 + 63,64 + 62,63 + 62 are all different, so
(P) The sums of combinations of individual identifiers that do not overflow in calculations in a predetermined size area are all different.
(Q) The sum of more than k individual identifiers is all greater than a specific number, and the sum of k or less individual identifiers is all different.
The condition is satisfied. For this reason, 62 can be added. therefore,
S = {64,63,62}
It is good. However,
S = {64,63,62,61} is not possible. because,
64 + 61 = 63 + 62
Because. Therefore, 61 is skipped.
S = {64,63,62,60}
It is possible to confirm as follows.
前の3要素のなす部分集合に2つとも入っている場合は、確認済である。最小の和は下から2つの和、
63+62=125
である。少なくとも1つはみ出す場合、一方の要素は60である。最大の要素64との和が 124なので、前の3つの中からどれを選んで和をとっても、前の3つから2つとったものの和より小さいので、一致しない。また、前のものとの和は全部異なる。
If both are in the subset formed by the previous three elements, it is confirmed. The minimum sum is the two sums from the bottom,
63 + 62 = 125
It is. If at least one protrudes, one element is 60. Since the sum with the
一般に前の要素との差が1以上なので、
S={64,63,62,60,59}
とできない事は、
63+59=62+60
から明らかである。よって、59がスキップされる。
S={64,63,62,60,58}
とできない事は、
64+58=62+60
から明らかである。よって、58もスキップされる。
S={64,63,62,60,57}
とできる事は、前の4要素のなす部分集合に2つとも入っている場合は、確認済である。少なくとも1つはみ出す場合、一方の要素は57である。最大の要素64との和が121なので、前の3つの中からどれを選んで和をとっても、前の3つから2つとったものの和より小さいので、一致しない。また、前のものとの和は全部異なる。
Generally, the difference from the previous element is 1 or more,
S = {64,63,62,60,59}
What can not be
63 + 59 = 62 + 60
It is clear from Therefore, 59 is skipped.
S = {64,63,62,60,58}
What can not be
64 + 58 = 62 + 60
It is clear from Therefore, 58 is also skipped.
S = {64,63,62,60,57}
What can be done is confirmed if both are in the subset of the previous four elements. If at least one protrudes, one element is 57. Since the sum with the
以下、同様の処理が実行されることにより、図16(b)の対照表ができあがる。
以上説明した第9の実施形態は、ノード間演算機構(Reduction あるいはAtomic Operation 機能)として加法のみ利用できる場合に特に有効である。ノード間演算機構を使わずに、各ノードがCPU 上で演算を行う場合と比較すると、第3の実施形態で説明したように、ノード間演算機構を利用する方が、性能的に有利であるためである。
Thereafter, by performing the same processing, the comparison table of FIG. 16B is completed.
The ninth embodiment described above is particularly effective when only addition can be used as an inter-node operation mechanism (Reduction or Atomic Operation function). Compared to the case where each node performs an operation on the CPU without using the inter-node operation mechanism, as described in the third embodiment, it is more advantageous in terms of performance to use the inter-node operation mechanism. Because.
<第10の実施形態>
次に、第10の実施形態について説明する。
<Tenth Embodiment>
Next, a tenth embodiment will be described.
第5から第8の実施形態では、送信側ノードから受信側ノードに送るデータは「分解能が上限k を持つ」という条件により、第2から第4の実施形態に比べて、小さい領域で多数の管理対象の情報を受信できる。分解能が完全である第2から第4の実施形態の方法では、管理対象と同数のbit 数が必要となる。 In the fifth to eighth embodiments, the data sent from the transmission side node to the reception side node has a larger number of areas in a smaller area than in the second to fourth embodiments on the condition that the resolution has an upper limit k. Can receive managed information. In the methods of the second to fourth embodiments in which the resolution is complete, the same number of bits as the management target is required.
しかし、第5から第8の実施形態では、集団識別子から個別識別子を求める際に別途識別子の表を参照する必要があるため、何らかの方法でとりうる個別識別子の範囲を限定しないと、識別すべき管理対象と対応しない個別識別子の領域を含め、識別子の表のメモリ領域へのアクセスが増える。 However, in the fifth to eighth embodiments, it is necessary to refer to a table of identifiers separately when obtaining individual identifiers from collective identifiers. Therefore, if the range of individual identifiers that can be taken by any method is not limited, identification should be performed. Access to the memory area of the identifier table, including the area of individual identifiers that do not correspond to the management target, increases.
本実施形態では、識別子の集合を複数のグループに分けておき、各ノードは管理対象の識別子が所属するグループを別のリダクションで管理対象自体の識別子とは別に通知する。ここまでの基本的な考え方は第4の実施形態と同様であり、グループを上位の(仮想的な)管理対象として、各グループ(管理用の、仮想的な)の個別識別子を別途設定する。本実施形態ではさらに、以下の処理を実行する。 In this embodiment, the set of identifiers is divided into a plurality of groups, and each node notifies the group to which the identifier of the management target belongs, separately from the identifier of the management target itself by another reduction. The basic idea so far is the same as that of the fourth embodiment, and the individual identifier of each group (for management) is set separately with the group as the upper (virtual) management target. In the present embodiment, the following processing is further executed.
グループの識別に際して、同一グループに属する管理対象には「同じ領域の同じ位置のビットがon である個別識別子」を割当てれば、bitwise or 演算により「グループ内の少なくともどれか1つの管理対象が監視している状態にある」事を、リダクションにより通知できる。すなわち、複数の管理対象の状態のlogical or を通知できる。 When a group is identified, assigning an “individual identifier with the bit in the same position in the same area turned on” to a management target belonging to the same group, “at least one of the management targets in the group is monitored by bitwise or computation. You can be notified by reduction. That is, it is possible to notify a logical or status of a plurality of management target states.
bitwise and (ビット単位の論理積演算)ないし乗法を使用する場合、「not ( A and B) ←→ (not A) or (not B)」というド・モルガンの法則を利用すればよい。すなわち、条件が成立する管理対象に対して0 を入力とし、そうでない場合は1 を入力としてbitwise and ないし乗法を行った結果をbit 反転すればよい。 When using bitwise and (bitwise AND operation) or multiplication, De Morgan's law of “not (A and B) ← → (not A) or (not B)” may be used. In other words, 0 is input to the management target for which the condition is satisfied, and if not, 1 is input and bitwise and multiplication results are reversed.
加法を使用する場合は、単に「グループ用の集団識別子の格納領域」を別に持てばよい。(個別識別子が全て正なら足し算するだけで値が入ったか(変化したか)どうかが分かり、初期値0 として結果が0 でない値になるかオーバーフローした場合、少なくとも1つの入力が0 でない事が分かるので、「グループ用の個別識別子」を個々の管理対象の識別子と別に定める必要もない。「グループ用の個別識別子」は「グループ用の集団識別子の格納領域」を見るためのものであり、上記の場合、「グループ用の個別識別子」を与えなくても「グループ用の集団識別子の格納領域」は演算可能である。 In the case of using addition, it is only necessary to have another “storage area for group identifiers for groups”. (If the individual identifiers are all positive, it is possible to know whether or not a value has been entered (changed) just by adding, and if the result is a non-zero value or overflows as an initial value of 0, it can be seen that at least one input is not zero. Therefore, it is not necessary to define the “individual identifier for the group” separately from the identifier of each management target.The “individual identifier for the group” is for viewing the “storage area of the group identifier for the group”, and In this case, the “group collective identifier storage area” can be calculated without giving the “group individual identifier”.
グループの集団識別子の計算では管理対象数が小さくなるため、全ての管理対象の識別子を順次試すより、平均的な参照範囲を減らす事ができる。 Since the number of management targets is reduced in the calculation of group identifiers of groups, the average reference range can be reduced rather than sequentially trying all identifiers of management targets.
グループの集団識別子としては、第2,第3の実施形態のものを使用する方法(第4の実施形態と全く同様)でもよく、第5から第9の実施形態を適用してもよい。なお、第2、第3の実施形態に対するグループの識別子についても、第5から第8の実施形態の方法を適用することは可能である。 As a group identifier of a group, the method using the second and third embodiments (same as the fourth embodiment) may be used, and the fifth to ninth embodiments may be applied. Note that the methods of the fifth to eighth embodiments can also be applied to the group identifiers for the second and third embodiments.
図52は、本実施形態において、bitwise or 演算で階層的にグループ化された識別子の送信処理の例を示すフローチャートである。 FIG. 52 is a flowchart showing an example of transmission processing of identifiers hierarchically grouped by bitwise or computation in the present embodiment.
まず、各グループ階層の個別識別子からbitwise or 演算でのリダクションでグループの集団識別子が求められる(ステップS5201)。 First, the group identifier of the group is obtained from the individual identifier of each group hierarchy by reduction by bitwise or calculation (step S5201).
次に、最下層での(本来の管理対象の)個別識別子について乗法によるリダクションの集団識別子が求められる(ステップS5202)。 Next, a multiplicative reduction collective identifier is obtained for the individual identifier (original management target) in the lowest layer (step S5202).
そして、両方の集団識別子が、次の転送先に送信される(ステップS5203)。
図53は、本実施形態において、bitwise or 演算で階層的にグループ化された識別子の受信処理の例を示すフローチャートである。
Then, both group identifiers are transmitted to the next transfer destination (step S5203).
FIG. 53 is a flowchart showing an example of reception processing of identifiers hierarchically grouped by bitwise or calculation in this embodiment.
まず、各グループ階層の集団識別子から深さ優先探索により最下層の乗法を演算とする個別識別子成分のリストが特定される(ステップS5301)。深さ優先探索を伴う受信処理の具体的なアルゴリズム例は、第4の実施形態において図28のフローチャートを用いて前述した。 First, a list of individual identifier components that use the lowest-order multiplication as an operation is specified from the group identifier of each group hierarchy by depth-first search (step S5301). A specific algorithm example of the reception processing with depth priority search has been described above with reference to the flowchart of FIG. 28 in the fourth embodiment.
そして、特定された個別識別子成分のリストに基いて、乗法でのリダクションの集団識別子から個別識別子(の成分)が特定される(ステップS5302)。 Then, based on the specified list of individual identifier components, the individual identifier (component) is specified from the multiplicative reduction collective identifier (step S5302).
図54は、本実施形態において、乗法演算で階層的にグループ化された識別子の送信処理の例を示すフローチャートである。 FIG. 54 is a flowchart illustrating an example of transmission processing of identifiers hierarchically grouped by multiplicative computation in the present embodiment.
まず、各グループ階層の個別識別子からグループの集団識別子が求められる(ステップS5401)。 First, a group identifier of a group is obtained from the individual identifier of each group hierarchy (step S5401).
そして、各階層の集団識別子が、次の転送先に送信される(ステップS5402)。
図55は、本実施形態において、乗法演算で階層的にグループ化された識別子の受信処理の例を示すフローチャートである。
Then, the group identifier of each layer is transmitted to the next transfer destination (step S5402).
FIG. 55 is a flowchart illustrating an example of reception processing of identifiers hierarchically grouped by multiplicative computation in the present embodiment.
まず、現在処理する階層を示す作業領域gに値1が格納される(ステップS5501)。
次に、作業領域gが示す階層の集団識別子(成分)が、作業領域W(g)に格納される(ステップS5502)。
First, the
Next, the group identifier (component) of the hierarchy indicated by the work area g is stored in the work area W (g) (step S5502).
次に、作業領域gが示す階層の値が、グループ階層数よりも大きくなったか否かが判定される(ステップS5503)。 Next, it is determined whether or not the value of the hierarchy indicated by the work area g is greater than the number of group hierarchies (step S5503).
ステップS5503の判定がNOならば、作業領域W(g)が1(乗法演算の単位元)でないか否かが判定される(ステップS5504)。 If the determination in step S5503 is NO, it is determined whether or not the work area W (g) is not 1 (unit element of multiplicative calculation) (step S5504).
ステップS5504の判定がYES(W(g)が値1でない)ならば、作業領域W(g)内の個別識別子成分の1つが、作業領域qに格納される(ステップS5505)。 If the determination in step S5504 is YES (W (g) is not 1), one of the individual identifier components in work area W (g) is stored in work area q (step S5505).
次に、作業領域gが示す階層の値がグループ階層数に等しいか否か、すなわち最下層であるか否かが判定される(ステップS5506)。 Next, it is determined whether the value of the hierarchy indicated by the work area g is equal to the number of group hierarchies, that is, whether it is the lowest layer (step S5506).
ステップS5506の判定がYESならば、最下層識別子に固有の処理、すなわち、最下層から取り出されている個別識別子より管理対象を抽出する処理が実行される(ステップS5507)。 If the determination in step S5506 is YES, processing unique to the lowest layer identifier, that is, processing for extracting a management target from the individual identifier extracted from the lowest layer is executed (step S5507).
ステップS5506の判定がNOば、ステップS5507の処理はスキップされる。
その後、作業領域W(g)を作業領域qで除算した結果が、新たに作業領域W(g)に格納される(ステップS5508)。
If the determination in step S5506 is NO, the process in step S5507 is skipped.
Thereafter, the result of dividing the work area W (g) by the work area q is newly stored in the work area W (g) (step S5508).
最後に、作業領域gの値が+1インクリメントされる(ステップS5509)。その後、ステップS5502の処理に戻り、次の階層に対する受信処理が実行される。 Finally, the value of the work area g is incremented by +1 (step S5509). Thereafter, the processing returns to step S5502, and the reception processing for the next layer is executed.
作業領域gが示す階層の値がグループ階層数よりも大きくなった結果ステップS5503の判定がYESになると、受信処理が終了する。 If the determination in step S5503 is YES as a result of the value of the hierarchy indicated by the work area g being greater than the number of group hierarchies, the reception process ends.
以上説明した第10の実施形態によれば、任意の分解能k に対して、個別識別子の探索範囲を限定してメモリアクセスに伴う処理時間を短縮することが可能となる。
According to the tenth embodiment described above, it is possible to reduce the processing time associated with memory access by limiting the search range of the individual identifier for an
<第11の実施形態>
次に、第11の実施形態について説明する。
<Eleventh embodiment>
Next, an eleventh embodiment will be described.
集団識別子から個別識別子を特定する過程で表を引く場合、ないし個別識別子から管理対象を特定する処理で表を検索する場合に、検索処理の高速化が課題となる。 When retrieving a table in the process of identifying an individual identifier from a group identifier, or when retrieving a table by a process of identifying a management target from an individual identifier, speeding up the retrieval process becomes an issue.
特に、「分解能が上限k で制限される場合」でかつ演算を乗法とする際の基本的アイデアは、「素因数分解の一意性」を利用して、乗法でのリダクションで計算された集団識別子から、個別識別子を取り出す事である。従って、「素因数分解」の所要時間がシステムの処理性能の高速化に際して重要な因子となる。 In particular, the basic idea for multiplicative operations when “the resolution is limited by the upper limit k” is to use the “unique factorization” to determine the group identifier calculated by multiplicative reduction. The individual identifier is taken out. Therefore, the time required for “prime factorization” is an important factor in speeding up the processing performance of the system.
「素因数分解の一意性」が成立する集合として、通常の意味の整数ではなく「代数的整数」を使用する事で、係数が同じ大きさの範囲内で個別識別子として使用できる数を増やして、同じ分解能k を実現するために必要なメモリ使用量を削減する。ここで、普通の整数以外の集合(例えば「代数的整数」の集合)での「素数(に相当する要素)」は、関連する数学の文献において「素元」と呼ばれ、それらの集合での「素因数分解」は「素元分解」と呼ばれる事が多いが、本出願では「ある集合における「素数」」という呼び方を主に使用している。学術的な厳密性よりも分かりやすさを重視したためである。 By using “algebraic integers” instead of ordinary integers as a set where “unique factorization uniqueness” is established, the number of coefficients that can be used as individual identifiers within the same size range is increased. Reduce the amount of memory required to achieve the same resolution k. Here, “prime numbers” (elements corresponding to “algebraic integers”) other than ordinary integers are called “prime elements” in related mathematics literature. Is often called “prime factorization”, but in this application, the term “prime number in a set” is mainly used. This is because the emphasis was on ease of understanding rather than academic rigor.
本実施形態では、brute force method(因数となりうる数で順次割っていく事による因数分解の方法)を使う場合に、現れる素因数の範囲を別途通知する方法や整数での除算での余りの計算を利用して、「因数となりうる数」の集合を小さくして、その集合の要素を含む表を引くためのメモリアクセスに伴う処理時間を削減する。なお、brute force method では、因数となりうる数の表を引く過程で、管理対象の番号も合わせて求める事ができる。管理対象の番号自体を表の「主キー」にするか、表の各エントリに管理対象の番号を含めておく。また、割り算による余りをハッシュ値として、ハッシュ値毎に「因数となりうる数」の表を分割する事で、引くべき表の大きさを小さくすることができる。個別識別子の集合から規定される「集団識別子内の素因数の数の上限」の範囲内で、「集団識別子の除算での余り」に基いて、「個別識別子の余りの組み合わせ」を限定する事で、個別識別子を求めるために引くべき表を限定することができる。さらに、複数の数での割り算による余りの組み合わせにより、「因数となりうる数」の表を細分する事により、引くべき表の大きさを、さらに小さくすることができる。割り算の余りによる条件は、除数を互いに素にする事で「独立な条件」となるので、「互いに素な複数の除数による余りの組み合わせ」毎の表を作る事で細分できる。 In this embodiment, when using the brute force method (a factorization method by sequentially dividing by a number that can be a factor), a method for separately reporting the range of prime factors that appear or a remainder calculation by an integer division is performed. By using this, the set of “numbers that can be factors” is reduced, and the processing time associated with memory access for drawing a table including elements of the set is reduced. In the brute force method, the number of management targets can also be obtained in the process of drawing a table of numbers that can be factors. The management target number itself is used as the “primary key” of the table, or the management target number is included in each entry of the table. Further, by dividing the table of “number that can be a factor” for each hash value by using the remainder from the division as a hash value, the size of the table to be subtracted can be reduced. By limiting the “remaining combination of individual identifiers” based on the “remainder of division of group identifiers” within the range of “the upper limit of the number of prime factors in a group identifier” defined from the set of individual identifiers. The table to be drawn for obtaining the individual identifier can be limited. Further, by subdividing the table of “number that can be a factor” by a combination of remainders by division by a plurality of numbers, the size of the table to be subtracted can be further reduced. The condition based on the remainder of the division becomes an “independent condition” by making the divisors prime to each other, and can therefore be subdivided by creating a table for each “combination of remainders by a plurality of relatively prime divisors”.
以下に説明する本実施形態では、識別子から管理対象の番号を求める操作において、割り算による余りをハッシュ値とし、ハッシュ値毎に「因数となりうる数」の表を分割する事で、引くべき表の大きさを小さくする。すなわち、本実施形態では、「ハッシュ関数」を利用する事で、検索処理に際して参照が必要なメモリ領域の量を限定する。リダクション演算に乗法を使用し、集団子識別子の生成因子を「素因数分解」で求める場合は、使用する個別識別子全体の集合が「予め分かっている素因数の候補」なので、個別識別子全体の集合の個数をN として、O(N) 以下である。N が数万から数十万程度でも、システムによっては「許容範囲内」にできる。除算の剰余を利用したハッシュ関数で、O(N) のままでも、「定数係数」を小さくする事で「許容範囲内」にできる場合がある。 In the present embodiment described below, in the operation for obtaining the number to be managed from the identifier, the remainder from the division is used as a hash value, and the table of “number that can be a factor” is divided for each hash value, so that the table to be subtracted Reduce the size. That is, in the present embodiment, the amount of memory area that needs to be referred to in the search process is limited by using a “hash function”. When multiplicative is used for the reduction operation and the generation factor of the collective identifier is obtained by "prime factorization", the set of all the individual identifiers to be used is "candidate of prime factors known in advance". And N is O (N) or less. Even if N is in the range of tens of thousands to hundreds of thousands, depending on the system, it can be “within an acceptable range”. A hash function that uses the remainder of division, even if O (N) remains unchanged, it can be made “within tolerance” by reducing the “constant coefficient”.
個別識別子から管理対象の番号を求める際に「個別識別子に使われる素数の表」を引く場合、大きさ順に表を整列して(線形探索(Linear Search)でなく2分探索(binary search)を使用して)表の大きさNに対しての探索時間をlog_2(N) 程度に抑えられる。 When subtracting the "prime number table used for individual identifiers" when obtaining the numbers to be managed from individual identifiers, arrange the tables in order of size (binary search instead of linear search). The search time for table size N can be reduced to log_2 (N).
さらに、逆引きできる表や計算式(ハッシュ関数)、ないし、それらの組み合わせにより、探索範囲を狭める事もできる。以下では、本実施形態で利用可能なハッシュ関数の例を挙げておく。 Furthermore, the search range can be narrowed by a table or calculation formula (hash function) that can be reversed, or a combination thereof. Hereinafter, examples of hash functions that can be used in this embodiment will be described.
例えば、ハッシュ関数として個別識別子領域の下位4 bits ないし下位8 bitsの値を使い、予め個別識別子に使う素数を下位4 bits あるいは8 bits 毎に別の表にしておく事ができる。 For example, the value of lower 4 bits to lower 8 bits of the individual identifier area can be used as a hash function, and the prime number used for the individual identifier can be stored in a separate table for each lower 4 bits or 8 bits.
各ハッシュ値(下位4 bits ないし8 bits の値)毎の表の大きさが平均化されるように個別識別子に使う素数の集合を選んでおけば、探索すべき表の大きさを1/15 、ないし1/255 程度に小さくできる。 If you select a set of prime numbers to be used for individual identifiers so that the size of the table for each hash value (lower 4 bits to 8 bits) is averaged, the size of the table to be searched is reduced to 1/15. Or it can be as small as 1/255.
第5,第6の実施形態で、k=2として、32 bit 領域を使用する場合に、個別識別子を2^16-1より小さく2^(32/3) より大きい素数(例えば、1627以上の素数)を個別識別子とすると、3個以上の個別識別子の積はオーバーフローするので、集団識別子の数が2個以下であるとしてよい。 In the fifth and sixth embodiments, when k = 2 and a 32-bit region is used, the individual identifier is a prime number smaller than 2 ^ 16-1 and larger than 2 ^ (32/3) (for example, 1627 or more If the prime number) is an individual identifier, the product of three or more individual identifiers overflows, so the number of group identifiers may be two or less.
また、1627^2>2^16-1なので、集団識別子の大きさによって、2個の個別識別子が含まれる場合と、1個の個別識別子しか含まない場合を区別できる。 Also, since 1627 ^ 2> 2 ^ 16-1, it is possible to distinguish between the case where two individual identifiers are included and the case where only one individual identifier is included depending on the size of the group identifier.
1個の個別識別子しか含まないと判れば、k=1の場合と同様な手法により探索範囲を減らす事ができる。 If it is determined that only one individual identifier is included, the search range can be reduced by the same method as in the case of k = 1.
2個の個別識別子を含む場合、集団識別子の平方根r を計算する。個別識別子の一方はr より大きく他方はr より小さいので、どちらかの一方の範囲で探索すればよい。 When two individual identifiers are included, the square root r of the group identifier is calculated. Since one of the individual identifiers is larger than r and the other is smaller than r, it is sufficient to search in one of the ranges.
さらに、個別識別子の大きさを出来るだけ揃えておくと、含まれる個別識別子は集団識別子の平方根に近くなるので、最初に割り切れるか試す素数は「平方根になるべく近い素数」として、大きさで昇順、ないし降順に試していく方法が有効になる。 Furthermore, if the sizes of the individual identifiers are aligned as much as possible, the included individual identifiers are close to the square root of the collective identifier, so the prime number to try to divide first is `` prime number as close to the square root '' ascending order by size, Or the method of trying in descending order becomes effective.
任意の分解能k とm bits 領域の組み合わせについて、2^(m/k) を下限とする範囲の素数を個別識別子に使い、少なくとも1つの個別識別子が集団識別子のk 乗根より大きいあるいは小さい事を利用して探索範囲を限定できる。個別識別子の大きさを揃えておく事の効果も、k=2の場合と同様である。 For an arbitrary combination of resolution k and m bits, use a prime number in the range lower than 2 ^ (m / k) as the individual identifier, and make sure that at least one individual identifier is larger or smaller than the k-th root of the group identifier. The search range can be limited. The effect of arranging the sizes of the individual identifiers is the same as in the case of k = 2.
また、奇数の素数だけを個別識別子とし、さらに下位2 bits を参照して4 で割った余りが1 の素数と3 の素数について個別に表を作成しておく事で個別識別子の表の探索範囲を限定する事が、次のようにして可能である。 Also, only the odd prime numbers are used as individual identifiers, and the table search range for individual identifiers is created by creating separate tables for the prime number with a remainder of 1 and 3 prime numbers divided by 4 with reference to the lower 2 bits. It is possible to limit as follows.
集団識別子を4 で割った余りが3 の場合、一方の素数を4 で割った余りが3,他方を4 で割った余りが1 なので、素数の表を「4 で割った余り」を基準に2つ分けておけば、どちらの表にも必ず個別識別子が含まれるので、片方の表の範囲内を最初に探索する事で探索範囲が半分程度になる。集団識別子を4 で割った余りが1 の場合は、片方の表の範囲内を最初に探索する方法では、その表に個別識別子が含まれない場合の探索時間が大きくなるので、最初から全個別識別子候補を含む表を探索する方が、探索時間が平均化される。 If the remainder of dividing the group identifier by 4 is 3, the remainder of dividing one prime number by 4 is 3, and the remainder of dividing the other 4 by 1 is 1, so the prime number table is based on "Remainder by dividing by 4". If the two are divided, each table always includes an individual identifier, so that the search range is reduced to about half by searching the range of one table first. If the remainder of dividing the group identifier by 4 is 1, the method of searching first within the range of one table increases the search time when the individual identifier is not included in that table. The search time is averaged when searching the table including the candidate identifiers.
なお、個別識別子を4 で割った余りがどちらかを、各ノードがlogical or のリダクションを並行して通知しておけば、2つの個別識別子を4 で割った余りが一致している場合も余りがどちらかが判定できるので、探索範囲が半分程度になる。これは、第4の実施形態で説明した方法の一例である)。 Note that if the individual identifier is divided by 4 and each node notifies the logical or reduction in parallel, the remainder when the two individual identifiers are divided by 4 is the same. Therefore, the search range is about half. This is an example of the method described in the fourth embodiment).
2の冪以外で割った余りによって、個別識別子を分けておく事もできる。例えば、3で割った余り、5で割った余り、7で割った余りなどで分けておく。個別識別子の素因数となる素数の分布は、例えば各余りについて均等にする、あるいは、逆に特定の余りになる素数だけを個別識別子の素因数にするなどの条件を、個別識別子の探索手順に合わせて付加しておく事ができる。 Individual identifiers can be separated by the remainder other than 2 For example, the remainder is divided by a remainder obtained by dividing by 3, a remainder obtained by dividing by 5, a remainder obtained by dividing by 7, and the like. For the distribution of prime numbers that are the prime factors of individual identifiers, for example, conditions such as equalizing each remainder, or conversely, only prime numbers that become specific remainders are prime factors of individual identifiers are added in accordance with the search procedure for individual identifiers. You can keep it.
例えば3で割った余りは1 または2 で、2つの数の積の余りが1 の場合は元の2つの余りが等しい事が分かるだけだが、2 の場合は、少なくとも一方の余りが1で他方が2と分かるので、どちらか一方を検索すれば、必ず素因数が見つかる事になる。従って、探索範囲が半分程度になる。 For example, if the remainder of division by 3 is 1 or 2, and the remainder of the product of two numbers is 1, you can see that the original two remainders are equal, but in the case of 2, at least one of the remainders is 1 and the other If you search for either one, you will always find a prime factor. Therefore, the search range is about half.
2つの数を4で割った余りによるハッシュ値と3で割った余りによるハッシュ値のどちらも同じになる確率は(各々の余りを持つ個別識別子の割合を均等にすれば)1/4 程度となり、3で割った余りによるハッシュ関数と併用すれば、3/4 程度の割合で探索時間が半分程度になる。他の数の余りによるハッシュ値も併用すれば、さらに大きな割合で探索時間を減らすことも出来る。 The probability that the hash value obtained by dividing the two numbers by 4 and the hash value obtained by dividing the number by 3 will be the same (if the proportion of individual identifiers having each remainder is equal) is about 1/4. If used in combination with a hash function with the remainder divided by 3, the search time is about half at a rate of about 3/4. If hash values with other numbers are also used together, the search time can be reduced by a larger percentage.
一般に演算器による計算の命令あたり(時間の観点での)コストはメモリ参照コストに比べて数桁小さいため、演算器による計算が必要な処理を追加して、メモリ参照コストを減らす事で高速になる場合がしばしばある。除算は、演算器を使用する処理の中では比較的コストが高いが、例えば3, 5, 7 での除算に対しては、第4の実施形態で引用した文献[6]などで開示されている比較的高速なアルゴリズムが知られている。このため、除算(ないし余りを求める)処理の時間は、探索範囲を減らす効果に較べて、十分小さいと期待できる。 In general, the cost per instruction (in terms of time) of calculation by an arithmetic unit is several orders of magnitude smaller than the memory reference cost, so processing that requires calculation by an arithmetic unit is added to reduce the memory reference cost, thereby increasing the speed. It often happens. Division is relatively expensive in processing using an arithmetic unit. For example, division by 3, 5, 7 is disclosed in the document [6] cited in the fourth embodiment. There are known relatively fast algorithms. For this reason, it can be expected that the time for the division (or the remainder) processing is sufficiently small compared to the effect of reducing the search range.
他の数の除算での余りについても、同様に試行済の除算での余りについての条件から探索範囲を狭められる場合がある。すなわち、個別識別子の集合をQ={q_1,q_2,...,q_i}としてQ-{q_1}={q_2,...,q_i}の各要素をq_1 で割った余りで分類し、Q_1,Q_2,...,Q_jとしておくと、q_1 での集団識別子の除算の余りについての条件からQ_1,Q_2,...,Q_jの中で、集団識別子の生成因子を含まないものを特定できる場合がある。 In the case of the remainder in other numbers of divisions, the search range may be narrowed in the same manner from the condition for the remainder in the attempted division. That is, the set of individual identifiers is Q = {q_1, q_2, ..., q_i} and each element of Q- {q_1} = {q_2, ..., q_i} is classified by the remainder obtained by dividing q_1, and Q_1 , Q_2, ..., Q_j, it is possible to identify Q_1, Q_2, ..., Q_j that do not contain a group identifier generation factor from the condition for the remainder of group identifier division in q_1 There is a case.
さらに、個別識別子の集合を、ハッシュ関数による探索範囲の削減効果が大きくなるように、事前に調整する事が可能である。あるハッシュ関数の値で「衝突」が起こって探索が必要になる個別識別子の表から「衝突」の多い方から順に個別識別子の候補を、実際に使用する個別識別子の表から除外していけば、「衝突」の減少により、平均探索範囲は減少する。 Furthermore, the set of individual identifiers can be adjusted in advance so that the effect of reducing the search range by the hash function is increased. If the individual identifier candidates that need to be searched due to a value of a hash function and that need to be searched are excluded from the individual identifier table that is actually used, the individual identifier candidates are ordered in descending order. The average search range decreases due to the decrease in “collision”.
図56は、本実施形態における個別識別子リストの探索処理の例を示すフローチャートであり、ハッシュ値で個別識別子表を限定して検索する一般的な処理の例を示す。 FIG. 56 is a flowchart showing an example of the individual identifier list search processing in the present embodiment, and shows an example of general processing for searching by limiting the individual identifier table with the hash value.
まず、個別識別子のハッシュ値が、作業領域hに格納される(ステップS5601)。
次に、作業領域hが示すハッシュ値に対応する個別識別子の表が、作業領域Lに格納される(ステップS5602)。
First, the hash value of the individual identifier is stored in the work area h (step S5601).
Next, a table of individual identifiers corresponding to the hash value indicated by the work area h is stored in the work area L (step S5602).
そして、個別識別子あ作業領域L内で検索され、管理対象の番号が求められる(ステップS5603)。 Then, the individual identifier is searched in the work area L, and the management target number is obtained (step S5603).
図57は、本実施形態における個別識別子リストの探索処理の例を示すフローチャートであり、集団識別子のハッシュ値で個別識別子のハッシュ値の範囲を限定して個別識別子の表を限定する処理の例を示す。 FIG. 57 is a flowchart showing an example of the search process of the individual identifier list in this embodiment, and an example of the process of limiting the table of individual identifiers by limiting the range of the hash value of the individual identifier with the hash value of the collective identifier Show.
まず、集団識別子のハッシュ値が作業領域Hに格納される(ステップS5701)。
次に、作業領域Hにより定まる個別識別子表の候補リストが、作業領域Gに格納される(ステップS5702)。
First, the hash value of the collective identifier is stored in the work area H (step S5701).
Next, an individual identifier table candidate list determined by the work area H is stored in the work area G (step S5702).
次に、作業領域Gから先頭の個別識別子表が取り出され、作業領域Xに格納される(ステップS5703)。 Next, the head individual identifier table is extracted from the work area G and stored in the work area X (step S5703).
次に、作業領域X内で集団識別子に含まれる個別識別子が探索される(ステップS5704)。 Next, the individual identifier included in the collective identifier is searched for in the work area X (step S5704).
個別識別子が見つかったか否かが判定される(ステップS5705)。
ステップS5705の判定がNOならば、探索処理が終了する。
It is determined whether an individual identifier has been found (step S5705).
If the determination in step S5705 is NO, the search process ends.
ステップS5705の判定がYESならば、作業領域Gの内容が空か否かが判定される(ステップS5706)。 If the determination in step S5705 is YES, it is determined whether the contents of the work area G are empty (step S5706).
ステップS5706の判定がNOならば、探索処理が終了する。
ステップS5706の判定がYESならば、作業領域Gから次の個別識別子リストが取り出され(ステップS5707)、ステップS5704に戻って次の探索が続行される。
If the determination in step S5706 is NO, the search process ends.
If the determination in step S5706 is YES, the next individual identifier list is extracted from the work area G (step S5707), the process returns to step S5704, and the next search is continued.
図58は、本実施形態における個別識別子リストの探索処理の例を示すフローチャートであり、集団識別子のハッシュ値による個別識別子表候補リストの作成処理の例を示す。 FIG. 58 is a flowchart showing an example of an individual identifier list search process in this embodiment, and shows an example of an individual identifier table candidate list creation process based on a hash value of a group identifier.
まず、個別識別子表を定めるインデックスの組のリストJが、空リストで初期化される(ステップS5801)。 First, an index set list J defining an individual identifier table is initialized with an empty list (step S5801).
次に、除数リストが、作業領域Qに格納される(ステップS5802)。
次に、集団識別子のハッシュ値リストが、作業領域Hに格納される(ステップS5803)。
Next, the divisor list is stored in the work area Q (step S5802).
Next, a hash value list of group identifiers is stored in the work area H (step S5803).
次に、作業領域Qまたは作業領域Hが、空であるか否かが判定される(ステップS5804)。 Next, it is determined whether the work area Q or the work area H is empty (step S5804).
ステップS5804の判定がNOならば、作業領域Q、Hから除数とハッシュ値の対が取り出され、作業領域の対(q,h)に格納される(ステップS5805)。 If the determination in step S5804 is NO, the divisor / hash value pair is extracted from the work areas Q and H and stored in the work area pair (q, h) (step S5805).
次に、qを法として、積の剰余がhの場合に、因子となりうる数のqに関する剰余の対のリストが、作業領域X(q,h)に格納される(ステップS5806)。 Next, when the remainder of the product is modulo q, a list of pairs of remainders relating to the number q that can be a factor is stored in the work area X (q, h) (step S5806).
最後に、全ての組合わせでJの各要素の末尾に、作業領域X(q,h)の各要素が追加されたリストが、改めてJとされる(ステップS5807)。 Finally, a list in which each element of the work area X (q, h) is added to the end of each element of J in all combinations is again J (step S5807).
その後、ステップS5804に戻って、処理が続行される。
最後に、ステップS5804の判定がYESになると、処理が終了する。
Thereafter, the process returns to step S5804 and the processing is continued.
Finally, when the determination in step S5804 is YES, the process ends.
図59は、第11の実施形態における個別識別子リストの探索処理の例を示すフローチャートであり、識別子のハッシュ値リストとして複数の除数による剰余の組を使用する例を示す。 FIG. 59 is a flowchart showing an example of the individual identifier list search process in the eleventh embodiment, and shows an example in which a set of remainders using a plurality of divisors is used as the identifier hash value list.
まず、除数リストが、作業領域Qに格納される(ステップS5901)。
次に、作業領域Qが空か否かが判定される(ステップS5902)。
First, the divisor list is stored in the work area Q (step S5901).
Next, it is determined whether or not the work area Q is empty (step S5902).
ステップS5902の判定がNOならば、作業領域Qから除数qが取り出され、識別子のqに関する剰余rが求められ、そのrがハッシュ値リストに追加される(ステップS5903)。 If the determination in step S5902 is NO, the divisor q is extracted from the work area Q, the remainder r regarding the identifier q is obtained, and the r is added to the hash value list (step S5903).
その後、ステップS5902に戻って、処理が続行される。
最後に、ステップS5902の判定がYESになると、処理が終了する。
Thereafter, the process returns to step S5902 and the processing is continued.
Finally, when the determination in step S5902 is YES, the process ends.
探索処理の具体例を以下に示す。
k=2 に固定し、使用する素数は5より大きい奇数とし、ハッシュ値を 「4 で割った余り」、「3 で割った余り」とします。適当な素数の集合を決めて、「4で割った余り」と「3で割った余り」の組み合わせで、4等分されるようにしておく。そうすると、2つの素数の積=集団識別子の余りについては、以下のようになる。
A specific example of the search process is shown below.
The k is fixed at 2 and the prime number used is an odd number greater than 5, and the hash value is "remainder divided by 4" and "remainder divided by 3." An appropriate set of prime numbers is determined and divided into four equal parts by a combination of “remainder divided by 4” and “remainder divided by 3”. Then, the remainder of the product of two prime numbers = the group identifier is as follows.
(積の余り)
積を4で割った余りが 3 なら、一方の素数は4で割って余り1,
他方の素数は4で割って余り3
積を4で割った余りが 1 なら、どちらの素数も4で割った余りが同じ。
積を3で割った余りが2なら、一方の素数は3で割って余り1,
他方の素数は3で割って余り2
積を3で割った余りが 1 なら、どちらの素数も3で割った余りが同じ。
(Remainder of product)
If the remainder of dividing the product by 4 is 3, then one prime is divided by 4 and the remainder is 1,
The other prime number is divided by 4 and the remainder is 3.
If the remainder when the product is divided by 4 is 1, the remainder when both primes are divided by 4 is the same.
If the product is divided by 3 and the remainder is 2, then one prime number is divided by 3 and the remainder is 1.
The other prime number is divided by 3 and the remainder is 2
If the remainder of dividing the product by 3 is 1, then the remainder of dividing both primes by 3 is the same.
上記の積を3で割った場合、4で割った場合の余りの組み合わせ条件で分類した表に分けておけば、表の検索時間が 1/4 になる。 If you divide the above product by 3 and divide it into a table sorted by the remaining combination conditions when you divide by 4, the table search time will be 1/4.
図58のフローチャートの処理では、Q={3,4}(除数)、H={5,7,11,13,17}(素数)とすると、左が3で割った余り、右が4で割った余りを示すものとして、以下の出力を得る処理となる。 In the process of the flowchart of FIG. 58, if Q = {3,4} (divisor) and H = {5,7,11,13,17} (prime number), the left is the remainder when divided by 3 and the right is 4. The following output is obtained to indicate the remainder of the division.
(出力)
5 -> (2,1)
7 -> (1,3)
11 -> (2,3)
13 -> (1,1)
17 -> (2,1)
(output)
5-> (2,1)
7-> (1,3)
11-> (2,3)
13-> (1,1)
17-> (2,1)
図59のフローチャートの処理では、Q={3,4}(除数)から以下4つのグループを作成する処理になる。
1.3で割ると1余り、4で割ると1余る
2.3で割ると2余り、4で割ると1余る
3.3で割ると1余り、4で割ると3余る
4.3で割ると2余り、4で割ると3余る
In the process of the flowchart of FIG. 59, the following four groups are created from Q = {3,4} (divisor).
1. Divide by 3 to get 1 remainder, divide by 4 to get 1
素数5と11を掛け合わせた数55(=5×11)は、3で割ると1余り、4で割ると3余る数であり、上記の3のグループに属する事になる。
The number 55 (= 5 × 11) obtained by multiplying the
以上説明した第11の実施形態によれば、第10の実施形態の場合と同様に、個別識別子の探索範囲を限定することが可能となる。 According to the eleventh embodiment described above, as in the case of the tenth embodiment, the search range of the individual identifier can be limited.
また、必要に応じて第10の実施形態と併用する場合を含め、第10の実施形態での「グループ(管理用/仮想的な)個別識別子」のリダクションに必要な通信を不要にするか、減少させる事により、図7の受信・中継ノード702のシステム資源所要量を、第10の実施形態(単独)での場合に比べて、減らすことが可能となる。
In addition, including the case where it is used together with the tenth embodiment as necessary, communication necessary for the reduction of the “group (management / virtual) individual identifier” in the tenth embodiment is unnecessary, By reducing it, the system resource requirement of the reception /
本実施形態では通信データ量が増加せず、追加される計算のコストは、メモリアクセスのコスト(ここでは「メモリアクセスに伴う処理遅延」の意味)に比べて小さい範囲内に留まる。このため、特に複数ハッシュ関数の組み合わせを使う事で、メモリアクセスコストが大幅に削減される。 In this embodiment, the amount of communication data does not increase, and the added calculation cost remains within a smaller range than the memory access cost (here, meaning “processing delay accompanying memory access”). For this reason, the memory access cost is greatly reduced by using a combination of a plurality of hash functions.
<第12の実施形態>
次に、第12の実施形態について説明する。
<Twelfth Embodiment>
Next, a twelfth embodiment will be described.
第11の実施形態の場合と同様にして、集団識別子から個別識別子を特定する過程で表を引く場合、ないし個別識別子から管理対象を特定する処理で表を検索する場合を考える。第11の実施形態で言及したハッシュ法の特別な場合として、次のデータの組に対して「回帰分析」あるいは「離散フーリエ変換」を適用して求めた近似式を利用することが可能である。
{個別識別子の集合}と{管理対象の番号の集合}
{集団識別子の集合}と{個別識別子の集合}
As in the case of the eleventh embodiment, consider a case where a table is drawn in the process of specifying an individual identifier from a group identifier, or a case where a table is searched by a process for specifying a management target from an individual identifier. As a special case of the hash method mentioned in the eleventh embodiment, an approximate expression obtained by applying “regression analysis” or “discrete Fourier transform” to the next data set can be used. .
{Set of individual identifiers} and {Set of numbers to be managed}
{A set of group identifiers} and {A set of individual identifiers}
本実施形態では、「回帰分析」や「離散フーリエ変換」を利用して、識別子に関する検索処理での探索範囲を狭め、これによりメモリアクセス量を制限し高速化する。本実施形態も「ハッシュ関数」を使う方法の一種と考える事ができるが、第11の実施形態の中で言及したハッシュ関数とは性質が大きく異なる。浮動小数点による計算を使用する点でも、整数演算による第11の実施形態と異なる。 In this embodiment, “regression analysis” or “discrete Fourier transform” is used to narrow the search range in the search processing for identifiers, thereby limiting the memory access amount and speeding up. Although this embodiment can also be considered as a kind of method using the “hash function”, the characteristics are significantly different from the hash function mentioned in the eleventh embodiment. The difference from the eleventh embodiment based on integer arithmetic is that floating point calculation is used.
第10の実施形態はリダクション404(図4)の際に使用する演算を乗法に限定したが、本実施形態はリダクション404に使用する演算が加法の場合も対象とする。本実施形態は、以下の探索範囲に適用することができる。
In the tenth embodiment, the operation used for the reduction 404 (FIG. 4) is limited to multiplication. However, the present embodiment is also applicable to the case where the operation used for the
個別識別子(の成分)から管理対象の番号を求める際の探索範囲。目的変数(従属変数)の管理対象番号と説明変数(独立変数)の個別識別子の間の対応は1対1対応であり、原理上は「完全ハッシュ関数」もありうる。 Search range when obtaining the number to be managed from the individual identifier (component). The correspondence between the management target number of the objective variable (dependent variable) and the individual identifier of the explanatory variable (independent variable) is one-to-one correspondence. In principle, there can be a “complete hash function”.
集団識別子(の成分)から個別識別子(の成分)の探索範囲。集団識別子と個別識別子の対応は1対1でないため、例えば個別識別子間の順序関係により最小、最大その他の「代表の一つ」を決める事にすれば、その個別識別子に対して、集団識別子の関数として回帰分析を適用できる。個別識別子(の成分)間の順序関係は、例えば以下のような関係で定められる。数としての大小関係である。成分毎の大小関係と数成分間の辞書式順序による全体での大小関係である。および、代数的整数の「ノルム」、係数の間の大小関係と各係数に対応する(ベクトル空間としての「基底」に対する)辞書式順序による大小関係である。一般に1対1対応でない場合(逆関数が存在しない場合)一変数の一次式での回帰分析だけでは、有効な近似式は得られないため、非線形回帰分析を使用する。例えば、大きさの範囲ごとに複数の区間に分けると、各区間では1対1対応になり、線形の近似式が有効になる場合がありうる。離散フーリエ変換や、(周期関数や単調増加ではない関数で変換した変数を加えた)重回帰分析(による非線形の回帰分析式)は、1対1対応でない場合にも有効である。 Search range from group identifier (component) to individual identifier (component). Since the correspondence between the group identifier and the individual identifier is not one-to-one, for example, if the minimum, maximum or other “one of the representatives” is determined according to the order relationship between the individual identifiers, Regression analysis can be applied as a function. The order relationship between the individual identifiers (components thereof) is determined by the following relationship, for example. It is a magnitude relationship as a number. The magnitude relation of each component and the overall magnitude relation by lexicographic order between several components. And the “norm” of the algebraic integer, the magnitude relationship between the coefficients, and the magnitude relationship in lexicographic order (relative to the “base” as a vector space) corresponding to each coefficient. In general, when there is no one-to-one correspondence (when there is no inverse function), a regression analysis using only a linear expression of one variable cannot provide an effective approximate expression. Therefore, nonlinear regression analysis is used. For example, when divided into a plurality of sections for each size range, each section has a one-to-one correspondence, and a linear approximation formula may be effective. Discrete Fourier transform and multiple regression analysis (by adding a variable transformed by a periodic function or a function that is not monotonically increasing) (non-linear regression analysis formula) are also effective when they are not one-to-one correspondences.
本実施形態の説明に際し、第6の実施形態のように個別識別子が複数の成分を持つ場合を、成分が1つしかない第5の実施形態の場合と同じ計算法で取り扱う事ができる。そのために、個別識別子の成分には(管理対象の番号自体ではなく)管理対象番号を、各次元が対応する成分の集合の要素数に等しい多次元配列に格納し、個別識別子の成分と多次元配列のインデックスを対応させる。第5の実施形態で(1次元の)個別識別子と管理対象番号を対応させる処理と、第6の実施形態での個別識別子の各成分と多次元配列のインデックスの対応を求める処理は同等になる。 In the description of the present embodiment, the case where the individual identifier has a plurality of components as in the sixth embodiment can be handled by the same calculation method as in the fifth embodiment having only one component. For this purpose, the management identifier number (not the management target number itself) is stored in the multi-dimensional array equal to the number of elements of the corresponding component set in each dimension, and the individual identifier component and multi-dimension Match array indexes. In the fifth embodiment, the processing for associating the individual identifier (one-dimensional) with the management target number is equivalent to the processing for obtaining the correspondence between each component of the individual identifier and the index of the multidimensional array in the sixth embodiment. .
以下では、説明を簡単にするため、特に断らない限り、第5の実施形態の(成分数が1)として説明する。上述した同じ計算法になる言及により、こうしても一般性は損なわれない。 In the following, for the sake of simplicity, the description will be made as (the number of components is 1) in the fifth embodiment unless otherwise specified. This generality is not compromised by the reference to the same calculation method described above.
まず、個別識別子として使用する数を管理対象の番号と対応させる際、各々の表を大きさ順に整列し、2つの番号n1, n2 と対応する個別識別子p1, p2 に対し、次のどちらかが成立するようにしておく。
(1) n1 < n2 の時には常にp1 < p2
(2) n1 < n2 の時には常にp1 > p2
ここで、管理対象の番号と個別識別子の間で「回帰分析」を実行して、一次近似式を作成する。例えば、個別識別子を得た時に番号を知りたい場合、回帰分析で説明変数を個別識別子とする一次近似式を作る。
First, when associating the numbers used as individual identifiers with the numbers to be managed, sort each table in order of size, and for each of the individual identifiers p1, p2 corresponding to the two numbers n1, n2, either Make sure it holds.
(1) Always p1 <p2 when n1 <n2
(2) When n1 <n2, always p1> p2
Here, “regression analysis” is executed between the management target number and the individual identifier to create a first-order approximation formula. For example, when it is desired to know the number when the individual identifier is obtained, a linear approximation formula is created with the explanatory variable as the individual identifier by regression analysis.
一次近似式がn = A*p + B として、この近似式での誤差が最大になる場合の誤差の絶対値をE とすると、個別識別子p が判明した時に対応する番号を得る際の探索範囲は、近似式から得た値に最も近い整数をz とすると区間[z-E-1,z+E+1]の内側に限定される。誤差の符号を考慮して「過小」である場合の最大誤差をE、「過小」である場合の最大誤差をF として探索範囲を区間[z-E-1,z+F+1] の内側に限定される。p の範囲をs 個の区間に区分して、各区間で符号を考慮した最大誤差{(-E1,F1),...(-Ei,Fi),...(-Es,Fs)}を求めれば、第i 区間での番号の探索範囲は[z-Ei-1,z+Fi+1]の内側に限定される。 If the primary approximation is n = A * p + B, and the absolute value of the error when the error in this approximation is maximum is E, the search range for obtaining the corresponding number when the individual identifier p is found Is limited to the inside of the interval [zE-1, z + E + 1], where z is the integer closest to the value obtained from the approximate expression. Considering the sign of the error, the search error is limited to the inside of the interval [zE-1, z + F + 1], where E is the maximum error when it is "under" and F is the maximum error when it is "under" Is done. Dividing the range of p into s intervals and taking the sign into each interval, the maximum error {(-E1, F1), ... (-Ei, Fi), ... (-Es, Fs)} Is obtained, the number search range in the i-th interval is limited to the inside of [z−Ei−1, z + Fi + 1].
以下のような手段(組み合わせ含む)により、上記の誤差を小さくする事ができる。
近似式で誤差が大きくなる数を取り除く。番号に抜けが許されない場合は、番号を振りなおして回帰分析をやり直す。
The above error can be reduced by the following means (including combinations).
Eliminate numbers that increase the error in the approximate expression. If missing numbers are not allowed, renumber and rerun the regression analysis.
個別識別子をグループに分けて各グループごとに別の一次近似式を使用する(回帰分析の用語で、非線型回帰分析の一種である「局所線形モデル」の使用に相当する)。例えば、大きさで整列して大きさが近いものでグループ化する。 Individual identifiers are divided into groups and different linear approximation formulas are used for each group (in terms of regression analysis, this corresponds to the use of “local linear model” which is a kind of nonlinear regression analysis). For example, they are grouped according to their size and similar size.
個別識別子と番号に、一次式以外の関数による非線形回帰分析を行う。例えば、一方ないし両方の集合の要素(あるいは、要素の成分)を累乗、対数関数、指数関数、三角関数、あるいはそれらの和などの式で変換した数の集合の一次式での回帰分析は、元のデータ集合間の非線形回帰分析になる。各々の変数を一次式以外の関数で1つないし複数の関数で変換し、それらを新たな変数として追加した「重回帰分析」を行い、元の変数の間の関係式に戻せば、必ず当てはまりが改善された近似式を得る事ができる。説明変数を増やせば、常に当てはまりが改善された式が得られる(最悪でも、追加した変数の係数を0 とすれば、当てはまりが悪化する事はあり得ない)ため。個別識別子の集合は「設計時に選べるデータ」であって、本来の意味で統計的データではなく、統計的データの処理の場合のような「モデルへの変数追加の妥当性」を考慮する必要はない。本実施形態では、単に式の当てはまりを改善できればよい。 Nonlinear regression analysis is performed on the individual identifier and number using a function other than the linear expression. For example, regression analysis with a linear expression of a set of numbers obtained by transforming elements (or component elements) of one or both sets with an expression such as a power, logarithmic function, exponential function, trigonometric function, or their sum, It becomes a nonlinear regression analysis between the original data sets. If each variable is converted by one or more functions with a function other than a linear expression, and added as a new variable, a “multiple regression analysis” is performed, and the relational expression between the original variables is restored. An approximate expression with improved can be obtained. If you increase the explanatory variables, you can always get a formula with improved fit (at worst, if the coefficient of the added variable is set to 0, the fit cannot get worse). The set of individual identifiers is “data that can be selected at the time of design”, and it is not statistical data in the original sense. It is necessary to consider “validity of adding variables to the model” as in the case of processing statistical data. Absent. In this embodiment, it is only necessary to improve the fit of the formula.
線形の回帰分析と離散フーリエ変換を組み合わせて非線形回帰分析を行う。例えば、線形回帰分析で求めた一次近似式の誤差項に対して離散フーリエ変換を行って、誤差項を三角関数の和で近似する式を作り、元の一次近似式に加える。 Perform nonlinear regression analysis by combining linear regression analysis and discrete Fourier transform. For example, a discrete Fourier transform is performed on the error term of the linear approximation obtained by linear regression analysis to create an equation that approximates the error term with the sum of trigonometric functions, and is added to the original linear approximation.
なお、加法によるリダクションを利用する場合に集団識別子から個別識別子を検索する場合の手順は、最終的な対応が一般には1対1でない事以外は、個別識別子から管理対象の番号を検索する場合の手順と同様になる。なぜならば、一次近似式を使う場合、最終的に同じ個別識別子に対応する組み合わせで近似式の値が異なる場合は、単に一方の誤差が大きいと見なされる。また、離散フーリエ変換を使う場合では、近似式上でも異なる変数に対応して同じ値が現れてもよいため、特に問題はない。 Note that the procedure for retrieving an individual identifier from a group identifier when using additive reduction is the same as that for retrieving a managed number from an individual identifier, except that the final correspondence is not generally one-to-one. The procedure is the same. This is because, when using the primary approximation formula, if the values of the approximation formulas are finally different in combinations corresponding to the same individual identifier, it is considered that one of the errors is simply large. In the case of using the discrete Fourier transform, there is no particular problem because the same value may appear corresponding to different variables in the approximate expression.
図60から図65は、本実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートである。 FIG. 60 to FIG. 65 are flowcharts showing an example of speeding up processing for associating individual identifiers with management target numbers in this embodiment.
図60は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、回帰分析による管理対象番号と個別識別子の間の一次近似式作成処理の例である。 FIG. 60 is a flowchart illustrating an example of a high-speed process for associating an individual identifier and a management target number according to the twelfth embodiment, and a process for creating a primary approximate expression between the management target number and the individual identifier by regression analysis. It is an example.
まず、管理対象番号の整列済リストが、作業領域Xに格納される(ステップS6001)。 First, the sorted list of management target numbers is stored in the work area X (step S6001).
次に、個別識別子の整列済リストが、作業領域Yに格納される(ステップS6002)。 Next, the sorted list of individual identifiers is stored in the work area Y (step S6002).
次に、XとYに対して回帰分析が実行され、互いに他を入力とした一次式での近似式が算出される(ステップS6003)。 Next, regression analysis is performed on X and Y, and an approximate expression using a linear expression with the other as inputs is calculated (step S6003).
さらに、回帰分析で求めた近似式の各入力に対する誤差リストが、各項で近似値から実際の値が引かれて算出される(ステップS6004)。 Further, an error list for each input of the approximate expression obtained by the regression analysis is calculated by subtracting the actual value from the approximate value in each term (step S6004).
そして、誤差リストの要素が整列され、元のリストの要素としての番号と対応付けた別のリスト、すなわち、誤差リストと管理対象番号の整列のリストとを対応付けた表が作成される(ステップS6005)。 Then, the elements of the error list are arranged, and another list associated with the numbers as the elements of the original list, that is, a table associating the error list with the alignment list of the numbers to be managed is created (step) S6005).
図61は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、誤差が大きい箇所を除く事による一次近似式の精度向上の例である。 FIG. 61 is a flowchart showing an example of speeding up processing for associating an individual identifier with a management target number in the twelfth embodiment, and is an example of improving the accuracy of the primary approximation expression by removing a portion with a large error. .
まず、一次近似式の誤差が規定値より大きい項の個別識別子が、リストから除かれる(ステップS6101)。 First, individual identifiers of terms whose primary approximation error is larger than a specified value are removed from the list (step S6101).
次に、管理対象番号に飛びがあってもよいか否かが判定される(ステップS6102)。 Next, it is determined whether or not the management target number may be skipped (step S6102).
ステップS6102の判定がYESなら、そのまま処理が終了する。
ステップS6102の判定がNOなら、個別識別子を取り除いた箇所で番号を詰めて回帰分析が再実行される(ステップS6103)。その後、処理が終了する。
If the determination in step S6102 is YES, the process ends.
If the determination in step S6102 is NO, the regression analysis is re-executed by filling in the numbers where the individual identifiers have been removed (step S6103). Thereafter, the process ends.
図62は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、局所線形モデルによる近似式の精度向上の例である。 FIG. 62 is a flowchart showing an example of speeding up processing for associating an individual identifier with a management target number in the twelfth embodiment, and is an example of improving the accuracy of an approximate expression using a local linear model.
まず、誤差が規定値より大きい箇所が、誤差の大きさで整列した誤差項リストから選ばれる(ステップS6201)。 First, a portion where the error is larger than the specified value is selected from the error term list arranged in accordance with the error size (step S6201).
次に、誤差が規定値より大きい箇所の番号を境界として、データの集合が分割される(ステップS6202)。 Next, the data set is divided using the number of the location where the error is larger than the specified value as a boundary (step S6202).
そして、分割したデータの集合の各々に対し改めて回帰分析が実行されて、各集合ごとの一次近似式が求められる(ステップS6203)。 Then, a regression analysis is performed again on each of the divided data sets, and a primary approximate expression for each set is obtained (step S6203).
図63は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、誤差の離散フーリエ変換による近似式の精度向上の例である。 FIG. 63 is a flowchart showing an example of speeding up processing for associating an individual identifier with a management target number in the twelfth embodiment, and is an example of improving the accuracy of an approximate expression by discrete Fourier transform of an error.
まず、線形回帰分析で得た誤差項のリストに離散フーリエ変換が行われ、誤差項の近似式が作成される(ステップS6301)。 First, discrete Fourier transform is performed on the list of error terms obtained by linear regression analysis, and an approximate expression for the error terms is created (step S6301).
次に、元の一次近似式と誤差項の近似式が加えられて、非線形近似式が得られる(ステップS6302)。 Next, the original primary approximation formula and the error term approximation formula are added to obtain a nonlinear approximation formula (step S6302).
図64は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、重回帰分析による非線形近似式の作成処理(一般)の例である。 FIG. 64 is a flowchart showing an example of a speeding up process for associating an individual identifier with a management target number in the twelfth embodiment, and is an example of a non-linear approximation formula creation process (general) by multiple regression analysis.
まず、管理対象番号の整列済リストが、作業領域Xに格納される(ステップS6401)。 First, the sorted list of management target numbers is stored in the work area X (step S6401).
次に、個別識別子の整列済リストが、作業領域Yに格納される(ステップS6402)。 Next, the sorted list of individual identifiers is stored in the work area Y (step S6402).
次に、XおよびXを1つまたは複数の非線形関数で変換したリストからなる「リストのリスト」が、作業領域XXに格納される(ステップS6403)。 Next, “list of list” composed of a list obtained by converting X and X with one or more nonlinear functions is stored in the work area XX (step S6403).
同様に、YおよびYを1つまたは複数の非線形関数で変換したリストからなる「リストのリスト」が、作業領域YYに格納される(ステップS6404)。 Similarly, a “list of lists” composed of Y and Y converted by one or more nonlinear functions is stored in the work area YY (step S6404).
続いて、XとYYに対し重回帰分析が行われて、XのYYの各リストの値を格納する変数を入力とした近似式が求められる(ステップS6405)。 Subsequently, a multiple regression analysis is performed on X and YY, and an approximate expression using a variable storing the value of each list of X and YY is obtained (step S6405).
同様に、YとXXに対し重回帰分析が行われて、YのXXの各リストの値を格納する変数を入力とした近似式が求められる(ステップS6406)。 Similarly, a multiple regression analysis is performed on Y and XX, and an approximate expression using a variable storing the value of each list of XX of Y as an input is obtained (step S6406).
そして、重回帰分析で求められた近似式の各入力に対する誤差リストが、各項で近似値から実際の値の値が引かれて求められる(ステップS6407)。 Then, an error list for each input of the approximate expression obtained by the multiple regression analysis is obtained by subtracting the actual value from the approximate value in each term (step S6407).
最後に、誤差リストの要素が整列させられ、元のリストの要素としての番号と対応付けた別のリストが作成される(ステップS6408)。 Finally, the elements of the error list are aligned, and another list associated with the number as the element of the original list is created (step S6408).
図65は、第12の実施形態での個別識別子と管理対象番号の対応付けの高速化処理の例を示すフローチャートであり、回帰分析により作成した近似式f(x) をハッシュ関数とする検索処理の例である。 FIG. 65 is a flowchart showing an example of a high-speed process for associating an individual identifier and a management target number in the twelfth embodiment, and a search process using an approximate expression f (x) created by regression analysis as a hash function It is an example.
まず、個別識別子と管理対象番号の対応表が、作業領域Tに格納される(ステップS6501)。 First, a correspondence table between individual identifiers and management target numbers is stored in the work area T (step S6501).
次に、誤差リストによる探索範囲の下限が、作業領域aに格納される(ステップS6502)。 Next, the lower limit of the search range based on the error list is stored in the work area a (step S6502).
次に、誤差リストによる探索範囲の上限が、作業領域bに格納される(ステップS6503)。 Next, the upper limit of the search range based on the error list is stored in the work area b (step S6503).
また、探索の対象となる識別子または番号が、作業領域xに格納される(ステップS6504)。 Further, the identifier or number to be searched is stored in the work area x (step S6504).
さらに、作業領域aの値と作業領域bの値の平均値(a+b)/2に最も近い整数が、作業領域cに格納される(ステップS6505)。 Further, the integer closest to the average value (a + b) / 2 of the values of the work area a and the work area b is stored in the work area c (step S6505).
その後、ステップS6506で作業領域iに初期値0(ゼロ)が格納された後、ステップS6508で+1ずつインクリメントされながら、ステップS6507でxとf(c)の対がTに含まれると判断されるまで、下記の処理が繰り返し実行される。 After that, after the initial value 0 (zero) is stored in the work area i in step S6506, it is determined that a pair of x and f (c) is included in T in step S6507 while incrementing by +1 in step S6508. Until then, the following processing is repeatedly executed.
すなわち、まず作業領域cの値が、作業領域aの値と作業領域bの値の平均値(a+b)/2以下であるか否かが判定される(ステップS6509)。 That is, first, it is determined whether or not the value of the work area c is equal to or less than the average value (a + b) / 2 of the value of the work area a and the value of the work area b (step S6509).
そして、ステップS6509の判定がNOならばステップS6510で作業領域cの値にiが加算され、ステップS6509の判定がYESならばステップS6511で作業領域cの値からiが減算される。 If NO in step S6509, i is added to the value of work area c in step S6510. If YES in step S6509, i is subtracted from the value of work area c in step S6511.
以上の繰返し動作の結果、xとf(c)の対がTに含まれその結果ステップS6507の判定がYESになると検索処理が終了する。 As a result of the above repeating operation, when the pair of x and f (c) is included in T and as a result, the determination in step S6507 is YES, the search process ends.
以上説明した第12の実施形態において、例えば、前述した{1627以上2^16-1未満の素数}の集合のように、上述の回帰分析による一次近似式の当てはまりが元々よい場合は、関数による変換は行わず、必要に応じて誤差の大きい方から素数を個別識別子の集合から除外する事で、一次近似式の当てはまりが比較的容易に改善される。 In the twelfth embodiment described above, for example, as in the above-mentioned set of {1627 or more and less than 2 ^ 16-1}, when the application of the linear approximation expression by the above regression analysis is originally good, The conversion of the primary approximation formula is relatively easily improved by excluding the prime numbers from the set of individual identifiers from the set of individual identifiers as necessary, without converting.
{1627以上2^16-1未満の素数}の集合の要素数は6000より多い上に、第6の実施形態により複数(a 個)の32 bits 領域を使う事で、対応できる管理対象の数は、1つの領域で対応できる数のa 乗に出来る。このため、仮に1つの領域内で使用する素数の数を数百程度に絞っても32bits 領域2つなら数万から数十万の管理対象に対応できる。このように第6の実施形態を前提にする場合、使用する素数に別の特徴を付けても、第2,第3の実施形態と比較して、「小さいか同等の大きさの領域で、より多くの管理対象に対応可能」という特徴は、容易に保つ事ができる。 The number of elements in the set of {prime number greater than or equal to 1627 and less than 2 ^ 16-1} is more than 6000, and the number of management targets that can be handled by using multiple (a) 32 bits areas according to the sixth embodiment Can be a power of a number that can be handled in one region. For this reason, even if the number of prime numbers used in one area is reduced to several hundreds, if two 32-bit areas are used, it is possible to deal with tens of thousands to hundreds of thousands of management targets. Thus, when the sixth embodiment is premised, even if another feature is added to the prime number to be used, compared with the second and third embodiments, “in a region of small or equivalent size, The feature of “Available for more management targets” can be easily maintained.
さらに、大きさにより複数の範囲に分ける事によっても、一次近似式の当てはまりは確実に改善できる。 Furthermore, the application of the first-order approximation can be reliably improved by dividing the range into a plurality of ranges depending on the size.
関数による変換は、一次近似式では当てはまりが悪い場合(番号と個別識別子の各々の集合の間の統計的な関係の非線形性が大きい場合)に、大きさで個別識別子の集合を分割する数を減らし、番号を求める際の条件判定処理のオーバヘッドを削減できる。 In the case of conversion by function, when the first-order approximation is not applicable (when the nonlinearity of the statistical relationship between the number and each set of individual identifiers is large), the number by which the set of individual identifiers is divided by size It is possible to reduce the overhead of condition determination processing when obtaining the number.
なお、本実施形態ではデータが整数なので、近似式が全ての入力データに対し「誤差が0.5より小さい」という条件を満たせば、近似式の整数部を取る事により「完全ハッシュ関数」を得ることができる。 In this embodiment, since the data is an integer, if the approximate expression satisfies the condition that “the error is smaller than 0.5” for all input data, the “complete hash function” is obtained by taking the integer part of the approximate expression. Can do.
「完全ハッシュ関数」にはならないとしても、探索範囲を「近似値周辺の固定幅」の範囲に限定する事ができる。すなわち、メモリ参照量を固定値の範囲内に収められる。 Even if it is not a “perfect hash function”, the search range can be limited to a range of “a fixed width around the approximate value”. That is, the memory reference amount can be kept within a fixed value range.
<第13の実施形態>
次に、第13の実施形態について説明する。
<13th Embodiment>
Next, a thirteenth embodiment will be described.
本実施形態は、第11の実施形態と同様、第5または第6の実施形態における集団識別子(の成分)から個別識別子を求める計算の高速化に関する工夫を含む実施形態である。第11の実施形態でも説明したように、「分解能が上限k で制限される場合」でかつ演算を乗法とする際の基本的アイデアは、「素因数分解の一意性」を利用して、乗法でのリダクションで計算された集団識別子から、個別識別子を取り出す事である。従って、「素因数分解」の所要時間がシステムの処理性能の高速化に際して重要な因子となる。 As in the eleventh embodiment, this embodiment is an embodiment that includes a device for speeding up the calculation for obtaining an individual identifier from a group identifier (component thereof) in the fifth or sixth embodiment. As described in the eleventh embodiment, the basic idea for the case where the resolution is limited by the upper limit k and the operation is multiplicative is “multiplying by using uniqueness of prime factorization”. The individual identifier is taken out from the group identifier calculated in the reduction. Therefore, the time required for “prime factorization” is an important factor in speeding up the processing performance of the system.
例えば、個別識別子の成分に、管理対象の番号を格納する多次元配列のインデックスを対応させる事により、第6の実施形態のように個別識別子が複数の成分を持つ場合を、成分が1つしかない第5の実施形態の場合と同様に取り扱う事ができる。以下では、特に断らない限り、成分数が1として説明する。 For example, by associating an individual identifier component with an index of a multi-dimensional array that stores a management target number, when the individual identifier has a plurality of components as in the sixth embodiment, there is only one component. It can be handled in the same manner as in the fifth embodiment. In the following description, the number of components is assumed to be 1 unless otherwise specified.
第11の実施形態では、集団識別子から個別識別子を求める際、個別識別子の集合(ないし、その成分)の要素を順次選んで集団識別子(ないし、その成分)への除法を順次実行する事を前提として、その枠内での高速化手法を利用した。従って、特に個別識別子(の成分)が素数の場合は「因数になりうる素数で順次割る方法」( brute force method )が前提となる。 In the eleventh embodiment, when obtaining an individual identifier from a group identifier, it is assumed that elements of a set (or its components) of individual identifiers are sequentially selected and division to the group identifier (or its components) is sequentially executed. As a result, a high-speed method within the framework was used. Therefore, especially when the individual identifier (component) is a prime number, a “method of sequentially dividing by a prime number that can be a factor” (brute force method) is assumed.
本実施形態では、例えば以下のようなbrute force method 以外の素因数分解アルゴリズムの一つまたは複数の組み合わせを使用する(組み合わせる際はbrute force method との組み合わせを含めてもよい)。これらのアルゴリズムに共通する特徴(すなわち、brute force method との相違点)は、「因数になりうる素数の集合」を入力として使用しない事である。
ρ method (「擬似乱数列」を使用する方法)
p-1 method (素数p に対し、p-1 が比較的小さい素因数を持つ場合に有効な方法)
p+1 method (素数p に対し、p+1 が比較的小さい素因数を持つ場合に有効な方法)
Fermat's method (素因数が元の数の平方根に近い場合に有効な方法)
連分数法(Continued Fraction Method)
複数多項式二次ふるい法(MPQS: Multiple Polynomial Quadratic Sieve Method)
楕円曲線法(ECM: Elliptic Curve Method)
In the present embodiment, for example, one or a plurality of combinations of prime factorization algorithms other than the following brute force method are used (a combination with the brute force method may be included in the combination). A feature common to these algorithms (ie, the difference from the brute force method) is that “a set of prime numbers that can be factors” is not used as an input.
ρ method (method using `` pseudo random number sequence '')
p-1 method (effective when p-1 has a relatively small prime factor with respect to prime p)
p + 1 method (effective when p + 1 has a relatively small prime factor with respect to the prime p)
Fermat's method (effective when the prime factor is close to the square root of the original number)
Continued Fraction Method
Multiple Polynomial Quadratic Sieve Method (MPQS)
Elliptic curve method (ECM)
これらのアルゴリズム自体は、例えば下記文献[7]に示されるように、「整数論」という数学の分野での命題、あるいは計算機科学での基本的なアルゴリズムとして、広く知られている。
[7] Donald E. Knuth,"The Art of Computer Programming, Volume 2"
These algorithms themselves are widely known as propositions in the field of mathematics called “number theory” or basic algorithms in computer science, as shown in, for example, the following document [7].
[7] Donald E. Knuth, "The Art of Computer Programming,
ただし、「整数論」の問題としての「素因数分解」として、すなわち「素数か否か分かっているとは限らない任意の整数を入力として与えられた、素因数を少なくとも1つ求める操作」としては、あまり使われないアルゴリズムもある。それは、「特定少数の場合以外は遅い」、ないし「特定少数の場合以外、素因数を求められない」アルゴリズムは、「素因数分解の対象となる数が任意に選ばれる」という一般的な状況には適さないためである。 However, as “prime factorization” as a problem of “number theory”, that is, “an operation for obtaining at least one prime factor given as an input an arbitrary integer that is not necessarily known as a prime number” Some algorithms are rarely used. The algorithm is "slow except in the case of a specific minority" or "no prime factor can be obtained except in the case of a specific minority" algorithm, in the general situation that "the number subject to prime factorization is arbitrarily chosen" It is because it is not suitable.
しかし、本実施形態においては、個別識別子(の成分)の集合を「使用するアルゴリズムで、高速に素因数が少なくとも1つ求められる」ように選んでおく事で目的が達せられるため、通常の整数論の問題としての素因数分解のアルゴリズムとしては一般性に乏しいとされる方法(p-1 method, p+1 method, Fermat's method など) も効果的に使用できる。例えば、Fermat's method は、素因数が元の数の平方根に近い場合に限り高速である事が知られているので、分解能k = 2 の場合に個別識別子(の成分)の大きさを可能な限り揃えておく事で有効に利用できる。 However, in this embodiment, the purpose is achieved by selecting a set of individual identifiers (components thereof) so that “at least one prime factor can be obtained at a high speed with an algorithm to be used”. It is also possible to effectively use methods (p-1 method, p + 1 method, Fermat's method, etc.) that are considered to be less general as an algorithm for factoring as a problem. For example, the Fermat's method is known to be fast only if the prime factor is close to the square root of the original number, so the individual identifiers (components) should be as large as possible when the resolution is k = 2. You can use it effectively.
なお、brute force method 以外の素因数分解アルゴリズムでは、素因数を求めた後、管理対象の番号は別途取得される。 Note that in the prime factorization algorithm other than the brute force method, after the prime factor is obtained, the management target number is acquired separately.
図66は、brute force method 以外のアルゴリズムにより、所与の整数の素因数を少なくとも1つ求める処理の例を示すフローチャートである。 FIG. 66 is a flowchart showing an example of processing for obtaining at least one prime factor of a given integer by an algorithm other than the brute force method.
まず、作業領域Lに、空リストが格納される(ステップS6601)。
次に、作業領域Xに、集団識別子が格納される(ステップS6602)。
First, an empty list is stored in the work area L (step S6601).
Next, the group identifier is stored in the work area X (step S6602).
次に、作業領域pに、作業領域Xの値の素因数の1つが格納される(ステップS6603)。 Next, one of the prime factors of the value of the work area X is stored in the work area p (step S6603).
そして、ステップS6604で作業領域iに初期値1が格納された後(ステップS6604)、ステップS6607で作業領域iの値が+1ずつインクリメントされながら、ステップS6606で作業領域pの値が作業領域Xの値を割りきらなくなったと判定されるまで、ステップS6605からステップS6607までの一連の処理が繰り返し実行される。
After the
この繰返し処理において、まず、作業領域Xの値を作業領域pの値で除算した結果(X/p)が、新たに作業領域Xに格納される(ステップS6605)。 In this iterative process, first, a result (X / p) obtained by dividing the value of the work area X by the value of the work area p is newly stored in the work area X (step S6605).
次に、作業領域pの値が作業領域Xの値を割りきったか否かが判定される(ステップS6606)。 Next, it is determined whether or not the value of the work area p has divided the value of the work area X (step S6606).
ステップS6606の判定がYESならば、作業領域iの値が+1インクリメントされ、ステップS6605が再度実行される。 If the determination in step S6606 is YES, the value of work area i is incremented by +1 and step S6605 is executed again.
以上の繰返し処理の結果、ステップS6606の判定がNOになると、作業領域Lに、集団識別子の素因数と指数の対(p,i)が要素として追加される(ステップS6608)。 As a result of the above iterative process, if the determination in step S6606 is NO, the prime factor and exponent pair (p, i) of the group identifier is added as an element to the work area L (step S6608).
その後、作業領域Xの値が、乗法演算の単位元1に等しくなったか否かが判定される(ステップS6609)。
Thereafter, it is determined whether or not the value of the work area X is equal to the
ステップS6609の判定がNOならば、ステップS6603の処理に戻り、作業領域Xの次の素因数の1つについて処理が繰り返される。 If the determination in step S6609 is NO, the process returns to step S6603, and the process is repeated for one of the next prime factors of the work area X.
ステップS6609の判定がYESになると、図66のフローチャートの処理が終了する。 If the determination in step S6609 is YES, the process of the flowchart in FIG. 66 ends.
以上のようにして、第13の実施形態において、「因数になりうる素数の集合」を入力として使用しない素因数分解のアルゴリズムの利用により、個別識別子から集団識別子を求める際に、「因数になりうる数の表」を参照する方法に比べてメモリ参照量が削減できる。特に分解能k あるいは個別識別子の成分に使われる素数の一方ないし両方が大きいために「因数分解すべき集団識別子」が大きい場合に、高速化と処理負荷の軽減の両面で有効である。 As described above, in the thirteenth embodiment, when a group identifier is obtained from an individual identifier by using a factorization algorithm that does not use a “set of prime numbers that can be factors” as an input, “can be a factor. Compared with the method of referring to the “number table”, the memory reference amount can be reduced. In particular, when one or both of the primes used for the resolution k or the individual identifier component are large, the “group identifier to be factored” is large, which is effective in both speeding up and reducing the processing load.
<第14の実施形態>
最後に、第14の実施形態について説明する。
<Fourteenth embodiment>
Finally, a fourteenth embodiment will be described.
本実施形態は、第11の実施形態および第13の実施形態と同様に、第5または第6の実施形態における集団識別子から個別識別子を求める計算の高速化に関する工夫を含む実施形態である。 As in the eleventh and thirteenth embodiments, the present embodiment is an embodiment that includes a device for speeding up the calculation for obtaining an individual identifier from a group identifier in the fifth or sixth embodiment.
例えば、個別識別子の成分に、管理対象の番号を格納する多次元配列のインデックスを対応させる事により、第6の実施形態のように個別識別子が複数の成分を持つ場合を、成分が1つしかない第5の実施形態の場合と同様に取り扱う事ができる。以下では、特に断らない限り、成分数が1として説明する。 For example, by associating an individual identifier component with an index of a multi-dimensional array that stores a management target number, when the individual identifier has a plurality of components as in the sixth embodiment, there is only one component. It can be handled in the same manner as in the fifth embodiment. In the following description, the number of components is assumed to be 1 unless otherwise specified.
本実施形態は「量子コンピュータ(量子ビット(qubit) による計算を行う演算装置を備える計算機)」が受信側ノードであるシステム構成を前提とする。 The present embodiment is premised on a system configuration in which a “quantum computer (a computer including an arithmetic device that performs computation using a qubit)” is a receiving side node.
第5、第6の実施形態での集団識別子(の成分)からの個別識別子(の成分)の特定を、ショアのアルゴリズム(Shor's algorithm) による素因数分解を利用して行うために、量子ビットを使用した計算を行う演算装置を使用する。下記の文献[8]には、「多項式時間で(=従来の計算機では不可能な程度に高速な時間)」で素因数分解を量子計算機上で行う「ショアのアルゴリズム」が開示されている。
[8] Peter W. Shor,"Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer",SIAMJournal on Computing Volume 26 Issue 5, Oct. 1997, Pages 1484-1509
添付資料の "5 Prime factorization" を含むページ。
In order to identify individual identifiers (components) from the group identifiers (components) in the fifth and sixth embodiments by using prime factorization by the Shore algorithm (Shor's algorithm), qubits are used. An arithmetic unit that performs the calculated calculation is used. Reference [8] below discloses a “Shore algorithm” in which prime factorization is performed on a quantum computer in “polynomial time (= time as fast as impossible with a conventional computer)”.
[8] Peter W. Shor, "Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer", SIAM Journal on
A page containing "5 Prime factorization" in the attachment.
図67は、第13および第14の実施形態の相違点の説明図である。第13の実施形態は、通常のbitを操作する一般的なCPUとメモリとを備える通常の計算機を用いて、図67(a)に示されるような、brute force method 以外の素因数分解アルゴリズムを実行する計算機が、図4の識別子集約機構401または識別子分析機構402を実現する。一方、第14の実施形態は、通常のbitを操作する一般的なCPUとメモリに加えて、量子bit(Qubit)を操作する演算装置である量子計算機を搭載し、この量子計算機が、図4の識別子集約機構401または識別子分析機構402を実現する。
FIG. 67 is an explanatory diagram of differences between the thirteenth and fourteenth embodiments. In the thirteenth embodiment, a prime factorization algorithm other than the brute force method as shown in FIG. 67 (a) is executed using a normal computer having a general CPU and memory for operating a normal bit. The computer that implements the
ここでの「量子計算機」は、独立した計算機であってもよいし、図67(b)に示されるように、「「ショアのアルゴリズム」による素因数分解を実行する機能しか持たない補助プロセッサ」としての演算装置であってもよい。 Here, the “quantum computer” may be an independent computer, or, as shown in FIG. 67 (b), as “an auxiliary processor having only a function of performing prime factorization by the“ Shore algorithm ””. The arithmetic unit may be used.
なお、「ショアのアルゴリズム」は、素因数分解の過程で「因数となりうる数」の表を引くわけではないので、求めた素因数から管理対象の番号を求める手順は別途実行される。 Since the “Shore algorithm” does not draw a table of “numbers that can be factors” in the process of prime factorization, a procedure for obtaining a management target number from the obtained prime factors is performed separately.
以上説明した第14の実施形態により、量子コンピュータでショアのアルゴリズムをも散ることにより、「(素因数分解の対象となる数の大きさに対して)多項式時間」で素因数分解を行う事ができる。すなわち、素因数分解の処理時間が、一般に素因数分解の対象となる数の大きさを変数とする多項式で表せる程度の大きさに留まる。 According to the fourteenth embodiment described above, prime factorization can be performed in “polynomial time” (with respect to the size of the number to be primed) by dispersing the Shore algorithm in the quantum computer. In other words, the processing time of prime factorization generally remains large enough to be expressed by a polynomial whose variable is the number of prime factorization targets.
既知の量子コンピュータを使用しない方法での素因数分解は、全て「準指数時間」かかる(入力データの大きさを引数とする指数関数と同じ程度の割合で計算時間が増加する)。 All the prime factorizations in a method that does not use a known quantum computer take "quasi-exponential time" (the calculation time increases at the same rate as the exponential function with the magnitude of the input data as an argument).
しかし、因数分解の対象となる数が知られている他の方法で現実的な処理時間で素因数分解できない大きさの場合でも、量子コンピュータでショアのアルゴリズムを使えば、現実的な処理時間で素因数分解を行う事が可能となる。 However, even if the number of factors to be factored is not large enough to be factored in real processing time by other known methods, if the Shore algorithm is used in the quantum computer, the prime factor can be calculated in real processing time. It is possible to perform decomposition.
従って、本実施形態は「集団識別子から個別識別子を求める処理」が、「因数分解すべき集団識別子の成分」が他の実施形態で現実的な処理時間内には扱えないほど大きい場合」を現実的な処理時間内に扱える。すなわち、第5、第6の実施形態で扱える管理対象の数を桁違いに大きくできるほか、分解能k も大きくできる。例えば、大規模疎行列の分散並列計算への図4の識別子集約機構401と識別子分析機構402の適用では、状態監視への適用に比べて大きな分解能k が必要な場合が多いと考えられるため、本実施形態は特に有効である。
Therefore, the present embodiment realizes the case where “the process for obtaining the individual identifier from the group identifier” is “when the component of the group identifier to be factored” is so large that it cannot be handled within the realistic processing time in other embodiments ”. Can be handled within a typical processing time. That is, the number of management targets that can be handled in the fifth and sixth embodiments can be increased by orders of magnitude, and the resolution k can be increased. For example, since it is considered that the application of the
現在、素因数分解の実用的応用として、公開鍵暗号系での鍵交換において、大きな2つの素数の組p,q に対し、積pq を公開してもp,q は従来型のコンピュータでは容易に計算できないため「秘密鍵」と見なせる事が利用されている。この応用は、量子コンピュータでのショアのアルゴリズムを使う素因数分解が普及すれば価値を失う。一方、本実施形態では、量子コンピュータによる素因数分解の高速実行は、適用可能な範囲の拡大につながる。 Currently, as a practical application of prime factorization, p and q can be easily obtained on a conventional computer even if the product pq is disclosed for a large pair of primes p and q in a key exchange in a public key cryptosystem. Since it cannot be calculated, it can be regarded as a “secret key”. This application loses value when prime factorization using Shore's algorithm in quantum computers becomes widespread. On the other hand, in the present embodiment, high-speed execution of prime factorization by the quantum computer leads to expansion of the applicable range.
<その他の実施形態>
前述したように、第1から第14の各実施形態は、必ずしも相互に排他的ではなく、必要に応じて組み合わせることが可能である。
<Other embodiments>
As described above, the first to fourteenth embodiments are not necessarily mutually exclusive, and can be combined as necessary.
前述したように、図4の識別子集約機構401および識別子分析機構402は、図7、図20、図21、または図22の情報集約システムを構成するノード701または702のCPU701−1または702−1のソフトウェア処理によって実現できる。この場合、図7の各ノード701または702あるい中継装置703に記録媒体読み取り装置を備えて、磁気ディスク、光ディスク、光磁気ディスク、及びUSBメモリ等の記録媒体に含まれる制御プログラムを読み出させる。記録媒体読み取り装置により読み出された制御プログラムは、直接、あるいは中継装置703から通信線704を介して、所定のノード701または702のメモリ701−2または702−2に記録される。CPU701−1または702−1は、メモリ701−2または702−2に記録された制御プログラムを実行することで、第1〜第14の実施形態に従った図4の識別子集約機構401および識別子分析機構402の機能を実現する。
As described above, the
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
送信側ノードに設けられ、情報の通知元に固有の個別識別子と、前記情報の通知元からの前記個別識別子による通知を集約して集団識別子とを生成して送信する識別子集約機構と、
受信側ノードに設けられ、前記集団識別子を受信し前記個別識別子を復元する処理と、前記個別識別子から前記情報の通知元を特定する処理を実行する識別子分析機構と、
を備えることを特徴とする情報集約システム。
(付記2)
前記識別子集約機構は、前記送信側ノードが管理する前記情報の通知元にて前記情報を通知すべき条件が成立したときに前記通知元に固有の個別識別子を生成し、前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信し、生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信し、
前記識別子分析機構は、前記送信側ノードが送信した集団識別子を受信し、受信した前記集団識別子から前記集団識別子の生成因子である1つ以上の前記個別識別子を復元し、復元したそれぞれの前記個別識別子から前記通知元の通知を復元する、
ことを特徴とする付記1に記載の情報集約システム。
(付記3)
前記識別子集約機構は、前記送信側ノードが前記ネットワーク上の起点ノードである場合には、前記リダクション演算において前記集団識別子の代わりに第1の既定値を入力し、前記送信側ノードが管理する前記情報の通知元にて前記情報を通知すべき条件が成立していないときには、前記リダクション演算において前記個別識別子の代わりに第2の既定値を入力する、
ことを特徴とする付記2に記載の情報集約システム。
(付記4)
前記第1の既定値および前記第2の既定値は、前記リダクション演算における単位元である、
ことを特徴とする付記2または3に記載の情報集約システム。
(付記5)
前記識別子集約機構に、ネットワークまたは当該ネットワークに接続されたノードの通信装置上に具備されるノード間演算機構を用い、
前記集団識別子の送信と受信に対してバリア同期を実行する同期機構をさらに備える、
ことを特徴とする付記1ないし4のいずれかに記載の情報集約システム。
(付記6)
送信側で予めグループ内の管理対象に対して論理和を実行しておく、
ことを特徴とする付記1ないし5のいずれかに記載の情報集約システム。
(付記7)
前記送信側ノードに、複数の整数からなる順序付けられた組を対応させる、
ことを特徴とする付記1ないし6のいずれかに記載の情報集約システム。
(付記8)
前記識別子集約機構は、前記個別識別子の割当てに、代数的整数の素因数分解の一意性と乗法を利用する、
ことを特徴とする付記1ないし7のいずれかに記載の情報集約システム。
(付記9)
前記識別子集約機構は、前記個別識別子の割当てに、代数的整数の素因数分解の一意性と加法を利用する、
ことを特徴とする付記1ないし7のいずれかに記載の情報集約システム。
(付記10)
前記識別子分析機構は、前記代数的整数の加算を用いて、受信した前記集団識別子から前記個別識別子を復元する、
ことを特徴とする付記9に記載の情報集約システム。
(付記11)
識別子の集合を複数のグループに分ける、
ことを特徴とする付記1ないし10のいずれかに記載の情報集約システム。
(付記12)
回帰分析または離散フーリエ変換を利用して、前記識別子に関する検索処理での探索範囲を絞り込む、
ことを特徴とする付記11に記載の情報集約システム。
(付記13)
前記識別子分析機構は、因数になりうる素数の集合を入力として使用しない素因数分解アルゴリズムを用いて、前記集団識別子から前記個別識別子を復元する、
ことを特徴とする付記1ないし7に記載の情報集約システム。
(付記14)
前記受信側ノードが量子コンピュータである、
ことを特徴とする付記1ないし7に記載の情報集約システム。
(付記15)
ネットワークに接続され情報の通知を行う送信側ノードのコンピュータに、
前記送信側ノードが管理する前記情報の通知元にて前記情報を通知すべき条件が成立したときに前記通知元に固有の個別識別子を生成する処理と、
前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信する処理と、
生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信する処理と、
を実行させるためのプログラム。
(付記16)
ネットワークに接続され情報の集約を行う受信側ノードのコンピュータに、
送信側ノードが送信した集団識別子を受信する処理と、
受信した前記集団識別子から前記集団識別子の生成因子である1つ以上の前記個別識別子を復元する処理と、
復元したそれぞれの前記個別識別子から前記通知元の通知を復元する処理と、
を実行させるためのプログラム。
(付記17)
送信側ノードにて、情報の通知元に固有の個別識別子と、前記情報の通知元からの前記個別識別子による通知を集約して集団識別子とを生成して送信する識別子集約処理を実行し、
受信側ノードにて、前記集団識別子を受信し前記個別識別子を復元する処理と、前記個別識別子から前記情報の通知元を特定する処理を実行する識別子分析処理を実行する、
ことを特徴とする情報集約方法。
(付記18)
前記識別子集約処理において、前記送信側ノードが管理する前記情報の通知元にて前記情報を通知すべき条件が成立したときに前記通知元に固有の個別識別子を生成し、前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信し、生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信し、
前記識別子分析処理において、前記送信側ノードが送信した集団識別子を受信し、受信した前記集団識別子から前記集団識別子の生成因子である1つ以上の前記個別識別子を復元し、復元したそれぞれの前記個別識別子から前記通知元の通知を復元する、
ことを特徴とする付記17に記載の情報集約方法。
Regarding the above embodiment, the following additional notes are disclosed.
(Appendix 1)
An identifier aggregating mechanism that is provided in a transmission side node and generates a collective identifier by transmitting an individual identifier unique to a notification source of information and a notification by the individual identifier from the information notification source; and
An identifier analyzing mechanism that is provided in a receiving-side node and that performs processing for receiving the collective identifier and restoring the individual identifier, and processing for specifying a notification source of the information from the individual identifier;
An information aggregating system comprising:
(Appendix 2)
The identifier aggregation mechanism generates an individual identifier unique to the notification source when a condition for notifying the information is satisfied at the information notification source managed by the transmission side node, and the transmission side node When it is not the origin node on the network, it receives the group identifier transmitted by the other transmitting side node, and executes the reduction operation on the generated individual identifier and the received group identifier, and the individual identifier and the Generate a new group identifier that is aggregated with a group identifier and send it to a node on the network,
The identifier analysis mechanism receives a group identifier transmitted by the transmitting node, restores one or more individual identifiers that are generation factors of the group identifier from the received group identifier, and restores the individual identifiers Restoring the notification of the notification source from the identifier;
The information aggregating system according to
(Appendix 3)
The identifier aggregation mechanism is configured to input a first predetermined value instead of the collective identifier in the reduction operation when the transmitting node is a starting node on the network, and the transmitting node manages When a condition for notifying the information is not satisfied at the information notification source, a second default value is input instead of the individual identifier in the reduction calculation.
The information aggregating system according to
(Appendix 4)
The first default value and the second default value are unit elements in the reduction operation.
The information aggregating system according to
(Appendix 5)
For the identifier aggregation mechanism, an inter-node calculation mechanism provided on a network or a communication device of a node connected to the network,
A synchronization mechanism for performing barrier synchronization for transmission and reception of the collective identifier;
The information aggregation system according to any one of
(Appendix 6)
Perform a logical OR on the management target in the group in advance on the sending side.
The information aggregating system according to any one of
(Appendix 7)
Making the sending node correspond to an ordered set of a plurality of integers;
The information aggregating system according to any one of
(Appendix 8)
The identifier aggregation mechanism uses the uniqueness and multiplication of algebraic integer prime factorization to assign the individual identifiers.
The information aggregating system according to any one of
(Appendix 9)
The identifier aggregation mechanism uses the uniqueness and addition of algebraic integer prime factorization to assign the individual identifiers.
The information aggregating system according to any one of
(Appendix 10)
The identifier analysis mechanism restores the individual identifier from the received group identifier using the algebraic integer addition.
The information aggregating system according to supplementary note 9, wherein
(Appendix 11)
Divide the set of identifiers into groups,
The information aggregating system according to any one of
(Appendix 12)
Use regression analysis or discrete Fourier transform to narrow the search range in the search process for the identifier,
The information aggregation system according to
(Appendix 13)
The identifier analysis mechanism restores the individual identifier from the group identifier using a prime factorization algorithm that does not use a set of prime numbers that can be factors as inputs.
The information aggregating system according to any one of
(Appendix 14)
The receiving node is a quantum computer;
The information aggregating system according to any one of
(Appendix 15)
To the computer of the sending node that is connected to the network and notifies information,
A process of generating an individual identifier unique to the notification source when a condition for notifying the information is satisfied at the information notification source managed by the transmitting node;
A process of receiving a collective identifier transmitted by another transmitting node when the transmitting node is not a starting node on the network;
By generating a reduction operation on the generated individual identifier and the received group identifier, a new group identifier in which the individual identifier and the group identifier are aggregated is generated and transmitted to the node on the network. Processing to
A program for running
(Appendix 16)
To the receiving node computer that is connected to the network and collects information,
A process of receiving the collective identifier transmitted by the transmitting node;
Processing for restoring one or more individual identifiers that are generation factors of the group identifier from the received group identifier;
A process of restoring the notification of the notification source from each restored individual identifier;
A program for running
(Appendix 17)
In the transmission side node, an identifier aggregation process is performed in which a unique identifier unique to the information notification source and a notification by the individual identifier from the information notification source are aggregated to generate and transmit a collective identifier.
In the receiving node, execute a process of receiving the collective identifier and restoring the individual identifier, and an identifier analysis process of executing a process of specifying the notification source of the information from the individual identifier.
An information aggregation method characterized by that.
(Appendix 18)
In the identifier aggregation process, an individual identifier unique to the notification source is generated when a condition for notifying the information is established at the information notification source managed by the transmission side node, and the transmission side node When it is not the origin node on the network, it receives the group identifier transmitted by the other transmitting side node, and executes the reduction operation on the generated individual identifier and the received group identifier, and the individual identifier and the Generate a new group identifier that is aggregated with a group identifier and send it to a node on the network,
In the identifier analysis processing, the group identifier transmitted by the transmitting side node is received, one or more individual identifiers that are generation factors of the group identifier are restored from the received group identifier, and each restored individual identifier is restored. Restoring the notification of the notification source from the identifier;
The information aggregating method according to
101 管理対象
102、201 送信側ノード
103、202 受信側ノード
104 Gather
105 リダクション
203 NIC(Network Interface Controller)
204、701−1、702−1、1401 CPU(Central Processing Unit)
205 コンテクスト
206 階層化された送信側ノード
401 識別子集約機構
402 識別子分析機構
403 識別子のコード化体系
404 リダクション
701 送信起点ノード
702 受信・中継ノード
703 中継装置
704 通信線
701−2、702−2、1402 メモリ
701−3、702−3 NIC
1403 入力装置
1404 表示装置
1405 外部記憶装置
1406 記録媒体書き込み装置
1407 通信インタフェース
1408 バス
1409 記録媒体
2001 独立筐体型ノード間演算装置
2101 ノード内蔵型のノード間演算装置
2201 ノード間演算機能を持つネットワーク・インターフェース
101
105
204, 701-1, 702-1, 1401 CPU (Central Processing Unit)
205
1403
Claims (14)
予め定められていた事象が、前記送信側ノードが管理する情報の通知元にて発生したときに、前記通知元に固有の個別識別子を生成し、
前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信し、
生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信し、
前記送信側ノードが前記ネットワーク上の起点ノードである場合には、前記リダクション演算において前記集団識別子の代わりに第1の既定値を入力し、
前記事象が前記通知元にて発生していないときには、前記リダクション演算において前記個別識別子の代わりに第2の既定値を入力する、
該識別子集約機構と、
前記ネットワーク上の受信側ノードに設けられる識別子分析機構であって、前記送信側ノードが送信した集団識別子を受信し、受信した前記集団識別子から前記集団識別子の生成因子である1つ以上の前記個別識別子を復元し、復元したそれぞれの前記個別識別子から前記通知元の通知を復元する該識別子分析機構と、
を備えることを特徴とする情報集約システム。 An identifier aggregation mechanism provided in the transmitting node on the network,
When a predetermined event occurs in a notification source of information managed by the transmission side node , an individual identifier unique to the notification source is generated,
Receiving the collective identifier transmitted by the other transmitting node when the transmitting node is not the origin node on the network;
By generating a reduction operation on the generated individual identifier and the received group identifier, a new group identifier in which the individual identifier and the group identifier are aggregated is generated and transmitted to the node on the network. And
When the transmitting node is a starting node on the network, a first default value is input instead of the collective identifier in the reduction operation,
When the event has not occurred at the notification source, a second default value is input instead of the individual identifier in the reduction calculation.
The identifier aggregation mechanism;
An identifier analysis mechanism provided in the receiving node on the network, the sending node receives a population identifier transmitted, at least one of the individual from the population identifier received a product factor of the population identifiers The identifier analyzing mechanism for restoring an identifier and restoring the notification of the notification source from each restored individual identifier;
Information aggregating system comprising: a.
ことを特徴とする請求項1に記載の情報集約システム。 The first default value and the second default value are unit elements in the reduction operation.
The information aggregating system according to claim 1 .
前記集団識別子の送信と受信に対してバリア同期を実行する同期機構をさらに備える、
ことを特徴とする請求項1または2に記載の情報集約システム。 For the identifier aggregation mechanism, an inter-node calculation mechanism provided on a network or a communication device of a node connected to the network,
A synchronization mechanism for performing barrier synchronization for transmission and reception of the collective identifier;
The information aggregation system according to claim 1 or 2 , wherein
ことを特徴とする請求項1ないし3のいずれかに記載の情報集約システム。 Perform a logical OR on the management target in the group in advance on the sending side.
The information aggregation system according to any one of claims 1 to 3 , wherein
ことを特徴とする請求項1ないし4のいずれかに記載の情報集約システム。 Making the sending node correspond to an ordered set of a plurality of integers;
The information aggregation system according to any one of claims 1 to 4 , wherein
ことを特徴とする請求項1ないし5のいずれかに記載の情報集約システム。 The identifier aggregation mechanism uses the uniqueness and multiplication of algebraic integer prime factorization to assign the individual identifiers.
The information aggregating system according to any one of claims 1 to 5 .
ことを特徴とする請求項1ないし5のいずれかに記載の情報集約システム。 The identifier aggregation mechanism uses the uniqueness and addition of algebraic integer prime factorization to assign the individual identifiers.
The information aggregating system according to any one of claims 1 to 5 .
ことを特徴とする請求項7に記載の情報集約システム。 The identifier analysis mechanism restores the individual identifier from the received group identifier using the algebraic integer addition.
The information aggregating system according to claim 7 .
ことを特徴とする請求項1ないし8のいずれかに記載の情報集約システム。 Divide the set of identifiers into groups,
The information aggregating system according to any one of claims 1 to 8 .
ことを特徴とする請求項9に記載の情報集約システム。 Use regression analysis or discrete Fourier transform to narrow the search range in the search process for the identifier,
The information aggregation system according to claim 9 .
ことを特徴とする請求項1ないし5に記載の情報集約システム。 The identifier analysis mechanism restores the individual identifier from the group identifier using a prime factorization algorithm that does not use a set of prime numbers that can be factors as inputs.
Aggregation system as claimed in claims 1 to 5, characterized in that.
ことを特徴とする請求項1ないし5に記載の情報集約システム。 The receiving node is a quantum computer;
Aggregation system as claimed in claims 1 to 5, characterized in that.
予め定められていた事象が、前記送信側ノードが管理する情報の通知元にて発生したときに、前記通知元に固有の個別識別子を生成する処理と、
前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信する処理と、
生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信する処理と、
前記送信側ノードが前記ネットワーク上の起点ノードである場合に、前記リダクション演算において前記集団識別子の代わりに第1の既定値を入力する処理と、
前記事象が前記通知元にて発生していないときに、前記リダクション演算において前記個別識別子の代わりに第2の既定値を入力する処理と、
を実行させるためのプログラム。 To a computer used as a sending node on the network,
Events have been established in advance, when the transmitting node is generated in notification source information managed, and generating a unique individual identifier to the notification source,
A process of receiving a collective identifier transmitted by another transmitting node when the transmitting node is not a starting node on the network;
By generating a reduction operation on the generated individual identifier and the received group identifier, a new group identifier in which the individual identifier and the group identifier are aggregated is generated and transmitted to the node on the network. Processing to
When the transmitting node is a starting node on the network, a process of inputting a first default value instead of the collective identifier in the reduction operation;
When the event has not occurred at the notification source, a process of inputting a second default value instead of the individual identifier in the reduction operation;
A program for running
予め定められていた事象が、前記送信側ノードが管理する情報の通知元にて発生したときに、情報の通知元に固有の個別識別子を生成する処理と、
前記送信側ノードが前記ネットワーク上の起点ノードでない場合に他の前記送信側ノードが送信した集団識別子を受信する処理と、
生成した前記個別識別子と受信した前記集団識別子とに対してリダクション演算を実行することにより前記個別識別子と前記集団識別子とが集約された新たな前記集団識別子を生成して前記ネットワーク上のノードに送信する処理と、
前記送信側ノードが前記ネットワーク上の起点ノードである場合に、前記リダクション演算において前記集団識別子の代わりに第1の既定値を入力する処理と、
前記事象が前記通知元にて発生していないときに、前記リダクション演算において前記個別識別子の代わりに第2の既定値を入力する処理と、
を含む該識別子集約処理を前記送信側ノードが実行し、
前記ネットワーク上の受信側ノードによって実行される識別子分析処理であって、前記送信側ノードが送信した集団識別子を受信し、受信した前記集団識別子から前記集団識別子の生成因子である1つ以上の前記個別識別子を復元し、復元したそれぞれの前記個別識別子から前記通知元の通知を復元する該識別子分析処理を前記受信側ノードが実行する、
ことを特徴とする情報集約方法。 An identifier aggregation process executed by a transmitting node on the network ,
When a predetermined event occurs at the information notification source managed by the transmission side node, a process of generating an individual identifier unique to the information notification source;
A process of receiving a collective identifier transmitted by another transmitting node when the transmitting node is not a starting node on the network;
By generating a reduction operation on the generated individual identifier and the received group identifier, a new group identifier in which the individual identifier and the group identifier are aggregated is generated and transmitted to the node on the network. Processing to
When the transmitting node is a starting node on the network, a process of inputting a first default value instead of the collective identifier in the reduction operation;
When the event has not occurred at the notification source, a process of inputting a second default value instead of the individual identifier in the reduction operation;
The sender node executes the identifier aggregation process including :
One or more of the identifier analysis processes executed by the receiving node on the network, receiving the group identifier transmitted by the transmitting node, and generating the group identifier from the received group identifier restore the individual identifier, the receiving node the identifier analysis process is executed to restore the notification of the notification source from the individual identifier of each restored,
An information aggregation method characterized by that.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014118467A JP6417727B2 (en) | 2014-06-09 | 2014-06-09 | Information aggregation system, program, and method |
US14/719,360 US9847913B2 (en) | 2014-06-09 | 2015-05-22 | System and method for gathering information |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014118467A JP6417727B2 (en) | 2014-06-09 | 2014-06-09 | Information aggregation system, program, and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015233178A JP2015233178A (en) | 2015-12-24 |
JP6417727B2 true JP6417727B2 (en) | 2018-11-07 |
Family
ID=54770457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014118467A Active JP6417727B2 (en) | 2014-06-09 | 2014-06-09 | Information aggregation system, program, and method |
Country Status (2)
Country | Link |
---|---|
US (1) | US9847913B2 (en) |
JP (1) | JP6417727B2 (en) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10033801B2 (en) * | 2015-02-12 | 2018-07-24 | Mellanox Technologies, Ltd. | Associative summing for high performance computing |
WO2016161220A1 (en) * | 2015-04-01 | 2016-10-06 | Microsoft Technology Licensing, Llc | Efficient topological compilation for metaplectic anyon model |
JP6597231B2 (en) * | 2015-11-27 | 2019-10-30 | 富士通株式会社 | Arithmetic device, program, information processing method |
KR102520502B1 (en) * | 2016-08-02 | 2023-04-12 | 엑스-로고스, 엘엘씨 | Method and system for enhanced data-centric encryption system using geometric algebra |
US11044181B1 (en) * | 2016-08-02 | 2021-06-22 | Initial State Technologies, Inc. | Data aggregation, transformation and visualization of networked broadcast reports |
JP2018160180A (en) * | 2017-03-23 | 2018-10-11 | 富士通株式会社 | Information processing system, information processor, and method for controlling information processing system |
JP6870487B2 (en) * | 2017-06-13 | 2021-05-12 | 富士通株式会社 | Information processing system and information processing method |
JP6874564B2 (en) * | 2017-06-27 | 2021-05-19 | 富士通株式会社 | Information processing systems, management devices and programs |
US10764176B1 (en) * | 2017-07-09 | 2020-09-01 | Barefoot Networks, Inc. | Compiler and hardware interactions to reuse register fields in the data plane of a network forwarding element |
US10721167B1 (en) | 2017-10-09 | 2020-07-21 | Barefoot Networks, Inc. | Runtime sharing of unit memories between match tables in a network forwarding element |
JP7077839B2 (en) * | 2018-07-18 | 2022-05-31 | 富士通株式会社 | Parallel processing device, reduction calculation system and reduction calculation method |
US10694217B2 (en) * | 2018-09-21 | 2020-06-23 | Intel Corporation | Efficient length limiting of compression codes |
US11122136B2 (en) | 2018-10-22 | 2021-09-14 | Red Hat, Inc. | Quantum payload service for facilitating communications between a quantum computing system and classical computing systems |
US11144334B2 (en) | 2018-12-20 | 2021-10-12 | Red Hat, Inc. | Quantum computer task manager |
JP7278084B2 (en) * | 2019-01-29 | 2023-05-19 | キヤノン株式会社 | Information processing device, information processing method, and program |
CN111858017A (en) * | 2019-04-30 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for processing tasks |
US11309974B2 (en) | 2019-05-09 | 2022-04-19 | Red Hat, Inc. | Quantum channel routing utilizing a quantum channel measurement service |
US11005654B2 (en) * | 2019-05-14 | 2021-05-11 | Google Llc | Outsourcing exponentiation in a private group |
US12051502B2 (en) * | 2019-05-14 | 2024-07-30 | Blayne Lequeux | Healthcare data cloud system, server and method |
JP7277756B2 (en) * | 2019-08-02 | 2023-05-19 | 富士通株式会社 | Information processing equipment |
US11886380B2 (en) | 2020-04-27 | 2024-01-30 | Red Hat, Inc. | Quantum file management system |
US11416221B2 (en) | 2020-05-12 | 2022-08-16 | Red Hat, Inc. | Quantum entanglement protection |
US11676059B2 (en) | 2020-06-23 | 2023-06-13 | Red Hat, Inc. | Performing quantum file pattern searching |
US11580247B2 (en) | 2020-06-25 | 2023-02-14 | Red Hat, Inc. | Systems and methods for quantum file permissions |
US11556833B2 (en) | 2020-06-25 | 2023-01-17 | Red Hat, Inc. | Performing quantum file concatenation |
US11562283B2 (en) | 2020-06-25 | 2023-01-24 | Red Hat, Inc. | Performing quantum file copying |
CN113238856B (en) * | 2021-03-09 | 2022-07-26 | 西安奥卡云数据科技有限公司 | RDMA-based memory management method and device |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09298543A (en) | 1996-05-02 | 1997-11-18 | Sumitomo Electric Ind Ltd | Network management system and intermediate management device |
JP2004072271A (en) * | 2002-08-02 | 2004-03-04 | Kyushu Ando Denki Kk | Apparatus management system and method |
US20050071457A1 (en) * | 2003-08-27 | 2005-03-31 | Siew-Hong Yang-Huffman | System and method of network fault monitoring |
JP2005204290A (en) * | 2003-12-18 | 2005-07-28 | Omron Corp | Method, system and device for registering specific information to information equipment with communications function, information equipment with communications function, and specific information management method and system |
JP2007235243A (en) * | 2006-02-27 | 2007-09-13 | Brother Ind Ltd | Information communication system, information collection method, node apparatus, and node processing program |
US20080109569A1 (en) * | 2006-11-08 | 2008-05-08 | Sicortex, Inc | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations |
JP5251520B2 (en) * | 2007-02-02 | 2013-07-31 | 日本電気株式会社 | Distributed information generation apparatus, restoration apparatus, restoration result verification apparatus, secret information distribution system, method, and program |
JP4886045B2 (en) * | 2007-03-09 | 2012-02-29 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | Distributed allocation of network management tasks in distributed communication networks |
JP5331898B2 (en) * | 2009-11-12 | 2013-10-30 | 富士通株式会社 | Communication method, information processing apparatus, and program for parallel computation |
US8639802B2 (en) * | 2010-04-30 | 2014-01-28 | Brocade Communications Systems, Inc. | Dynamic performance monitoring |
US8634314B2 (en) * | 2010-07-30 | 2014-01-21 | Cisco Technology, Inc. | Reporting statistics on the health of a sensor node in a sensor network |
JP5737075B2 (en) * | 2011-08-29 | 2015-06-17 | 富士通株式会社 | Event collection method and information processing apparatus |
US9135208B1 (en) * | 2012-04-13 | 2015-09-15 | Olympus Corporation | Method and system for group management |
CN104541248B (en) * | 2012-07-27 | 2017-12-22 | 华为技术有限公司 | Processing of the computing system to barrier command |
EP3005660B1 (en) * | 2013-05-28 | 2019-10-23 | Convida Wireless, LLC | Data aggregation |
-
2014
- 2014-06-09 JP JP2014118467A patent/JP6417727B2/en active Active
-
2015
- 2015-05-22 US US14/719,360 patent/US9847913B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20150358219A1 (en) | 2015-12-10 |
JP2015233178A (en) | 2015-12-24 |
US9847913B2 (en) | 2017-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6417727B2 (en) | Information aggregation system, program, and method | |
US8344916B2 (en) | System and method for simplifying transmission in parallel computing system | |
US6115716A (en) | Method for implementing an associative memory based on a digital trie structure | |
JP2544895B2 (en) | Distributed data processing system | |
US20220043778A1 (en) | System and method for data compaction and security with extended functionality | |
CN112506880B (en) | Data processing method and related equipment | |
US12040820B2 (en) | System and method for data compression with homomorphic encryption | |
Buchholz et al. | Complexity of Kronecker operations on sparse matrices with applications to the solution of Markov models | |
US20240113728A1 (en) | System and method for data compaction and security with extended functionality | |
US20230216520A1 (en) | System and method for data compression with encryption | |
US11700013B2 (en) | System and method for data compaction and security with extended functionality | |
EP3333751A1 (en) | Method, system and computer-readable medium to retrieve a private information symbol with low communication and storage complexity | |
US12218696B2 (en) | Data compression with protocol adaptation | |
CN117376403B (en) | Cloud data migration method and system | |
Zeng et al. | Detecting affine equivalence of Boolean functions and circuit transformation | |
US20210248111A1 (en) | Multi-node storage system and method data de-duplication method for the same | |
Shen | Optimal realization of any BPC permutation on k-extra-stage Omega networks | |
Kang et al. | Analyzing multi-trillion edge graphs on large gpu clusters: A case study with pagerank | |
Pantaleoni | A massively parallel algorithm for constructing the BWT of large string sets | |
WO2019232159A1 (en) | Modulus calculation that leverages computer architecture and/or operand clustering | |
US12224775B2 (en) | System and method for data compaction and security with extended functionality | |
US8321823B2 (en) | System and method for designing architecture for specified permutation and datapath circuits for permutation | |
US20250055476A1 (en) | Deep learning-based data compression with protocol adaptation | |
WO2025020975A1 (en) | Computing apparatus and method, and device, chip and system | |
McCoy et al. | Singleton Sieving: Overcoming the Memory/Speed Trade-Off in Exascale κ-mer Analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170309 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180223 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180306 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180426 |
|
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: 20180911 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180924 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6417727 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: R3D02 |