KR101473955B1 - Qr분해 연산 방법 및 기록매체 - Google Patents

Qr분해 연산 방법 및 기록매체 Download PDF

Info

Publication number
KR101473955B1
KR101473955B1 KR1020130009215A KR20130009215A KR101473955B1 KR 101473955 B1 KR101473955 B1 KR 101473955B1 KR 1020130009215 A KR1020130009215 A KR 1020130009215A KR 20130009215 A KR20130009215 A KR 20130009215A KR 101473955 B1 KR101473955 B1 KR 101473955B1
Authority
KR
South Korea
Prior art keywords
gpgpu
time
tile
modules
module
Prior art date
Application number
KR1020130009215A
Other languages
English (en)
Other versions
KR20140096546A (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 KR1020130009215A priority Critical patent/KR101473955B1/ko
Publication of KR20140096546A publication Critical patent/KR20140096546A/ko
Application granted granted Critical
Publication of KR101473955B1 publication Critical patent/KR101473955B1/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명의 실시 예는 QR분해 연산 방법 및 기록매체에 관한 것이다.
실시 예에 따른 QR분해 연산 방법은, 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서, 상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계; 상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 가장 짧은 시간에 완료한 GPGPU 모듈의 수를 결정하는 단계; 상기 GPGPU 모듈의 수가 결정된 GPGPU로 상기 타일크기가 결정된 타일을 분배하는 단계; 및 상기 CPU 및 상기 GPGPU 모듈의 수가 결정된 GPGPU를 이용하여 QR분해 연산을 하는 단계; 를 포함하고, 상기 총 소요시간은 연산 소요시간(Top)과 데이터 전송 소요시간(Tcomm)을 더한 시간이고, 상기 연산 소요시간(Top)은 [수학식 1]에 의해 계산되고, 상기 전송 소요시간(Tcomm)은 [수학식 2]에 의해 계산된다.
[수학식 1]
Figure 112014098491921-pat00019

여기서, #Pallalel_cores_in_GPU는 하나의 GPGPU에서 연산 가능한 타일 개수이다. 또한, calc_time(uT)는 단일 타일의 삼각화 갱신 과정에 필요한 시간이다. 그리고, calc_time(uK)는 단일 타일의 삼각타일제거 갱신 과정에 필요한 시간이다.
[수학식 2]
Figure 112014098491921-pat00020

여기서, M(log2M + 1)T2은 하나의 GPGPU 모듈에 대해 전송이 필요한 행렬 요소의 개수이다. 또한, element_data_size는 행렬의 한 요소가 차지하는 데이터 크기이다. 그리고, send_speed 및 recv_speed는 데이터 송신 및 수신 속도이다.

Description

QR분해 연산 방법 및 기록매체{QR DECOMPOSITION METHOD AND RECORDING MEDIUM THEREOF}
실시 예는 QR분해 연산 방법 및 기록매체에 관한 것이다.
QR분해(QR decomposition) 연산은 임의의 행렬을 직교행렬과 상삼각행렬의 곱으로 분해하는 연산이다. QR 분해는 선형 최소제곱법을 풀 때나 고유벡터를 구할 때 등의 상황에 사용된다.
QR분해의 과정을 하우스홀더 방법(Householder method)으로 설명하면 다음 수학식 1과 같다.
Figure 112013007946813-pat00001
종래에는 QR분해 연산을 하는 과정을 CPU(Central Processing Unit)와 GPGPU(General Purpose Graphic Processing Unit)에서 각각 독립적으로 수행하였다. 하지만, CPU와 GPGPU는 연산 과정에 따라 연산 처리 시간이 다르기 때문에 큰 효율을 내기가 어려웠다.
따라서, CPU와 GPGPU를 활용하는 방법에 대한 연구가 필요하게 되었다.
[1]한국등록특허 제10-0932789호 (등록일: 2009.12.10) [2]미국등록특허 제7,928,763호 (등록일: 2011.04.19) [3]미국공개특허 제2012-0296950호 (공개일: 2012.11.22)
실시 예는 QR분해 연산을 최적화하는 QR분해 연산 방법 및 기록매체를 제공한다.
또한, 실시 예는 CPU 및 GPGPU 사이에서 효율적인 연산 분배방식을 사용하는 QR분해 연산 방법 및 기록매체를 제공한다.
실시 예에 따른 QR분해 연산 방법은, 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서, 상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계; 상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 가장 짧은 시간에 완료한 GPGPU 모듈의 수를 결정하는 단계; 상기 GPGPU 모듈의 수가 결정된 GPGPU로 상기 타일크기가 결정된 타일을 분배하는 단계; 및 상기 CPU 및 상기 GPGPU 모듈의 수가 결정된 GPGPU를 이용하여 QR분해 연산을 하는 단계;를 포함하고, 상기 총 소요시간은 연산 소요시간(Top)과 데이터 전송 소요시간(Tcomm)을 더한 시간이고, 상기 연산 소요시간(Top)은 [수학식 1]에 의해 계산되고, 상기 전송 소요시간(Tcomm)은 [수학식 2]에 의해 계산된다.
[수학식 1]
Figure 112014098491921-pat00015

여기서, #Pallalel_cores_in_GPU는 하나의 GPGPU에서 연산 가능한 타일 개수이다. 또한, calc_time(uT)는 단일 타일의 삼각화 갱신 과정에 필요한 시간이다. 그리고, calc_time(uK)는 단일 타일의 삼각타일제거 갱신 과정에 필요한 시간이다.
[수학식 2]
Figure 112014098491921-pat00016

여기서, M(log2M + 1)T2은 하나의 GPGPU 모듈에 대해 전송이 필요한 행렬 요소의 개수이다. 또한, element_data_size는 행렬의 한 요소가 차지하는 데이터 크기이다. 그리고, send_speed 및 recv_speed는 데이터 송신 및 수신 속도이다.
여기서, 상기 QR분해 연산을 하는 단계는, 상기 복수의 CPU 모듈에서 QR분해 연산의 삼각화를 하는 단계; 상기 하나 이상의 GPGPU 모듈에서 QR분해 연산의 삼각화 갱신을 하는 단계; 상기 복수의 CPU 모듈에서 QR분해 연산의 삼각타일제거를 하는 단계; 및 상기 하나 이상의 GPGPU 모듈에서 QR분해 연산의 삼각타일제거 갱신을 하는 단계;를 포함할 수 있다.
여기서, 상기 최적의 타일크기는 캐시 메모리 적중률을 최대화할 수 있는 타일크기일 수 있다.
여기서, 상기 총 소요시간은 연산 소요시간과 데이터 전송 소요시간을 더한 시간일 수 있다.
여기서, 상기 타일을 분배하는 단계는 주기적 열 분배방식을 사용하는 단계를 포함할 수 있다.
한편 실시 예의 다른 카테고리로서, 실시 예는 QR분해 연산 방법을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.
실시 예에 따른 QR분해 연산 방법 및 기록매체는 QR분해 연산을 최적화할 수 있는 이점이 있다.
또한, 실시 예는 성능이 다른 CPU 및 GPGPU 사이에서 효율적인 연산 분배방식을 사용할 수 있는 이점이 있다.
도 1은 제1실시 예에 따른 QR분해 연산 시스템의 블록 구성도.
도 2는 제2실시 예에 따른 QR분해 연산 시스템의 하드웨어에 대한 개념도.
도 3은 CPU 및 GPGPU의 동작속도에 대한 그래프.
도 4는 제2실시 예에 따른 QR분해 연산 시스템의 소프트웨어에 대한 개념도.
도 5는 GPU의 수에 따른 QR연산 수행 시간에 대한 그래프.
도 6은 도 4의 연산장치결정 모듈을 이용하여 GPGPU 모듈의 수를 결정하는 방법을 설명하기 위한 순서도.
도 7은 도 6의 연산장치결정 모듈이 비교하는 GPGPU의 수에 따른 총 소요시간에 대한 그래프.
도 8은 도 4의 타일분배 모듈의 일 예.
도 9는 도 4의 연산관리 모듈의 QR분해 연산 방향성 비사이클 그래프.
도 10은 도 4의 연산관리 모듈의 연산과정을 설명하기 위한 일 예.
도 11은 제2실시 예에 따른 QR분해 연산 방법을 설명하기 위한 순서도.
도면에서 각층의 두께나 크기는 설명의 편의 및 명확성을 위하여 과장되거나 생략되거나 또는 개략적으로 도시되었다. 또한 각 구성요소의 크기는 실제크기를 전적으로 반영하는 것은 아니다.
본 발명에 따른 실시 예의 설명에 있어서, 어느 한 element가 다른 element의 " 상(위) 또는 하(아래)(on or under)"에 형성되는 것으로 기재되는 경우에 있어, 상(위) 또는 하(아래)(on or under)는 두 개의 element가 서로 직접(directly)접촉되거나 하나 이상의 다른 element가 상기 두 element사이에 배치되어(indirectly) 형성되는 것을 모두 포함한다. 또한 “상(위) 또는 하(아래)(on or under)”으로 표현되는 경우 하나의 element를 기준으로 위쪽 방향뿐만 아니라 아래쪽 방향의 의미도 포함할 수 있다.
이하 첨부된 도면을 참조하여 본 발명의 실시 예에 따른 QR분해 연산 방법 및 기록매체를 설명한다.
<제1실시 예>
도 1은 제1실시 예에 따른 QR분해 연산 시스템의 블록 구성도이다.
도 1을 참조하면, 제1실시 예에 따른 QR분해(QR decomposition) 연산 시스템(100)은 타일(tile)화 모듈(110), 타일(tile)분배 모듈(120), CPU연산 수행 모듈(130) 및 GPGPU연산 수행 모듈(140)을 포함할 수 있다.
타일화 모듈(110)은 QR분해 요청신호가 입력되면, 입력받은 행렬을 분할하는 모듈이다. 타일화 모듈(110)은 크기가 큰 행렬 연산을 일정 크기의 작은 행렬인 타일(tile) 단위로 분할할 수 있다. 여기서, 일정 크기는 CPU(Central Processing Unit) 또는 GPGPU(General Purpose Graphic Processing Unit)의 연산속도에 따라 달라질 수 있는 크기이다.
타일분배 모듈(120)은 타일화 모듈(110)에서 분할한 타일을 여러 연산 장치에 분배하는 모듈이다. 여기서, 여러 연산 장치는 CPU 및 GPGPU를 포함한다.
CPU연산 수행 모듈(130) 및 GPGPU연산 수행 모듈(140)은 타일분배 모듈(120)로부터 분배받은 타일을 QR분해 연산하는 모듈들이다.
QR분해 연산은 4단계를 가진다.
첫째 단계는 삼각화 단계(T, Triangulation)로 하나의 타일에 QR연산을 수행한다.
둘째 단계는 삼각화 갱신단계(uT, update for Triangulation)로 삼각화 단계(T)의 결과인 Q행렬을 해당 타일의 우측 타일에 행렬 곱셈 연산을 수행한다.
셋째 단계는 삼각타일제거 단계(K, Kill triangle)로 삼각화 된 타일 중 불필요한 부분을 ‘0’으로 바꿔주는 연산을 하는 단계이다. 또한, 상하로 배치된 두 개의 타일을 묶어 QR연산을 수행한다.
넷째 단계는 삼각타일제거 갱신단계(uK, update for Killing)로 삼각타일제거 단계(K)의 결과인 Q행렬을 해당 타일들의 우측 타일에 행렬 곱셈 연산을 수행한다.
이와 같이, 제1실시 예에 따른 QR분해 연산 시스템은 CPU뿐만 아니라 GPGPU에서도 연산을 수행할 수 있는 이점이 있다.
<제2실시 예>
도 2는 제2실시 예에 따른 QR분해 연산 시스템의 하드웨어에 대한 개념도이고, 도 3은 CPU와 GPGPU의 동작속도에 대한 그래프이다. 구체적으로, 도 3은 QR분해 연산의 단계별 CPU와 GPGPU의 하나의 타일(32x32)을 연산하는데 걸리는 시간을 나타내는 그래프이다. 여기서, 세로 측의 usec는 microsecond의 약어로서, 1 usec는 1/1,000,000초와 같다.
도 2 및 도 3을 참조하면, 제2실시 예에 따른 QR분해 연산 시스템의 하드웨어(hardware)는 CPU(200), 메인 메모리(210), GPGPU(300) 및 GPGPU메모리(310)를 포함할 수 있다.
CPU(200)는 다수의 코어로 이루어진 멀티 CPU일 수 있다. 또한, GPGPU(300)는 다수의 코어로 이루어진 멀티 GPGPU일 수 있다. 여기서, 다수의 코어는 복수의 CPU 모듈 및 복수의 GPGPU 모듈로 설명한다.
메인 메모리(210)는 CPU(200)와 연결되어 CPU(200)에서 수행한 데이터(data) 및 타일을 보관할 수 있다. 또한, GPGPU메모리(310)는 GPGPU(300)와 연결되어 GPGPU(300)에서 수행한 데이터를 보관할 수 있다. 메인 메모리(210)는 GPGPU메모리(310)와 PCIe(Peripheral Component Interconnect-express)통신을 이용하여 데이터를 교환할 수 있다. 따라서, CPU(200)는 CPU메모리(210)를 이용하여 GPGPU(300)와 데이터를 교환할 수 있다. 또한, GPGPU(300)는 GPGPU메모리(310)를 이용하여 CPU(200)와 데이터를 교환할 수 있다.
CPU(200)는 캐시 메모리(미도시, cache memory)를 포함한다. 여기서, 캐시메모리는 임시메모리, 버퍼메모리(buffer memory) 및 로컬 메모리(local memory)로써, 자주 사용되거나 더 빨리 처리 해야 하는 데이터를 저장하여 메인 메모리(210)에 접근하지 않고도 데이터를 처리할 수 있는 메모리이다.
또한, GPGPU(300)는 GPGPU메모리(310)에 접근하지 않고도 데이터를 처리할 수 있는 캐시 메모리(미도시)를 포함한다.
CPU(200)와 GPGPU(300)는 도 1에서 설명한 QR분해 연산을 수행할 수 있다. CPU(200)와 GPGPU(300)의 단계별 연산속도를 살펴보면, 도 3과 같이, CPU(200)는 GPGPU(300)보다 첫째 단계(삼각화) 및 셋째 단계(삼각타일제거)의 연산속도가 빠르다. 또한, GPGPU(300)는 CPU(200)보다 둘째 단계(삼각화 갱신) 및 넷째 단계(삼각타일제거 갱신)의 연산속도가 빠르다. GPGPU(300)가 CPU(200)보다 첫째 단계 및 셋째 단계의 연산속도가 느린 이유는 타일 내부의 병렬화에 제한이 있기 때문이다.
따라서, 제2실시 예에 따른 QR분해 연산 시스템은 CPU(200)가 첫째 단계 및 셋째 단계를 연산하고, GPGPU(300)가 둘째 단계 및 넷째 단계를 연산하도록 할 수 있다. 자세한 설명은 이후에 설명하도록 한다.
도 4는 제2실시 예에 따른 QR분해 연산 시스템의 소프트웨어에 대한 개념도이다.
도 4를 참조하면, 제2실시 예에 따른 QR분해 연산 시스템은 타일크기결정 모듈(410), 연산장치결정 모듈(420), 타일분배 모듈(430) 및 연산관리 모듈(440)을 포함할 수 있다.
타일크기결정 모듈(410)은 연산관리 모듈(440)로부터 CPU의 캐시 메모리 용량 및 GPGPU의 캐시 메모리 용량을 전송받아 최적의 타일크기를 결정할 수 있다. 최적의 타일크기는 캐시 메모리 적중률(cache memory hit ratio)을 최대화할 수 있는 타일크기일 수 있다. 캐시 메모리 적중률은 메인 메모리에 접근해야 하는 전체 횟수에 대하여 캐시 메모리만으로 충족되는 횟수의 비율이다. 따라서, 캐시 메모리에 모든 행렬원소가 들어가지 못하면 메인 메모리 참조가 증가하여 각 타일에 대한 연산 수행시간이 감소한다. 구체적으로, 타일크기결정 모듈(410)은 캐시 메모리 레지스터가 R개 존재한다면, RxR개의 행렬원소를 가지는 행렬을 하나의 타일로 결정한다.
연산장치결정 모듈(420)은 GPGPU 모듈의 수(1~N, N은 자연수)에 따른 총 소요시간(연산 소요시간+데이터 전송 소요시간, Top+Tcomm)을 비교하여 하나 이상의 GPGPU 모듈을 결정한다. 구체적으로, 연산장치결정 모듈(420)은 1개의 GPGPU 모듈을 사용했을 때, 2개의 GPGPU 모듈을 사용했을 때, … 및 N개의 GPGPU 모듈을 사용했을 때 각각의 총 소요시간을 비교하여 가장 짧은 시간에 완료한 GPGPU 모듈의 수를 결정한다. 연산장치결정 모듈(420)은 데이터 전송 비용이 매우 적은 CPU를 최대한 활용한다. 또한, 연산장치결정 모듈(420)은 데이터 전송 비용이 비교적 큰 GPGPU를 일정 수만 활용한다. GPGPU 모듈의 수를 결정하는 방법에 대한 구체적인 설명은 도 6에서 설명한다.
타일분배 모듈(430)은 CPU 및 GPGPU에 타일을 분배하는 모듈이다. 타일분배 모듈(430)은 타일크기결정 모듈(410)에서 크기가 결정된 타일들을 CPU에 전송한다. 또한, 타일분배 모듈(430)은 연산장치결정 모듈(420)에서 크기가 결정된 GPGPU 모듈로 타일크기결정 모듈(410)에서 결정된 타일들을 분배한다. 타일분배 모듈(430)의 분배방식은 주기적 열 분배(cyclic column distribution)방식이 사용될 수 있다. 여기서, 주기적 열 분배방식이란, n개의 GPGPU 모듈로 MxM개의 타일들을 분배할 때, 각 열의 번호를 i, 0≤i<M이라 하면, i번째 타일을 i%n(i를 n으로 나눈 나머지)번째 GPGPU 모듈로 분배할 수 있는 방식이다. 주기적 열 분배방식에 대한 자세한 설명은 도 8에서 설명한다.
연산관리 모듈(440)은 QR분해 연산을 총괄하는 모듈이다. 연산관리 모듈(440)은 복수의 CPU 모듈 및 복수의 GPGPU 모듈들을 포함할 수 있다. 여기서, 설명의 편의를 위해서 복수의 CPU 모듈 중에서 하나의 CPU 모듈(441)을 선택하여 설명한다. 또한, 설명의 편의를 위해서 복수의 GPGPU 모듈 중에서 하나의 GPGPU 모듈(442)를 선택하여 설명한다.
CPU 모듈(441) 및 GPGPU 모듈(442)은 분배받은 타일의 연산 스레드(thread)를 생성하여 메모리를 초기화 하고, 타일들의 동시적인 접근을 막아 오류를 줄인다. CPU 모듈(441)은 분배받은 타일의 의존 데이터를 파악한다. 여기서, 의존 데이터는 CPU 모듈(441)과 GPGPU 모듈(442)간의 상호 의존 관계를 의미하는 데이터이다. 구체적으로, CPU 모듈(441)에서 하나의 타일에 QR분해 연산을 수행하면, 상기 하나의 타일과 상호 의존 관계에 있는 타일에 의존 데이터가 전송되어 상기 의존 관계에 있는 타일에 QR분해 연산이 저장된다. 따라서, CPU 모듈(441)이 QR분해 연산의 첫째 단계를 수행하면, GPGPU 모듈(442)은 의존 데이터를 전송받아 QR분해 연산의 둘째 단계를 수행할 수 있다. CPU 모듈(441)과 GPGPU 모듈(442)의 QR분해 연산은 도 9에서 자세히 설명한다.
도 5는 GPGPU 모듈의 수에 따른 QR연산 수행 시간에 대한 그래프이다.
구체적으로, 도 5의 세로축은 QR연산 수행 시간(Time)이고, 가로축은 행렬의 크기(Matrix size, row and column size)이다.
도 5의 마름모(diamond)로 표시된 선은 1개의 GPGPU 모듈을 사용한 경우이다. 또한, 도 5의 네모(square)로 표시된 선은 2개의 GPGPU 모듈을 사용한 경우이다. 그리고, 도 5의 세모(triangle)로 표시된 선은 3개의 GPGPU 모듈을 사용한 경우이다.
도 5를 참조하면, 크기가 큰 행렬의 QR연산은 3개의 GPGPU 모듈을 사용한 경우의 연산속도가 1개의 GPGPU 모듈을 사용한 경우의 연산속도보다 빠르다는 것을 알 수 있다. 하지만, 크기가 작은 행렬의 QR연산은 1개의 GPGPU 모듈을 사용한 경우의 연산속도가 2개 및 3개의 GPGPU 모듈을 사용한 경우의 연산속도보다 빠르다는 것을 알 수 있다.
따라서, 도 4의 연산장치결정 모듈(420)은 행렬의 크기에 따라 GPGPU 모듈의 수를 결정할 수 있다.
도 6은 도 4의 연산장치결정 모듈을 이용하여 GPGPU 모듈의 수를 결정하는 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, 도 4의 연산장치결정 모듈(420)은 GPGPU 모듈의 수에 따른 총 소요시간(Top+Tcomm)을 비교한다. 여기서, 총 소요시간(Top+Tcomm)은 연산 소요시간(Top)과 데이터 전송 소요시간(Tcomm)을 더한 시간이다. 연산 소요시간(Top)을 계산하는 식은 수학식 2를 참조한다. 또한, 데이터 전송 소요시간(Tcomm)을 계산하는 식은 수학식 3을 참조한다.
Figure 112013007946813-pat00002
수학식 2에서 #Pallalel_cores_in_GPU는 하나의 GPGPU에서 연산 가능한 타일 개수이다. 또한, 수학식 2에서 calc_time(uT)는 단일 타일의 삼각화 갱신 과정에 필요한 시간이다. 그리고, 수학식 2에서 calc_time(uK)는 단일 타일의 삼각타일제거 갱신 과정에 필요한 시간이다.
Figure 112013007946813-pat00003
수학식 3에서 M(log2M + 1)T2은 하나의 GPGPU 모듈에 대해 전송이 필요한 행렬 요소의 개수이다. 또한, 수학식 3에서 element_data_size는 행렬의 한 요소가 차지하는 데이터 크기이다. 그리고, 수학식 3에서 send_speed 및 recv_speed는 데이터 송신 및 수신 속도이다.
이하에서는 연산장치결정 모듈이 총 소요시간(Top+Tcomm)을 비교하는 과정을 하나의 예를 들어 설명한다. 여기서, 전체 GPGPU 모듈의 수(N)는 4개이고, 총 소요시간(Top+Tcomm)이 가장 짧은 GPGPU 모듈의 수는 2개로 가정하여 설명하도록 한다.
먼저, 연산장치결정 모듈은 1개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)과 2개의 GPGPU 모듈들의 데이터 총 소요시간(Top+Tcomm)을 비교한다. 이때, 2개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)이 1개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)보다 짧다. 따라서, 연산장치결정 모듈은 2개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)과 3개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)을 비교한다. 이때, 2개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)이 3개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)보다 짧다. 따라서, 연산장치결정 모듈은 2개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)과 4개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)을 비교한다. 이때, 2개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)이 4개의 GPGPU 모듈의 총 소요시간(Top+Tcomm)보다 짧다. 이때, 연산장치결정 모듈은 전체 GPGPU 모듈의 수(N)가 4개이기 때문에, 총 소요시간(Top+Tcomm)이 가장 짧은 2개의 GPGPU 모듈을 선택하여 사용할 수 있다. 여기서, 연산장치결정 모듈을 이용하여 GPGPU 모듈 수를 결정하는 방법은 설명의 편의와 이해의 증진을 위한 예시일 뿐 본 발명이 반드시 이에 한정되는 것은 아니다.
도 7은 도 6의 연산장치결정 모듈이 비교하는 GPGPU 모듈의 수에 따른 총 소요 시간에 대한 그래프이다.
구체적으로, 도 7의 세로축은 소요 시간(time)이고, 가로축은 GPGPU 모듈의 수이다.
도 7의 실선(full line)은 데이터 전송 소요시간(Tcomm)이다. 또한, 도 7의 점선(dotted line)은 연산 소요시간(Top)이다. 그리고, 도 7의 쇄선(chain line)은 총 소요시간((Top+Tcomm))이다.
도 7을 참조하면, GPGPU 모듈의 수가 많아질수록 데이터 전송 소요시간(Tcomm)이 길어짐을 알 수 있다. 또한, GPGPU 모듈의 개수가 적어질수록 연산 소요시간(Top)이 길어짐을 알 수 있다. 도 7의 쇄선을 보면 A부분에서 총 소요시간(Top+Tcomm)이 가장 짧음을 알 수 있다. 따라서, 도 4의 연산장치결정 모듈(420)은 총 소요시간(Top+Tcomm)이 가장 짧은 A부분에서 가장 적합한 GPGPU의 개수를 결정할 수 있다.
도 8은 도 4의 타일분배 모듈의 일 예이다.
도 8를 참조하여 상기에서 설명한 주기적 열 분배방식을 구체적으로 설명한다. 먼저, GPGPU 모듈이 3개이고, 타일이 36개(6x6)일 때를 예를 들어 설명하면, 도 4의 타일분배 모듈(430)은 i%n(0≤i<36, n은 3)의 계산식에 의거하여 0번째 타일(0%3=1)을 GPGPU#0로 분배한다. 또한, 도 4의 타일분배 모듈(430)은 1번째 타일(1%3=1)을 GPGPU#1로 분배한다. 계속적으로, 도 4의 타일분배 모듈(430)은 마지막 타일인 35번째 타일(35%3=2)을 GPGPU#2로 분배한다. 따라서, GPGPU#0, GPGPU#1 및 GPGPU#2 에는 각각 12개의 타일이 분배될 수 있다. 여기서, 타일분배 모듈의 일 예는 설명의 편의와 이해의 증진을 위한 예시일 뿐 본 발명이 반드시 이에 한정되는 것은 아니다.
이와 같이, 도 4의 타일분배 모듈(430)은 주기적 열 분배방식으로 복수의 GPGPU 모듈로 타일을 골고루 분배할 수 있는 이점이 있다.
도 9는 도 4의 연산관리 모듈의 QR분해 연산 방향성 비사이클 그래프이다.
구체적으로, 도 9의 좌측 열은 CPU 모듈의 동작이다. 또한, 도 9의 우측 열은 GPGPU 모듈의 동작이다. 여기서, QR분해 연산은 도 1에서 설명하였으니 생략한다.
도 4 및 도 9를 참조하면, 먼저, CPU 모듈(441)은 삼각화 단계(T)를 수행한다.
다음으로, CPU 모듈(441)은 삼각타일제거 단계(K)를 수행한다. 이때, GPGPU 모듈(442)은 삼각화 갱신단계(uT)를 수행한다.
다음으로, CPU 모듈(441)은 삼각타일제거 갱신단계(uK)와 삼각화 단계(T)를 수행한다. 이때, GPGPU 모듈(442)은 삼각타일제거 갱신단계(uK)를 수행한다. 여기서, CPU 모듈(441)의 삼각타일제거 갱신단계(uK)는 해당 단계의 연산이 짧아 전송하는 시간보다 처리하는 시간이 빠를 때 수행될 수 있다. 또한, CPU 모듈(441)의 삼각타일제거 갱신단계(uK)는 급하게 삼각타일제거 갱신단계(uK)가 필요한 경우에 수행될 수 있다.
다음으로, CPU 모듈(441)과 GPGPU 모듈(442)은 상기 단계들을 반복 수행한다.
여기서, 연산관리 모듈의 QR분해 연산은 설명의 편의와 이해의 증진을 위한 예시일 뿐 본 발명이 반드시 이에 한정되는 것은 아니다.
도 10은 도 4의 연산관리 모듈의 연산과정을 설명하기 위한 일 예이다. 여기서, 도 10은 타일이 9개(3x3)일 때를 예를 들어 설명한다.
도 4 및 도 10을 참조하면, 먼저, CPU 모듈(441)은 첫 번째 열에 삼각화 단계(T)를 수행한다.
다음으로, 삼각화 단계(T)를 수행한 CPU 모듈(441)은 첫 번째 열에 삼각타일제거 단계(K)를 수행한다. 또한, GPGPU 모듈(442)은 두 번째 열부터 세 번째 열까지 삼각화 갱신단계(uT)를 수행한다.
다음으로, CPU 모듈(441)은 두 번째 열에 삼각화 단계(T)를 수행한다. 또한, GPGPU 모듈(442)은 두 번째 열에서 세 번째 열까지 삼각타일제거 갱신단계(uK)를 수행한다. 여기서, 일부 타일에는 CPU 모듈(441)의 삼각화 단계(T)와 GPGPU 모듈(442)의 삼각타일제거 갱신단계(uK)가 동시에 수행될 수 있다. 또한, 도 9에서 설명한대로 CPU 모듈(441)에서 삼각화 단계(T)와 삼각타일제거 갱신단계(uK)를 모두 수행할 수 있다.
다음으로, CPU 모듈(441)에서 두 번째 열에 삼각타일제거 단계(K)를 수행한다. 또한, GPGPU 모듈(442)에서 세 번째 열에 삼각화 갱신단계(uT)를 수행한다.
다음으로, 상기 단계를 반복하여 모든 타일의 연산을 완료한다.
여기서, 연산관리 모듈의 연산과정은 설명의 편의와 이해의 증진을 위한 예시일 뿐 본 발명이 반드시 이에 한정되는 것은 아니다.
도 11은 제2실시 예에 따른 QR분해 연산 방법을 설명하기 위한 순서도이다. 도 4를 함께 참조하여 설명하도록 한다.
도 4 및 도 11을 참조하면, 먼저 타일크기결정 모듈(410)은 연산관리 모듈(440)로부터 CPU의 캐시 메모리 용량 및 GPGPU의 캐시 메모리 용량을 전송받아 최적의 타일크기를 결정할 수 있다. 최적의 타일크기는 캐시 메모리 적중률(cache memory hit ratio)을 최대화할 수 있는 타일크기일 수 있다. 캐시 메모리 적중률은 메인 메모리에 접근해야 하는 전체 횟수에 대하여 캐시 메모리만으로 충족되는 횟수의 비율이다. 따라서, 캐시 메모리에 모든 행렬원소가 들어가지 못하면 메인 메모리 참조가 증가하여 각 타일에 대한 연산 수행시간이 감소한다. 구체적으로, 타일크기결정 모듈(410)은 캐시 메모리 레지스터가 R개 존재한다면, RxR개의 행렬원소를 가지는 행렬을 하나의 타일로 결정한다.
연산장치결정 모듈(420)은 사용할 GPGPU 모듈의 개수를 결정한다(S200). 구체적으로, 연산장치결정 모듈(420)은 GPGPU 모듈의 수(1~N, N은 자연수)에 따른 총 소요시간(연산 소요시간+데이터 전송 소요시간, Top+Tcomm)을 비교하여 하나 이상의 GPGPU 모듈을 결정한다. 구체적으로, 연산장치결정 모듈(420)은 1개의 GPGPU 모듈을 사용했을 때, 2개의 GPGPU 모듈을 사용했을 때, … 및 N개의 GPGPU 모듈을 사용했을 때 각각의 총 소요시간을 비교하여 가장 짧은 시간에 완료한 GPGPU 모듈의 수를 결정한다. 연산장치결정 모듈(420)은 데이터 전송 비용이 매우 적은 CPU를 최대한 활용한다. 또한, 연산장치결정 모듈(420)은 데이터 전송 비용이 비교적 큰 GPGPU를 일정 수만 활용한다.
타일분배 모듈(430)은 CPU 및 GPGPU에 타일을 분배하는 모듈이다. 타일분배 모듈(430)은 타일크기결정 모듈(410)에서 크기가 결정된 타일들을 CPU에 전송한다. 또한, 타일분배 모듈(430)은 연산장치결정 모듈(420)에서 크기가 결정된 GPGPU 모듈로 타일크기결정 모듈(410)에서 결정된 타일들을 분배한다. 타일분배 모듈(430)의 분배방식은 주기적 열 분배(cyclic column distribution)방식이 사용될 수 있다. 여기서, 주기적 열 분배방식이란, n개의 GPGPU 모듈로 MxM개의 타일들을 분배할 때, 각 열의 번호를 i, 0≤i<M이라 하면, i번째 타일을 i%n(i를 n으로 나눈 나머지)번째 GPGPU 모듈로 분배할 수 있는 방식이다.
연산관리 모듈(440)은 QR분해 연산을 한다(S400). 구체적으로, 연산관리 모듈(440)은 QR분해 연산을 총괄하는 모듈이다. 연산관리 모듈(440)은 복수의 CPU 모듈 및 복수의 GPGPU 모듈들을 포함할 수 있다. 여기서, 설명의 편의를 위해서 복수의 CPU 모듈 중에서 하나의 CPU 모듈(441)를 선택하여 설명한다. 또한, 설명의 편의를 위해서 복수의 GPGPU 모듈 중에서 하나의 GPGPU 모듈(442)를 선택하여 설명한다.
CPU 모듈(441) 및 GPGPU 모듈(442)은 분배받은 타일의 연산 스레드(thread)를 생성하여 메모리를 초기화 하고, 타일들의 동시적인 접근을 막아 오류를 줄인다. CPU 모듈(441)은 분배받은 타일의 의존 데이터를 파악한다. 여기서, 의존 데이터는 CPU 모듈(441)과 GPGPU 모듈(442)간의 상호 의존 관계를 의미하는 데이터이다. 구체적으로, CPU 모듈(441)에서 하나의 타일에 QR분해 연산을 수행하면, 상기 하나의 타일과 상호 의존 관계에 있는 타일에 의존 데이터가 전송되어 상기 의존 관계에 있는 타일에 QR분해 연산이 저장된다. 따라서, CPU 모듈(441)이 QR분해 연산의 첫째 단계를 수행하면, GPGPU 모듈(442)은 의존 데이터를 전송받아 QR분해 연산의 둘째 단계를 수행할 수 있다.
도 11에서 설명한 실시 예는 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터로 판독가능한 기록매체에 기록될 수 있다. 상기 컴퓨터로 판독가능한 기록매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터로 판독가능한 기록매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터로 판독가능한 기록매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 실시 예를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시예의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 실시 예에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
410: 타일크기결정 모듈 420: 연산장치결정 모듈
430: 타일분배 모듈 440: 연산관리 모듈

Claims (6)

  1. 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서,
    상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계;
    상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 가장 짧은 시간에 완료한 GPGPU 모듈의 수를 결정하는 단계;
    상기 GPGPU 모듈의 수가 결정된 GPGPU로 상기 타일크기가 결정된 타일을 분배하는 단계; 및
    상기 CPU 및 상기 GPGPU 모듈의 수가 결정된 GPGPU를 이용하여 QR분해 연산을 하는 단계;
    를 포함하고,
    상기 총 소요시간은 연산 소요시간(Top)과 데이터 전송 소요시간(Tcomm)을 더한 시간이고, 상기 연산 소요시간(Top)은 [수학식 1]에 의해 계산되고, 상기 전송 소요시간(Tcomm)은 [수학식 2]에 의해 계산되는, QR분해 연산 방법.
    [수학식 1]
    Figure 112014098491921-pat00017

    여기서, #Pallalel_cores_in_GPU는 하나의 GPGPU에서 연산 가능한 타일 개수이다. 또한, calc_time(uT)는 단일 타일의 삼각화 갱신 과정에 필요한 시간이다. 그리고, calc_time(uK)는 단일 타일의 삼각타일제거 갱신 과정에 필요한 시간이다.
    [수학식 2]
    Figure 112014098491921-pat00018

    여기서, M(log2M + 1)T2은 하나의 GPGPU 모듈에 대해 전송이 필요한 행렬 요소의 개수이다. 또한, element_data_size는 행렬의 한 요소가 차지하는 데이터 크기이다. 그리고, send_speed 및 recv_speed는 데이터 송신 및 수신 속도이다.
  2. 제1항에 있어서,
    상기 QR분해 연산을 하는 단계는,
    상기 복수의 CPU 모듈에서 QR분해 연산의 삼각화를 하는 단계;
    상기 하나 이상의 GPGPU 모듈에서 QR분해 연산의 삼각화 갱신을 하는 단계;
    상기 복수의 CPU 모듈에서 QR분해 연산의 삼각타일제거를 하는 단계; 및
    상기 하나 이상의 GPGPU 모듈에서 QR분해 연산의 삼각타일제거 갱신을 하는 단계;
    를 포함하는, QR분해 연산 방법.
  3. 제1항에 있어서,
    상기 최적의 타일크기는 캐시 메모리 적중률을 최대화할 수 있는 타일크기인, QR분해 연산 방법.
  4. 제1항에 있어서,
    상기 총 소요시간은 연산 소요시간과 데이터 전송 소요시간을 더한 시간인, QR분해 연산 방법.
  5. 제1항에 있어서,
    상기 타일을 분배하는 단계는 주기적 열 분배방식을 사용하는 단계를 포함하는, QR분해 연산 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 따른 QR분해 연산 방법을 기록한 컴퓨터로 판독 가능한 기록매체.
KR1020130009215A 2013-01-28 2013-01-28 Qr분해 연산 방법 및 기록매체 KR101473955B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130009215A KR101473955B1 (ko) 2013-01-28 2013-01-28 Qr분해 연산 방법 및 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130009215A KR101473955B1 (ko) 2013-01-28 2013-01-28 Qr분해 연산 방법 및 기록매체

Publications (2)

Publication Number Publication Date
KR20140096546A KR20140096546A (ko) 2014-08-06
KR101473955B1 true KR101473955B1 (ko) 2014-12-17

Family

ID=51744374

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130009215A KR101473955B1 (ko) 2013-01-28 2013-01-28 Qr분해 연산 방법 및 기록매체

Country Status (1)

Country Link
KR (1) KR101473955B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170012019A (ko) * 2015-07-24 2017-02-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012003619A (ja) * 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012003619A (ja) * 2010-06-18 2012-01-05 Sony Corp 情報処理装置、情報処理装置の制御方法、およびプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
QR factorization on a multicore node enhanced with multiple GPU accelerators, 25th IEEE international Parallel & Distributed Processing Symposium, 2011*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170012019A (ko) * 2015-07-24 2017-02-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법
KR102505279B1 (ko) 2015-07-24 2023-03-02 삼성전자주식회사 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법

Also Published As

Publication number Publication date
KR20140096546A (ko) 2014-08-06

Similar Documents

Publication Publication Date Title
JP6083300B2 (ja) プログラム、並列演算方法および情報処理装置
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
EP3295300B1 (en) System and method for determining concurrency factors for dispatch size of parallel processor kernels
US10482154B2 (en) Distributed processing of data records
US8997071B2 (en) Optimized division of work among processors in a heterogeneous processing system
JP2018190450A (ja) 基数推定を介した結合パスの効率的な判定
JP6446125B2 (ja) リソースリーク検出の方法、装置及びシステム
KR20190070915A (ko) 분산된 gpu들을 위해 데이터 로컬리티를 개선하기 위한 매커니즘
Donfack et al. Adapting communication-avoiding LU and QR factorizations to multicore architectures
Rucci et al. An energy‐aware performance analysis of SWIMM: Smith–Waterman implementation on Intel's Multicore and Manycore architectures
Xu et al. Performance tuning and analysis for stencil-based applications on POWER8 processor
CN105677755A (zh) 一种处理图数据的方法及装置
KR101473955B1 (ko) Qr분해 연산 방법 및 기록매체
US11030714B2 (en) Wide key hash table for a graphics processing unit
US10606652B2 (en) Determining tenant priority based on resource utilization in separate time intervals and selecting requests from a particular tenant based on the priority
US10223260B2 (en) Compiler-generated memory mapping hints
Sundfeld et al. Using GPU to accelerate the pairwise structural RNA alignment with base pair probabilities
CN102141906A (zh) 基于阵列的线程倒计时
Korch et al. An in‐depth introduction of multi‐workgroup tiling for improving the locality of explicit one‐step methods for ODE systems with limited access distance on GPUs
JP2016091488A (ja) データソート方法およびプログラム
Petrou et al. Optimization of a parallel permutation testing function for the SPRINT R package
CN106155923B (zh) 内存共享的方法和装置
Dümmler et al. Execution schemes for the NPB-MZ benchmarks on hybrid architectures: a comparative study
EP3203400A1 (en) A computer implemented method of generation of statistically uncorrelated molecule&#39;s conformations and computer programs
KR20120086999A (ko) 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171124

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee