KR20140096546A - Qr분해 연산 방법 및 기록매체 - Google Patents
Qr분해 연산 방법 및 기록매체 Download PDFInfo
- Publication number
- KR20140096546A KR20140096546A KR1020130009215A KR20130009215A KR20140096546A KR 20140096546 A KR20140096546 A KR 20140096546A KR 1020130009215 A KR1020130009215 A KR 1020130009215A KR 20130009215 A KR20130009215 A KR 20130009215A KR 20140096546 A KR20140096546 A KR 20140096546A
- Authority
- KR
- South Korea
- Prior art keywords
- gpgpu
- module
- modules
- cpu
- tile
- Prior art date
Links
- 238000000354 decomposition reaction Methods 0.000 title claims abstract description 66
- 238000000034 method Methods 0.000 title claims description 39
- 230000015654 memory Effects 0.000 claims abstract description 43
- 230000005540 biological transmission Effects 0.000 claims description 14
- 230000000737 periodic effect Effects 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 abstract description 16
- 239000011159 matrix material Substances 0.000 description 22
- 230000001419 dependent effect Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229930091051 Arenine Natural products 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/765—Cache
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)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Abstract
본 발명의 실시 예는 QR분해 연산 방법 및 기록매체에 관한 것이다.
실시 예에 따른 QR분해 연산 방법은, 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서, 상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계; 상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 하나 이상의 GPGPU 모듈을 결정하는 단계; 상기 하나 이상의 GPGPU 모듈로 상기 타일크기가 결정된 타일을 분배하는 단계; 및 상기 복수의 CPU 모듈 및 상기 하나 이상의 GPGPU 모듈을 이용하여 QR분해 연산을 하는 단계;를 포함한다.
실시 예에 따른 QR분해 연산 방법은, 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서, 상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계; 상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 하나 이상의 GPGPU 모듈을 결정하는 단계; 상기 하나 이상의 GPGPU 모듈로 상기 타일크기가 결정된 타일을 분배하는 단계; 및 상기 복수의 CPU 모듈 및 상기 하나 이상의 GPGPU 모듈을 이용하여 QR분해 연산을 하는 단계;를 포함한다.
Description
실시 예는 QR분해 연산 방법 및 기록매체에 관한 것이다.
QR분해(QR decomposition) 연산은 임의의 행렬을 직교행렬과 상삼각행렬의 곱으로 분해하는 연산이다. QR 분해는 선형 최소제곱법을 풀 때나 고유벡터를 구할 때 등의 상황에 사용된다.
QR분해의 과정을 하우스홀더 방법(Householder method)으로 설명하면 다음 수학식 1과 같다.
종래에는 QR분해 연산을 하는 과정을 CPU(Central Processing Unit)와 GPGPU(General Purpose Graphic Processing Unit)에서 각각 독립적으로 수행하였다. 하지만, CPU와 GPGPU는 연산 과정에 따라 연산 처리 시간이 다르기 때문에 큰 효율을 내기가 어려웠다.
따라서, CPU와 GPGPU를 활용하는 방법에 대한 연구가 필요하게 되었다.
실시 예는 QR분해 연산을 최적화하는 QR분해 연산 방법 및 기록매체를 제공한다.
또한, 실시 예는 CPU 및 GPGPU 사이에서 효율적인 연산 분배방식을 사용하는 QR분해 연산 방법 및 기록매체를 제공한다.
실시 예에 따른 QR분해 연산 방법은, 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서, 상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계; 상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 하나 이상의 GPGPU 모듈을 결정하는 단계; 상기 하나 이상의 GPGPU 모듈로 상기 타일크기가 결정된 타일을 분배하는 단계; 및 상기 복수의 CPU 모듈 및 상기 하나 이상의 GPGPU 모듈을 이용하여 QR분해 연산을 하는 단계;를 포함한다.
여기서, 상기 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분해 연산 방법을 설명하기 위한 순서도.
도 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을 참조한다.
수학식 2에서 #Pallalel_cores_in_GPU는 하나의 GPGPU에서 연산 가능한 타일 개수이다. 또한, 수학식 2에서 calc_time(uT)는 단일 타일의 삼각화 갱신 과정에 필요한 시간이다. 그리고, 수학식 2에서 calc_time(uK)는 단일 타일의 삼각타일제거 갱신 과정에 필요한 시간이다.
수학식 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: 연산관리 모듈
430: 타일분배 모듈 440: 연산관리 모듈
Claims (6)
- 복수의 CPU 모듈을 포함하는 CPU 및 복수의 GPGPU 모듈을 포함하는 GPGPU의 QR분해 연산 방법에 있어서,
상기 CPU 및 상기 GPGPU의 캐시 메모리를 고려하여 최적의 타일크기를 결정하는 단계;
상기 복수의 GPGPU 모듈의 수에 따른 총 소요시간을 비교하여 하나 이상의 GPGPU 모듈을 결정하는 단계;
상기 하나 이상의 GPGPU 모듈로 상기 타일크기가 결정된 타일을 분배하는 단계; 및
상기 복수의 CPU 모듈 및 상기 하나 이상의 GPGPU 모듈을 이용하여 QR분해 연산을 하는 단계;
를 포함하는, QR분해 연산 방법. - 제1항에 있어서,
상기 QR분해 연산을 하는 단계는,
상기 복수의 CPU 모듈에서 QR분해 연산의 삼각화를 하는 단계;
상기 하나 이상의 GPGPU 모듈에서 QR분해 연산의 삼각화 갱신을 하는 단계;
상기 복수의 CPU 모듈에서 QR분해 연산의 삼각타일제거를 하는 단계; 및
상기 하나 이상의 GPGPU 모듈에서 QR분행 연산의 삼각타일제거 갱신을 하는 단계;
를 포함하는, QR분해 연산 방법. - 제1항에 있어서,
상기 최적의 타일크기는 캐시 메모리 적중률을 최대화할 수 있는 타일크기인, QR분해 연산 방법. - 제1항에 있어서,
상기 총 소요시간은 연산 소요시간과 데이터 전송 소요시간을 더한 시간인, QR분해 연산 방법. - 제1항에 있어서,
상기 타일을 분배하는 단계는 주기적 열 분배방식을 사용하는 단계를 포함하는, QR분해 연산 방법. - 제1항 내지 제5항 중 어느 한 항에 따른 QR분해 연산 방법을 기록한 컴퓨터로 판독 가능한 기록매체.
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 true KR20140096546A (ko) | 2014-08-06 |
KR101473955B1 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102505279B1 (ko) * | 2015-07-24 | 2023-03-02 | 삼성전자주식회사 | 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012003619A (ja) * | 2010-06-18 | 2012-01-05 | Sony Corp | 情報処理装置、情報処理装置の制御方法、およびプログラム |
-
2013
- 2013-01-28 KR KR1020130009215A patent/KR101473955B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR101473955B1 (ko) | 2014-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101572879B1 (ko) | 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법 | |
US20180075105A1 (en) | Efficient evaluation of queries with multiple predicate expressions | |
US8762655B2 (en) | Optimizing output vector data generation using a formatted matrix data structure | |
Cong et al. | Fast PGAS implementation of distributed graph algorithms | |
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
EP3295300B1 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
US8997071B2 (en) | Optimized division of work among processors in a heterogeneous processing system | |
Thaler et al. | Porting the COSMO weather model to manycore CPUs | |
JP2018506107A (ja) | 基数推定を介した結合パスの効率的な判定 | |
US20150120758A1 (en) | Distributed processing of data records | |
JP6446125B2 (ja) | リソースリーク検出の方法、装置及びシステム | |
Jain et al. | Input/output in parallel and distributed computer systems | |
JP2011060278A (ja) | 自律的サブシステムアーキテクチャー | |
CN104102549A (zh) | 一种实现多线程互斥操作的方法、装置和芯片 | |
Liu et al. | 3D-stacked many-core architecture for biological sequence analysis problems | |
Xu et al. | Performance tuning and analysis for stencil-based applications on POWER8 processor | |
US11030714B2 (en) | Wide key hash table for a graphics processing unit | |
Kono et al. | Evaluations of OpenCL-written tsunami simulation on FPGA and comparison with GPU implementation | |
KR101473955B1 (ko) | Qr분해 연산 방법 및 기록매체 | |
US10223260B2 (en) | Compiler-generated memory mapping hints | |
US10013393B2 (en) | Parallel computer system, parallel computing method, and program storage medium | |
Sundfeld et al. | Using GPU to accelerate the pairwise structural RNA alignment with base pair probabilities | |
CN102141906A (zh) | 基于阵列的线程倒计时 | |
Giles et al. | An analytical study of loop tiling for a large-scale unstructured mesh application | |
CN105988954B (zh) | 区域描述元管理方法及其电子装置 |
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 |