KR101858565B1 - 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템 - Google Patents

대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템 Download PDF

Info

Publication number
KR101858565B1
KR101858565B1 KR1020160019871A KR20160019871A KR101858565B1 KR 101858565 B1 KR101858565 B1 KR 101858565B1 KR 1020160019871 A KR1020160019871 A KR 1020160019871A KR 20160019871 A KR20160019871 A KR 20160019871A KR 101858565 B1 KR101858565 B1 KR 101858565B1
Authority
KR
South Korea
Prior art keywords
gpu
gpu module
data
interface unit
unit
Prior art date
Application number
KR1020160019871A
Other languages
English (en)
Other versions
KR20170098377A (ko
Inventor
서영준
한준영
권선민
이희백
Original Assignee
서영준
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서영준 filed Critical 서영준
Priority to KR1020160019871A priority Critical patent/KR101858565B1/ko
Publication of KR20170098377A publication Critical patent/KR20170098377A/ko
Application granted granted Critical
Publication of KR101858565B1 publication Critical patent/KR101858565B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 대용량 데이터 처리를 위한 독립적 병렬 처리 방법 및 시스템에 관한 것으로, 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 독립적 병렬 처리 시스템은, 대용량 데이터를 처리하기 위한 사용자 코드를 포함하는 메인 노드; 및 GPU 모듈을 포함하고, 상기 메인 노드의 Core APIs가 전송되고, 상기 사용자 코드가 전송되어 전송된 Core APIs와 사용자 코드를 상기 GPU 모듈을 통해 상기 대용량 데이터 중 일부 또는 전부를 처리하는 하나 이상의 워커 노드를 포함할 수 있다. 본 발명에 의하면, 대용량 데이터를 처리할 때, 각 컴퓨팅 장치의 인터페이스를 이용하여 처리가 이루어지므로, 각 컴퓨팅 장치의 인터페스와 무관하게 다양한 종류의 대용량 데이터를 처리할 수 있는 효과가 있다.

Description

대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템{INDEPENDENT PARALLEL PROCESSING METHOD FOR MASSIVE DATA IN DISTRIBUTED PLATFORM AND SYSTEM OF THEREOF}
본 발명은 대용량 데이터 처리를 위해 분산 컴퓨팅 환경을 제공하는 플랫폼에서 그래픽 처리 장치(GPU)를 이용하여 병렬 처리를 할 수 있는 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템에 관한 것으로, 더욱 상세하게는 사용자가 특정 데이터를 특정 방식으로 병렬 처리를 위한 모듈을 이용할 때, 해당 플랫폼의 추가적인 기능을 업데이트 하거나 변경하지 않으면서 그래픽 처리 장치(GPU)를 이용한 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템에 관한 것이다.
최근 그래픽 처리 장치(GPU)의 성능이 진화함에 따라 다양한 응용 프로그램을 범용 컴퓨팅 장치와 유사한 그래픽 처리 장치에서 병렬로 데이터를 처리하고 있다. 이런 응용 프로그램은 공급 업체의 특유의 인터페이스를 이용하여 특정 그래픽 처리 장치 상에서 실행되도록 설계된다.
즉, 상기와 같은 응용 프로그램들은 특정 데이터를 병렬로 처리하기 위해 개발된 것이기 때문에 해당 응용 프로그램을 구동하려면 공급 업체에서 제공된 인터페이스에 적용하기 위해 별도의 프로그래밍(programing) 작업이 필요하다. 또한, 해당 응용 프로그램을 특정 플랫폼에서 구동하려면 해당 응용 프로그램과 통신할 수 있는 특정 모듈이 특정 플랫폼에 포함되어 있어야 한다.
상기와 같은 제약들은 특히, 분산 컴퓨팅 환경의 플랫폼에서 특정 데이터를 병렬 처리하기 위한 응용 프로그램을 구동할 때 더욱 문제가 발생할 수 있다. 즉, 병렬 처리를 위한 응용 프로그램과의 인터페이스를 해당 플랫폼에서 제공해야 하는 문제가 있다.
또한, 특정 데이터와 처리 방식에 따라 달라지는 병렬 처리 응용 프로그램의 속성상 데이터와 처리 방식이 기존 제공된 처리 방식에 종속될 수밖에 없는 문제가 있다. 더욱이, 상기와 같은 분산 병렬 처리 플랫폼을 수정하는 것은 통상의 응용 프로그램의 일부를 수정하는 것과 같이, 쉽게 수정할 수 있는 것이 아니기 때문에 사용자는 제한적인 분산 병렬 컴퓨팅 환경에 맞도록 작업을 수행할 수밖에 없는 문제가 있다.
대한민국 공개특허 제10-2016-0003502호(병렬화 방법 및 전자 장치, 공개일: 2016.01.11)
본 발명이 해결하고자 하는 과제는, 대용량 데이터를 처리함에 있어 분산 컴퓨팅 환경을 제공하는 플랫폼에서 그래픽 처리 장치(GPU)를 구동시키는 응용 프로그램을 구동할 때, 독립적인 분산 플랫폼에서 클러스터 상의 각 노드(node)에서 병렬 처리 프로그램을 구동할 수 있는 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템을 제공하는 것이다.
본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 독립적 병렬 처리 시스템은, 대용량 데이터를 처리하기 위한 사용자 코드를 포함하는 메인 노드; 및 GPU 모듈을 포함하고, 상기 메인 노드의 Core APIs가 전송되고, 상기 사용자 코드가 전송되어 전송된 Core APIs와 사용자 코드를 상기 GPU 모듈을 통해 상기 대용량 데이터 중 일부 또는 전부를 처리하는 하나 이상의 워커 노드를 포함할 수 있다.
이때, 상기 워커 노드는, 대용량 데이터를 처리하는 GPU 모듈; 상기 메인 노드에서 사용자 코드가 전송되는 입·출력 인터페이스부; 상기 메인 노드에서 Core APIs를 수신하고, 상기 입·출력 인터페이스부에서 상기 사용자 코드에 포함된 클로저를 수신하는 어플리케이션 프로그래밍 인터페이스부; 상기 어플리케이션 프로그래밍 인터페이스부에서 상기 클로저에 포함된 정보를 수신하는 메타데이터 해석부; 상기 GPU 모듈을 구동시키는 GPU 모듈 구동부; 및 상기 Core APIs를 실행시키는 실행부를 포함할 수 있다.
그리고 상기 클로저에 포함된 정보는 상기 GPU 모듈을 구동시키기 위한 GPU 커널코드 및 상기 GPU 모듈을 구동시키는 환경을 구축하기 위한 메타데이터를 포함할 수 있다.
또한, 상기 GPU 모듈 구동부는 상기 GPU 커널코드를 컴파일하여 상기 GPU 모듈을 구동시킬 수 있다.
여기서, 상기 메타데이터 해석부는, 상기 GPU 모듈을 구동시키기 위한 변수의 개수, 입력 파라미터의 수, 입력 파라미터의 해석, 리턴 타입, 포인터 정보, 메모리할당 정보 중 어느 하나 이상을 적용할 수 있다.
이때, 상기 사용자 코드는 자바머신 기반으로 작성될 수 있다.
한편, 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 독립적 병렬 처리 방법은, 대용량 데이터를 처리하기 위해 메인 노드와 워커 노드를 포함하는 독립적 병렬 처리 시스템에서, 상기 워커 노드는 GPU 모듈, 입·출력 인터페이스부, 어플리케이션 프로그래밍 인터페이스부, 메타데이터 해석부, GPU 모듈 구동부 및 실행부를 포함하는 독립적 병렬 처리 방법에 있어서, 상기 메인 노드가 상기 어플리케이션 프로그래밍 인터페이스부로 Core APIs를 전송하는 제1 단계; 상기 메인 노드가 상기 입·출력 인터페이스부로 사용자 코드를 전송하는 제2 단계; 상기 입·출력 인터페이스부에서 상기 어플리케이션 프로그래밍 인터페이스부로 상기 사용자 코드에 포함된 클로저를 전송하는 제3 단계; 상기 어플리케이션 프로그래밍 인터페이스부에서 상기 메타데이터 해석부로 상기 클로저에 포함된 정보를 전송하는 제4 단계; 상기 메타데이터 해석부에서 수신된 정보를 바탕으로 GPU 모듈을 구동시키는 환경을 구축하는 제5 단계; 및 상기 메타데이터 해석부에서 구축된 환경에 따라 상기 클로저에 포함된 정보를 이용하여 상기 GPU 모듈을 구동시키기 위한 커널코드를 컴파일하여 상기 GPU 모듈로 전송하는 제6 단계를 포함할 수 있다.
본 발명에 의하면, 대용량 데이터를 처리할 때, 각 컴퓨팅 장치의 인터페이스를 이용하여 처리가 이루어지므로, 각 컴퓨팅 장치의 인터페스와 무관하게 다양한 종류의 대용량 데이터를 처리할 수 있는 효과가 있다.
또한, 자바 머신(java machine)과 같은 범용성이 높은 프로그램을 이용함으로써, 각 컴퓨팅 장치의 운영체제에 무관하게 데이터를 처리할 수 있어, 어떤 컴퓨팅 장치라도 대용량 데이터를 병렬 처리할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 시스템을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 시스템의 메인 노드와 워커 노드 간의 데이터 처리 흐름을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 시스템의 워커 노드에서 데이터 처리 흐름을 도시한 도면이다.
본 발명의 바람직한 실시예에 대하여 첨부된 도면을 참조하여 더 구체적으로 설명한다.
도 1은 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 시스템을 도시한 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 대용량 데이터 처리를 수행하는 분산 플랫폼 독립적 병렬 시스템은, 하나의 메인 노드(110)와 다수의 워커 노드(120, 130)를 포함한다. 여기서, 도 1에는 두 개의 워커노드(120, 130)만을 도시하였지만, 필요에 따라 더 많은 워커 노드가 구비될 수 있다.
메인 노드(110)는, 각 워커 노드(120, 130)에서 데이터 처리가 이루어지도록 각 워커 노드(120, 130)에서 사용자에 의해 작성된 후, 메인 노드(110)에서 컴파일된 사용자 실행 파일을 전송한다. 이때, 메인 노드(110)는 각 워커 노드(120, 130)에 사용자 실행 파일을 전송하기 위한 통신 기능이 포함된 PC나 태블릿 PC 등과 같은 컴퓨팅 장치일 수 있다. 그 외에도, 메인 노드(110) 또는 워커 노드(120, 130)는 스마트 폰(smartphone), 이동 전화기(mobile phone), 화상전화기, 전자북 리더기(e-book reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device)(예: 전자 안경과 같은 headmounted-device(HMD), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리(appcessory), 전자 문신, 또는 스마트 와치(smart watch))중 적어도 하나를 포함할 수 있다.
이를 위해, 본 실시예에서 메인 노드(110)는, 메인 실행 구동부(111), 메인 입·출력 인터페이스부(112), 메인 어플리케이션 프로그래밍 인터페이스부(113, API, application programing interface), 메인 메타데이터 해석부(114), 메인 GPU 모듈 구동부(115) 및 메인 실행부(116)를 포함한다.
메인 실행 구동부(111), 메인 입·출력 인터페이스부(112) 및 메인 API(113)는 통합되어 메인 사용자 코드부(MU)로 구성될 수 있으며, 메인 실행 구동부(111)와 메인 입·출력 인터페이스부(112)는, 메인 실행부(116)를 구동시키기 위한 정보가 입력되거나, 메인 API(113)를 실행시킬 수 있다. 또한, 메인 입·출력 인터페이스부(112)를 통해 사용자로부터 입력된 대용량 데이터를 처리하기 위한 코드가 입력될 수 있다. 이때의 코드 입력은 입·출력 장치를 통해 사용자로부터 입력된 명령 또는 데이터 등일 수 있다. 또한, 상술한 바와 같이, 메인 입·출력 인터페이스부(112)를 통해 메인 노드(110)에서 각 워커 노드(120, 130)에 사용자 실행 파일을 전송할 수 있다.
그리고 메인 메타데이터 해석부(114), 메인 GPU 모듈 구동부(115) 및 메인 실행부(116)는 메인 플랫폼 코어부(MF, platform core)에 포함될 수 있다. 메인 API(113)는 메인 노드(110)나 워커 노드(120)에서 제공되는 기능을 제어하기 위한 인터페이스로, 일례로, 파일 제어, 창 제어, 화상 처리 또는 문자 제어 등을 위한, 하나 이상의 인터페이스나 함수(명령어)를 포함할 수 있다. 그리고 메인 실행부(116)는 메인 API(113)가 실행되도록 할 수 있다.
즉, 메인 노드(110)는 메인 API(113)를 통해 각 워커 노드(120, 130)에서 처리할 수 있는 명령어를 생성하여, 사용자 실행 파일이 각 워커 노드(120, 130)로 전송되어 실행될 수 있도록 한다. 또한, 사용자 실행 파일이 실행되면, 각 워커 노드(120, 130)의 워커 API(123)를 통해 사용자 실행 파일에서의 CoreAPIs의 입력 파라미터로 입력된 클로저를 각 워커 노드(120, 130)의 워커 플랫폼 코어부(WF) 내부로 전송할 수 있다.
워커 노드(120)는 다수 개가 구비되고, 메인 노드(110)에서 대용량 데이터 처리를 위한 정보를 수신하고, 별도의 메모리에서 데이터를 불러와 대용량 데이터를 처리할 수 있다. 이때, 본 실시예에서 워커 노드(120)는 그래픽 처리 장치(GPU)에 포함된 다수의 코어를 이용하여 처리할 수 있다. 이를 위해 워커 노드(120)는 메인 노드(110)와 마찬가지로, 워커 플랫폼 코어부(WF) 및 워커 사용자 코드부(WU)를 포함하고, 추가로 GPU 모듈(127)을 포함한다.
워커 플랫폼 코어부(WF)는 워커 메타데이터 해석부(124), 워커 GPU 모듈 구동부(125) 및 워커 실행부(126)를 포함한다. 그리고 워커 사용자 코드부(WU)는 워커 실행 구동부(121), 워커 입·출력 인터페이스부(122) 및 워커 어플리케이션 프로그래밍 인터페이스부(123, API)를 포함한다.
워커 API(123)는 메인 노드(110)의 메인 API(113)로부터 복사된 정보가 전달됨에 따라 클로저(closure)가 전송될 수 있다. 이때, 복사된 정보는 Core APIs일 수 있고, Core APIs는 클로저를 인수로 가지는 함수일 수 있다. 이때, 클로저는 코드 블록의 일종으로, 함수의 역할을 한다. 또한, 클로저의 형식으로 정보를 전달하면 클로저 내의 정보는 메인 노드(110)에서 워커 노드(120)로 전송되는 과정에서 변경되지 않고, 메인 노드(110)나 워커 노드(120)의 종류에 무관하게 전달될 수 있다.
일례로, 메인 노드(110)의 메인 API(113)에서 정의된 Core API1은 클로저를 인수로 가지는 함수 있을 수 있다. 일반적으로, 함수형 프로그램 언어에서의 클로저는 “=>”를 기준으로 왼쪽 항은 입력된 매개변수들이 위치하고, 오른쪽 항은 입력된 매개변수들을 처리하는 함수 본체가 위치한다. 여기서, Core API1에 입력된 클로저는 “Closure_A=(자신을 인수로 전달하는 Core API1을 호출한 객체 A의 포인터) => (GPU 커널코드, 메타데이터)”와 같이 정의될 수 있다.
이때, GPU 커널코드와 메타데이터는 메인 노드(110)의 메인 입·출력 인터페이스부(112)에서 입력된 사용자 실행 파일에 포함된 것이고, 상기의 ‘자신을 인수로 전달하는 Core API1을 호출한 객체 A의 포인터’는 일반적으로 this 포인터로 접근할 수 있다. 상기 this 포인터는 각 워커 노드(120)에서 CoreAPI1을 호출한 객체의 포인터이고, 이를 통해 Closue_A의 오른쪽 항에서 워커 노드(120)의 워커 플랫폼 코어부(WF)에 접근할 수 있다. 결과적으로 GPU 커널코드 및 메타데이터를 전달할 수 있다. 여기서, 오른쪽 항의 값은 Tuple, 배열 및 리스트 등과 같이 여러 값을 하나의 객체로 담을 수 있는 객체일 수 있다.
또한, 클로저는 메인 노드(110)에서 워크 노드(120)로 전송된다고 하더라도 클로저에 포함된 내용은 변경되지 않은 상태로 전송될 수 있다.
또한, 앞서 설명한 바와 같이, 클로저에 포함된 정보는 GPU 커널코드 및 메타데이터 정보가 입력된다. GPU 커널코드는 GPU에 포함된 다수의 코어를 각각 제어할 수 있다.
그리고 메타데이터는 GPU 커널코드에 의해 GPU 모듈(127)이 구동될 수 있는 정보를 포함할 수 있다. 이때, 본 실시예에서의 메인 실행 구동부(111), 워커 실행 구동부(121), 메인 입·출력 인터페이스부(112), 워커 입·출력 인터페이스부(122), 메인 플랫폼 코어(MF) 및 워커 플랫폼 코어부(WF)는 모두 자바머신(java machine) 상에서 구동될 수 있다. 그런데, GPU 모듈(127)은 C-언어를 기반으로 구동되기 때문에 GPU 모듈(127)을 직접적으로 구동할 수 없다. 그렇기 때문에 워커 노드(120)의 워커 API(123)로 전송된 클로저에 포함된 GPU 커널코드를 C-언어 기반에서 구동될 필요가 있는데, 이를 위해 메타데이터가 클로저에 포함된다.
즉, 메타데이터는 자바머신 기반에서 작성된 GPU 커널코드가 C-언어 기반의 GPU 모듈(127)을 구동시키기 위한 포인터 정보나 메모리할당 정보 등이 포함될 수 있다.
이렇게 메타데이터에 포함된 정보를 바탕으로 GPU 커널코드를 C-언어 기반으로 해석하는 과정이 워커 메타데이터 해석부(124)가 변수의 개수, 입력 파라미터의 수, 입력 파라미터의 해석, 리턴 타입, 포인터 정보, 메모리할당 정보 등을 적용시킬 수 있다. 그에 따라 입력 파라미터, 출력 파라미터, 타입 및 기타 정보를 바탕으로 GPU 모듈(127)이 구동될 수 있는 환경을 만들 수 있다.
워커 GPU 모듈 구동부(125)는 클로저에 포함된 GPU 커널코드와 워커 메타데이터 해석부(124)에서 만들어진 환경을 바탕으로 GPU 모듈(127)을 구동시키기 위한 컴파일 작업이 이루어질 수 있다.
그러면, 이렇게 컴파일된 GPU 커널코드와 입력값은 GPU 모듈(127)로 전송되어, GPU 모듈(127)에서 데이터에 대한 처리가 이루어질 수 있다.
워커 실행부(126)는 워커 실행 구동부(121)에 의해 구동되어, 워커 입·출력 인터페이스부(122)를 실행시키는 역할을 한다.
도 2는 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 독립적 병렬 시스템의 메인 노드와 워커 노드 간의 데이터 처리 흐름을 도시한 도면이다.
먼저, 메인 노드(110)의 메인 실행 구동부(111)는 메인 노드(110)의 메인 실행부(116)를 구동시키기 위한 구동코드를 사용자에게 제공한다. 사용자가 제공된 구동코드를 사용하여 사용자 실행코드를 구성한 다음, 컴파일된 사용자 실행 파일이 워커 노드(120)로 전송되면 워커 실행부(126)를 구동할 수 있다. 또한, 메인 API(113)를 통해 사용자에게 워커 API(123)의 입력 파라미터인 클로져가 워커 API(123)로 전송한다(S1). 그리고 메인 입·출력 인터페이스부(112)는 컴파일된 사용자 실행 파일을 워커 노드(120)로 전송한다(S2). 이때, 컴파일된 사용자 파일에는 클로저가 포함될 수 있다. 또한, 필요에 따라 메인 실행 구동부(111)는 워커 실행부(126)가 구동되도록 구동신호를 직접 워커 실행부(126)로 전송할 수 있다.
도 3은 본 발명의 일 실시예에 따른 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 시스템의 워커 노드에서 데이터 처리 흐름을 도시한 도면이다.
상기의 과정을 통해 메인 노드(110)에서 워커 노드(120)로 사용자 실행 파일이 전송되면, 워커 실행 구동부(121)는 사용자 실행 파일을 실행시키고, 사용자 실행 파일이 실행됨에 따라 사용자 실행파일의 일부인 실행 구동부 코드를 통해 워커 실행부(126)를 구동한다(S1). 이때, 워커 실행부(126)는 메인 노드(110)에서 작성된 사용자 실행파일의 메인 API(113)를 실행시키고, 워커 입·출력 인터페이스부(122)를 통해 대용량 데이터가 워커 노드(120)로 입력된다(S2).
여기서, 사용자 실행 파일에 의해 메인 API(113)이 실행될 때, 워커 API(123)이 호출된다. 이렇게 호출된 워커 API(123)는 워커 입·출력 인터페이스부(122)를 통해 대용량 데이터가 입력되고, 사용자 실행 파일에 의해 메인 API(113)의 입력 파라미터인 클로져가 전송된다(S3). 워커 API(123)는 클로저에 포함된 CPU 커널 코드, 입력값 및 메타데이터에 대한 정보를 워커 메타데이터 해석부(124)로 전송한다(S4).
워커 메타데이터 해석부(124)는 전송된 입력값과 메타데이터 정보를 바탕으로 해석하여 GPU 모듈(127)이 구동될 수 있는 환경을 구축한다(S5). 그리고 해석된 정보는 워커 GPU 모듈 구동부(125)로 전송되며, 워커 GPU 모듈 구동부(1250는 해석된 정보를 바탕으로 GPU 커널코드를 컴파일하고, 컴파일된 GPU 커널코드와 입력값을 GPU 모듈(127)로 전송한다(S6).
GPU 모듈(127)은 GPU 커널코드에 의한 다수의 코어를 이용하여 각 코어에서 데이터에 대한 병렬 처리가 이루어지고, 처리된 결과값을 워커 GPU 모듈 구동부(125)로 전송한다(S7). 그리고 워커 GPU 모듈 구동부(125)는 수신된 결과값을 워커 API(123)로 전송하며(S8), 워커 API(123)는 결과값을 워커 입·출력 인터페이스부(122)로 전송하여(S9), 데이터에 대한 정보를 처리할 수 있다.
위에서 설명한 바와 같이 본 발명에 대한 구체적인 설명은 첨부된 도면을 참조한 실시예에 의해서 이루어졌지만, 상술한 실시예는 본 발명의 바람직한 예를 들어 설명하였을 뿐이므로, 본 발명이 상기 실시예에만 국한되는 것으로 이해돼서는 안 되며, 본 발명의 권리범위는 후술하는 청구범위 및 그 등가개념으로 이해되어야 할 것이다.
삭제
110: 메인 노드
MF: 메인 플랫폼 코어부 MU: 메인 사용자 코드부
111: 메인 실행 구동부 112: 메인 입·출력 인터페이스부
113: 메인 어플리케이션 프로그래밍 인터페이스부(API)
114: 메인 메타데이터 해석부 115: 메인 GPU 모듈 구동부
116: 메인 실행부
120: 워커 노드
WF: 워커 플랫폼 코어부 WU: 워커 사용자 코드부
121: 워커 실행 구동부 122: 워커 입·출력 인터페이스부
123: 워커 어플리케이션 프로그래밍 인터페이스부(API)
124: 워커 메타데이터 해석부 125: 워커 GPU 모듈 구동부
126: 워커 실행부 127: GPU 모듈

Claims (7)

  1. 삭제
  2. 삭제
  3. 대용량 데이터를 처리하기 위한 사용자 코드를 포함하는 메인 노드; 및
    GPU 모듈을 포함하고, 상기 메인 노드의 Core APIs가 전송되고, 상기 사용자 코드가 전송되어 전송된 Core APIs와 사용자 코드를 상기 GPU 모듈을 통해 상기 대용량 데이터 중 일부 또는 전부를 처리하는 하나 이상의 워커 노드를 포함하고,
    상기 워커 노드는,
    대용량 데이터를 처리하는 GPU 모듈;
    상기 메인 노드에서 사용자 코드가 전송되는 입출력 인터페이스부;
    상기 메인 노드에서 Core APIs를 수신하고, 상기 입출력 인터페이스부에서 상기 사용자 코드에 포함된 클로저를 수신하는 어플리케이션 프로그래밍 인터페이스부;
    상기 어플리케이션 프로그래밍 인터페이스부에서 상기 클로저에 포함된 정보를 수신하는 메타데이터 해석부;
    상기 GPU 모듈을 구동시키는 GPU 모듈 구동부; 및
    상기 Core APIs를 실행시키는 실행부를 포함하며,
    상기 Core APIs는 상기 클로저를 인수로 가지는 함수이며,
    상기 클로저에 포함된 정보는 상기 GPU 모듈을 구동시키기 위한 GPU 커널코드 및 상기 GPU 모듈을 구동시키는 환경을 구축하기 위한 메타데이터를 포함하고,
    상기 GPU 모듈이 구동되는 환경은 상기 GPU 커널코드가 구동되는 환경과 다른 환경인 것을 특징으로 하는,
    대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 시스템.
  4. 청구항 3에 있어서,
    상기 GPU 모듈 구동부는 상기 GPU 커널코드를 컴파일하여 상기 GPU 모듈을 구동시키는 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 시스템.
  5. 청구항 3에 있어서,
    상기 메타데이터 해석부는, 상기 메타데이터에 포함되는 변수의 개수, 입력 파라미터의 수, 입력 파라미터의 해석, 리턴 타입, 포인터 정보, 메모리할당 정보 중 어느 하나 이상을 적용하여,
    상기 GPU 커널 코드가 상기 GPU 모듈에서 구동되는 환경을 구축하는,
    대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 시스템.
  6. 청구항 3에 있어서,
    상기 사용자 코드는 자바머신 기반으로 작성된 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 시스템.
  7. 대용량 데이터를 처리하기 위해 메인 노드와 워커 노드를 포함하는 분산 플랫폼 독립적 병렬 처리 시스템에서, 상기 워커 노드는 GPU 모듈, 입출력 인터페이스부, 어플리케이션 프로그래밍 인터페이스부, 메타데이터 해석부, GPU 모듈 구동부 및 실행부를 포함하는 독립적 병렬 처리 방법에 있어서,
    상기 메인 노드가 상기 어플리케이션 프로그래밍 인터페이스부로 Core APIs를 전송하는 제1 단계;
    상기 메인 노드가 상기 입출력 인터페이스부로 사용자 코드를 전송하는 제2 단계;
    상기 입출력 인터페이스부에서 상기 어플리케이션 프로그래밍 인터페이스부로 상기 사용자 코드에 포함된 클로저를 전송하는 제3 단계;
    상기 어플리케이션 프로그래밍 인터페이스부에서 상기 메타데이터 해석부로 상기 클로저에 포함된 정보를 전송하는 제4 단계;
    상기 메타데이터 해석부에서 수신된 정보를 바탕으로 GPU 모듈을 구동시키는 환경을 구축하는 제5 단계; 및
    상기 메타데이터 해석부에서 구축된 환경에 따라 상기 클로저에 포함된 정보를 이용하여 상기 GPU 모듈을 구동시키기 위한 커널코드를 컴파일하여 상기 GPU 모듈로 전송하는 제6 단계를 포함하고,
    상기 Core APIs는 상기 클로저를 인수로 가지는 함수이며,
    상기 클로저에 포함된 정보는 상기 GPU 모듈을 구동시키기 위한 GPU 커널코드 및 상기 GPU 모듈을 구동시키는 환경을 구축하기 위한 메타데이터를 포함하고,
    상기 GPU 모듈이 구동되는 환경은 상기 GPU 커널코드가 구동되는 환경과 다른 환경인 것을 특징으로 하고,
    상기 제5 단계는, 상기 메타데이터에 포함되는 변수의 개수, 입력 파라미터의 수, 입력 파라미터의 해석, 리턴 타입, 포인터 정보, 메모리할당 정보 중 어느 하나 이상을 적용하여, 상기 GPU 커널 코드가 상기 GPU 모듈에서 구동되는 환경을 구축하는 것을 특징으로 하는,
    대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법.
KR1020160019871A 2016-02-19 2016-02-19 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템 KR101858565B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160019871A KR101858565B1 (ko) 2016-02-19 2016-02-19 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160019871A KR101858565B1 (ko) 2016-02-19 2016-02-19 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20170098377A KR20170098377A (ko) 2017-08-30
KR101858565B1 true KR101858565B1 (ko) 2018-05-16

Family

ID=59760367

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160019871A KR101858565B1 (ko) 2016-02-19 2016-02-19 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101858565B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857558A (zh) * 2019-01-18 2019-06-07 苏宁易购集团股份有限公司 一种数据流处理方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011523141A (ja) 2008-06-06 2011-08-04 アップル インコーポレイテッド マルチプロセッサにおけるデータパラレルコンピューティングのためのアプリケーションプログラミングインターフェイス

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011523141A (ja) 2008-06-06 2011-08-04 アップル インコーポレイテッド マルチプロセッサにおけるデータパラレルコンピューティングのためのアプリケーションプログラミングインターフェイス

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Barak, Amnon, et al. "A package for OpenCL based heterogeneous computing on clusters with many GPU devices." Cluster Computing Workshops and Posters, 2010 IEEE International Conference on. IEEE, 2010.*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857558A (zh) * 2019-01-18 2019-06-07 苏宁易购集团股份有限公司 一种数据流处理方法及系统

Also Published As

Publication number Publication date
KR20170098377A (ko) 2017-08-30

Similar Documents

Publication Publication Date Title
EP3134810B1 (en) Dependency-driven co-specialization of specialized classes
CN107943469B (zh) 一种智能合约的发布方法及装置
US8191042B2 (en) Continuation based declarative definition and composition
US9430200B1 (en) Cross-library framework architecture feature sets
EP3123315B1 (en) Hierarchical directives-based management of runtime behaviors
US9043766B2 (en) Language translation using preprocessor macros
EP2587372A1 (en) Sharing of first class objects across multiple interpreted programming languages
US10942715B2 (en) Composable context menus
US8935686B2 (en) Error-code and exception-based function dispatch tables
US20170017472A1 (en) Incremental interprocedural dataflow analysis during compilation
US20160246622A1 (en) Method and system for implementing invocation stubs for the application programming interfaces embedding with function overload resolution for dynamic computer programming languages
US20190057485A1 (en) Frame Invalidation Control with Causality Attribution
KR101858565B1 (ko) 대용량 데이터 처리를 위한 분산 플랫폼 독립적 병렬 처리 방법 및 시스템
US10496433B2 (en) Modification of context saving functions
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
Khan et al. A study: selection of model metamodel and SPL tools for the verification of software product lines
EP3752914B1 (en) Techniques for native runtime of hypertext markup language graphics content
CN110727423A (zh) 跨平台开发行动应用程序的方法及其系统
EP4204960A1 (en) Thread-local return structure for asynchronous state machine
EP4196874A1 (en) Representing asynchronous state machine in intermediate code
CN112148303A (zh) 文件生成方法、装置、终端及存储介质
US20150277868A1 (en) Declared variable ordering and optimizing compiler
US8843906B1 (en) Inferring data types from compiler call site
Pedersen et al. Static Scoping and Name Resolution for Mobile Processes with Polymorphic Interfaces
Gotti et al. IFVM Bridge: A Virtual Machine for IFML Models Execution in Combination with Domain Models.

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
N231 Notification of change of applicant