KR20180064922A - 이종 계산 장치 기반의 질의 처리 방법 및 장치 - Google Patents

이종 계산 장치 기반의 질의 처리 방법 및 장치 Download PDF

Info

Publication number
KR20180064922A
KR20180064922A KR1020160165377A KR20160165377A KR20180064922A KR 20180064922 A KR20180064922 A KR 20180064922A KR 1020160165377 A KR1020160165377 A KR 1020160165377A KR 20160165377 A KR20160165377 A KR 20160165377A KR 20180064922 A KR20180064922 A KR 20180064922A
Authority
KR
South Korea
Prior art keywords
query
data
calculation
computation
cost
Prior art date
Application number
KR1020160165377A
Other languages
English (en)
Other versions
KR102011671B1 (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 KR1020160165377A priority Critical patent/KR102011671B1/ko
Priority to US15/622,451 priority patent/US20180157711A1/en
Publication of KR20180064922A publication Critical patent/KR20180064922A/ko
Application granted granted Critical
Publication of KR102011671B1 publication Critical patent/KR102011671B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

이종 계산 장치 기반의 질의 처리 방법 및 장치가 제공된다. 이종 계산 자원에 포함되는 복수의 계산 자원을 모두 활용하여 질의를 처리하기 위한 최적의 질의 실행 계획을 생성하고, 질의 실행 계획에 포함되는 데이터 분할 비율에 따라 질의에 대응하는 데이터를 분할하여 각 계산 자원에 할당한다. 그리고 각 계산 자원 기반으로 상기 분할된 데이터를 각각 처리하다.

Description

이종 계산 장치 기반의 질의 처리 방법 및 장치{Method and apparatus for processing query based on heterogeneous computing device}
본 발명은 질의 처리에 관한 것으로, 더욱 상세하게 말하자면, 이종 계산 장치를 포함하는 컴퓨팅 환경에서 질의를 처리하는 방법 및 장치에 관한 것이다.
최근에는 클락(clock) 스피드를 높여서 계산 속도를 높이는 것에 한계가 있어서 여러 개의 코어(Core)를 활용하는 방법으로 CPU(central processing unit) 구조가 발전되고 있다. 하지만, 복잡한 연산을 지원하는 CPU는 순차적 처리에 최적화되었기에 다중 처리 업무에는 한계가 있다. 반면, CPU에 비해 제공하는 기능은 단순하지만 수천개의 코어들을 활용하여 고속으로 병렬 처리하는 능력을 가진 GPU(Graphics Processing Unit)가 그래픽 처리만을 위한 장치에서 범용 연산의 성능 가속을 위한 용도로 많이 사용되고 있다. 이러한 GPU는 그래픽 처리에 한정되어 사용되는 것이 아니라 범용으로 사용된다고 하여 GPGPU(General-Purpose computing on GPUs)라고도 명명된다.
CPU와 GPGPU의 이종 계산 장치로 구성된 근래의 시스템들에서, 복잡한 의사 결정과 자원 배분을 담당하는 CPU의 통제하에 GPGPU가 단순하지만 양이 많은 처리를 담당하는 형태로 활용되고 있다. 최근 대부분의 컴퓨터들은 기본적으로 GPGPU를 장착하고 있으며, 이종 계산 장치(CPU, GPGPU, APU, MIC(many integrated core) 등)를 포함하는 컴퓨팅 환경이 여러 분야에서 널리 활용되고 있다.
기존에 데이터 관리 시스템에서의 질의 처리시, 고속 질의 처리를 위해 CPU가 제공하는 벡터 처리 기능을 질의 실행에 활용하거나 질의 실행을 위한 일부 연산을 GPGPU에 오프로딩하여 실행시키고 있다. 또한, 근래에는 GPGPU 상에서 모든 질의 처리가 이루어지는 시스템들도 등장하고 있다.
그러나 기존에는 이종 계산 장치를 포함하는 컴퓨팅 환경에서 질의 처리를 위해 이종 계산 장치 중 일부(CPU 혹은 GPU) 만을 사용함으로써 시스템의 자원 활용률이 낮아지게 되고, 특정 계산 장치에 부하가 가중되어 사용자 응답 시간이 길어지며 처리량이 감소되는 문제점이 있다. 이로 인해 해당 시스템에 대한 만족도가 낮아질 수 있다.
본 발명이 해결하고자 하는 과제는 질의 처리시 가용한 이종 계산 장치를 모두 활용하여 질의를 처리하는 방법 및 장치를 제공하는 것이다.
본 발명의 특징에 따른 질의 처리 방법은, 질의 처리 장치가 입력되는 질의를 처리하는 방법으로서, 상기 질의 처리 장치가, 이종 계산 자원에 포함되는 복수의 계산 자원을 모두 활용하여 상기 질의를 처리하기 위한 최적의 질의 실행 계획을 생성하는 단계; 상기 질의 실행 계획에 포함되는 데이터 분할 비율에 따라 상기 질의에 대응하는 데이터를 분할하여 각 계산 자원에 할당하는 단계; 및 각 계산 자원 기반으로 상기 분할된 데이터를 각각 처리하는 단계를 포함한다.
상기 질의 실행 계획은 질의를 구성하는 각 연산별로, 연산을 실행할 계산 자원, 연산 실행 방법, 그리고 데이터 분할 비율을 포함하고, 연산을 적용할 데이터 정보를 추가적으로 포함할 수 있다.
상기 최적의 질의 실행 계획을 생성하는 단계는, 복수의 계산 자원에 대한 가용한 계산 자원 상황에 따라, 연산에 대해 가용한 계산 자원을 활용하도록 구현된 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계를 포함할 수 있다.
상기 연산 실행 방법을 결정하는 단계는, 상기 가용한 계산 자원이 하나인 경우, 상기 하나의 계산 자원을 활용하는 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계; 및 상기 가용한 계산 자원이 둘 이상인 경우, 상기 둘 이상의 계산 자원을 모두 활용하는 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계를 포함할 수 있다.
이때, 상기 가용한 계산 자원이 CPU와 GPGPU인 경우, 상기 비용은 데이터를 분할하는 시간, 상기 CPU를 활용하도록 할당된 데이터에 대해 상기 CPU를 이용한 연산 비용과 상기 GPGPU를 활용하도록 할당된 데이터에 대해 상기 GPGPU를 이용한 연산 비용 중 큰 값, 그리고 상기 CPU를 이용한 연산의 결과와 상기 GPGPU를 이용한 연산의 결과를 병합하는 결과 병합 예상 시간을 포함할 수 있다.
상기 질의 실행 계획을 생성하는 단계는, 상기 이종 계산 자원에 포함되는 복수의 계산 자원들이 데이터를 처리할 데이터 분할 비율을 고려하여 상기 최적의 질의 실행 계획을 생성할 수 있다. 이 경우, 상기 데이터 분할 비율은 전체 데이터 중에서 이종 계산 자원 중 CPU를 활용하여 처리해야 하는 데이터의 비율을 나타낼 수 있다.
상기 이종 계산 자원이 CPU와 상기 CPU 이외의 다른 계산 자원을 포함하고, 상기 CPU와 다른 계산 자원을 모두 활용하는 경우, 상기 질의 실행 계획을 생성하는 단계는, 최소 연산 비용을 가지는 최적의 데이터 분할 비율을 구하는 단계를 더 포함할 수 있다.
상기 최적의 데이터 분할 비율을 구하는 단계는, 제1 데이터 분할 비율과 제2 데이터 분할 비율로 구성되는 탐색 구간에 대하여, 제1 데이터 분할 비율일 때의 예상 비용과 제2 데이터 분할 비율일 때의 예상 비용을 비교하는 제1 단계; 비교 결과, 제1 데이터 분할 비율과 제2 데이터 분할 비율 중에서, 더 큰 예상 비용을 가지는 데이터 분할 비율을 이동값만큼 중간값 방향으로 이동시켜, 상기 탐색 구간을 축소시키는 제2 단계; 및 상기 축소된 탐색 구간에 대하여 상기 제1 단계와 상기 제2 단계를 반복적으로 수행하여, 최소 연산 비용을 가지는 최적의 데이터 분할 비율을 구하는 제3 단계를 포함할 수 있다.
상기 이동값은 다음의 수식:
이동값 = 제1 데이터 분할 비율 ± (제1 데이터 분할 비율 + 제2 데이터 분할 비율)/2×r)에 따라 산출될 수 있으며, r은 비용 계산 탐색 범위 축소 비율을 나타내며, 상기 제1 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 연산 수행 비용이 더 큰 데이터 분할 비율을 나타내고, 상기 제2 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 연산 수행 비용이 더 적은 데이터 분할 비율을 나타낼 수 있다.
상기 비용 계산 탐색 범위 축소 비율 r은 연산 별로 다른 값을 가질 수 있다.
한편, 상기 처리하는 단계는, 상기 복수의 계산 자원의 각 계산 자원별로 할당된 데이터에 대하여 해당 계산 자원 기반의 연산을 각각 실행하는 단계; 각 계산 자원 기반의 연산 실행 결과들을 병합하는 단계; 및 상기 병합된 연산 실행 결과를 질의 처리 결과로 제공하는 단계를 포함할 수 있다.
본 발명의 다른 특징에 따른 질의 처리 장치는, 질의와 이에 대응하는 데이터를 입력받도록 구성되는 입출력부; 그리고 상기 입출력부와 연결되고, 질의 처리를 수행하는 프로세서를 포함하며, 상기 프로세서는, 이종 계산 자원에 포함되는 복수의 계산 자원을 모두 활용하여 상기 질의를 처리하기 위한 최적의 질의 실행 계획--상기 질의에 대응하는 데이터를 분할하여 각 계산 자원에 할당하는 데이터 분할 비율을 포함--을 생성하도록 구성되는 질의 최적화 모듈; 각각의 계산 자원 기반의 연산을 제공하도록 구성되는 연산 제공 모듈; 및 상기 질의 실행 계획에 따라 상기 연산 제공 모듈의 임의 계산 자원 기반의 연산을 호출하고, 상기 호출된 연산의 계산 자원에 할당된 데이터를 토대로 해당 연산을 실행하도록 구성되는 질의 실행 모듈을 포함한다.
상기 질의 실행 계획은 질의를 구성하는 각 연산별로, 연산을 실행할 계산 자원, 연산 실행 방법, 그리고 데이터 분할 비율을 포함하고, 연산을 적용할 데이터 정보를 추가적으로 포함할 수 있다.
상기 질의 최적화 모듈은, 복수의 계산 자원에 대한 가용한 계산 자원 상황에 따라, 연산에 대해 가용한 계산 자원을 활용하도록 구현된 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정할 수 있다.
상기 가용한 계산 자원이 CPU인 경우, 상기 비용은 상기 CPU를 활용한 연산 예상 실행 시간이고, 상기 가용한 계산 자원이 GPGPU인 경우, 상기 비용은 데이터를 GPGPU 메모리로 복사하는 제1 복사 시간, 상기 GPGPU를 활용한 연산 예상 실행 시간, 그리고 연산 실행 결과를 GPGPU 메모리에서 호스트의 메모리로 복사하는 제2 복사 시간을 포함할 수 있다.
또한, 상기 가용한 계산 자원이 CPU와 GPGPU인 경우, 상기 비용은 데이터를 분할하는 시간, 상기 CPU를 활용하도록 할당된 데이터에 대해 상기 CPU를 이용한 연산 비용과 상기 GPGPU를 활용하도록 할당된 데이터에 대해 상기 GPGPU를 이용한 연산 비용 중 큰 값, 그리고 상기 CPU를 이용한 연산의 결과와 상기 GPGPU를 이용한 연산의 결과를 병합하는 결과 병합 예상 시간을 포함할 수 있다.
상기 데이터 분할 비율은 전체 데이터 중에서 이종 계산 자원 중 CPU를 활용하여 처리해야 하는 데이터의 비율을 나타낼 수 있다.
상기 연산 제공 모듈은, 상기 각각의 계산 자원 기반의 연산 이외에서, 실행 결과 병합 연산을 상기 질의 실행 모듈로 제공하며, 각 연산 별 비용 모델을 상기 질의 최적화 모듈로 제공할 수 있다.
상기 질의 실행 모듈은, 상기 연산 제공 모듈로부터 각 연산을 호출하여, 상기 복수의 계산 자원의 각 계산 자원별로 할당된 데이터에 대하여 해당 계산 자원 기반의 연산을 각각 실행하고, 각 계산 자원 기반의 연산 실행 결과들을 병합하여 제공하며, 연산 실행이 종료되면 해당 연산의 계산 자원의 사용 종료를 상기 계산 자원 관리 모듈로 통보할 수 있다.
본 발명의 실시 예에 따르면, 이종 계산 장치들을 포함하는 컴퓨팅 환경에서 질의 처리를 위해 이종 계산 장치들 모두를 사용함으로써 사용자의 질의 처리 요청에 대한 응답 시간을 줄이고, 시스템의 자원 활용률과 처리량을 증가시킬 수 있다.
또한, 이종 계산 장치들 일부 또는 모두 사용하는 방법들 중에서 최소의 비용이 소용되는 방법으로 질의를 처리함으로써, 효율적인 질의 처리를 수행할 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 시스템의 구조를 나타낸 도이다.
도 2는 본 발명의 실시 예에 따른 질의 처리부의 구조를 나타낸 도이다.
도 3은 본 발명의 실시 예에 따른 연산 제공 모듈의 구조를 나타낸 도이다.
도 4는 본 발명의 실시 예에 따른 질의 처리 방법의 흐름도이다.
도 5는 본 발명의 실시 예에 따른 질의 실행 계획 생성 과정을 나타낸 흐름도이다.
도 6은 본 발명의 실시 예에 따른 최적의 데이터 분할 비율을 구하는 과정을 나타낸 예시 도이다.
도 7은 본 발명의 실시 예에 따른 질의를 실행하는 질의 처리 과정을 나타낸 흐름도이다.
도 8은 본 발명의 실시 예에 따른 질의 처리 방법에서 이종 계산 자원을 활용한 질의 처리 기본 연산 실행의 예시를 나타낸 도이다.
도 9는 본 발명의 실시 예에 따른 다른 질의 처리 장치의 구조도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명의 실시 예에 따른 질의 처리 방법 및 장치에 대하여 설명한다.
도 1은 본 발명의 실시 예에 따른 데이터 관리 시스템의 구조를 나타낸 도이다.
첨부한 도 1에서와 같이, 본 발명의 실시 예에 따른 참조하여 설명하면, 전형적인 데이터 관리 시스템(1)은 사용자 인터페이스부(10), 질의 처리부(20), 데이터 저장부(30), 그리고 저장소(40)를 포함한다.
사용자 인터페이스부(10)는 사용자가 데이터 관리 시스템을 용이하게 사용할 수 있도록 인터페이스를 제공한다. 사용자 인터페이스부(10)는 SQL(structured query language), JDBC(java database connectivity) 드라이버, ODBC(open database connectivity) 드라이버, 유틸리티(utility) 명령어 등을 포함할 수 있다.
질의 처리부(20)는 사용자 인터페이스부(10)를 통해 전달된 사용자 요청(질의)을 처리하도록 구성된다.
데이터 저장부(30)는 데이터를 저장소(40)에 저장하여 관리하도록 구성된다. 질의 처리부(20)는 데이터 저장부(30)에서 제공하는 기능을 활용하여 저장소(40)에 저장된 데이터에 접근할 수 있다. 저장소(40)는 DRAM(dynamic random, access memory), SSD(solid state disk), HDD(hard disk drive) 등과 같은 물리적 저장소이다.
이러한 구조로 이루어지는 데이터 관리 시스템(1)에서, 질의 처리부(20)는 일반적으로 입력되는 사용자 요청에 대응하는 질의문의 구문과 의미 분석을 수행하여 질의문을 파스 트리(parse tree) 형태로 변환하고, 파스 트리에 대해 최적의 실행 계획을 세우고, 실행 계획에 기반하여 일련의 연산 호출을 통해 질의를 실행하고 그 결과를 사용자에게 돌려준다.
본 발명의 실시 예에서는 이종 계산 장치로 구성된 컴퓨터(혹은 컴퓨팅) 환경에서 질의 처리시 가용한 이종 계산 장치를 모두 활용하여 질의를 처리한다. 이하에서는 설명의 편의를 위하여, 이종 계산 장치들로 구성된 컴퓨터(혹은 컴퓨팅) 환경은 계산 장치인 CPU(central processing unit)와 GPGPU(General-Purpose computing on GPUs)로 구성된 컴퓨터(혹은 컴퓨팅)를 나타내지만, 본 발명은 이에 한정되지 않는다. 또한, CPU와 GPGPU를 설명의 편의상 계산 자원이라고도 명명하며, CPU와 GPGPU를 포함하여 이종 계산 자원이라고도 명명한다.
본 발명의 실시 예에 따른 질의 처리부(20)는 다음과 같은 구조로 이루어진다.
도 2는 본 발명의 실시 예에 따른 질의 처리부의 구조를 나타낸 도이다.
첨부한 도 2에서와 같이, 본 발명의 실시 예에 따른 질의 처리부(20)는, 크게 질의 파싱 모듈(21), 질의 최적화 모듈(22), 계산 자원 관리 모듈(23), 연산 제공 모듈(24), 질의 실행 모듈(25)을 포함한다.
질의 파싱 모듈(21)은 사용자 인터페이스(10)를 통하여 입력되는 사용자 요청에 대응하는 질의문의 구문과 의미 검사를 수행하여 질의문을 파스 트리 형태로 변환하도록 구성된다.
계산 자원 관리 모듈(23)은 CPU와 GPGPU로 구성된 이종 계산 자원에 대한 관리, 모니터링 및 자원 스케줄링(할당) 기능을 수행하도록 구성된다. 계산 자원 관리 모듈(23)은 이종 계산 자원이 부하 기반으로 효율적으로 활용될 수 있도록 하기 위해, 계산 자원 모니터링 정보 즉, 연산을 수행할 수 있는 가용한 계산 자원에 대한 정보를 질의 최적화 모듈(22)로 제공한다.
연산 제공 모듈(24)은 이종 계산 장치인 CPU와 GPGPU를 활용한 연산 및 실행 결과 병합 연산을 제공하고, 또한 각 연산 별 비용 모델을 제공하도록 구성된다.
질의 최적화 모듈(22)은 연산 제공 모듈(24)에서 제공되는 연산의 비용 모델과 계산 자원 관리 모듈(23)에서 제공되는 계산 자원 모니터링 정보를 활용하여, 해당 질의에 대한 최적의 실행 계획을 생성하도록 구성된다. 최적의 실행 계획을 생성하는 것은, 사용자의 질의에 대하여 빠른 질의 응답을 제공하기 위해 질의를 구성하는 질의 연산의 수행 순서 및 방법을 정하는 것을 의미한다. 질의 최적화 모듈(22)은 질의에 필요한 연산을 어떤 순서로 실행할지 뿐만 아니라 연산(예, 조인(JOIN))을 수행하는데 있어서 어떤 방법(예, CPU 기반 해시 조인)으로 하는지를 결정한다. 기존에는 연산을 수행하는 방법을 정하는데 있어서 이종 계산 자원에 대한 고려가 부족하였다. 즉, 기존에는 질의 연산 수행에 하나의 계산 자원만을 활용하는 것만 고려했다. 그러나 본 발명의 실시 예에 따른 질의 최적화 모듈(22)은 이종 계산 자원의 활용과 자원 활용률을 고려하여, 가용한 모든 자원을 활용하여 최적의 질의 실행 계획을 생성한다. 생성된 질의 실행 계획은 질의를 구성하는 각 연산별로, 해당 연산을 어떠한 방법으로 실행하는지에 대한 계획을 포함한다. 예를 들어, 질의 실행 계획은 연산별로 연산을 적용할 데이터 정보, 연산을 실행할 계산 자원, 연산 실행 방법, 데이터 분할 비율 등을 포함한다.
질의 실행 모듈(25)은 질의 최적화 모듈(22)에 의해 생성된 최적의 실행 계획에 기반하여, 일련의 연산 호출을 통해 질의를 실행하여 결과를 생성하도록 구성된다. 질의 실행 모듈(25)은 질의 실행 환경을 구축하고 최적의 질의 실행 계획을 토대로 연산 제공 모듈(24)로부터 제공되는 질의 처리를 위한 연산을 활용하여 실행하고 제어한다. 또한, 필요시, 질의 실행 계획에 따라 데이터를 분할하여 데이터를 GPGPU 메모리로 이동시키거나 GPGPU 기반 연산의 실행 결과를 호스트의 메모리로 가져오는 기능을 수행한다.
한편, 본 발명의 실시 예에서, 질의 최적화 모듈(22)은 계산 자원 관리 모듈 (23)에서 제공되는 계산 자원 모니터링 정보를 활용하여 질의 실행 계획을 정하고, 질의 실행 계획의 연산 수행 방법에 따라 질의를 구성하는 연산 실행에 이용될 계산 자원이 정해지면 해당 계산 자원의 사용을 계산 자원 관리 모듈(23)에 알리고, 질의 실행 모듈(25)은 질의 실행이 종료되면 계산 자원의 사용이 종료되었음을 계산 자원 관리 모듈(23)로 알린다.
한편, 질의 처리부(20)의 연산 제공 모듈(24)은 이종 계산 자원으로 구성된 컴퓨팅 시스템에서 질의 처리를 위해 연산을 효과적으로 제공하기 위하여 도 3과 같은 구조로 이루어진다.
도 3은 본 발명의 실시 예에 따른 연산 제공 모듈(24)의 구조를 나타낸 도이다.
첨부한 도 3에서와 같이, 본 발명의 실시 예에 따른 연산 제공 모듈(24)은, 제1 자원 기반 기본 연산 부모듈(241), 제2 자원 기반 기본 연산 부모듈(242), 실행 결과 병합 연산 부모듈(243)을 포함한다.
제1 자원 기반 기본 연산 부모듈(241)은 질의 처리를 위한 연산(예: JOIN)을 구성하는 기본 연산(예: 정렬(Sort), 해쉬(Hash) 테이블(Table))을 제1 계산 자원 예를 들어, CPU를 활용하여 제공하도록 구성된다.
제2 자원 기반 기본 연산 부모듈(242)은 질의 처리를 위한 연산을 구성하는 기본 연산을 제2 계산 자원 예를 들어, GPGPU를 활용하여 제공하도록 구성된다.
실행 결과 병합 연산 부모듈(243)은 제1 계산 자원 기반 연산 결과와 제2 계산 자원 기반 연산 결과를 병합하여 하나의 결과로 생성하도록 구성된다.
여기서는 이종 계산 자원이 CPU와 GPGPU의 2개로 이루어진 컴퓨팅 환경을 예로 들어서, 연산 제공 모듈(24)의 구조를 설명하였으나, 본 발명은 이에 한정되지 않으며, 이종 계산 자원이 2개가 아닌 3개 이상의 계산 자원들로 이루어진 경우에는 제1 및 제2 자원 기반 기본 연산 부모듈(241, 242) 이외에, 다른 자원 기반 기본 연산 부모듈이 연산 제공 모듈(24)에 추가될 수 있다.
이러한 구조로 이루어지는 질의 처리부(20)는 질의 처리 장치라고도 명명될 수 있다.
다음에는 위에 기술된 구조를 기반으로, 본 발명의 실시 예에 따른 질의 처리 방법에 대하여 설명한다.
도 4는 본 발명의 실시 예에 따른 질의 처리 방법의 흐름도이다.
사용자 요청에 대응하는 질의문이 입력되면, 질의 처리부(20)는 질의문에 대하여 구문과 의미 검사를 수행하여 질의문을 파스 트리 형태로 변환한다(S100, S110). 이후, 질의 처리부(20)는 계산 자원 모니터링을 수행하여 현재 연산을 수행할 수 있는 가용한 계산 자원에 대한 정보를 획득한다(S120).
질의 처리부(20)는 연산에 대한 비용 모델을 획득하고(S130), 획득한 비용 모델과 계산 자원 모니터링 정보를 활용하여 해당 질의에 대한 최적의 실행 계획을 생성하며, 특히, 이종 계산 자원의 활용과 자원 활용률을 고려하여, 가용한 모든 계산 자원을 활용하여 최적의 질의 실행 계획을 생성한다(S140). 질의 처리부(20)는 가용한 계산 자원 상황에 따라 최소의 비용을 가지는 연산 수행 방법을 정하는데, 이때 데이터를 계산 장치 별로 나누어 처리하는 것을 고려하여 연산 수행 방법과 데이터 분할 비율을 포함하는 질의 실행 계획을 생성한다.
이후, 생성된 질의 실행 계획에 따른 연산 수행 방법을 토대로 질의를 구성하는 연산 실행에 이용될 계산 자원이 모든 계산 자원들이면(S150) 즉, 이용될 계산 자원이 CPU와 GUGPU 모두인 경우, 질의 처리부(20)는 데이터 분할 비율에 따라 입력되는 질의에 대응하는 데이터를 각 계산 자원별로 분할한다(S160). 데이터 분할 비율은 전체 데이터 중에서 CPU를 활용하여 처리해야 하는 데이터의 비율을 나타내며, 예를 들어, 0.0에서 1.0 사이의 값을 가진다. 데이터 분할 비율(OPd)의 값이 1.0 이라는 것은 전체 데이터를 CPU를 활용하여 처리한다는 것을 나타내며, 데이터 분할 비율(OPd)의 값이 0.0 이라는 것은 CPU를 활용하여 처리하는 데이터가 없음을 나타낸다.
질의 처리부(20)는 분할된 데이터를 해당 계산 자원 기반의 연산을 통하여 처리한다(S170).
모든 계산 자원별 질의 처리가 완료되면, 질의 처리부(20)는 각 계산 자원별 질의 처리 결과를 병합하고(S180), 병합된 질의 처리 결과를 제공한다(S190). 질의 처리 결과는 사용자 인터페이스(10)를 통하여 사용자에게 제공될 수 있다.
한편, 질의 처리부(20)는 연산 실행에 이용될 계산 자원이 모든 계산 자원이 아라 특정 자원 하나인 경우(S150), 질의에 대응하는 데이터를 해당 계산 자원 기반의 연산을 통하여 처리한다(S200). 그리고 질의 처리 결과를 제공한다(S210).
다음에는 위에 기술된 바와 같은 질의 처리 방법에서, 최적의 질의 실행 계획을 생성하는 과정에 대하여 보다 구체적으로 설명한다.
도 5는 본 발명의 실시 예에 따른 질의 실행 계획 생성 과정을 나타낸 흐름도이다.
질의에 필요한 연산을 어떤 순서로 실행하고, 연산을 수행하는데 있어서 어떤 방법으로 할지를 결정하기 위하여, 첨부한 도 5에서와 같이, 질의 처리부(20)의 질의 최적화 모듈(22)은, 연산과 연산을 적용할 데이터에 대한 정보를 입력 받는다. 연산을 적용할 데이터에 대한 정보는 데이터 크기, 인덱스 정보 등을 포함한다.
질의 최적화 모듈(22)은 계산 자원 관리 모듈(23)로부터 연산 실행이 가용한 계산 자원에 대한 정보인 계산 자원 모니터링 정보를 제공받는다(S300). 또한, 연산 제공 모듈(24)로부터 가용한 계산 자원을 활용한 연산의 비용 모델을 제공받는다(S310).
연산 실행을 위한 최적의 방법을 찾기 위하여, 질의 최적화 모듈(22)은 연산 수행 방법을 결정하기 위한 파라미터인 연산의 최소 비용(OPc)을 초기값 예를 들어, 최대 값(MAX_DOUBLE)으로 설정한다(S320). 그리고 가용한 계산 자원 상황에 따라 연산 비용 모델을 활용하여 연산 수행을 위한 최소 비용(OPc)과 최소 비용의 방법(OPm)을 구한다.
구체적으로, 질의 최적화 모듈(22)은 계산 자원 모니터링 정보에서 제1 계산 자원 즉, CPU가 가용한지를 판단한다(S330). 만약 CPU가 가용하면, 해당 연산에 대해 CPU를 활용하도록 구현한 여러 방법들 중 비용이 최소인 방법(CPUm)을 찾고 그 때의 비용(CPUc)을 구한다(S340). CPU를 활용하도록 구현한 여러 방법들 중 비용이 최소인 방법(CPUm)을 CPU만 활용하는 방법이라고 하고, 그때의 비용(CPUc)을 CPU만 활용하는 방법의 최소 비용(CPUc)이라고 한다.
다음, 현재까지의 최소 비용(OPc)과 CPU만 활용하는 방법의 최소 비용(CPUc)을 비교한다(S350). 만약 CPU만 활용하는 방법의 최소 비용(CPUc)이 현재까지의 최소 비용(OPc) 보다 작으면, 최적의 방법(OPm)을 CPU만 활용하는 방법(CPUm)으로 설정하고, 최소 비용(OPc)를 CPU만 활용하는 방법의 최소 비용(CPUc)의 값으로 설정하며, 데이터 분할 비율(OPd)을 1.0으로 설정한다(S360). 반면, 만약 CPU만 활용하는 방법의 최소 비용(CPUc)이 현재까지의 최소 비용(OPc) 보다 크거나 같으면, 최적의 방법(OPm)과 최소 비용(OPc)은 변경되지 않고 유지된다.
또한, 계산 자원 모니터링 정보에서 제2 계산 자원인 GPCPU만 가용한지를 판단한다(S370). 만약 GPGPU가 가용하면, 해당 연산에 대해 GPGPU를 활용하도록 구현한 여러 방법들 중 비용이 최소인 방법(GPGPUm)을 찾고, 그 때의 비용(GPGPUc)을 구한다(S380). GPGPU를 활용하도록 구현한 여러 방법들 중 비용이 최소인 방법(GPGPUm)을 GPGPU만 활용하는 방법이라고 하고, 그때의 비용(GPGPUc)을 GPGPU만 활용하는 방법의 최소 비용(GPGPUc)이라고 한다.
현재까지의 최소 비용(OPc)과 GPGPU만 활용하는 방법의 최소 비용(GPGPUc)을 비교한다(S390). 만약 GPGPU만 활용하는 방법의 최소 비용(GPGPUc)이 현재까지의 최소 비용(OPc) 보다 작으면, 최적의 방법(OPm)을 GPGPU만 활용하는 방법(GPGPUm)으로 설정하고, 최소 비용(OPc)을 GPGPU만 활용하는 방법의 최소 비용(GPGPUc)으로 설정하며, 데이터 분할 비율(OPd)을 0.0으로 설정한다(S400). 반면, 만약 GPGPU만 활용하는 방법의 최소 비용(GPGPUc)이 현재까지의 최소 비용(OPc) 보다 크거나 같으면, 최적의 방법(OPm)과 최소 비용(OPc)은 변경되지 않고 유지된다.
또한, 계산 자원 모니터링 정보에서 제1 계산 자원인 CPU와 제2 계산 자원인 GPCPU 모두가 가용한지를 판단한다(S410). 만약 모두 가용하면, 해당 연산에 대해 CPU와 GPGPU 모두를 활용하도록 구현한 여러 방법들 중 비용이 최소일 때의 데이터 분할 비율(ALLd)과 방법(ALLm)을 찾고, 그 때의 비용(ALLc)을 구한다(S420). CPU와 GPGPU 모두를 활용하도록 구현한 여러 방법들 중 비용이 최소일 때의 방법(ALLm)을 모두 활용하는 방법이라고 하고, 그 때의 비용을 모두 활용하는 방법의 최소 비용(ALLc)이라고 하며, CPU와 GPGPU 모두를 활용하도록 구현한 여러 방법들 중 비용이 최소일 때의 데이터 분할 비율(ALLd)을 모두 활용하는 방법의 데이터 분할 비율이라고 한다.
현재까지의 최소 비용(OPc)과 모두 활용하는 방법의 최소 비용(ALLc)을 비교한다(S430). 만약 모두를 활용하는 방법의 최소 비용(ALLc)이 현재까지의 최소 비용(OPc)보다 작으면, 최적의 방법(OPm)을 모두 활용하는 방법(ALLm)으로 설정하고, 최소 비용(OPc)를 모두를 활용하는 방법의 최소 비용(ALLc)의 값으로 설정한다. 그리고 데이터 분할 비율(OPd)을 모두 활용하는 방법의 데이터 분할 비율(ALLd)로 설정한다(S440).
이러한 과정을 통하여, 질의를 구성하는 소정 연산에 대하여, 연산 실행이 가용한 계산 자원에 따라, 해당 연산에 대해 가용한 계산 자원(들)을 활용하도록 구현한 여러 방법들 중 비용이 최소인 방법(OPm) 즉, 연산 실행을 위한 최적의 방법을 찾을 수 있다.
이후, 질의 최적화 모듈(22)은 연산 실행을 위한 최적의 방법(OPm)에 따라 연산을 위해 사용할 예정인 계산 자원(CPU 및/또는 GUGPU)을 계산 자원 관리 모듈(23)에 알리고(S450), 최적의 방법(OPm)과 최적의 데이터 분할 비율(OPd)을 반환한다(S460). 최적의 방법(OPm) 즉, 연산 수행 방법과 최적의 데이터 분할 비율(OPd)은 질의 실행 모듈(25)로 제공된다.
이러한 따른 질의 실행 계획 생성 과정에서, 비용 계산을 수행하는 방법에 대하여 살펴보면, 다음과 같이, 연산 실행을 위한 최적의 방법을 찾기 위해서 최적의 연산자 선정을 위한 비용 계산을 수행한다. 비용은 예상 소요 시간, 예상 전력 사용량 등을 포함할 수 있으나, 본 발명의 실시 예에서는 설명의 편의를 위해, 비용이 예상 소요 시간을 포함하는 것을 토대로 비용 계산을 수행하는 방법에 대하여 살펴본다. 그러나 본 발명은 이에 한정되지 않는다.
CPU만 활용하는 방법의 비용 즉, CPU 기반 연산 비용(Ccpu)은 CPU를 활용한 연산 예상 실행 시간(Ecpu)으로 다음과 같이 나타낼 수 있다.
Figure pat00001
그리고 GPGPU만 활용하는 방법의 비용 즉, GPGPU 기반 연산 비용(Cgpu)은 데이터를 GPGPU 메모리 공간으로 복사하는 시간(Dinput)(제1 복사 시간이라고 명명될 수 있음), GPGPU를 활용한 연산 예상 실행 시간(Egpu), 그리고 결과를 GPGPU 메모리에서 호스트의 메모리로 복사하는 시간(Dresult)(제2 복사 시간이라고 명명될 수 있음)을 포함하며, 다음과 같이 나타낼 수 있다.
Figure pat00002
또한, CPU와 GPGPU를 모두 활용하는 방법의 비용 즉, CPU와 GPGPU를 모두 활용하여 입력 데이터 중 비율(p) 만큼을 CPU가 처리하고 나머지를 GPGPU가 처리하는 연산의 비용(Call,p)은, 데이터를 분할하는 시간(S), CPU를 활용하도록 할당된 데이터에 대해 CPU를 이용한 연산 비용(Ccpu,p)과 GPGPU를 활용하도록 할당된 데이터에 대해 GPGPU를 이용한 연산 비용(Cgpu,(1-p))중 큰 값, 그리고 결과 병합 예상 시간(M)을 포함하며, 다음과 같이 나타낼 수 있다.
Figure pat00003
여기서 Call,p 는 전체 데이터 중 CPU가 처리할 데이터의 비율이 p일 때의 비용이다.
한편, 연산 실행을 위한 최적의 방법을 찾는 과정에서, CPU와 GPGPU를 모두 사용하는 경우의 비용은 데이터 분할 비율에 따라 달라질 수 있다. 즉, CPU가 처리하는 비율(p)를 토대로 연산의 비용(Call)이 달라지므로, 달라지는 비용들 중에서 최소의 비용을 구해야 하므로, 이를 수식으로 나타내면 다음과 같다.
Figure pat00004
최적의 데이터 분할 비율을 구하기 위한 예상 비용 계산이 부하가 될 수 있으므로, 모든 p 값에 대해 예상 비용을 계산하여 비교하는 것이 아니라, 변형된 이진 탐색 기법에 기반하여 특정 비율(비용 계산 탐색 범위 축소 비율 r)로 그 범위를 줄여가면서 최적의 데이터 분할 비율을 구할 수 있다. 본 발명의 실시 예에 따르면 비용 계산 탐색 범위 축소 비율 r은 연산 별로 달라질 수 있으며, 연산의 비용 모델에 포함되어 함께 제공된다. 즉, 데이터 분할 비율이 0.0 과 1.0일 때의 예상 비용을 구하여 비교한 후, 높은 비용이 드는 데이터 분할 비율에 대해 비용 계산 탐색 범위 축소 비율 r을 적용하여 소정값만큼 이동시켜 탐색 범위를 축소시켰을 때의 비용과 낮은 비용을 비교하는 방법을 계속 적용한다.
도 6은 본 발명의 실시 예에 따른 최적의 데이터 분할 비율을 구하는 과정을 나타낸 예시도이다.
여기서, 비용 계산 탐색 범위 축소 비율 r 이 "0.4"인 것으로 가정한다. 첨부한 도 6에 예시된 바와 같이, 먼저, 최적의 데이터 분할 비율을 구하기 위한 탐색 구간(0.0과 1.0)에서, 데이터 분할 비율이 0.0과 1.0일때의 예상 비용 Call,0.0 과 Call,1.0을 각각 구하여 비교한다. 비교 결과, Call,1.0이 더 크므로, 예상 비용이 더 큰 데이터 분할 비율 1.0을 이동값 만큼 중간값 쪽으로 이동시킨다(S1).
중간값은 탐색 구간을 구성하는 데이터 분할 비율(예: 0.0과 1.0)의 중간값을 나타낸다. 이동값은 비용 계산 탐색 범위 축소 비율 r을 탐색 구간에 적용하여 산출된 값으로, "이동값 = 제1 데이터 분할 비율 ± (제1 데이터 분할 비율 + 제2 데이터 분할 비율)/2×r)"에 따라 산출될 수 있다. 여기서, 제1 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 비용이 더 큰 데이터 분할 비율을 나타내고, 제2 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 비용이 더 적은 데이터 분할 비율을 나타낸다. ±는 이동 방향에 따라 "+" 또는 "-"가 된다.
단계(S1)에서, 탐색 구간(0.0과 1.0)에서 이동값은 0.2(=1.0-(0.0+1.0)/2×0.4)이다. 이러한 이동값 0.2에 따라 예상 비용이 더 큰 데이터 분할 비율 1.0을 중간값 쪽으로 이동시킨다. 그 결과, 탐색 구간은 0.0과 0.8이 된다.
이후, 새로운 탐색 구간(0.0과 0.8)에서, 데이터 분할 비율 0.0과 0.8 일 때의 예상 비용 Call,0.0과 Call,0.8을 구하여 비교하고, 비교 결과 Call,0.0이 더 크므로, 예상 비용이 더 큰 데이터 분할 비율 0.0을 이동값(0.16=0.0+(0.0+0.8)/2×0.4) 만큼 중간값 쪽으로 이동시킨다(S2). 그 결과 탐색 구간은 0.16과 0.8이 된다(S3).
이와 같은 과정을 탐색 구간의 값이 만날 때까지 반복하여, 최소의 비용을 가지는 최적의 비율(p)의 값을 구한다. 이와 같이 구해진 비율(p)이 데이터 분할 비율로 사용된다.
다음에는 위에 기술된 바와 같은 질의 처리 방법에서, 연산을 통한 질의 처리 과정에 대하여 보다 구체적으로 설명한다.
도 7은 본 발명의 실시 예에 따른 질의를 실행하는 질의 처리 과정을 나타낸 흐름도이다.
질의 최적화 모듈(22)에 의해 생성되어 질의 실행 모듈(25)로 제공되는 질의 실행 계획은 질의를 구성하는 연산을 어떠한 방법으로 실행하는지에 대한 계획이 각 연산 별로 포함되어 있다. 질의 실행 모듈(25)은 이러한 질의 실행 계획을 참조하여 연산을 실행한다. 질의 실행 계획은 연산별로 연산을 적용할 데이터 정보, 연산을 실행할 계산 자원, 연산 실행 방법, 데이터 분할 비율 등을 포함한다.
질의 최적화 모듈(22)에 의해 계산 자원 관리 모듈(23)에 연산 실행에 이용될 계산 자원이 통보된 상태에서, 질의 실행 모듈(25)은 먼저, 임의 연산에 대하여, 해당 연산을 실행할 계산 자원이 어떤 계산 자원인지를 판단하여 연산을 실행한다. 구체적으로, 첨부한 도 7에서와 같이, 질의 실행 모듈(25)은 해당 연산이 제1 계산 자원인 CPU만을 활용하여 수행하는 연산인지를 판단하여(S500), 만약 CPU만 활용하는 연산이면, 입력 데이터에 대해 CPU 기반 기본 연산을 적용하여 연산을 실행한다(S510).
또한, 해당 연산이 제2 계산 자원인 GPGPU만을 활용하여 수행하는 연산인지를 판단하여(S520), 만약 GPGPU만을 활용하는 연산이면, 입력 데이터를 GPGPU 메모리로 복사한 후(S530), GPGPU 기반 기본 연산을 적용하여 연산을 실행하고(S540), 실행 결과를 호스트의 메모리로 복사한다(S550).
만약 해당 연산이 이종 계산 자원 모두를 활용하여 수행하도록 실행이 계획된 경우에는 입력 데이터를 데이터 분할 비율에 따라 분할하고(S560), 분할된 각각의 입력 데이터에 대해 동시에 CPU 기반 기본 연산과 GPGPU 기반 기본 연산을 활용하여 연산을 실행한다. 구체적으로 GPGPU 기반 기본 연산을 적용하는 데이터에 대해서는 GPGPU 메모리 상으로 복사를 하고(S570), 분할된 각각의 입력 데이터에 대해 CPU 기반 기본 연산과 GPGPU 기반 기본 연산을 각각 활용하여 연산을 실행하며(S580), 연산 실행 결과를 호스트 메모리로 복사한다(S590). 이후 질의 실행 모듈(25)은 CPU 기반 기본 연산 실행 결과와 GPGPU 기반 기본 연산 실행 결과를 병합하여 연산의 실행 결과를 생성한다(S600).
질의 실행 모듈(25)은 위의 연산의 실행 결과를 생성한 모든 경우에, 계산 자원 사용 종료를 계산 자원 관리 모듈(23)에 알리고(S610), 그 다음에 실행 결과를 반환하고(S620) 종료한다. 실행 결과는 사용자에게 제공된다.
도 8은 본 발명의 실시 예에 따른 질의 처리 방법에서 이종 계산 자원을 활용한 질의 처리 기본 연산 실행의 예시를 나타낸 도이다.
본 발명의 실시 예에 따른 이종 계산 자원을 활용하여 질의 처리를 수행하는 기본 연산 실행을 살펴보기 위하여, 도 8에 예시되어 있듯이, 테이블(foo)의 소정 열(col1)의 값이 5보다 큰 행의 수를 구하는 질의(Q1)가 있다고 가정한다. 이러한 질의를 구성하는 질의 처리 기본 연산으로 열(col1)의 값이 5보다 큰 경우를 선택(selection)하는 연산이 포함된다.
이러한 질의를 본 발명의 실시 예에 따른 이종 계산 자원을 활용하여 처리하기 위하여, 최저의 질의 실행 계획에 명시된 데이터 분할 비율에 따라 데이터(D1)를 분할하고, GPGPU가 처리해야 할 데이터(D12)를 GPGPU의 메모리 공간으로 복사한다. CPU가 처리해야 할 데이터(D11)는 호스트의 메모리 공간으로 제공된다.
이와 같이 나누어진 데이터에 대해 동시에 각각 CPU와 GPGPU를 활용하여 필터링 조건을 만족하는 행을 선택한다. 즉, CPU가 담당하도록 할당된 데이터(D1)와 GPGPU가 담당하도록 할당된 데이터(D12)가 각각, 제1 계산 자원 기반 기본 연산 부모듈(241)이 제공하는 선택(Selection) 연산(C1)과 제2 계산 자원 기반 기본 연산 부모듈(242)이 제공하는 선택(Selection) 연산(C2)을 통해 처리된다. 각각의 처리 결과(R1, R2)는 병합을 담당하는 실행 결과 병합 연산 부모듈(243)에 의해 병합되어, 최종 처리 결과(R3)가 제공된다.
기존에는 처리할 모든 데이터(D1)에 대해, CPU 혹은 GPGPU 하나만을 활용하여 선택 연산을 실행하였으며, 이 경우 다른 하나의 계산 자원은 사용되지 않는다. 그러나 본 발명의 실시 예에 따르면, 가용한 모든 계산 자원을 활용하여 선택 연산을 실행할 수 있다. 따라서, 질의 응답시간이 빨라질 수 있으며 자원 활용률을 높일 수 있다.
도 9는 본 발명의 실시 예에 따른 다른 질의 처리 장치의 구조도이다.
첨부한 도 9에 도시되어 있듯이, 본 발명의 실시 예에 따른 질의 처리 장치(200)는, 프로세서(210), 메모리(220) 및 입출력부(230)를 포함한다. 프로세서(210)는 CPU와 GPGPU 등 이종 계산 장치를 모두 포함할 수 있으며, 위의 도 2 내지 도 7을 토대로 설명한 방법들을 구현하도록 구성될 수 있다. 예를 들어, 프로세서(210)는 질의 파싱 모듈, 질의 최적화 모듈, 계산 자원 관리 모듈, 연산 제공 모듈, 질의 실행 모듈의 기능을 수행하도록 구성될 수 있다.
메모리(220)는 프로세서(210)와 연결되고 프로세서(210)의 동작과 관련한 다양한 정보를 저장한다. 메모리(220)는 프로세서(210)에서 수행하기 위한 동작을 위한 명령어(instructions)를 저장하고 있거나 저장 장치(도시하지 않음)로부터 명령어를 로드하여 일시 저장할 수 있다.
프로세서(210)는 메모리(220)에 저장되어 있거나 로드된 명령어를 실행할 수 있다. 프로세서(210)와 메모리(220)는 버스(도시하지 않음)를 통해 서로 연결되어 있으며, 버스에는 입출력 인터페이스(도시하지 않음)도 연결되어 있을 수 있다.
입출력부(230)는 프로세서(210)의 처리 결과를 출력하거나 질의와 이에 대응하는 데이터를 입력받아 프로세서(210)로 제공하도록 구성된다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (19)

  1. 질의 처리 장치가 입력되는 질의를 처리하는 방법으로서,
    상기 질의 처리 장치가, 이종 계산 자원에 포함되는 복수의 계산 자원을 모두 활용하여 상기 질의를 처리하기 위한 최적의 질의 실행 계획을 생성하는 단계;
    상기 질의 실행 계획에 포함되는 데이터 분할 비율에 따라 상기 질의에 대응하는 데이터를 분할하여 각 계산 자원에 할당하는 단계; 및
    각 계산 자원 기반으로 상기 분할된 데이터를 각각 처리하는 단계
    를 포함하는, 질의 처리 방법.
  2. 제1항에 있어서,
    상기 질의 실행 계획은 질의를 구성하는 각 연산별로, 연산을 실행할 계산 자원, 연산 실행 방법, 그리고 데이터 분할 비율을 포함하고, 연산을 적용할 데이터 정보를 추가적으로 포함하는, 질의 처리 방법.
  3. 제1항에 있어서,
    상기 최적의 질의 실행 계획을 생성하는 단계는,
    복수의 계산 자원에 대한 가용한 계산 자원 상황에 따라, 연산에 대해 가용한 계산 자원을 활용하도록 구현된 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계
    를 포함하는, 질의 처리 방법.
  4. 제3항에 있어서,
    상기 연산 실행 방법을 결정하는 단계는,
    상기 가용한 계산 자원이 하나인 경우, 상기 하나의 계산 자원을 활용하는 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계; 및
    상기 가용한 계산 자원이 둘 이상인 경우, 상기 둘 이상의 계산 자원을 모두 활용하는 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는 단계
    를 포함하는, 질의 처리 방법.
  5. 제4항에 있어서,
    상기 가용한 계산 자원이 CPU와 GPGPU인 경우, 상기 비용은 데이터를 분할하는 시간, 상기 CPU를 활용하도록 할당된 데이터에 대해 상기 CPU를 이용한 연산 비용과 상기 GPGPU를 활용하도록 할당된 데이터에 대해 상기 GPGPU를 이용한 연산 비용 중 큰 값, 그리고 상기 CPU를 이용한 연산의 결과와 상기 GPGPU를 이용한 연산의 결과를 병합하는 결과 병합 예상 시간을 포함하는, 질의 처리 방법.
  6. 제1항에 있어서,
    상기 질의 실행 계획을 생성하는 단계는,
    상기 이종 계산 자원에 포함되는 복수의 계산 자원들이 데이터를 처리할 데이터 분할 비율을 고려하여 상기 최적의 질의 실행 계획을 생성하는, 질의 처리 방법.
  7. 제6항에 있어서,
    상기 데이터 분할 비율은 전체 데이터 중에서 이종 계산 자원 중 CPU를 활용하여 처리해야 하는 데이터의 비율을 나타내는, 질의 처리 방법.
  8. 제6항에 있어서,
    상기 이종 계산 자원이 CPU와 상기 CPU 이외의 다른 계산 자원을 포함하고, 상기 CPU와 다른 계산 자원을 모두 활용하는 경우,
    상기 질의 실행 계획을 생성하는 단계는,
    최소 연산 비용을 가지는 최적의 데이터 분할 비율을 구하는 단계
    를 더 포함하는, 질의 처리 방법.
  9. 제8항에 있어서,
    상기 최적의 데이터 분할 비율을 구하는 단계는,
    제1 데이터 분할 비율과 제2 데이터 분할 비율로 구성되는 탐색 구간에 대하여, 제1 데이터 분할 비율일 때의 예상 비용과 제2 데이터 분할 비율일 때의 예상 비용을 비교하는 제1 단계;
    비교 결과, 제1 데이터 분할 비율과 제2 데이터 분할 비율 중에서, 더 큰 예상 비용을 가지는 데이터 분할 비율을 이동값만큼 중간값 방향으로 이동시켜, 상기 탐색 구간을 축소시키는 제2 단계; 및
    상기 축소된 탐색 구간에 대하여 상기 제1 단계와 상기 제2 단계를 반복적으로 수행하여, 최소 연산 비용을 가지는 최적의 데이터 분할 비율을 구하는 제3 단계
    를 포함하는, 질의 처리 방법.
  10. 제9항에 있어서,
    상기 이동값은 다음의 수식:
    이동값 = 제1 데이터 분할 비율 ± (제1 데이터 분할 비율 + 제2 데이터 분할 비율)/2×r)
    에 따라 산출되며,
    r은 비용 계산 탐색 범위 축소 비율을 나타내며, 상기 제1 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 연산 수행 비용이 더 큰 데이터 분할 비율을 나타내고, 상기 제2 데이터 분할 비율은 탐색 구간을 구성하는 데이터 분할 비율들 중에서 예상 연산 수행 비용이 더 적은 데이터 분할 비율을 나타내는, 질의 처리 방법.
  11. 제10항에 있어서,
    상기 비용 계산 탐색 범위 축소 비율 r은 연산 별로 다른 값을 가지는, 질의 처리 방법.
  12. 제1항에 있어서,
    상기 처리하는 단계는,
    상기 복수의 계산 자원의 각 계산 자원별로 할당된 데이터에 대하여 해당 계산 자원 기반의 연산을 각각 실행하는 단계;
    각 계산 자원 기반의 연산 실행 결과들을 병합하는 단계; 및
    상기 병합된 연산 실행 결과를 질의 처리 결과로 제공하는 단계
    를 포함하는, 질의 처리 방법.
  13. 질의와 이에 대응하는 데이터를 입력받도록 구성되는 입출력부; 그리고
    상기 입출력부와 연결되고, 질의 처리를 수행하는 프로세서를 포함하며,
    상기 프로세서는,
    이종 계산 자원에 포함되는 복수의 계산 자원을 모두 활용하여 상기 질의를 처리하기 위한 최적의 질의 실행 계획--상기 질의에 대응하는 데이터를 분할하여 각 계산 자원에 할당하는 데이터 분할 비율을 포함--을 생성하도록 구성되는 질의 최적화 모듈;
    각각의 계산 자원 기반의 연산을 제공하도록 구성되는 연산 제공 모듈; 및
    상기 질의 실행 계획에 따라 상기 연산 제공 모듈의 임의 계산 자원 기반의 연산을 호출하고, 상기 호출된 연산의 계산 자원에 할당된 데이터를 토대로 해당 연산을 실행하도록 구성되는 질의 실행 모듈
    을 포함하는, 질의 처리 장치.
  14. 제13항에 있어서,
    상기 질의 실행 계획은 질의를 구성하는 각 연산별로, 연산을 실행할 계산 자원, 연산 실행 방법, 그리고 데이터 분할 비율을 포함하고, 연산을 적용할 데이터 정보를 추가적으로 포함하는, 질의 처리 장치.
  15. 제13항에 있어서,
    상기 질의 최적화 모듈은,
    복수의 계산 자원에 대한 가용한 계산 자원 상황에 따라, 연산에 대해 가용한 계산 자원을 활용하도록 구현된 다수의 연산 실행 방법들 중에서, 비용이 최소인 연산 실행 방법을 결정하는, 질의 처리 장치.
  16. 제15항에 있어서,
    상기 가용한 계산 자원이 CPU인 경우, 상기 비용은 상기 CPU를 활용한 연산 예상 실행 시간이고,
    상기 가용한 계산 자원이 GPGPU인 경우, 상기 비용은 데이터를 GPGPU 메모리로 복사하는 제1 복사 시간, 상기 GPGPU를 활용한 연산 예상 실행 시간, 그리고 연산 실행 결과를 GPGPU 메모리에서 호스트의 메모리로 복사하는 제2 복사 시간을 포함하며,
    상기 가용한 계산 자원이 CPU와 GPGPU인 경우, 상기 비용은 데이터를 분할하는 시간, 상기 CPU를 활용하도록 할당된 데이터에 대해 상기 CPU를 이용한 연산 비용과 상기 GPGPU를 활용하도록 할당된 데이터에 대해 상기 GPGPU를 이용한 연산 비용 중 큰 값, 그리고 상기 CPU를 이용한 연산의 결과와 상기 GPGPU를 이용한 연산의 결과를 병합하는 결과 병합 예상 시간을 포함하는, 질의 처리 장치.
  17. 제13항에 있어서,
    상기 데이터 분할 비율은 전체 데이터 중에서 이종 계산 자원 중 CPU를 활용하여 처리해야 하는 데이터의 비율을 나타내는, 질의 처리 장치.
  18. 제13항에 있어서,
    상기 연산 제공 모듈은,
    상기 각각의 계산 자원 기반의 연산 이외에서, 실행 결과 병합 연산을 상기 질의 실행 모듈로 제공하며, 각 연산 별 비용 모델을 상기 질의 최적화 모듈로 제공하는, 질의 처리 장치.
  19. 제18항에 있어서,
    상기 질의 실행 모듈은,
    상기 연산 제공 모듈로부터 각 연산을 호출하여, 상기 복수의 계산 자원의 각 계산 자원별로 할당된 데이터에 대하여 해당 계산 자원 기반의 연산을 각각 실행하고, 각 계산 자원 기반의 연산 실행 결과들을 병합하여 제공하며, 연산 실행이 종료되면 해당 연산의 계산 자원의 사용 종료를 상기 계산 자원 관리 모듈로 통보하는, 질의 처리 장치.
KR1020160165377A 2016-12-06 2016-12-06 이종 계산 장치 기반의 질의 처리 방법 및 장치 KR102011671B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160165377A KR102011671B1 (ko) 2016-12-06 2016-12-06 이종 계산 장치 기반의 질의 처리 방법 및 장치
US15/622,451 US20180157711A1 (en) 2016-12-06 2017-06-14 Method and apparatus for processing query based on heterogeneous computing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160165377A KR102011671B1 (ko) 2016-12-06 2016-12-06 이종 계산 장치 기반의 질의 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180064922A true KR20180064922A (ko) 2018-06-15
KR102011671B1 KR102011671B1 (ko) 2019-08-19

Family

ID=62243809

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160165377A KR102011671B1 (ko) 2016-12-06 2016-12-06 이종 계산 장치 기반의 질의 처리 방법 및 장치

Country Status (2)

Country Link
US (1) US20180157711A1 (ko)
KR (1) KR102011671B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210061119A (ko) * 2019-11-19 2021-05-27 재단법인대구경북과학기술원 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US10726009B2 (en) * 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11093500B2 (en) 2019-10-28 2021-08-17 Ocient Holdings LLC Enforcement of minimum query cost rules required for access to a database system
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
CN111813524B (zh) * 2020-07-09 2023-09-08 北京奇艺世纪科技有限公司 一种任务执行方法、装置、电子设备和存储介质
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
CN115794359A (zh) * 2021-09-09 2023-03-14 深圳致星科技有限公司 用于联邦学习的异构系统及处理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090011574A (ko) * 2007-07-26 2009-02-02 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
KR20150069405A (ko) * 2013-12-13 2015-06-23 서울과학기술대학교 산학협력단 현장 의료 진단을 위한 스마트 단말

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763359B2 (en) * 2001-06-06 2004-07-13 International Business Machines Corporation Learning from empirical results in query optimization
US20070239673A1 (en) * 2006-04-05 2007-10-11 Barsness Eric L Removing nodes from a query tree based on a result set
US9418107B2 (en) * 2008-07-30 2016-08-16 At&T Intellectual Property I, L.P. Method and apparatus for performing query aware partitioning
US9836504B2 (en) * 2009-06-30 2017-12-05 Hewlett Packard Enterprise Development Lp Query progress estimation based on processed value packets
US8745037B2 (en) * 2009-12-17 2014-06-03 Microsoft Corporation Exploiting partitioning, grouping, and sorting in query optimization
US10740328B2 (en) * 2016-06-24 2020-08-11 Microsoft Technology Licensing, Llc Aggregate-query database system and processing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090011574A (ko) * 2007-07-26 2009-02-02 엘지전자 주식회사 그래픽데이터 처리 장치 및 방법
KR20150069405A (ko) * 2013-12-13 2015-06-23 서울과학기술대학교 산학협력단 현장 의료 진단을 위한 스마트 단말

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210061119A (ko) * 2019-11-19 2021-05-27 재단법인대구경북과학기술원 큰 규모 분산 행렬 곱 처리 방법 및 그 장치

Also Published As

Publication number Publication date
KR102011671B1 (ko) 2019-08-19
US20180157711A1 (en) 2018-06-07

Similar Documents

Publication Publication Date Title
KR20180064922A (ko) 이종 계산 장치 기반의 질의 처리 방법 및 장치
US7503039B2 (en) Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors
US8209703B2 (en) Apparatus and method for dataflow execution in a distributed environment using directed acyclic graph and prioritization of sub-dataflow tasks
CN110262901B (zh) 一种数据处理方法及数据处理系统
US9038088B2 (en) Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases
JP4621786B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
CN110826708B (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN113821311A (zh) 任务执行方法及存储设备
Larsonneur et al. Evaluating workflow management systems: A bioinformatics use case
EP2743867A1 (en) Efficient execution of human machine interface applications in a heterogeneous multiprocessor environment
Karnagel et al. Heterogeneity-aware operator placement in column-store DBMS
Breß et al. A framework for cost based optimization of hybrid CPU/GPU query plans in database systems
Chen et al. Benchmarking Harp-DAAL: High performance hadoop on KNL clusters
CN105229608A (zh) 基于协处理器的面向数组的数据库处理
Chirigati et al. Evaluating parameter sweep workflows in high performance computing
US8196146B2 (en) Information processing apparatus, parallel processing optimization method, and program
WO2018192479A1 (en) Adaptive code generation with a cost model for jit compiled execution in a database system
CN113626207B (zh) 地图数据处理方法、装置、设备及存储介质
JP5983623B2 (ja) タスク配置装置及びタスク配置方法
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
US20190042389A1 (en) Design assistance device, design assistance method, and recording medium storing design assistance program
JP2010009288A (ja) マルチプロセッサシステム及びプログラム実行方法
JP6322968B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN111694668B (zh) 查询任务路由方法、装置、设备及存储介质
US20230195439A1 (en) Apparatus and method with neural network computation scheduling

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant