Graph processing system

The graph processing system addresses communication bottlenecks and resource imbalances by parallelizing operations within accelerators, enhancing throughput and scalability through dynamic resource allocation and delegation.

WO2026033630A1PCT designated stage Publication Date: 2026-02-12NT T INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
PCT/JP2024/028085
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-08-06
Publication Date
2026-02-12

AI Technical Summary

Technical Problem

Existing graph processing systems using multiple accelerators face communication bottlenecks, imbalanced resource utilization, and increased power consumption due to non-uniform edge distributions in graph data, leading to reduced throughput and scalability.

Method used

A graph processing system with parallel operation of message receiving, sending, and resource allocation units within each accelerator, dynamically balancing communication and computation by delegating vertices and utilizing device-level cooperative scheduling.

Benefits of technology

Improves throughput, reduces power consumption, and enhances scalability by minimizing communication overhead and thread stalls, enabling efficient multitasking and load balancing.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure JP2024028085_12022026_PF_FP_ABST
    Figure JP2024028085_12022026_PF_FP_ABST
Patent Text Reader

Abstract

An accelerator (1) comprises: a graph processing unit (11) that performs a search on a subgraph, stores search information obtained as a result of the search in a transmission buffer (142), and combines the search information and search information from another accelerator (1); a message reception unit (10) that receives the search information from the other accelerator; a message transmission unit (12) that transmits the search information stored in the transmission buffer (142) to the other accelerator (1); and a resource allocation unit (13) that allocates hardware resources of the host device to the graph processing unit (11), the message reception unit (10), and the message transmission unit (12).
Need to check novelty before this filing date? Find Prior Art

Description

Graph Processing System

[0001] The present invention relates to a graph processing system.

[0002] With the recent advancement of the information society, various data are processed by graph search. One method of graph search is breadth-first search (BFS) (see Non-Patent Document 1). When BFS is performed on a cluster of accelerators, it is executed in a configuration in which multiple accelerators 100 are connected to a host CPU (Central Processing Unit) 102 via an interconnect 101 such as Ethernet (registered trademark), as shown in FIG. 8. Each accelerator 100 has a processor 1000, a device memory 1001, and an interface device (I / F) 1002.

[0003] Searches on a graph are performed level by level. The graph is divided for parallel processing. After each search of a level (distance from the first vertex, number of branches), communication occurs between the accelerators 100, and search information is shared and synchronized. Graph search proceeds through a graph search that is completed locally in each accelerator 100 (subgraph data present in the device memory 1001) and synchronization of search information across accelerators 100. When searching a certain branch, if the vertices at both ends are present in the device memory 1001, a local search is performed. If one of the vertices at both ends is present in the device memory 1001 of another accelerator 100, the search is performed through synchronization.

[0004] 9 shows the state of each accelerator 100 when graph processing is performed by multiple accelerators 100. After each accelerator 100 completes a local graph search, it starts transferring data to other accelerators 100 by collective communication or the like for synchronization. This allows search information across accelerators 100 and information on visited vertices to be shared among the accelerators 100.

[0005] When multiple accelerators 100 perform graph search in parallel, communication between the accelerators 100 becomes a bottleneck in throughput. In particular, with graph data with a non-uniform number of edges, the balance between the calculations (local search) performed by the subgraphs stored in the device memory 1001 and communication (sending and receiving search information with other accelerators 100) may differ, resulting in a decrease in resource utilization. This poses a problem of impaired throughput, scalability, and power efficiency.

[0006] The technology disclosed in Non-Patent Document 1 shares (delegates) specific vertices among all accelerators 100, reducing communication volume and distributing the load, but does not minimize the communication bottleneck itself. Furthermore, the technology disclosed in Non-Patent Document 1 limits the number of shared vertices, so as the size of the graph data increases, the above-mentioned communication bottleneck becomes significantly larger. Furthermore, the technology disclosed in Non-Patent Document 1 stalls the processor 1000 of the accelerator 100 when synchronizing search information, resulting in a decrease in resource utilization. This poses the problem of reduced throughput and increased power consumption as the size of the graph data increases.

[0007] Y.Pan, R.Pearce and JDOwens, “Scalable Breadth-First Search on a GPU Cluster”, 2018 IEEE International Parallel and Distributed Processing Symposium (IPDPS), Vancouver, BC, Canada, 2018, pp.1090-1101, doi:10.1109 / IPDPS.2018.00118

[0008] The present invention has been made to solve the above-mentioned problems, and has an object to provide a graph processing system that can improve the processing efficiency of an accelerator.

[0009] The graph processing system of the present invention includes a plurality of accelerators configured to perform a search on each of a plurality of subgraphs obtained by dividing a graph to be searched, and each accelerator includes a device memory configured to store data of the subgraph, a graph processing unit configured to perform a search on the subgraph, store search information obtained as a result of the search in a transmission buffer of the device memory, and combine the search information with search information from other accelerators, a message receiving unit configured to receive the search information from the other accelerators and store it in a reception buffer of the device memory, a message sending unit configured to send the search information stored in the transmission buffer to the other accelerators, and a resource allocation unit configured to allocate hardware resources of the accelerator to the graph processing unit, the message receiving unit, and the message sending unit based on the status of processing performed by the graph processing unit, the message receiving unit, and the message sending unit, and the graph processing unit, the message receiving unit, the message sending unit, and the resource allocation unit operate in parallel.

[0010] According to the present invention, by providing each accelerator with a graph processing unit, a message receiving unit, a message sending unit, and a resource allocation unit, it is possible to improve the throughput of each accelerator and reduce power consumption.

[0011] FIG. 1 is a block diagram showing the configuration of an accelerator in a graph processing system according to a first embodiment of the present invention. FIG. 2 is a block diagram showing the configuration of a graph processing system according to a fourth embodiment of the present invention. FIG. 3 is a block diagram showing the configuration of an accelerator in a graph processing system according to a fourth embodiment of the present invention. FIG. 4 is a block diagram showing the configuration of an accelerator in a graph processing system according to a fifth embodiment of the present invention. FIG. 5 is a block diagram showing the configuration of an accelerator in a graph processing system according to a sixth embodiment of the present invention. FIG. 6 is a block diagram showing the configuration of an accelerator in a graph processing system according to a seventh embodiment of the present invention. FIG. 7 is a block diagram showing an example configuration of a computer that realizes the accelerators in the graph processing systems according to the first to seventh embodiments of the present invention. FIG. 8 is a block diagram showing the configuration of a conventional graph processing system. FIG. 9 is a diagram explaining the operation of an accelerator in a conventional graph processing system.

[0012] [First embodiment] An embodiment of the present invention will be described below with reference to the drawings. Fig. 1 is a block diagram showing the configuration of an accelerator in a graph processing system according to a first embodiment of the present invention. The accelerator 1 includes a message receiving unit 10, a graph processing unit 11, a message sending unit 12, a resource allocation unit 13, and a device memory 14.

[0013] The message receiving unit 10, graph processing unit 11, message sending unit 12, and resource allocation unit 13 each perform processing simultaneously. Each accelerator 1 configured as shown in Figure 1 transmits and receives graph search information to each other. When each accelerator 1 has completed searching all local data, it notifies a host device (not shown) or the like of the completion. When all accelerators 1 have completed searching, the graph search stops.

[0014] The message receiving unit 10 receives a message of search information from another accelerator 1 and stores the search information included in the message in a receiving buffer 140 of the device memory 14. The graph processing unit 11 consists of two units: a local graph processing unit 110 and a remote graph processing unit 111. The local graph processing unit 110 and the remote graph processing unit 111 alternately execute processing.

[0015] The local graph processing unit 110 performs a search on local graph data (subgraph data) 141 stored in the device memory 14 of its own device. When the local search results in a need to send a message to another accelerator 1, the local graph processing unit 110 stores the search information to be sent in a transmission buffer 142 of the device memory 14.

[0016] The remote graph processing unit 111 performs processing to combine search information from other accelerators 1 stored in the receiving buffer 140 with search information obtained by the search performed by the local graph processing unit 110 .

[0017] The message sending unit 12 performs processing to create a message including the search information stored in the sending buffer 142 and send it to another accelerator 1. The message sending unit 12 may create a message and send it to another accelerator 1 when search information to be sent to another accelerator 1 is stored in the sending buffer 142. The message sending unit 12 may also create a message and send it to another accelerator 1 when a certain amount of search information is stored in the sending buffer 142.

[0018] The resource allocation unit 13 determines the allocation of resources of the accelerator 1 to the message receiving unit 10, the graph processing unit 11, and the message sending unit 12. The resource allocation unit 13 includes an analysis unit 130. The resource allocation unit 13 dynamically changes the resource allocation according to the search status of data present in the device memory 14 and the receive buffer 140 and the transmit buffer 142, thereby balancing communication and calculation.

[0019] The analysis unit 130 calculates the balance between communication and computation. The balance between communication and computation can be inferred to some extent by analyzing local data. For example, when a specific vertex is shared (delegate) among multiple accelerators 1, the ratio of the number of shared vertices to the number of unshared vertices correlates with the ratio of communication volume to computation volume. Delegation is a method in distributed parallel graph processing in which a specific vertex is replicated and shared among multiple accelerators 1. By sharing a high-degree vertex that requires a lot of processing among multiple accelerators 1, all vertices connected to the high-degree vertex can be processed locally, enabling a reduction in communication volume and load balancing.

[0020] Device-level cooperative scheduling is a technology that allocates resources (processors, memory areas, etc.) within an accelerator depending on the software being executed. Device-level cooperative scheduling allows the accelerator 1 itself to dynamically allocate resources when multiple modules are executed simultaneously, enabling efficient multitasking.

[0021] The message receiving unit 10, the graph processing unit 11, the message sending unit 12, and the resource allocation unit 13 simultaneously execute the following processes (I) to (IV).

[0022] (I) Local graph search and reflection of search information from other accelerators 1. (II) Processing and buffering of messages received from other accelerators 1. (III) Creation and buffering of messages to be sent to other accelerators 1. (IV) Calculation of hardware resource allocation for the message receiving unit 10, graph processing unit 11, message sending unit 12, and resource allocation unit 13.

[0023] With the above configuration, in this embodiment, communication tasks are executed in parallel with graph searches, thereby hiding communication overhead and improving throughput and scalability. In this embodiment, scalability can be improved by adjusting the balance of resources between communication (message receiving unit 10, message sending unit 12) and calculation (graph processing unit 11). Furthermore, increased resource utilization can improve throughput and reduce power consumption. In this embodiment, even if the processing loads of the local graph processing unit 110 and the remote graph processing unit 111 differ significantly, the resource allocation unit 13 can flexibly reconfigure resources.

[0024] [Second Example] In this example, a specific example of the first example will be described using the symbols in FIG. 1 . In this example, search information is synchronized for each level of graph data (distance from the first vertex). After completing the local search, the local graph processing unit 110 of each accelerator 1 notifies the other accelerators 1 that the search has ended using a method such as MPI (Message Passing Interface). After the notification, the local graph processing unit 110 shares the search information (information such as locally visited vertices) with the other accelerators 1. Then, the local graph processing unit 110 calls the remote graph processing unit 111 of its own device.

[0025] The remote graph processing unit 111, which has been called by the local graph processing unit 110, performs processing to combine search information from other accelerators 1 with search information obtained by local search. The remote graph processing unit 111 calls the local graph processing unit 110 of its own device when it detects that sharing of search information with all other accelerators 1 has been completed. The local graph processing unit 110, which has been called by the remote graph processing unit 111, starts a local search of the next level after the level at which the local search has been completed.

[0026] The operations of the message receiving unit 10, the graph processing unit 11, and the message sending unit 12 are as follows.

[0027] The local graph processing unit 110 performs a local search, and when a search spanning other accelerators 1 occurs, stores the search information spanning other accelerators 1 in the transmission buffer 142 (step S1).

[0028] Simultaneously with step S1, the message receiving unit 10 processes a message received from another accelerator 1 and stores the search information included in the message in the receiving buffer 140. The message sending unit 12 creates a message including the search information stored in the sending buffer 142 and sends the message to the other accelerator 1 (step S2).

[0029] The local graph processing unit 110 stores the search information obtained by the local search in the local graph data 141 area of ​​the device memory 14 and in the transmission buffer 142. When the local search at the current level ends, the local graph processing unit 110 calls the remote graph processing unit 111. At the same time, the message sending unit 12 creates a message including the search information (information on locally visited vertices, etc.) stored in the transmission buffer 142 and sends it to the other accelerators 1 (step S3).

[0030] The remote graph processing unit 111, which has been called by the local graph processing unit 110, checks whether the end of the local search has been notified by all the other accelerators 1. When the remote graph processing unit 111 checks the notification, it combines the search information from the other accelerators 1, which is stored in the receive buffer 140, with the local search information stored in the area of ​​the local graph data 141 (step S4).

[0031] When the remote graph processing unit 111 completes the combination of the search information, it calls the local graph processing unit 110. Upon receiving the readout from the remote graph processing unit 111, the local graph processing unit 110 starts a local search of the next level after the level at which the local search has been completed (step S5).

[0032] As described above, in this embodiment, communication (message receiving unit 10, message sending unit 12) and calculation (graph processing unit 11) are performed simultaneously, which minimizes thread stalls in accelerator 1 when synchronizing search information. The only communication required for synchronization of search information is local search information. Sending and receiving search information across other accelerators 1 is performed in parallel with calculation. This allows communication overhead to be hidden, improving throughput and responsiveness.

[0033] [Third Example] In this example, another specific example of the first example will be described using the reference numerals in Fig. 1. In this example, without synchronizing search information for each level, each accelerator 1 sequentially sends and receives messages to proceed with the graph search.

[0034] The local graph processing unit 110 performs a predetermined amount of graph search. The local graph processing unit 110 may perform a predetermined number of searches, from one level to several levels. When the local graph processing unit 110 has completed the predetermined amount of searches, it calls the remote graph processing unit 111.

[0035] The remote graph processing unit 111, which has been called by the local graph processing unit 110, acquires search information from other accelerators 1 stored in the receive buffer 140 and combines the acquired search information with local search information. When the remote graph processing unit 111 completes combining the search information, it calls the local graph processing unit 110. The local graph processing unit 110 adds information about the level of the searched vertices to the search information.

[0036] The remote graph processing unit 111 checks the vertex level information added to the search information from the other accelerator 1 and compares the level of the vertices visited by the other accelerator 1 with the level of the vertices visited in the local search. If the remote graph processing unit 111 determines from this comparison that there is a contradiction in the search information between the local and other accelerators 1, it corrects the search information locally. This correction can be completed quickly because it is completed by simply rewriting the parent-child relationships of the vertices. When the remote graph processing unit 111 has completed combining the search information, it calls the local graph processing unit 110.

[0037] The operations of the message receiving unit 10, the graph processing unit 11, and the message sending unit 12 are as follows.

[0038] The local graph processing unit 110 performs a local search, and when a search spanning other accelerators 1 occurs, it stores search information spanning other accelerators 1 in the transmission buffer 142 (step S1a). At this time, the local graph processing unit 110 adds information on the level of the searched vertex to the search information.

[0039] Simultaneously with step S1a, the message receiving unit 10 processes a message received from another accelerator 1 and stores the search information included in the message in the receiving buffer 140. The message sending unit 12 creates a message including the search information stored in the sending buffer 142 and sends the message to the other accelerator 1 (step S2a).

[0040] The local graph processing unit 110 stores the search information obtained by the local search in the local graph data 141 area of ​​the device memory 14 and in the transmission buffer 142. At this time, the local graph processing unit 110 adds information about the level of the searched vertices to the search information. When a predetermined amount of local search is completed, the local graph processing unit 110 calls the remote graph processing unit 111. At the same time, the message sending unit 12 creates a message including the search information stored in the transmission buffer 142 and sends it to the other accelerator 1 (step S3a).

[0041] The remote graph processing unit 111, which has been called by the local graph processing unit 110, combines the search information from the other accelerator 1 stored in the receive buffer 140 with the local search information stored in the area of ​​the local graph data 141. At this time, the remote graph processing unit 111 checks the vertex level information added to the search information from the other accelerator 1 and compares the levels of the vertices visited by the other accelerator 1 with the levels of the vertices visited in the local search. If the remote graph processing unit 111 determines from this comparison that there is a contradiction in the search information between the local and other accelerators 1, it corrects the local search information (step S4a).

[0042] When the remote graph processing unit 111 completes the correction and combination of the search information, it calls the local graph processing unit 110 (step S5a).

[0043] Here, correction of search information will be explained. Consider an example of searching for a parent vertex by BFS. The local graph processing unit 110 searches for a vertex v at level a. 1 Search for a vertex connected to vertex v at level (a+1). 2 Suppose we discover "v 2 The parent vertex of is v 1 " local search information is obtained.

[0044] After that, the remote graph processing unit 111, which is called by the local graph processing unit 110, receives the vertex v at level b from another accelerator 1. 3 is the vertex v 2 Here, if b<a, that is, if level b is closer to the parent than level a, the remote graph processing unit 111 2 The parent vertex of v 3 In addition, the remote graph processing unit 111 changes the vertex v 2 The level of vertex v 2 The level of the vertex v is updated to the value obtained by subtracting (a-b) from (a+1). 2 The level of vertex v becomes b+1. 2The level of the vertex in the child relationship with v is updated to a value obtained by subtracting (a-b) from the level value of this vertex. That is, the remote graph processing unit 111 updates the level (v) of the vertex v using the following formula (1). In formula (1), 2 Let v be the child vertex searched from a v is the level of vertex v.

[0045]

[0046] If b≧a, that is, if level a is equal to level b or level a is on the parent side, the remote graph processing unit 111 does not modify the local search information.

[0047] As described above, in this embodiment, since the search information is not synchronized, thread stalls in the accelerator 1 are eliminated, throughput is improved, and power consumption can be reduced. In this embodiment, event-driven information processing is possible, and graph processing applications can be expected to be faster. Furthermore, in this embodiment, asynchronous processing of the search information can strengthen tolerance to bias in the graph data, thereby improving scalability. In this embodiment, by appropriately dividing the graph data, inconsistencies in the search information can be minimized, and throughput can be further improved.

[0048] [Fourth Embodiment] Fig. 2 is a block diagram showing the configuration of a graph processing system according to a fourth embodiment of the present invention, and Fig. 3 is a block diagram showing the configuration of an accelerator according to this embodiment. In the graph processing system, multiple accelerators 1a are connected to a host device 3 via an interconnect 2. Although the configuration of the graph processing system is not described in the first to third embodiments, multiple accelerators 1 are also connected to the host device 3 via the interconnect 2 in these embodiments. The graph data to be searched is divided, for example, by the host device 3. The host device 3 distributes the divided subgraph data that each accelerator 1, 1a is responsible for to each accelerator 1, 1a.

[0049] The accelerator 1a of this embodiment is the accelerator 1 of the third embodiment to which a remote work stealing unit 15 has been added. Remote work stealing is a load balancing technique in which a processing node in a standby state executes a task of another processing node on behalf of the other processing node.

[0050] The operations of the message receiving unit 10, the graph processing unit 11, the message sending unit 12, and the remote work stealing unit 15 are as follows.

[0051] When all tasks are completed, the message receiving unit 10, the message sending unit 12, and the graph processing unit 11 notify the remote work stealing unit 15 of the task completion. The accelerator 1a executing this process is designated as 1a-A (step S1b).

[0052] When the remote work stealing unit 15 of the accelerator 1a-A confirms that all processing by the message receiving unit 10, the message sending unit 12, and the graph processing unit 11 in the accelerator 1a has been completed, it transmits the search results (combined search information) to the external memory 4. After completing the transmission, the remote work stealing unit 15 notifies the host device 3 that the local search has been completed (step S2b).

[0053] The host device 3 searches for an accelerator 1a that has not yet completed the local search, based on the status of the local search completion notification from each accelerator 1a, and designates the accelerator 1a thus found as 1a-B (step S3b).

[0054] The host device 3 sends a data transmission request to the accelerator 1a-B. When the remote work stealing unit 15 of the accelerator 1a-A receives the data transmission request from the host device 3, it transmits the graph data and search information stored in its own device memory 14 to the host device 3. The host device 3 divides each of the graph data and search information received from the accelerator 1a-B into two in accordance with a specified policy (step S4b).

[0055] The host device 3 sends a search request to the accelerator 1a-A, which includes one of the graph data segments after division and the search information after division corresponding to this graph data. The host device 3 also sends a search request to the accelerator 1a-B, which includes the other of the graph data segments after division and the search information after division corresponding to this graph data. The host device 3 then notifies all of the accelerators 1a that the data of the accelerator 1a-B has been divided for allocation to the accelerator 1a-A. In this way, a message regarding the data of the accelerator 1a-B that has been allocated to the accelerator 1a-A arrives at the accelerator 1a-A (step S5b).

[0056] Upon receiving the notification from the host device 3, the remote work stealing unit 15 of the accelerator 1a-A learns that the data of the accelerator 1a-B has been divided. Then, upon receiving a search request from the host device 3, the remote work stealing unit 15 stores the divided graph data and the divided search information included in the received search request in the local graph data 141 area of ​​the device memory 14. The remote work stealing unit 15 of the accelerator 1a-A calls the local graph processing unit 110 of its own device. The local graph processing unit 110 begins searching the divided graph data stored in the device memory 14, starting from the visited vertex indicated by the divided search information. Thereafter, a local search similar to that of the third embodiment is performed. When the local search is completed, the local graph processing unit 110 notifies the remote work stealing unit 15 of its own device that the local search is completed (step S6b).

[0057] Upon receiving the notification, the remote work stealing unit 15 calls the remote graph processing unit 111 of its own device, and also obtains the search information sent in step S2b from the memory 4 and passes it to the remote graph processing unit 111. The remote graph processing unit 111 combines the search information received from the remote work stealing unit 15, the local search information, and the search information from the other accelerator 1a (step S7b).

[0058] Meanwhile, the remote work stealing unit 15 of the accelerator 1a-B, which has received a search request from the host device 3, stores the divided graph data and divided search information included in the received search request in the local graph data 141 area of ​​the device memory 14. The remote work stealing unit 15 of the accelerator 1a-B calls the local graph processing unit 110 of its own device. The local graph processing unit 110 starts searching the divided graph data stored in the device memory 14, starting from the visited vertex indicated by the divided search information. Thereafter, a local search similar to that of the third embodiment is performed. When the local search is completed, the local graph processing unit 110 notifies the remote work stealing unit 15 of its own device that the local search is completed (step S8b).

[0059] Upon receiving the notification, the remote work stealing unit 15 calls the remote graph processing unit 111 of its own device. The remote graph processing unit 111 combines the local search information with the search information from the other accelerator 1a (step S9b). The processing of steps S8b and S9b is performed simultaneously with the processing of steps S6b and S7b.

[0060] In the third embodiment, since synchronization processing for each level of search information is not performed, depending on the division status of the graph data, some accelerators 1 may finish the search early, resulting in a decrease in resource utilization. In this embodiment, by adding a remote work stealing unit 15, accelerators 1 that have completed the search early can rejoin the graph search. As a result, in this embodiment, resource utilization can be improved and throughput can be increased. In this embodiment, load balancing can be dynamically performed, resulting in improved scalability and responsiveness.

[0061] Fifth Embodiment Figure 4 is a block diagram showing the configuration of an accelerator in a graph processing system according to a fifth embodiment of the present invention. In this embodiment, an accelerator 1b is connected to a smart NIC (Network Interface Card) 5, and data communication between the accelerators is performed without the intervention of a CPU (host device). In the first to fourth embodiments, multiple accelerators 1 and 1a are connected via an interconnect, which required the intervention of a CPU for data communication. In this embodiment, a message receiving unit 10 and a message sending unit 12 have packet processing functions such as RDMA (Remote Direct Memory Access), and perform network processing in cooperation with the smart NIC 5.

[0062] In this embodiment, improved throughput and improved responsiveness can be achieved by automating communication between accelerators. Furthermore, in this embodiment, graph search can be performed without CPU intervention, thereby reducing CPU utilization and power consumption. Furthermore, in this embodiment, reduced latency, improved fault tolerance, and reduced power consumption can be achieved by offloading network processing.

[0063] In the following embodiments, a processor, which is the smallest unit of hardware that performs information processing, is called a PU (Processing Unit), and a block of multiple PUs abstracted when executing software is called a PUB (Processing Unit Block). Taking an NVIDIA GPU (Graphics Processing Unit) as an example, a PU corresponds to a thread (warp), and a PUB corresponds to an SM (Streaming Multiprocessor).

[0064] Sixth Embodiment Fig. 5 is a block diagram showing the configuration of an accelerator in a graph processing system according to a sixth embodiment of the present invention. However, Fig. 5 omits the illustration of the device memory 14. The resource allocation unit 13 of the accelerator 1c in this embodiment allocates resources to the message receiving unit 10, graph processing unit 11, and message sending unit 12 in units of PUBs.

[0065] The resource allocation unit 13 monitors the analysis status of local data, the usage status of each buffer, etc., and determines the number of PUBs to be allocated to each of the message receiving unit 10, the graph processing unit 11, and the message sending unit 12. Based on the determined number of PUBs, the resource allocation unit 13 allocates PUBs to each of the message receiving unit 10, the graph processing unit 11, and the message sending unit 12 by device-level cooperative scheduling, thereby achieving multitasking. The resource allocation unit 13 performs the process of determining the number of PUBs to be allocated to the message receiving unit 10, the graph processing unit 11, and the message sending unit 12 in parallel with the operations of the message receiving unit 10, the graph processing unit 11, and the message sending unit 12. The resource allocation unit 13 allocates resources at specific timings, such as when synchronization of search information for each level starts or when a certain period of time has elapsed.

[0066] In this embodiment, fine-grained multitasking at the hardware level can improve resource utilization, thereby improving throughput and reducing power consumption. In this embodiment, automatic resource optimization can be implemented, reducing programming costs. In this embodiment, autonomous resource management eliminates computational overhead. Furthermore, in this embodiment, optimal resource management can be performed automatically regardless of the type of accelerator, improving flexibility and scalability.

[0067] Seventh Embodiment Fig. 6 is a block diagram showing the configuration of an accelerator in a graph processing system according to a seventh embodiment of the present invention. However, Fig. 6 omits the illustration of the device memory 14. The resource allocation unit 13 of the accelerator 1d in this embodiment allocates resources to the message receiving unit 10, graph processing unit 11, and message sending unit 12 on a PU-by-PU basis.

[0068] As in the sixth embodiment, the resource allocation unit 13 allocates PUs to each of the message receiving unit 10, the graph processing unit 11, and the message transmitting unit 12 by device-level cooperative scheduling to achieve multitasking. In this embodiment, it is possible to change the number of PUs allocated to the message receiving unit 10, the graph processing unit 11, and the message transmitting unit 12 for each PUB. As a policy for determining the number of PUs allocated to each of the message receiving unit 10, the graph processing unit 11, and the message transmitting unit 12, a policy is set that takes into account communication between the PUs, etc.

[0069] In this embodiment, it is possible to further improve the resource utilization rate compared to the sixth embodiment, thereby achieving improved throughput and reduced power consumption. In this embodiment, the granularity of resource management is the finest, and in principle, efficient resource management can be automatically performed.

[0070] The accelerators 1, 1a to 1d described in the first to seventh embodiments can be realized by a computer equipped with a GPU, a storage device, and an interface, and a program that controls these hardware resources. An example configuration of this computer is shown in FIG. 7. The computer includes a GPU 200, a storage device 201, and an interface device (I / F) 202. An interconnect, a smart NIC, or the like is connected to the I / F 202. In such a computer, a program for implementing the graph search method of the present invention is stored in the storage device 201. The GPU 200 executes the processing described in the first to seventh embodiments in accordance with the program stored in the storage device 201.

[0071] Some or all of the above embodiments can be described as, but are not limited to, the following supplementary notes.

[0072] (Supplementary Note 1) A graph processing system of the present invention includes a plurality of accelerators configured to perform a search on each of a plurality of subgraphs obtained by dividing a graph to be searched, and each accelerator includes a device memory configured to store data of the subgraph, a graph processing unit configured to perform a search on the subgraph, store search information obtained as a result of the search in a transmission buffer of the device memory, and combine the search information with search information from other accelerators, a message receiving unit configured to receive the search information from the other accelerators and store it in the reception buffer of the device memory, a message sending unit configured to send the search information stored in the transmission buffer to the other accelerators, and a resource allocation unit configured to allocate hardware resources of the accelerator to the graph processing unit, the message receiving unit, and the message sending unit based on the status of processing performed by the graph processing unit, the message receiving unit, and the message sending unit, and the graph processing unit, the message receiving unit, the message sending unit, and the resource allocation unit operate in parallel.

[0073] (Supplementary Note 2) In the graph processing system described in Supplementary Note 1, the graph processing unit of the accelerator performs a search for each level of the subgraph, and when the search for the target level is completed, it notifies the other accelerators of the completion. When it has confirmed that the searches for all other accelerators have been completed, it combines the search information obtained as a result of its own search with the search information from the other accelerators.

[0074] (Supplementary Note 3) In the graph processing system described in Supplementary Note 1, the graph processing unit of the accelerator performs a specified amount of search on the subgraph, and after completing the specified amount of search, combines the search information obtained as a result of the search by its own device with the search information from other accelerators.

[0075] (Supplementary Note 4) In the graph processing system described in Supplementary Note 3, after completing a specified amount of searching, the graph processing unit of the accelerator adds information on the level of the searched vertices to the search information stored in the transmission buffer, checks the information on the level of the vertices added to the search information from other accelerators, and if it determines that there is a contradiction in the search information between its own device and the other accelerators, corrects the search information obtained as a result of the search by its own device.

[0076] 1, 1a to 1d... accelerator, 2... interconnect, 3... host device, 4... memory, 5... smart NIC, 10... message receiving unit, 11... graph processing unit, 12... message sending unit, 13... resource allocation unit, 14... device memory, 15... remote work stealing unit, 110... local graph processing unit, 111... remote graph processing unit, 130... analysis unit.

Claims

1. A graph processing system comprising: a plurality of accelerators configured to perform a search on each of a plurality of subgraphs obtained by dividing a graph to be searched, each accelerator comprising: a device memory configured to store data of the subgraph; a graph processing unit configured to perform a search on the subgraph and store search information obtained as a result of the search in a send buffer of the device memory, and to combine the search information with search information from other accelerators; a message receiving unit configured to receive search information from other accelerators and store it in a receive buffer of the device memory; a message sending unit configured to send the search information stored in the send buffer to other accelerators; and a resource allocation unit configured to allocate hardware resources of the accelerator to the graph processing unit, the message receiving unit, and the message sending unit based on the status of processing performed by the graph processing unit, the message receiving unit, and the message sending unit, wherein the graph processing unit, the message receiving unit, the message sending unit, and the resource allocation unit operate in parallel.

2. A graph processing system according to claim 1, wherein the graph processing unit of the accelerator performs a search for each level of the subgraph, notifies the other accelerators of the completion of the search for the target level when the search for the target level is completed, and combines the search information obtained as a result of the search by the accelerator itself with the search information from the other accelerators when it has confirmed that the searches for all other accelerators have been completed.

3. A graph processing system according to claim 1, wherein the graph processing unit of the accelerator performs a specified amount of searching on the subgraph, and after completing the specified amount of searching, combines the search information obtained as a result of the search by the accelerator with search information from other accelerators.

4. A graph processing system according to claim 3, wherein the graph processing unit of the accelerator, after completing a specified amount of searching, adds information about the level of the searched vertices to the search information stored in the send buffer, checks the information about the level of the vertices added to the search information from other accelerators, and if it determines that there is a contradiction in the search information between its own device and the other accelerators, corrects the search information obtained as a result of the search by its own device.

Citation Information

Patent Citations

  • System and method for parallel model checking utilizing parallel structured duplicate detection

    JP2013239163A

  • Annealing processing system, management device, chip, annealing processing method, and program

    JP2024102929A