KR20210106929A - Apparatus for distributed processing through remote direct memory access and method for the same - Google Patents
Apparatus for distributed processing through remote direct memory access and method for the same Download PDFInfo
- Publication number
- KR20210106929A KR20210106929A KR1020210107834A KR20210107834A KR20210106929A KR 20210106929 A KR20210106929 A KR 20210106929A KR 1020210107834 A KR1020210107834 A KR 1020210107834A KR 20210107834 A KR20210107834 A KR 20210107834A KR 20210106929 A KR20210106929 A KR 20210106929A
- Authority
- KR
- South Korea
- Prior art keywords
- shared memory
- memory buffer
- distributed processing
- buffer
- shared
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명은 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법에 관한 것으로, 구체적으로 분산 처리 프레임워크에서 공유 메모리 서버들의 메모리들로 구성된 가상의 공유 메모리 버퍼에 직접 접근하는 분산 처리 장치 및 그 방법에 관한 것이다.The present invention relates to a distributed processing apparatus and method through remote direct memory access, and more particularly, to a distributed processing apparatus and method for directly accessing a virtual shared memory buffer composed of memories of shared memory servers in a distributed processing framework it's about
분산 병렬 처리란 다수의 계산 자원을 동시에 병렬로 사용하여 대규모 데이터 분석을 빠르게 수행하는 것이다. 다수의 계산 노드에 분산 병렬 실행되는 프로세스들은 상호간에 데이터 공유가 필수적이며 대표적인 데이터 공유 방식으로 MPI(Message Passing Interface)를 들 수 있다. 그러나 분산 처리 데이터의 일부만을 일부 프로세스 간에 메시지 패싱 형태로 전달하는 형태가 아니라 지속적으로 전체 분산 처리 프로세스 간에 전체 처리 데이터를 비동기적으로 업데이트하고 참조하는 경우에는 MPI 방식보다는 공유 메모리 형태로 공유하는 것이 더 유리하다. Distributed parallel processing is to perform large-scale data analysis quickly by using multiple computational resources in parallel at the same time. Processes that are distributed and executed in parallel on multiple computation nodes must share data with each other, and MPI (Message Passing Interface) is a representative data sharing method. However, in the case of continuously updating and referencing the entire distributed processing data asynchronously between all distributed processing processes rather than passing only a part of the distributed processing data in the form of message passing between some processes, it is better to share it in the form of shared memory rather than the MPI method. It is advantageous.
분산 처리 플랫폼에서 분산 처리를 수행하는 프로세스들은 상호 간에 대규모 공유 데이터를 빈번하게 송수신해야 하며, 이에 따른 통신 오버헤드는 전체 분산 처리 성능이나 처리 시간에서 차지하는 비중이 매우 높다. 통신 오버헤드가 높을수록 계산 노드의 계산 프로세서(예컨대, CPU, GPU 등)들은 대기하는 시간이 길어지고 이는 자원 사용률 저하로 나타난다. 통신 오버헤드가 높은 이유는 TCP/IP를 포함한 대부분의 통신 프로토콜 스택은 응용 프로세스가 보내는 메시지를 다단계의 프로토콜 레이어를 통해 처리하는 프로토콜 처리 오버헤드와 프로토콜 처리중에 1회 이상 메모리 복사가 발생 때문이다. 따라서, 원격 직접 메모리 접근(RDMA: Remote Direct Memory Access)을 통하여 분산 처리에 따른 통신 오버헤드를 줄이는 것이 요구된다.Processes performing distributed processing on a distributed processing platform must frequently transmit and receive large-scale shared data with each other, and the resulting communication overhead occupies a very high proportion in the overall distributed processing performance or processing time. The higher the communication overhead, the longer the waiting time of the computational processors (eg, CPU, GPU, etc.) of the computation node, and this appears as a decrease in resource utilization. The reason for the high communication overhead is that most communication protocol stacks, including TCP/IP, process the messages sent by the application process through multi-level protocol layers, and the memory copy occurs more than once during protocol processing. Therefore, it is required to reduce communication overhead due to distributed processing through remote direct memory access (RDMA).
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라할 수는 없다.The above-mentioned background art is technical information possessed by the inventor for the derivation of the present invention or acquired in the process of derivation of the present invention, and cannot necessarily be said to be a known technique disclosed to the general public prior to the filing of the present invention.
본 발명의 목적은 원격 직접 메모리 접근을 통하여 분산 처리 데이터를 공유하는 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법을 제공하는 것이다.It is an object of the present invention to provide a distributed processing apparatus and method through remote direct memory access that share distributed processing data through remote direct memory access.
또한, 본 발명의 목적은 다수의 공유 메모리 서버들을 클러스터링하고 각각의 공유 메모리 서버들로부터 공유 메모리 버퍼 세그먼트들을 할당하여 공유 메모리 버퍼를 구성하고, 공유 메모리 버퍼에 원격 직접 메모리 접근하는 분산 처리 장치 및 그 방법을 제공하는 것이다.In addition, an object of the present invention is to configure a shared memory buffer by clustering a plurality of shared memory servers and allocating shared memory buffer segments from each of the shared memory servers, and a distributed processing apparatus for remote direct memory access to the shared memory buffer and its to provide a way
본 발명의 일 실시예는, 공유 메모리 서버 클러스터를 구성하는 복수의 공유 메모리 서버들에 구비된 원격 메모리들에 직접 접근하여 데이터를 송수신하는 통신부; 상기 원격 메모리들로부터 할당된 공유 메모리 버퍼 세그먼트들로 구성된 공유 메모리 버퍼에 대하여, 메모리에 상기 공유 메모리 버퍼와 동일한 크기만큼 로컬 공유 메모리 영역을 할당하고, 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역을 동기화하는 공유 메모리 접근 관리부; 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역 사이의 메모리 맵핑 테이블을 관리하는 메모리 맵핑 테이블 관리부; 및 상기 로컬 공유 메모리 영역에 대한 주어진 연산을 수행하는 연산부를 포함하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치를 제공한다.An embodiment of the present invention, a communication unit for transmitting and receiving data by directly accessing remote memories provided in a plurality of shared memory servers constituting the shared memory server cluster; For a shared memory buffer composed of shared memory buffer segments allocated from the remote memories, a local shared memory area of the same size as the shared memory buffer is allocated in memory, and the shared memory buffer and the local shared memory area are synchronized a shared memory access management unit; a memory mapping table management unit for managing a memory mapping table between the shared memory buffer and the local shared memory area; And it provides a distributed processing device through remote direct memory access, characterized in that it comprises a calculation unit for performing a given operation on the local shared memory area.
이때, 상기 공유 메모리 접근 관리부는 직접 상기 공유 메모리 버퍼를 생성하여 동일한 분산 처리 프레임워크를 구성하는 다른 분산 처리 장치들에 공유 메모리 버퍼 정보를 공유하거나, 상기 다른 분산 처리 장치에 의하여 생성된 상기 공유 메모리 버퍼에 상응하는 공유 메모리 버퍼 정보를 수신할 수 있다.In this case, the shared memory access management unit directly creates the shared memory buffer to share shared memory buffer information with other distributed processing devices constituting the same distributed processing framework, or the shared memory created by the other distributed processing device Receive shared memory buffer information corresponding to the buffer.
이때, 상기 공유 메모리 접근 관리부는 상기 공유 메모리 서버들에 각각에 상응하는 상기 공유 메모리 버퍼 세그먼트들의 크기를 계산하고, 상기 공유 메모리 서버들에 상기 공유 메모리 버퍼 세그먼트들의 생성 및 할당을 요청하여 상기 공유 메모리 버퍼를 생성할 수 있다.In this case, the shared memory access management unit calculates the size of the shared memory buffer segments corresponding to each of the shared memory servers, and requests the shared memory servers to generate and allocate the shared memory buffer segments to the shared memory. You can create a buffer.
이때, 상기 공유 메모리 접근 관리부는 상기 연산에 의하여 상기 로컬 공유 메모리 영역의 데이터가 변경된 경우에 상기 로컬 공유 메모리 영역의 데이터를 상기 공유 메모리 버퍼에 복사하여 상기 원격 메모리들과 데이터를 동기화하고, 상기 다른 분산 처리 장치들에 의하여 상기 공유 메모리 버퍼의 데이터가 변경된 경우에 상기 공유 메모리 버퍼의 데이터를 상기 로컬 공유 메모리 영역으로 복사하여 상기 원격 메모리들과 데이터를 동기화할 수 있다.At this time, when the data of the local shared memory area is changed by the operation, the shared memory access management unit copies the data of the local shared memory area to the shared memory buffer to synchronize data with the remote memories, and When the data of the shared memory buffer is changed by the distributed processing devices, the data of the shared memory buffer may be copied to the local shared memory area to synchronize data with the remote memories.
이때, 상기 공유 메모리 접근 관리부는 두 개 이상의 공유 메모리 버퍼들 사이의 데이터 누적 연산을 수행할 수 있다.In this case, the shared memory access management unit may perform a data accumulation operation between two or more shared memory buffers.
이때, 상기 공유 메모리 접근 관리부는 상기 공유 메모리 서버들에 누적 연산을 요청하고, 상기 공유 메모리 서버들로부터 상기 공유 메모리 버퍼 세그먼트들에 대하여 누적 연산을 수행한 결과를 수신하여 상기 데이터 누적 연산을 수행할 수 있다.In this case, the shared memory access management unit requests the shared memory servers for an accumulation operation, receives the result of performing the accumulation operation on the shared memory buffer segments from the shared memory servers, and performs the data accumulation operation. can
이때, 상기 공유 메모리 접근 관리부는 상기 공유 메모리 서버들에 상기 공유 메모리 버퍼 세그먼트들의 해제 및 삭제를 요청하고, 상기 공유 메모리 버퍼 세그먼트들의 해제 및 삭제 요청의 결과들을 수신함에 따라 상기 로컬 공유 메모리 영역을 해제 및 삭제하여 상기 공유 메모리 버퍼의 사용을 종료하고, 상기 메모리 맵핑 테이블 관리부는 상기 공유 메모리 버퍼의 사용이 종료되면 상기 메모리 맵핑 테이블을 삭제할 수 있다.In this case, the shared memory access management unit requests the shared memory servers to release and delete the shared memory buffer segments, and releases the local shared memory area upon receiving the results of the request to release and delete the shared memory buffer segments. and deletion to end use of the shared memory buffer, and the memory mapping table manager may delete the memory mapping table when the use of the shared memory buffer is terminated.
본 발명의 다른 일 실시예는, 원격 직접 메모리 접근을 통하여 복수의 분산 처리 장치들과 데이터를 송수신하는 통신부; 상기 분산 처리 장치들이 직접 접근할 수 있는 메모리; 동일한 공유 메모리 서버 클러스터를 구성하는 다른 공유 메모리 서버들과 공유 메모리 버퍼를 구성하는 공유 메모리 관리부를 포함하는 것을 특징으로 하는, 공유 메모리 서버를 제공한다.Another embodiment of the present invention provides a communication unit for transmitting and receiving data to and from a plurality of distributed processing devices through remote direct memory access; a memory directly accessible to the distributed processing devices; It provides a shared memory server, characterized in that it comprises a shared memory management unit constituting a shared memory buffer with other shared memory servers constituting the same shared memory server cluster.
이때, 상기 공유 메모리 버퍼는 상기 분산 처리 장치들 각각에 대하여 상기 공유 메모리 버퍼와 동일한 크기로 할당된 로컬 공유 메모리 영역과 메모리 맵핑 테이블을 이용하여 동기화될 수 있다.In this case, the shared memory buffer may be synchronized using a memory mapping table and a local shared memory area allocated to each of the distributed processing units in the same size as the shared memory buffer.
이때, 상기 공유 메모리 관리부는 상기 분산 처리 장치로부터 상기 공유 메모리 버퍼를 생성하기 위한 공유 메모리 버퍼 세그먼트의 크기 정보와 함께 상기 공유 메모리 버퍼 세그먼트의 생성 및 할당을 요청을 수신하고, 상기 공유 메모리 버퍼 세그먼트를 생성 및 할당하여 상기 공유 메모리 버퍼를 구성할 수 있다.At this time, the shared memory management unit receives a request for creation and allocation of the shared memory buffer segment together with size information of the shared memory buffer segment for creating the shared memory buffer from the distributed processing device, and sets the shared memory buffer segment You can configure the shared memory buffer by creating and allocating it.
이때, 상기 공유 메모리 버퍼는 연산에 의하여 특정 로컬 공유 메모리 영역의 데이터가 변경된 경우에 상기 변경된 로컬 공유 메모리 영역의 데이터와 동기화되고, 변경된 데이터로 나머지 로컬 공유 메모리 영역들과 동기화될 수 있다.In this case, when data of a specific local shared memory area is changed by operation, the shared memory buffer may be synchronized with the changed data of the local shared memory area, and may be synchronized with the other local shared memory areas with the changed data.
이때, 상기 공유 메모리 관리부는 상기 분산 처리 장치로부터 두 개 이상의 공유 메모리 버퍼들 사이의 데이터 누적 연산 요청을 수신하고, 상기 데이터 누적 연산의 대상이 되는 공유 메모리 버퍼 세그먼트들에 대하여 누적 연산을 수행하고, 결과를 상기 분산 처리 장치에 반환할 수 있다.In this case, the shared memory management unit receives a data accumulation operation request between two or more shared memory buffers from the distributed processing device, and performs an accumulation operation on the shared memory buffer segments that are the target of the data accumulation operation, A result may be returned to the distributed processing unit.
이때, 상기 공유 메모리 관리부는 상기 분산 처리 장치가 상기 공유 메모리 버퍼의 사용을 종료하기 위하여 전송한 상기 공유 메모리 버퍼 세그먼트의 해제 및 삭제 요청을 수신하여 상기 공유 메모리 버퍼 세그먼트를 해제 및 삭제하고, 결과를 상기 분산 처리 장치에 반환하여 상기 분산 처리 장치가 상기 로컬 공유 메모리 영역을 해제 및 삭제하고 상기 메모리 맵핑 테이블을 삭제하도록 할 수 있다.At this time, the shared memory management unit receives the request for releasing and deleting the shared memory buffer segment sent by the distributed processing device to end the use of the shared memory buffer, releasing and deleting the shared memory buffer segment, and displaying the result By returning to the distributed processing unit, the distributed processing unit may release and delete the local shared memory area and delete the memory mapping table.
본 발명의 다른 일 실시예는, 공유 메모리 서버 클러스터를 구성하는 복수의 공유 메모리 서버들에 구비된 원격 메모리들로부터 할당된 공유 메모리 버퍼 세그먼트들로 구성된 공유 메모리 버퍼에 대하여, 메모리에 상기 공유 메모리 버퍼와 동일한 크기만큼 로컬 공유 메모리 영역을 할당하는 단계; 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역 사이의 메모리 맵핑 테이블을 관리하는 단계; 상기 원격 메모리들에 직접 접근하여 데이터를 송수신하여 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역을 동기화하는 단계; 및 상기 로컬 공유 메모리 영역에 대한 주어진 연산을 수행하는 단계를 포함하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 방법을 제공한다.Another embodiment of the present invention, with respect to a shared memory buffer consisting of shared memory buffer segments allocated from remote memories provided in a plurality of shared memory servers constituting a shared memory server cluster, the shared memory buffer in memory allocating a local shared memory area of the same size as ; managing a memory mapping table between the shared memory buffer and the local shared memory area; synchronizing the shared memory buffer and the local shared memory region by directly accessing the remote memories to transmit and receive data; and performing a given operation on the local shared memory region, providing a distributed processing method through remote direct memory access.
이때, 직접 상기 공유 메모리 버퍼를 생성하여 동일한 분산 처리 프레임워크를 구성하는 다른 분산 처리 장치들에 공유 메모리 버퍼 정보를 공유하거나, 상기 다른 분산 처리 장치에 의하여 생성된 상기 공유 메모리 버퍼에 상응하는 공유 메모리 버퍼 정보를 수신하여 상기 공유 메모리 버퍼 정보를 획득하는 단계를 더 포함할 수 있다.In this case, the shared memory buffer is directly created to share shared memory buffer information with other distributed processing devices constituting the same distributed processing framework, or a shared memory corresponding to the shared memory buffer created by the other distributed processing device. The method may further include receiving buffer information to obtain the shared memory buffer information.
이때, 상기 공유 메모리 버퍼 정보를 획득하는 단계는 상기 공유 메모리 서버들에 각각에 상응하는 상기 공유 메모리 버퍼 세그먼트들의 크기를 계산하는 단계; 및 상기 공유 메모리 서버들에 상기 공유 메모리 버퍼 세그먼트들의 생성 및 할당을 요청하여 상기 공유 메모리 버퍼를 생성하는 단계를 포함할 수 있다.In this case, the step of obtaining the shared memory buffer information comprises: calculating the size of the shared memory buffer segments corresponding to each of the shared memory servers; and requesting the shared memory servers to generate and allocate the shared memory buffer segments to create the shared memory buffer.
이때, 상기 동기화하는 단계는 상기 연산에 의하여 상기 로컬 공유 메모리 영역의 데이터가 변경된 경우에 상기 로컬 공유 메모리 영역의 데이터를 상기 공유 메모리 버퍼에 복사하여 상기 원격 메모리들과 데이터를 동기화하고, 상기 다른 분산 처리 장치들에 의하여 상기 공유 메모리 버퍼의 데이터가 변경된 경우에 상기 공유 메모리 버퍼의 데이터를 상기 로컬 공유 메모리 영역으로 복사하여 상기 원격 메모리들과 데이터를 동기화할 수 있다.In this case, in the synchronizing step, when the data of the local shared memory area is changed by the operation, the data of the local shared memory area is copied to the shared memory buffer to synchronize data with the remote memories, and the other distributed When the data of the shared memory buffer is changed by the processing devices, the data of the shared memory buffer may be copied to the local shared memory area to synchronize data with the remote memories.
이때, 두 개 이상의 공유 메모리 버퍼들 사이의 데이터 누적 연산을 수행하는 단계를 더 포함할 수 있다.In this case, the method may further include performing a data accumulation operation between two or more shared memory buffers.
이때, 상기 데이터 누적 연산을 수행하는 단계는 상기 공유 메모리 서버들에 누적 연산을 요청하는 단계; 및 상기 공유 메모리 서버들로부터 상기 공유 메모리 버퍼 세그먼트들에 대하여 누적 연산을 수행한 결과를 수신하는 단계를 포함할 수 있다.In this case, performing the data accumulation operation may include: requesting the accumulation operation to the shared memory servers; and receiving a result of performing an accumulation operation on the shared memory buffer segments from the shared memory servers.
이때, 상기 공유 메모리 서버들에 상기 공유 메모리 버퍼 세그먼트들의 해제 및 삭제를 요청하고, 상기 공유 메모리 버퍼 세그먼트들의 해제 및 삭제 요청의 결과들을 수신함에 따라 상기 로컬 공유 메모리 영역을 해제 및 삭제하고, 상기 메모리 맵핑 테이블을 삭제하여 상기 공유 메모리 버퍼의 사용을 종료하는 단계를 더 포함할 수 있다.In this case, the shared memory servers request release and deletion of the shared memory buffer segments, and release and delete the local shared memory area upon receiving the results of the request for release and deletion of the shared memory buffer segments, and the memory The method may further include terminating use of the shared memory buffer by deleting the mapping table.
본 발명에 따르면, 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법에 의해, 원격 직접 메모리 접근을 통하여 분산 처리 데이터를 공유함으로써 분산 처리시에 발생하는 통신 오버로드를 효과적으로 낮출 수 있다.According to the present invention, communication overload occurring during distributed processing can be effectively reduced by sharing distributed processing data through remote direct memory access by using the distributed processing apparatus and method through remote direct memory access.
또한, 본 발명은 원격 직접 메모리 접근을 통한 분산 처리 장치 및 그 방법에 의해, 다수의 공유 메모리 서버들을 클러스터링하고 각각의 공유 메모리 서버들로부터 공유 메모리 버퍼 세그먼트들을 할당하여 공유 메모리 버퍼를 구성하고 분산 처리 장치가 공유 메모리 버퍼에 원격 직접 메모리 접근함으로써, 공유 메모리 서버들 사이의 별도의 동기화 작업이 없이 효율적으로 메모리 데이터를 관리할 수 있다.In addition, the present invention configures a shared memory buffer and distributes processing by clustering a plurality of shared memory servers and allocating shared memory buffer segments from each shared memory server by a distributed processing apparatus and method through remote direct memory access. By remote direct memory access to the shared memory buffer by the device, memory data can be efficiently managed without a separate synchronization operation between the shared memory servers.
도 1은 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 시스템의 구성을 나타낸 도면이다.
도 2는 도 1에 도시된 원격 직접 메모리 접근을 통한 분산 처리 장치의 일 예를 나타낸 블록도이다.
도 3은 도 1에 도시된 공유 메모리 서버의 일 예를 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 공유 메모리 버퍼를 구성하는 방법을 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법을 나타낸 동작 흐름도이다.
도 6은 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계의 일 예를 나타낸 동작 흐름도이다.
도 7은 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계의 일 예를 나타낸 동작 흐름도이다.
도 8은 본 발명의 일 실시예에 따른 공유 메모리 버퍼들의 데이터 누적 연산 방법을 나타낸 동작이다.
도 9는 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법을 나타낸 동작 흐름도이다.1 is a diagram showing the configuration of a distributed processing system through remote direct memory access according to an embodiment of the present invention.
FIG. 2 is a block diagram illustrating an example of a distributed processing apparatus through remote direct memory access illustrated in FIG. 1 .
3 is a block diagram illustrating an example of the shared memory server shown in FIG. 1 .
4 is a diagram illustrating a method of configuring a shared memory buffer according to an embodiment of the present invention.
5 is a flowchart illustrating a distributed processing method through remote direct memory access according to an embodiment of the present invention.
6 is an operation flowchart illustrating an example of a step of creating and allocating the shared memory buffer shown in FIG. 5 .
7 is an operation flowchart illustrating an example of a step of releasing and deleting the shared memory buffer shown in FIG. 5 .
8 is an operation illustrating a data accumulation operation method of shared memory buffers according to an embodiment of the present invention.
9 is an operation flowchart illustrating a data accumulation operation method of the shared memory buffers shown in FIG. 8 .
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다. Since the present invention can apply various transformations and can have various embodiments, specific embodiments are illustrated in the drawings and described in detail. Effects and features of the present invention, and a method of achieving them, will become apparent with reference to the embodiments described below in detail in conjunction with the drawings. Here, repeated descriptions, well-known functions that may unnecessarily obscure the gist of the present invention, and detailed descriptions of configurations will be omitted. The embodiments of the present invention are provided in order to more completely explain the present invention to those of ordinary skill in the art. Accordingly, the shapes and sizes of elements in the drawings may be exaggerated for clearer description.
그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성되어 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는한 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.However, the present invention is not limited to the embodiments disclosed below, but all or some of the embodiments may be selectively combined and implemented in various forms. In the following embodiments, terms such as first, second, etc. are used for the purpose of distinguishing one component from another, not in a limiting sense. Also, the singular expression includes the plural expression unless the context clearly dictates otherwise. In addition, terms such as include or have means that the features or components described in the specification are present, and do not preclude the possibility that one or more other features or components will be added.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, and when described with reference to the drawings, the same or corresponding components are given the same reference numerals, and the overlapping description thereof will be omitted. .
도 1은 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 시스템(100)의 구성을 나타낸 도면이다.1 is a diagram illustrating the configuration of a
도 1을 참조하면, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 시스템(100)에서 복수의 원격 직접 메모리 접근을 통한 분산 처리 장치들(110)은 원격 직접 메모리 접근(RDMA: Remote Direct Memory Access) 지원 네트워크(130)을 통해 복수의 공유 메모리 서버들(120)과 상호 연결된다. 여기서, 공유 메모리 서버들(120)은 하나의 공유 메모리 서버 클러스터(140)를 구성한다.Referring to FIG. 1 , in the
본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 장치(110)는 공유 메모리 서버 클러스터를 구성하는 복수의 공유 메모리 서버들에 구비된 원격 메모리들로부터 할당된 공유 메모리 버퍼 세그먼트들로 구성된 공유 메모리 버퍼에 대하여, 메모리에 공유 메모리 버퍼와 동일한 크기만큼 로컬 공유 메모리 영역을 할당하고, 공유 메모리 버퍼와 로컬 공유 메모리 영역 사이의 메모리 맵핑 테이블을 이용하여 공유 메모리 버퍼와 로컬 공유 메모리 영역을 동기화하는 것을 특징으로 한다. 그리고, 로컬 공유 메모리 영역에 대하여 주어진 혹은 입력된 연산을 처리한다. Distributed
여기서, 복수의 원격 직접 메모리 접근을 통한 분산 처리 장치들(110)은 하나의 분산 처리 프레임워크에 포함될 수 있다. 또한, 하나 이상의 원격 직접 메모리 접근을 통한 분산 처리 장치들(110)은 하나의 계산 노드로 구성되어 연산 기능을 제공할 수 있다.Here, the distributed
이때, 원격 직접 메모리 접근을 통한 분산 처리 장치(110)는 분산 처리 프레임워크에서 주도적으로 분산 처리 작업의 초기화 및 제어를 처리하는 마스터 분산 처리 장치 또는 마스터 분산 처리 장치의 제어를 받으며 계산을 담당하는 슬레이브 분산 처리 장치 혹은 워커 분산 처리 장치로 구분될 수 있다. At this time, the distributed
이때, 마스터 분산 처리 장치는 공유 메모리 서버들(120)에 데이터를 저장하기 위한 공유 메모리 버퍼를 생성하고 슬레이브 분산 처리 장치들에 공유 메모리 버퍼 정보를 전달하여 모든 분산 처리 장치들(110)이 공유 메모리 서버(120)상의 동일 메모리 세그먼트 영역을 접근할 수 있도록 한다. 여기서, 공유 메모리 버퍼 정보에는 공유 메모리 버퍼 전체 크기, 공유 메모리 버퍼 생성키, 공유 메모리 서버별로 생성된 공유 메모리 버퍼 세그먼트 정보 등이 포함될 수 있다.At this time, the master distributed processing unit creates a shared memory buffer for storing data in the shared
이때, 원격 직접 메모리 접근을 통한 분산 처리 장치(110)는 연산에 의하여 로컬 공유 메모리 영역의 데이터가 변경된 경우에 로컬 공유 메모리 영역의 데이터를 공유 메모리 버퍼에 복사하여 원격 메모리들과 데이터를 동기화할 수 있다. 또한, 다른 원격 직접 메모리 접근을 통한 분산 처리 장치(110)의 연산에 의하여 공유 메모리 버퍼의 데이터가 변경된 경우에 공유 메모리 버퍼의 데이터를 로컬 공유 메모리 영역으로 복사하여 원격 메모리들과 데이터를 동기화할 수 있다.In this case, the distributed
공유 메모리 서버(120)는 분산 처리 프레임워크에서 공유 메모리를 제공하는 장치이다.The shared
여기서, 복수의 공유 메모리 서버들(120)은 하나의 공유 메모리 서버 클러스터를 구성할 수 있다. 또한, 하나 이상의 공유 메모리 서버들(110)은 하나의 메모리 서비스 노드로 구성되어 공유 메모리 서비스를 제공할 수 있다.Here, the plurality of shared
이때, 복수의 공유 메모리 서버들(120)은 각각 공유 메모리 버퍼의 생성 및 할당 요청에 따라 공유 메모리 버퍼 세그먼트를 생성 및 할당하여, 각각의 공유 메모리 버퍼 세그먼트들을 연결한 가상의 공유 메모리 버퍼를 제공할 수 있다. 여기서, 공유 메모리 버퍼는 분산 처리 장치(110)가 원격 직접 메모리 접근 지원 네트워크(130)를 통하여 직접 접근할 수 있다.At this time, the plurality of shared
이때, 공유 메모리 버퍼는 분산 처리 장치들(110)의 로컬 공유 메모리 영역과 동기화될 수 있다. 즉, RDMA 읽기/쓰기를 통하여 동기화할 수 있다.In this case, the shared memory buffer may be synchronized with the local shared memory area of the distributed
이때, 공유 메모리 서버(120)는 공유 메모리 버퍼 세그먼트들 간의 누적 연산 기능을 제공할 수 있다.In this case, the shared
원격 직접 메모리 접근 지원 네트워크(130)는 복수의 분산 처리 장치들(110)과 복수의 공유 메모리 서버들(120) 사이의 통신을 제공하는 네트워크로, 분산 처리 장치들(110)이 공유 메모리 서버들(120)의 메모리에 직접 접근 가능한 기능을 제공한다.The remote direct memory
즉, 원격 직접 메모리 접근을 지원하는 고성능 네트워크(130)로 연결된 고성능 컴퓨팅 클러스터 시스템 환경에서 분산 처리 장치들(110)이 다수의 공유 메모리 서버들(120)의 물리 메모리 세그먼트들을 결합하여 가상의 연속된 공유 메모리 버퍼에 직접 접근할 수 있도록 함으로써, 분산 처리 장치들 간의 데이터 공유를 가속화하고 효율성을 높일 수 있다.That is, in a high-performance computing cluster system environment connected by a high-
이와 같은 공유 메모리 형태로 분산 처리 데이터를 공유하는 대표적인 분산 처리 방식으로는 비동기 딥러닝 트레이닝에 이용될 수 있다. 비동기 딥러닝 트레이닝 방식은 데이터 병렬 딥러닝 학습 방식의 하나로, 학습 데이터를 나누어 다수의 딥러닝 프로세스가 학습을 수행하고, 학습하는 도중에 학습한 내용을 다른 딥러닝 프로세스들과 공유 데이터 버퍼를 통해 비동기적으로 공유하는 학습 방법이다. 비동기 딥러닝 트레이닝 방식에서 각 딥러닝 분산 처리 프로세스는 딥러닝 파라미터(딥러닝 트레이닝에서 트레이닝의 대상이 되는 가중치와 특징값의 총칭)를 다른 프로세스들과 동기를 맞추지 않고 비동기적으로 파라미터를 업데이트하는데, 이 방식은 본 발명에서 제안하는 공유 메모리 구조에 적합하다.As a representative distributed processing method that shares distributed processing data in the form of such a shared memory, it can be used for asynchronous deep learning training. The asynchronous deep learning training method is one of the data parallel deep learning learning methods. Multiple deep learning processes perform learning by dividing the training data, and the contents learned during learning are shared with other deep learning processes through a shared data buffer. A shared learning method. In the asynchronous deep learning training method, each deep learning distributed processing process updates the parameters asynchronously without synchronizing the deep learning parameters (general names of weights and feature values to be trained in deep learning training) with other processes. This method is suitable for the shared memory structure proposed by the present invention.
또한, 본 발명에서 제안하는 방식은 파라미터 서버와 일부 유사하나, 딥러닝 분산 프로세스들로부터 그래디언트를 받아 능동적으로 가중치 파라미터를 계산하여 직접 딥러닝 파라미터를 업데이트하는 파라미터 서버 방식과 달리 분산 처리 장치들이 원격 직접 메모리 접근 기능을 통해 공유 메모리 서버의 개입 없이 공유 메모리 버퍼를 직접 읽고 쓰는 것이 가능하다. In addition, the method proposed in the present invention is somewhat similar to the parameter server, but unlike the parameter server method that receives a gradient from the deep learning distributed processes and updates the deep learning parameters directly by actively calculating the weight parameters, the distributed processing devices are remotely and directly The memory access function allows direct reading and writing of shared memory buffers without intervention of the shared memory server.
또한, 하나의 단일 메모리 서버상의 메모리만을 공유 메모리로 사용할 경우에는 확장성에 제한이 있으나, 공유 메모리 서버 클러스터를 구성함으로써 대규모 분산 처리에도 유연한 확장성을 제공할 수 있다. In addition, if only the memory on one single memory server is used as shared memory, scalability is limited, but flexible scalability can be provided even for large-scale distributed processing by configuring a shared memory server cluster.
도 2는 도 1에 도시된 원격 직접 메모리 접근을 통한 분산 처리 장치(110)의 일 예를 나타낸 블록도이다.FIG. 2 is a block diagram illustrating an example of the distributed
도 2를 참조하면, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 장치(110)는 제어부(210), 통신부(220), 메모리(230), 연산 처리부(240) 및 공유 메모리 서버 접근 지원부(250) 등을 포함한다.Referring to FIG. 2 , the distributed
상세히, 제어부(210)는 일종의 중앙처리장치로서 원격 직접 메모리 접근을 통한 분산 처리 과정을 제어한다. 즉, 제어부(210)는 메모리(230), 연산 처리부(240) 및 공유 메모리 서버 접근 지원부(250) 등을 제어하여 다양한 기능을 제공할 수 있다.In detail, the
여기서, 제어부(210)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.Here, the
통신부(220)는 RDMA 지원 네트워크(도 1의 130 참조)를 통하여 원격 직접 메모리 접근을 통한 분산 처리 장치(110)와 공유 메모리 서버(도 1의 120 참조) 간의 송수신 신호를 전송하는데 필요한 통신 인터페이스를 제공한다.
여기서, 통신부(220)는 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다. Here, the
이때, 통신부(220)는 RDMA 지원 네트워크(도 1의 130 참조)를 통해 공유 메모리 서버들(도 1의 120 참조)의 원격 메모리들에 직접 접근하여 데이터를 읽고 쓸 수 있다.In this case, the
메모리(230)는 제어부(210)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(230)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.The
이때, 메모리(230)는 공유 메모리 서버들(도 1의 120 참조)의 원격 메모리들로부터 구성된 공유 메모리 버퍼와 동일한 크기만큼을 로컬 공유 메모리 영역으로 할당하고, 공유 메모리 버퍼와 동기화할 수 있다.In this case, the
이에 따라, 분산 처리 장치(110)는 로컬 공유 메모리 영역에 대하여 연산을 수행하고, 이를 공유 메모리 버퍼와 동기화함으로써 다른 분산 처리 장치들과 메모리를 공유할 수 있다.Accordingly, the distributed
연산 처리부(240)는 분산 처리 프레임워크에서 분산 처리 장치(110)에 주어진 연산을 수행한다.The
이때, 연산 처리부(240)는 로컬 공유 메모리 영역에 대하여 연산을 수행할 수 있다.In this case, the
이때, 연산 처리부(240)는 API(Application Programmable Interface)를 통해 공유 메모리 서버 접근 지원부(250)에 명시적으로 로컬 공유 메모리 영역과 공유 메모리 버퍼의 동기화를 요청 및 수행할 수 있다.In this case, the
이때, 연산 처리부(240)는 API(Application Programmable Interface)를 통해 공유 메모리 서버 접근 지원부(250)에 복수의 공유 메모리 버퍼들에 대한 누적 연산을 요청 및 수행할 수 있다.In this case, the
공유 메모리 서버 접근 지원부(250)는 공유 메모리 서버(도 1의 120 참조)와의 RDMA 읽기/쓰기를 통한 접근을 지원하여, 공유 메모리 버퍼와의 동기화를 지원한다.The shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 공유 메모리 서버 클러스터를 등록하여 공유 메모리 서버 클러스터를 구성하는 공유 메모리 서버들(도 1의 120 참조)의 정보를 획득할 수 있다. 여기서, 공유 메모리 서버 클러스터의 등록은 사용자가 입력한 공유 메모리 서버들(도 1의 120 참조)의 접근 정보를 이용하여 해당 공유 메모리 서버들(도 1의 120 참조)과의 연결을 설정하고 공유 메모리 버퍼 세그먼트를 생성 및 할당받는 초기화 과정을 의미할 수 있다. 그리고, 공유 메모리 서버 접근 정보에는 IP 주소와 포트 번호 정보 등이 포함될 수 있다. 특히, 공유 메모리 서버 클러스터를 등록할 때, 모든 분산 처리 장치들(110)은 모든 공유 메모리 서버들(도 1의 120 참조)의 순서를 동일하게 등록할 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 공유 메모리 서버 클러스터에 등록된 각 공유 메모리 서버들(도 1의 120 참조)에 대하여 공유 메모리 버퍼를 구성하는 공유 메모리 버퍼 세그먼트들의 크기를 계산할 수 있다. 예컨대, 하나의 공유 메모리 서버 클러스터에 5개의 공유 메모리 서버들이 포함되어 있고, 공유 메모리 버퍼의 크기를 5GB로 구성하는 경우, 5개의 크기 1GB의 공유 메모리 버퍼 세그먼트들로 나눌 수 있다. 여기서, 각 공유 메모리 버퍼 세그먼트들의 크기는 동일하지 않을 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 공유 메모리 서버들(도 1의 120 참조)에 계산된 공유 메모리 서버 세그먼트들의 크기 정보와 공유 메모리 버퍼 세그먼트의 생성 및 할당을 요청을 전달하여 공유 메모리 버퍼를 구성할 수 있다.At this time, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 다른 분산 처리 장치가 구성한 공유 메모리 버퍼에 대한 접근권을 획득하여 공유 메모리 버퍼의 생성 및 할당을 대신할 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 공유 메모리 버퍼를 구성하기 위하여 공유 메모리 서버들(도 1의 120 참조)에 공유 메모리 버퍼 생성키를 함께 전송할 수 있다. 여기서, 공유 메모리 버퍼 생성키는 동일한 공유 메모리 버퍼가 중복 생성을 방지하거나 유효한 요청인지 여부를 확인하거나 공유 메모리 버퍼 세그먼트를 특정하기 위한 목적으로 이용될 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 모든 공유 메모리 서버들(도 1의 120 참조)에 대하여 공유 메모리 버퍼 세그먼트들의 생성 및 할당이 이루어지면 메모리(230)에 공유 메모리 버퍼와 동일한 크기로 로컬 공유 메모리 영역을 할당할 수 있다. 여기서, 로컬 공유 메모리 영역은 실제 물리 메모리에 할당되며, 로컬 공유 메모리 영역이 할당딤에 따라 주소 정보(예컨대, 가상 주소)가 반환된다.At this time, when the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 로컬 공유 메모리 영역을 공유 메모리 버퍼와 동기화를 수행할 수 있다. 여기서, 동기화는 메모리 맵핑 테이블을 이용하여 수행될 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 연산 처리부(240)에 의하여 로컬 공유 메모리 영역의 데이터가 변경된 경우, RDMA 통해 로컬 공유 메모리 영역의 데이터를 공유 메모리 버퍼에 복사하여 동기화할 수 있다. 또는, 변경된 데이터에 대하여만 복사하여 동기화할 수 있다.In this case, when the data of the local shared memory area is changed by the
이때, 공유 메모리 서버 접근 지원부(250)는 다른 분산 처리 장치의 연산에 의하여 공유 메모리 버퍼의 데이터가 변경된 경우, RDMA를 통해 공유 메모리 버퍼의 데이터를 로컬 공유 메모리 영역에 복사하여 동기화할 수 있다. 또는, 변경된 데이터에 대하여만 복사하여 동기화할 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 공유 메모리 버퍼의 사용이 종료된 경우 공유 메모리 서버들(도 1의 120 참조)에 공유 메모리 버퍼 세그먼트들의 해제 및 삭제를 요청할 수 있다.In this case, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 모든 공유 메모리 버퍼 세그먼트들의 해제 및 삭제가 이루어지면, 공유 메모리 서버들(도 1의 120 참조)과의 연결을 종료하고 공유 메모리 서버 클러스터를 등록 해제하며 정보를 삭제하여 공유 메모리 버퍼의 사용을 종료할 수 있다.At this time, when all shared memory buffer segments are released and deleted, the shared memory server
이때, 공유 메모리 서버 접근 지원부(250)는 복수의 공유 메모리 버퍼에 대하여 데이터 누적 연산 기능을 제공할 수 있다. 예컨대, 제1 공유 메모리 버퍼와 제2 공유 메모리 버퍼에 대한 누적 연산을 수행하는 경우, 제1 공유 메모리 버퍼에 대한 데이터 동기화를 수행하고, 각 공유 메모리 서버들(도 1의 120 참조)에 제1 공유 버퍼 세그먼트들로부터 제2 공유 버퍼 세그먼트들로의 누적 연산을 요청하고, 모든 공유 메모리 서버들(도 1의 120 참조)에서 누적 연산이 완료되면 그 결과를 반환할 수 있다. 각 공유 메모리 서버들(도 1의 120 참조)에서는 누적 연산을 위하여 제2 공유 메모리 버퍼 세그먼트를 잠그고, 제1 공유 메모리 버퍼 세그먼트에서 제2 공유 메모리 버퍼 세그먼트로의 누적 연산을 수행할 수 있다.In this case, the shared memory server
메모리 맵핑 테이블 관리부(260)는 로컬 공유 메모리 영역과 공유 메모리 버퍼 사이의 메모리 맵핑 테이블을 관리한다.The memory mapping
이때, 메모리 맵핑 테이블 관리부(260)는 저장소를 포함하여 직접 메모리 맵핑 테이블을 저장하여 관리할 수도 있지만, 별도의 저장소나 메모리(230)에 메모리 맵핑 테이블을 저장하여 관리할 수 있다.In this case, the memory mapping
이때, 메모리 맵핑 테이블 관리부(260)는 공유 메모리 버퍼가 생성되면 공유 메모리 버퍼와 로컬 공유 메모리 영역 사이의 메모리 맵핑 테이블을 생성할 수 있다.In this case, when the shared memory buffer is created, the memory mapping
이때, 메모리 맵핑 테이블 관리부(260)는 공유 메모리 버퍼의 사용이 종료되면 메모리 맵핑 테이블을 삭제할 수 있다.In this case, the memory mapping
도 3은 도 1에 도시된 공유 메모리 서버(120)의 일 예를 나타낸 블록도이다.3 is a block diagram illustrating an example of the shared
도 3을 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 서버(120)는 제어부(310), 통신부(320), 메모리(330) 및 공유 메모리 관리부(340) 등을 포함한다.Referring to FIG. 3 , the shared
상세히, 제어부(310)는 일종의 중앙처리장치로서 원격 직접 메모리 접근을 통한 분산 처리 과정을 제어한다. 즉, 제어부(310)는 메모리(330) 및 공유 메모리 관리부(340) 등을 제어하여 다양한 기능을 제공할 수 있다.In detail, the
여기서, 제어부(310)는 프로세서(processor)와 같이 데이터를 처리할 수 있는 모든 종류의 장치를 포함할 수 있다. 여기서, '프로세서(processor)'는, 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로써, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit: CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 등의 처리 장치를 망라할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.Here, the
통신부(320)는 RDMA 지원 네트워크(도 1의 130 참조)를 통하여 공유 메모리 서버(120)와 원격 직접 메모리 접근을 통한 분산 처리 장치들(도 1의 110 참조) 간의 송수신 신호를 전송하는데 필요한 통신 인터페이스를 제공한다.The
여기서, 통신부(320)는 다른 네트워크 장치와 유무선 연결을 통해 제어 신호 또는 데이터 신호와 같은 신호를 송수신하기 위해 필요한 하드웨어 및 소프트웨어를 포함하는 장치일 수 있다. Here, the
이때, 통신부(320)는 RDMA 지원 네트워크(도 1의 130 참조)를 통해 원격 직접 메모리 접근을 통한 분산 처리 장치들(도 1의 110 참조)이 메모리(330)에 직접 접근하여 데이터를 읽고 쓸 수 있도록 지원할 수 있다.In this case, the
메모리(330)는 제어부(310)가 처리하는 데이터를 일시적 또는 영구적으로 저장하는 기능을 수행한다. 여기서, 메모리(330)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 본 발명의 범위가 이에 한정되는 것은 아니다.The
이때, 메모리(330)는 전체 또는 일부가 공유 메모리 버퍼 세그먼트로 할당되어, 다른 공유 메모리 서버들의 공유 메모리 버퍼 세그먼트들과 함께 공유 메모리 버퍼를 구성할 수 있다. 여기서, 공유 메모리 버퍼는 공유 메모리 버퍼 세그먼트들을 연결한 가상의 메모리 버퍼로, 실체는 각 공유 메모리 서버들(120)의 메모리(330)에 할당된 공유 메모리 버퍼 세그먼트들의 영역이다.In this case, all or part of the
이때, 메모리(330)에 할당된 공유 메모리 버퍼 세그먼트는 분산 처리 장치(도 1의 110 참조)의 로컬 공유 메모리 영역의 데이터가 변경됨에 따라 변경된 데이터가 동기화될 수 있다.In this case, the shared memory buffer segment allocated to the
공유 메모리 관리부(340)는 공유 메모리 버퍼를 구성하기 위하여 공유 메모리 버퍼 세그먼트를 할당하고 이를 관리한다.The shared
이때, 공유 메모리 관리부(340)는 분산 처리 장치(도 1의 110 참조)로부터 공유 메모리 버퍼의 생성 및 할당을 요청받은 경우, 주어진 공유 메모리 버퍼 세그먼트의 크기만큼 메모리(330)에서 공유 메모리 버퍼 세그먼트를 생성 및 할당하여 할당 정보를 반환할 수 있다.At this time, when the shared
이때, 공유 메모리 관리부(340)는 공유 메모리 버퍼 세그먼트를 생성 요청에 대하여 공유 메모리 버퍼 생성키를 수신하고, 수신한 공유 메모리 버퍼 생성키가 이미 사용중이 아닌 경우에만 공유 메모리 버퍼 세그먼트를 생성 및 할당하여 할당 정보를 반환할 수 있다.At this time, the shared
이때, 공유 메모리 관리부(340)는 공유 메모리 버퍼 세그먼트의 접근 요청에 대하여 공유 메모리 버퍼 생성키를 수신하고, 수신한 공유 메모리 버퍼 생성키가 접근을 요청하는 공유 메모리 버퍼 세그먼트의 정보와 일치하는 경우에 해당 공유 메모리 버퍼 세그먼트의 접근을 허용할 수 있다. 예컨대, 공유 메모리 버퍼 생성키는 공유 메모리 버퍼 세그먼트의 크기를 의미할 수 있다.At this time, the shared
이때, 공유 메모리 관리부(340)는 공유 메모리 버퍼 세그먼트들 사이의 데이터 누적 연산을 수행할 수 있다. 예컨대, 제1 공유 메모리 버퍼 세그먼트로부터 제2 공유 메모리 버퍼 세그먼트로의 데이터 누적은, 제2 공유 메모리 버퍼 세그먼트를 잠그고 제1 공유 메모리 버퍼 세그먼트의 데이터를 제2 공유 메모리 버퍼 세그먼트에 누적함으로써 수행될 수 있다. 그리고, 데이터 누적 연산이 완료된 경우 연산 완료를 알리는 결과를 반환할 수 있다.In this case, the shared
도 4는 본 발명의 일 실시예에 따른 공유 메모리 버퍼를 구성하는 방법을 나타낸 도면이다.4 is a diagram illustrating a method of configuring a shared memory buffer according to an embodiment of the present invention.
도 4를 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 버퍼를 구성하는 방법은, 공유 메모리 버퍼의 생성 및 할당을 주도하는 마스터 분산 처리 장치(410)가 공유 메모리 서버들(440, 450, 460 및 470)에 공유 메모리 버퍼를 구성하기 위한 공유 메모리 버퍼 세그먼트들의 생성 및 할당을 요청한다.4, in the method of configuring a shared memory buffer according to an embodiment of the present invention, the master distributed
이때, 공유 메모리 서버 1(440)은 공유 메모리 버퍼 세그먼트 1(441)을 생성 및 할당하여 그 정보를 반환하고, 공유 메모리 서버 2(450)는 공유 메모리 버퍼 세그먼트 2(451)를 생성 및 할당하여 그 정보를 반환하고, 공유 메모리 서버 3(460)은 공유 메모리 버퍼 세그먼트 3(461)을 생성 및 할당하여 그 정보를 반환하고, 공유 메모리 서버 4(470)는 공유 메모리 버퍼 세그먼트 4(471)를 생성 및 할당하여 그 정보를 반환할 수 있다.At this time, the shared memory server 1 (440) creates and allocates the shared memory buffer segment 1 (441) and returns the information, and the shared memory server 2 (450) creates and allocates the shared memory buffer segment 2 (451). Returning the information, shared memory server 3 (460) creates and allocates shared memory buffer segment 3 (461) to return the information, and shared memory server 4 (470) creates shared memory buffer segment 4 (471). It can be created and assigned to return that information.
이때, 각 공유 메모리 서버들(440, 450, 460 및 470)에서 공유 메모리 버퍼 세그먼트들(441, 451, 461 및 471)이 생성 및 할당되면, 이들은 연결되어 가상의 공유 메모리 버퍼(430)를 구성할 수 있다. 즉, 공유 메모리 버퍼(430)의 실체는 각 공유 메모리 서버들(440, 450, 460 및 470)에 할당된 공유 메모리 버퍼 세그먼트들(441, 451, 461 및 471)이다. 따라서, 공유 메모리 버퍼(430)에 대한 데이터 입출력은 공유 메모리 버퍼 세그먼트들(441, 451, 461 및 471)에 대한 데이터 입출력을 의미한다.At this time, when the shared
이때, 마스터 분산 처리 장치(410)와 동일한 분산 처리 프레임워크에 속하는 다른 분산 처리 장치들은 슬레이브 분산 처리 장치(420)로 분류되며, 슬레이브 분산 처리 장치(420)는 마스터 분산 처리 장치(410)에 의하여 구성된 공유 메모리 버퍼의 정보를 획득하여 동일한 공유 메모리 버퍼를 이용할 수 있다.At this time, other distributed processing units belonging to the same distributed processing framework as the master distributed
이때, 마스터 분산 처리 장치(410)와 슬레이브 분산 처리 장치(420)는 각각 자신의 메모리에 대하여 공유 메모리 버퍼와 동일한 크기의 로컬 공유 메모리 영역(411 및 421)을 할당할 수 있다. 그리고, 로컬 공유 메모리 영역(411 및 421)에 대하여 입출력을 수행하여 분산 처리 프레임워크에서의 분산 처리를 수행할 수 있다. In this case, the master distributed
이때, 각각의 로컬 공유 메모리 영역(411 및 421)은 공유 메모리 버퍼(430)와 동기화되어 유지되고, 분산 처리 장치들(410 및 420) 사이에서 공유 메모리 버퍼(430)를 통해 분산 처리 데이터를 공유할 수 있다. 특히, 분산 처리 장치들(410 및 420)은 RDMA를 통하여 공유 메모리 버퍼(430)에 대하여 직접 입출력하여 로컬 공유 메모리 영역(411 및 421)과 공유 메모리 버퍼(430) 사이의 동기화를 수행할 수 있다.At this time, each of the local shared
도 5는 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법을 나타낸 동작 흐름도이다.5 is a flowchart illustrating a distributed processing method through remote direct memory access according to an embodiment of the present invention.
도 5를 참조하면, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버 클러스터를 등록한다(S501). 공유 메모리 서버 클러스터는 복수개의 공유 메모리 서버들(도 1의 120 참조)로 구성될 수 있다.Referring to FIG. 5 , in the distributed processing method through remote direct memory access according to an embodiment of the present invention, a distributed processing device (refer to 110 in FIG. 1 ) through remote direct memory access registers a shared memory server cluster ( S501). The shared memory server cluster may be composed of a plurality of shared memory servers (see 120 of FIG. 1 ).
또한, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 버퍼를 생성 및 할당한다(S503).In addition, in the distributed processing method through remote direct memory access according to an embodiment of the present invention, the distributed processing device (refer to 110 of FIG. 1 ) through remote direct memory access creates and allocates a shared memory buffer (S503).
또한, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 주어진 분산 연산을 수행하고 공유 메모리 버퍼에 대하여 RDMA를 통한 직접 데이터 읽기 및 쓰기를 통하여 분산 처리 데이터를 공유한다(S505).In addition, in the distributed processing method through remote direct memory access according to an embodiment of the present invention, the distributed processing unit (see 110 in FIG. 1 ) through remote direct memory access performs a given distributed operation and RDMA for the shared memory buffer The distributed processing data is shared through direct data read and write through (S505).
또한, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 버퍼의 사용을 종료하는 경우에 공유 메모리 버퍼를 해제 및 삭제한다(S507).In addition, in the distributed processing method through remote direct memory access according to an embodiment of the present invention, when the distributed processing device (see 110 in FIG. 1 ) through remote direct memory access ends the use of the shared memory buffer, the shared memory The buffer is released and deleted (S507).
또한, 본 발명의 일 실시예에 따른 원격 직접 메모리 접근을 통한 분산 처리 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버 클러스터의 등록을 해제한다(S509).In addition, in the distributed processing method through remote direct memory access according to an embodiment of the present invention, the distributed processing device (see 110 of FIG. 1 ) through remote direct memory access deregisters the shared memory server cluster (S509) .
도 6은 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)의 일 예를 나타낸 동작 흐름도이다.6 is an operation flowchart illustrating an example of the step ( S503 ) of creating and allocating the shared memory buffer shown in FIG. 5 .
도 6을 참조하면, 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버별 공유 메모리 버퍼 세그먼트 크기를 계산한다(S601).Referring to FIG. 6 , the step of creating and allocating the shared memory buffer shown in FIG. 5 ( S503 ) is performed by the distributed processing unit (see 110 of FIG. 1 ) through remote direct memory access, the shared memory buffer segment for each shared memory server The size is calculated (S601).
또한, 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)에 공유 메모리 버퍼 세그먼트의 생성 및 할당을 요청한다(S603). 여기서, 공유 메모리 버퍼 세그먼트의 생성 및 할당 요청은 공유 메모리 버퍼의 생성 및 할당 요청과 동일한 의미로 사용될 수 있다.In addition, in the step (S503) of creating and allocating the shared memory buffer shown in FIG. 5, the distributed processing unit (refer to 110 in FIG. 1) through remote direct memory access is to the shared memory servers (refer to 120 in FIG. 1). It requests creation and allocation of a shared memory buffer segment (S603). Here, a request for creation and allocation of a shared memory buffer segment may be used in the same meaning as a request for creation and allocation of a shared memory buffer.
또한, 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)에 의하여 공유 메모리 버퍼 세그먼트들이 생성 및 할당되면 반환되는 정보를 획득한다(S605).In addition, in the step (S503) of creating and allocating the shared memory buffer shown in FIG. 5, the distributed processing unit (refer to 110 in FIG. 1) through remote direct memory access is to the shared memory servers (refer to 120 in FIG. 1). When the shared memory buffer segments are created and allocated, information returned is obtained (S605).
또한, 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 모든 공유 메모리 버퍼 세그먼트들이 생성 및 할당되었는지 여부를 확인한다(S607).In addition, the step (S503) of creating and allocating the shared memory buffer shown in FIG. 5 is the distributed processing unit (refer to 110 in FIG. 1) through remote direct memory access, whether all shared memory buffer segments have been created and allocated. Confirm (S607).
또한, 도 5에 도시된 공유 메모리 버퍼를 생성 및 할당하는 단계(S503)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 모든 공유 메모리 버퍼 세그먼트들이 생성 및 할당되어 공유 메모리 버퍼가 구성되면, 메모리에 공유 메모리 버퍼와 동일한 크기만큼의 로컬 공유 메모리 영역을 할당하고, 공유 메모리 버퍼와 로컬 공유 메모리 영역 사이의 메모리 맵핑 테이블을 갱신한다(S609).In addition, in the step of creating and allocating the shared memory buffer shown in FIG. 5 ( S503 ), the distributed processing unit (see 110 of FIG. 1 ) through remote direct memory access creates and allocates all shared memory buffer segments to the shared memory When the buffer is configured, a local shared memory area of the same size as the shared memory buffer is allocated to the memory, and a memory mapping table between the shared memory buffer and the local shared memory area is updated (S609).
도 7은 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계(S507)의 일 예를 나타낸 동작 흐름도이다.7 is an operation flowchart illustrating an example of the step of releasing and deleting the shared memory buffer shown in FIG. 5 ( S507 ).
도 7을 참조하면, 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계(S507)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)에 공유 메모리 버퍼 세그먼트의 해제 및 삭제를 요청한다(S701). 여기서, 공유 메모리 버퍼 세그먼트의 해제 및 삭제 요청은 공유 메모리 버퍼의 해제 및 삭제 요청과 동일한 의미로 사용될 수 있다.Referring to FIG. 7 , the step of releasing and deleting the shared memory buffer shown in FIG. 5 ( S507 ) is performed by the distributed processing unit (see 110 of FIG. 1 ) through remote direct memory access, and the shared memory servers ( FIG. 1 ). 120) to request release and deletion of the shared memory buffer segment (S701). Here, the request to release and delete the shared memory buffer segment may be used in the same meaning as the request to release and delete the shared memory buffer.
또한, 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계(S507)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)에 의하여 공유 메모리 버퍼 세그먼트들이 해제 및 삭제되면 반환되는 정보를 획득한다(S703).In addition, the step of releasing and deleting the shared memory buffer shown in FIG. 5 ( S507 ) is performed by the distributed processing unit (see 110 in FIG. 1 ) through remote direct memory access to the shared memory servers (see 120 in FIG. 1 ). When the shared memory buffer segments are released and deleted, the returned information is obtained (S703).
또한, 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계(S507)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 모든 공유 메모리 버퍼 세그먼트들이 해제 및 삭제되었는지 여부를 확인한다(S705).In addition, the step of releasing and deleting the shared memory buffer shown in Fig. 5 (S507) is a distributed processing unit (see 110 in Fig. 1) through remote direct memory access, whether all shared memory buffer segments have been released and deleted Confirm (S705).
또한, 도 5에 도시된 공유 메모리 버퍼를 해제 및 삭제하는 단계(S507)는 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 모든 공유 메모리 버퍼 세그먼트들이 해제 및 삭제되어 공유 메모리 버퍼의 사용이 종료되면, 할당된 로컬 공유 메모리 영역을 해제하고, 상응하는 메모리 맵핑 테이블을 삭제한다(S707).In addition, in the step of releasing and deleting the shared memory buffer shown in FIG. 5 ( S507 ), the distributed processing unit (see 110 in FIG. 1 ) through remote direct memory access releases and deletes all shared memory buffer segments to the shared memory When the use of the buffer is finished, the allocated local shared memory area is released, and the corresponding memory mapping table is deleted (S707).
도 8은 본 발명의 일 실시예에 따른 공유 메모리 버퍼들의 데이터 누적 연산 방법을 나타낸 동작이다.8 is an operation illustrating a data accumulation operation method of shared memory buffers according to an embodiment of the present invention.
도 8을 참조하면, 본 발명의 일 실시예에 따른 공유 메모리 버퍼들의 데이터 누적 연산 방법은, 각 공유 메모리 서버들(810, 820 및 830)에서 할당된 공유 메모리 버퍼 세그먼트들에 대하여 데이터 누적 연산을 수행하는 것으로 이루어진다.Referring to FIG. 8 , in the method for accumulating data of shared memory buffers according to an embodiment of the present invention, a data accumulating operation is performed on shared memory buffer segments allocated by each of the shared
첫 번째 공유 메모리 서버(810)에는 제1 공유 메모리 버퍼 세그먼트 1(841) 및 제2 공유 메모리 버퍼 세그먼트 1(851)이 할당되어 있으며, 두 번째 공유 메모리 서버(820)에는 제1 공유 메모리 버퍼 세그먼트 2(842) 및 제2 공유 메모리 버퍼 세그먼트 2(852)가 할당되어 있으며, n 번째 공유 메모리 서버(830)에는 제1 공유 메모리 버퍼 세그먼트 n(843) 및 제2 공유 메모리 버퍼 세그먼트 n(853)이 할당되어 있다. 그리고, 제1 공유 메모리 버퍼 세그먼트 1(841), 제1 공유 메모리 버퍼 세그먼트 2(842) 및 제1 공유 메모리 버퍼 세그먼트 n(843) 등은 제1 공유 메모리 버퍼(840)를 구성한다. 또한, 제2 공유 메모리 버퍼 세그먼트 1(851), 제2 공유 메모리 버퍼 세그먼트 2(852) 및 제2 공유 메모리 버퍼 세그먼트 n(853) 등은 제2 공유 메모리 버퍼(850)를 구성한다.A first shared memory buffer segment 1 (841) and a second shared memory buffer segment 1 (851) are allocated to the first shared
각 공유 메모리 서버들(810, 820 및 830)은 제1 공유 메모리 버퍼(840)의 제1 공유 메모리 버퍼 세그먼트(841, 842 및 843)의 데이터를 제2 공유 메모리 버퍼(850)의 제2 공유 메모리 버퍼 세그먼트(851, 852 및 853)에 누적하여 공유 메모리 버퍼들 간의 데이터 누적 연산을 수행할 수 있다.Each of the shared
도 9는 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법을 나타낸 동작 흐름도이다.9 is an operation flowchart illustrating a data accumulation operation method of the shared memory buffers shown in FIG. 8 .
도 9를 참조하면, 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 제1 공유 메모리 버퍼의 데이터를 로컬 공유 메모리 영역과 동기화한다(S901).Referring to FIG. 9 , in the method of accumulating data of the shared memory buffers shown in FIG. 8 , the distributed processing unit (see 110 of FIG. 1 ) through remote direct memory access transfers the data of the first shared memory buffer to the local shared memory area. is synchronized with (S901).
또한, 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)에 제1 공유 메모리 버퍼로부터 제2 공유 메모리 버퍼로의 데이터 누적 연산을 요청한다(S903).In addition, in the method for accumulating data of shared memory buffers shown in FIG. 8 , a distributed processing unit (see 110 in FIG. 1 ) through remote direct memory access provides a first shared memory to shared memory servers (see 120 in FIG. 1 ). A data accumulation operation is requested from the buffer to the second shared memory buffer (S903).
또한, 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 공유 메모리 서버들(도 1의 120 참조)로부터 제2 공유 메모리 버퍼 세그먼트를 잠근 이후 제1 공유 메모리 버퍼 세그먼트의 데이터를 제2 공유 메모리 버퍼 세그먼트에 누적한 결과를 수신한다(S905).In addition, the data accumulation operation method of the shared memory buffers shown in FIG. 8 is a distributed processing unit (see 110 in FIG. 1 ) through remote direct memory access, a second shared memory from shared memory servers (see 120 in FIG. 1 ) After locking the buffer segment, a result of accumulating the data of the first shared memory buffer segment in the second shared memory buffer segment is received (S905).
또한, 도 8에 도시된 공유 메모리 버퍼들의 데이터 누적 연산 방법은 원격 직접 메모리 접근을 통한 분산 처리 장치(도 1의 110 참조)가, 모든 공유 메모리 버퍼 세그먼트들에 대한 누적 연산이 완료되었는지 확인하여 데이터 누적 연산의 결과를 반환한다(S907).In addition, in the data accumulation operation method of the shared memory buffers shown in FIG. 8, the distributed processing unit (refer to 110 in FIG. 1) through remote direct memory access checks whether the accumulation operation for all shared memory buffer segments is completed, The result of the accumulation operation is returned (S907).
본 발명에서 설명하는 특정 실행들은 실시예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.The specific implementations described in the present invention are examples and do not limit the scope of the present invention in any way. For brevity of the specification, descriptions of conventional electronic components, control systems, software, and other functional aspects of the systems may be omitted. In addition, the connection or connection members of the lines between the components shown in the drawings exemplarily represent functional connections and/or physical or circuit connections, and in an actual device, various functional connections, physical connections that are replaceable or additional may be referred to as connections, or circuit connections. In addition, unless there is a specific reference such as “essential” or “importantly”, it may not be a necessary component for the application of the present invention.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the above-described embodiments, and the scope of the spirit of the present invention is not limited to the scope of the scope of the present invention. will be said to belong to
100: 원격 직접 메모리 접근을 통한 분산 처리 시스템
110: 원격 직접 메모리 접근을 통한 분산 처리 장치
120: 공유 메모리 서버
130: RDMA 지원 네트워크
210: 제어부
220: 통신부
230: 메모리
240: 연산 처리부
250: 공유 메모리 서버 접근 관리부
260: 메모리 맵핑 테이블 관리부
310: 제어부
320: 통신부
330: 메모리
340: 공유 메모리 관리부100: Distributed processing system through remote direct memory access
110: Distributed processing unit through remote direct memory access
120: shared memory server 130: RDMA support network
210: control unit 220: communication unit
230: memory 240: arithmetic processing unit
250: shared memory server access management unit
260: memory mapping table management unit
310: control unit 320: communication unit
330: memory 340: shared memory management unit
Claims (8)
상기 원격 메모리들로부터 할당된 공유 메모리 버퍼 세그먼트들로 구성된 공유 메모리 버퍼에 대하여, 메모리에 상기 공유 메모리 버퍼와 상응하는 크기의 로컬 공유 메모리 영역을 할당하고, 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역을 동기화하는 공유 메모리 접근 관리부;
를 포함하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.a communication unit for transmitting and receiving data by accessing remote memories provided in a plurality of shared memory servers; and
For a shared memory buffer composed of shared memory buffer segments allocated from the remote memories, a local shared memory area of a size corresponding to that of the shared memory buffer is allocated to a memory, and the shared memory buffer and the local shared memory area are separated Synchronizing shared memory access management unit;
Distributed processing device through remote direct memory access, characterized in that it comprises a.
상기 공유 메모리 접근 관리부는
메모리 맵핑 테이블을 이용하여 공유 메모리 버퍼와 로컬 공유 메모리 영역을 동기화하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.The method according to claim 1,
The shared memory access management unit
Distributed processing unit through remote direct memory access, characterized in that the shared memory buffer and the local shared memory area are synchronized using a memory mapping table.
상기 공유 메모리 버퍼는
복수의 분산 처리 장치들에 의해 공유되는 가상의 연속된 버퍼에 상응하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.The method according to claim 1,
The shared memory buffer is
Distributed processing unit through remote direct memory access, characterized in that it corresponds to a virtual continuous buffer shared by a plurality of distributed processing units.
상기 공유 메모리 버퍼 세그먼트들은
상기 복수의 공유 메모리 서버들의 물리 메모리 세그먼트들에 상응하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.The method according to claim 1,
The shared memory buffer segments are
Distributed processing device through remote direct memory access, characterized in that corresponding to the physical memory segments of the plurality of shared memory servers.
상기 공유 메모리 접근 관리부는
상기 공유 메모리 서버들 각각에 상응하는 상기 공유 메모리 버퍼 세그먼트들의 크기를 계산하고, 상기 공유 메모리 서버들에 상기 공유 메모리 버퍼 세그먼트들의 생성 및 할당을 요청하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.The method according to claim 1,
The shared memory access management unit
Distributed through remote direct memory access, characterized in that calculating the size of the shared memory buffer segments corresponding to each of the shared memory servers, and requesting the shared memory servers to create and allocate the shared memory buffer segments processing unit.
상기 공유 메모리 접근 관리부는
복수의 공유 메모리 버퍼들 사이의 데이터 누적 연산을 수행하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 장치.The method according to claim 1,
The shared memory access management unit
Distributed processing device through remote direct memory access, characterized in that it performs a data accumulation operation between a plurality of shared memory buffers.
상기 분산 처리 장치들이 직접 접근할 수 있는 메모리;
를 포함하고,
상기 메모리로부터 공유 메모리 버퍼 세그먼트가 할당되고,
상기 공유 메모리 버퍼 세그먼트는 다른 공유 메모리 서버들의 공유 메모리 버퍼 세그먼트들과 공유 메모리 버퍼를 구성하는 것을 특징으로 하는, 공유 메모리 서버.a communication unit for transmitting and receiving data to and from a plurality of distributed processing devices through remote direct memory access; and
a memory directly accessible to the distributed processing units;
including,
a shared memory buffer segment is allocated from the memory;
The shared memory buffer segment is characterized in that to configure a shared memory buffer with the shared memory buffer segments of other shared memory servers, the shared memory server.
상기 원격 메모리들에 접근하여 데이터를 송수신하여 상기 공유 메모리 버퍼와 상기 로컬 공유 메모리 영역을 동기화하는 단계;
를 포함하는 것을 특징으로 하는, 원격 직접 메모리 접근을 통한 분산 처리 방법.allocating a local shared memory area of a size corresponding to that of the shared memory buffer in a memory for a shared memory buffer composed of shared memory buffer segments allocated from remote memories provided in a plurality of shared memory servers; and
synchronizing the shared memory buffer and the local shared memory area by accessing the remote memories to transmit and receive data;
Distributed processing method through remote direct memory access, characterized in that it comprises a.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210107834A KR102372424B1 (en) | 2018-01-17 | 2021-08-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180006024A KR102292389B1 (en) | 2018-01-17 | 2018-01-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
KR1020210107834A KR102372424B1 (en) | 2018-01-17 | 2021-08-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180006024A Division KR102292389B1 (en) | 2018-01-17 | 2018-01-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210106929A true KR20210106929A (en) | 2021-08-31 |
KR102372424B1 KR102372424B1 (en) | 2022-03-10 |
Family
ID=67468873
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180006024A KR102292389B1 (en) | 2018-01-17 | 2018-01-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
KR1020210107834A KR102372424B1 (en) | 2018-01-17 | 2021-08-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180006024A KR102292389B1 (en) | 2018-01-17 | 2018-01-17 | Apparatus for distributed processing through remote direct memory access and method for the same |
Country Status (1)
Country | Link |
---|---|
KR (2) | KR102292389B1 (en) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102190511B1 (en) * | 2019-03-06 | 2020-12-14 | 한국전자통신연구원 | Method for distributed deep-learning based on heterogeneous cluster and apparatus using the same |
KR102334473B1 (en) * | 2019-11-20 | 2021-12-03 | 한국전자기술연구원 | Adaptive Deep Learning Accelerator and Method thereof |
KR102392121B1 (en) | 2020-06-15 | 2022-04-29 | 한국전자통신연구원 | Method and apparatus for managing memory in memory disaggregation system |
CN113297110B (en) * | 2021-05-17 | 2024-06-18 | 阿里巴巴创新公司 | Data acquisition system, method and device |
KR20230059631A (en) * | 2021-10-26 | 2023-05-03 | 한화비전 주식회사 | Apparatus and method for performing data communication between a plurality of applications |
CN114780465B (en) * | 2022-03-01 | 2024-04-16 | 阿里巴巴(中国)有限公司 | Creation method and device for sharable remote direct data access link |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060009244A (en) | 2003-05-07 | 2006-01-31 | 인터내셔널 비지네스 머신즈 코포레이션 | Distributed file serving architecture system |
JP2013513839A (en) * | 2009-12-11 | 2013-04-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Cluster family for cluster selection and collaborative replication |
KR20130079865A (en) * | 2012-01-03 | 2013-07-11 | 서울대학교산학협력단 | Shared virtual memory management apparatus for securing cache-coherent |
KR101533405B1 (en) * | 2014-02-21 | 2015-07-03 | 한국과학기술원 | Shared memory management method for numa system |
KR20160033505A (en) * | 2014-09-18 | 2016-03-28 | 한국전자통신연구원 | System for providing remote memory and temporal page pool operating method for providing remote memory |
-
2018
- 2018-01-17 KR KR1020180006024A patent/KR102292389B1/en active IP Right Grant
-
2021
- 2021-08-17 KR KR1020210107834A patent/KR102372424B1/en active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060009244A (en) | 2003-05-07 | 2006-01-31 | 인터내셔널 비지네스 머신즈 코포레이션 | Distributed file serving architecture system |
JP2013513839A (en) * | 2009-12-11 | 2013-04-22 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Cluster family for cluster selection and collaborative replication |
KR20130079865A (en) * | 2012-01-03 | 2013-07-11 | 서울대학교산학협력단 | Shared virtual memory management apparatus for securing cache-coherent |
KR101533405B1 (en) * | 2014-02-21 | 2015-07-03 | 한국과학기술원 | Shared memory management method for numa system |
KR20160033505A (en) * | 2014-09-18 | 2016-03-28 | 한국전자통신연구원 | System for providing remote memory and temporal page pool operating method for providing remote memory |
Also Published As
Publication number | Publication date |
---|---|
KR102292389B1 (en) | 2021-08-25 |
KR20190087783A (en) | 2019-07-25 |
KR102372424B1 (en) | 2022-03-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102372424B1 (en) | Apparatus for distributed processing through remote direct memory access and method for the same | |
US11487698B2 (en) | Parameter server and method for sharing distributed deep learning parameter using the same | |
US20190342229A1 (en) | Multi-cluster resource management | |
US9292620B1 (en) | Retrieving data from multiple locations in storage systems | |
KR102372423B1 (en) | Apparatus for sharing parameter and method for using the same | |
US11818209B2 (en) | State management and object storage in a distributed cloud computing network | |
JP6450330B2 (en) | Parallel computing device and parallel computing method | |
WO2020052379A1 (en) | Method and apparatus for processing metadata of object in distributed storage system | |
JP2019521576A (en) | Maintaining Messaging System Persistence | |
KR101714412B1 (en) | Method and apparatus for organizing database system in cloud environment | |
US8938599B2 (en) | Distributed graph storage system | |
CN103312624A (en) | Message queue service system and method | |
WO2019153702A1 (en) | Interrupt processing method, apparatus and server | |
CN109873839A (en) | Method, server and the distributed system of data access | |
JP2022505720A (en) | How to Effectively Reduce I / O Consumption in Containerized Relational Databases | |
CN109597903A (en) | Image file processing apparatus and method, document storage system and storage medium | |
WO2018176397A1 (en) | Lock allocation method, device and computing apparatus | |
CN111225003B (en) | NFS node configuration method and device | |
JP2015170054A (en) | Task allocation program, task execution program, task allocation device, task execution device and task allocation method | |
TWI545453B (en) | Distributed systems and methods for database management and management systems thereof | |
JP2017225001A (en) | Parallel load distribution system, parallel load distribution method, sdn controller host and program | |
KR102033383B1 (en) | Method and system for managing data geographically distributed | |
EP3282357B1 (en) | Apparatus and method for running plurality of threads | |
JP6798211B2 (en) | Parallel computer system and management method | |
KR101681651B1 (en) | System and method for managing database |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |