KR101662769B1 - 고속 정렬 장치 및 방법 - Google Patents
고속 정렬 장치 및 방법 Download PDFInfo
- Publication number
- KR101662769B1 KR101662769B1 KR1020100020805A KR20100020805A KR101662769B1 KR 101662769 B1 KR101662769 B1 KR 101662769B1 KR 1020100020805 A KR1020100020805 A KR 1020100020805A KR 20100020805 A KR20100020805 A KR 20100020805A KR 101662769 B1 KR101662769 B1 KR 101662769B1
- Authority
- KR
- South Korea
- Prior art keywords
- sorting
- unit
- calculation
- group
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims description 32
- 238000010586 diagram Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 4
- 239000011664 nicotinic acid Substances 0.000 description 3
- 238000004904 shortening Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 1
- 230000003287 optical 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Image Processing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
고속 정렬 장치 및 방법이 개시된다. 정렬 대상 데이터들을 복수의 그룹으로 분할하고, 분할된 그룹에 속하는 데이터들을 각각 정렬하는데 소요되는 시간을 계산하여 정렬 대상 데이터들을 재분할할 수 있다. 그리고, 재분할된 데이터들을 각각 정렬 및 재조합하여 정렬 시간을 단축할 수 있다.
Description
고속 정렬 장치 및 방법이 개시된다. 특히, 제어장치에서 수행되는 데이터 정렬 연산을 분담하여 수행하는 고속 정렬 장치가 개시된다.
일반적으로, 디지털 데이터를 사용하기 위해 정렬(Sorting) 등의 가공 기술이 필요하다. 이때, 데이터의 양이 증가할수록 데이터 정렬을 위한 연산 시간이 많이 소모된다.
보통, 컴퓨터의 연산 속도를 증가하는 연구에 의해 데이터 정렬 시간을 감소시킬 수 있다.
그러나, 지리적으로 구역을 분할하여 지형 데이터를 연산하는 경우, 데이터의 양이 매우 방대하므로 컴퓨터 연산 속도의 증가 만으로는 정렬 시간을 충분히 단축시키는데 어려움이 존재한다.
이에 따라, 중앙 제어 장치에 집중되어 수행되는 연산을 분산하여 연산 시간을 단축할 수 있는 기술이 필요하다.
고속 정렬 방법은, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 단계, 제1 연산 예상 시간과 제2 연산 예상 시간을 이용하여 복수의 정렬 대상 데이터들을 제1 그룹과 제2 그룹으로 분할하는 단계, 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 단계, 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산하는 단계, 제1 연산 예상 시간 및 재계산된 제2 연산 예상 시간을 기초로 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할하는 단계, 및 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 단계를 포함할 수 있다.
여기서, 제1 그룹에 속하는 데이터들은, CPU에서 데이터의 정렬이 수행되고, 제2 그룹에 속하는 데이터들은, GPU에서 데이터의 정렬이 수행될 수 있다.
또한, 복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 단계, 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는 단계, 및 추출된 인덱스 및 주소를 기초로 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 단계를 더 포함할 수 있다.
또한, 재조합하는 단계는, 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 머지 정렬(MERGE SORT)을 이용하여 재조합할 수 있다.
또한, 고속 정렬 장치는, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 연산 시간 계산부, 제1 연산 예상 시간과 제2 연산 예상 시간을 이용하여 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할하는 분할부, 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 전송 시간 계산부, 전송 예상 시간을 기초로 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산하는 연산 시간 재계산부, 제1 연산 예상 시간 및 재계산된 제2 연산 예상 시간을 기초로 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할하는 재분할부, 및 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 정렬부를 포함할 수 있다.
이때, 연산 시간 계산부는, 복수의 정렬 대상 데이터들을 CPU에서 퀵 정렬(QUICK SORT)하는데 소요되는 제1 연산 예상 시간과 복수의 정렬 대상 데이터들을 GPU에서 바이토닉 정렬(BITONIC SORT)하는데 소용되는 제2 연산 예상 시간을 계산할 수 있다.
그리고, 연산 시간 재계산부는, 전송 예상 시간을 기초로 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산할 수 있다.
고속 정렬 장치는, 데이터 정렬 연산을 중앙 제어 장치 및 그래픽 제어 장치에서 병행하여 처리함으로써, 연산 시간을 단축시킬 수 있다.
도 1은 고속 정렬 장치의 구성을 도시한 도면이다.
도 2는 정렬 대상 데이터들의 인덱스 및 주소를 추출하는 동작을 설명하기 위해 제공되는 도면이다.
도 3은 정렬 대상 데이터들을 복수의 그룹으로 분할하여 정렬 및 재조합하는 정을 설명하기 위해 제공되는 도면이다.
도 5 및 도 7은 바이토닉 정렬을 설명하기 위해 제공되는 도면이다.
도 6은 정렬 대상 데이터들을 고속 정렬하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 8 및 도 9는 파이프라인 머지 정렬을 설명하기 위해 제공되는 도면이다.
도 2는 정렬 대상 데이터들의 인덱스 및 주소를 추출하는 동작을 설명하기 위해 제공되는 도면이다.
도 3은 정렬 대상 데이터들을 복수의 그룹으로 분할하여 정렬 및 재조합하는 정을 설명하기 위해 제공되는 도면이다.
도 5 및 도 7은 바이토닉 정렬을 설명하기 위해 제공되는 도면이다.
도 6은 정렬 대상 데이터들을 고속 정렬하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 8 및 도 9는 파이프라인 머지 정렬을 설명하기 위해 제공되는 도면이다.
이하에서는 첨부된 도면을 참조하여, 본 발명의 실시예를 설명하기로 한다.
도 1은 고속 정렬 장치의 구성을 도시한 도면이다.
도 1을 참조하면, 고속 정렬 장치(100)는 추출부(110), 연산 시간 계산부(120), 분할부(125), 전송 시간 계산부(130), 연산 시간 재계산부(140) 재분할부(150), 정렬부(160), 그래픽 처리부(170), 및 조합부(180)를 포함할 수 있다.
추출부(110)는 정렬 대상 데이터들 각각에 해당하는 인덱스 및 주소를 추출할 수 있다.
일례로, 정렬 대상 데이터들은 CPU(Computer Processing Unit)s의 메모리에 저장될 수 있다. 도 2를 참조하면, 추출부(110)는 정렬 대상 데이터들(210)에 저장된 메모리의 주소(230)와 데이터들 각각의 인덱스(220)를 추출할 수 있다.
연산 시간 계산부(120)는 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 계산할 수 있다.
일례로, 연산 시간 계산부(120)는 아래의 수학식 1을 이용하여 CPU에서 복수의 정렬 대상 데이터들을 퀵 정렬(QUICK SORT)하는데 소요되는 제1 연산 예상 시간(CPUt)을 계산할 수 있다. 또한, 연산 시간 계산부(120)는 아래의 수학식 2를 이용하여 GPU에서 정렬 대상 데이터들을 바이토닉 정렬(BITONIC SORT)하는데 소요되는 제2 연산 예상 시간(GPUt)을 계산할 수 있다.
수학식 1 및 2에서, n은 정렬 대상 데이터들의 개수이다.
이때, 퀵 정렬(Quick Sort)을 이용하여 제1 연산 예상 시간을 계산하는 경우, 연산 시간 계산부(120)는 퀵 정렬의 시간 복잡도(nlogn(QuickSort))를 flops(Floating-point Operations Per Second)로 나눔으로써 제1 연산 예상 시간을 계산할 수 있다.
또한, 바이토닉 정렬(Bitonic Sort)을 이용하여 제2 연산 예상 시간을 계산하는 경우, 연산 시간 계산부(120)는 바이토닉 정렬의 시간 복잡도(nlogn(n2)(BitonicSort))를 flops로 나눔으로써 제2 연산 예상 시간을 계산할 수 있다.
분할부(125)는 제1 및 제2 연산 예상 시간을 이용하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할할 수 있다.
이때, 분할부(125)는 정렬 대상 데이터들을 CPU에서 정렬을 수행하기 위한 제1 그룹과, 그래픽 처리부(170)에서 정렬을 수행하기 위한 제2 그룹으로 분할할 수 있다.
일례로, 분할부(125)는 아래의 수학식 3을 이용하여 정렬 대상 데이터들 중 분할된 제1 그룹의 크기를 계산할 수 있다.
여기서, Array는 정렬 대상 데이터들의 전체 개수, CPUarray는 제1 그룹의 크기이다.
또한, 분할부(125)는 아래의 수학식 4과 같이, 정렬 대상 데이터들의 전체 개수(Array)와 제1 그룹의 크기(CPUarray)의 차로써 제2 그룹의 크기(GPUarray)를 계산할 수 있다. 그리고, 분할부(125)는 계산된 제1 및 제2 그룹의 크기에 기초하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할할 수 있다.
전송 시간 계산부(130)는 분할된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 그래픽 처리부(170)로 전송하는데 소요되는 전송 예상 시간을 계산할 수 있다.
이때, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터 배열의 크기(GPUarray)와 그래픽 카드의 버스 속도(GPUBUS(SPEED))를 이용하여 전송 예상 시간을 계산할 수 있다.
이때, 제2 그룹에 속하는 데이터들은 버스(10)를 통해 그래픽 처리부(170)로 전송될 수 있다. 그러면, 그래픽 처리부(170)에서 정렬된 제2 그룹에 속하는 데이터들은 버스(10)를 통해 조합부(180)로 수신될 수 있다. 이에 따라, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터들이 정렬 전과 정렬 이후에 버스(10)를 통해 두 번 전송되는 시간을 기초로 전송 예상 시간을 계산할 수 있다.
일례로, 전송 시간 계산부(130)는 아래의 수학식 5와 같이, 제2 그룹에 속하는 데이터 배열의 크기(GPUarray)를 그래픽 카드의 버스 속도로 나눔으로써 전송 예상 시간(TRANSMITt)을 계산할 수 있다.
연산 시간 재계산부(140)는 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산할 수 있다.
일례로, 연산 시간 재계산부(140)는 수학식 2를 이용하여 계산된 제2 연산 예상 시간과 전송 예상 시간의 합으로써 제2 연산 예상 시간을 재계산할 수 있다. 이때, 재계산된 제2 연산 예상 시간(최종 GPUt)은 아래의 수학식 6과 같을 수 있다.
재분할부(150)는 연산 시간 계산부(120)에서 계산된 제1 연산 예상 시간과 연산 시간 재계산부(140)에서 재계산된 제2 연산 예상 시간(최종 GPUt)을 기초로 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다.
일례로, 재분할부(150)는 아래의 수학식 7과 같이, 복수의 정렬 대상 데이터들의 개수(Array), 제1 연산 예상 시간(CPUt), 및 재계산된 제2 연산 예상 시간(최종 GPUt)을 이용하여 제1 그룹의 크기를 재계산할 수 있다.
여기서, Array는 정렬 대상 데이터들의 전체 개수, CPUarray는 제1 그룹의 크기이다.
또한, 재분할부(150)는 아래의 수학식 8과 같이, 정렬 대상 데이터들의 전체 개수(Array)와 재계산된 제1 그룹의 크기(CPUarray)의 차로써 제2 그룹의 크기를 재계산할 수 있다.
그리고, 재분할부(150)는 재계산된 제1 및 제2 그룹의 크기에 기초하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다.
일례로, 도 3을 참조하면, 제1 및 제2 그룹의 크기가 4로 재계산된 경우, 재분할부(150)는 데이터 4,6,2,8을 제1 그룹(231), 데이터 3,1,7,5를 제2 그룹(232)으로 재분할할 수 있다
이때, 바이토닉 정렬의 경우, 2n개의 행렬에 대해 최적 효율을 가질 수 있다. 이에 따라, GPU에서 바이토닉 정렬을 수행하는 경우, 재분할부(150)는 계산된 제2 그룹의 크기(GPUarray)가 2의 제곱 승인지 여부를 검사할 수 있다. 제2 그룹의 크기가 2의 제곱 승이 아닌 경우, 재분할부(150)는 제2 그룹의 크기가 2의 제곱 승이 되도록 제1 그룹의 크기(CPUarray)를 조절할 수 있다.
그리고, 재분할부(150)는 재분할된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 그래픽 처리부(170)로 전송할 수 있다.
정렬부(160)는 재분할된 제1 그룹에 속하는 데이터들을 대상으로, 퀵 정렬을 수행할 수 있다. 제1 그룹에 속하는 데이터들은 퀵 정렬을 통해 2,4,6,8 순으로 정렬될 수 있다.
그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 대상으로 바이토닉 정렬을 수행할 수 있다. 제2 그룹에 속하는 데이터들은 1,3,5,7 순으로 정렬될 수 있다. 일례로, 바이토닉 정렬의 경우, 그래픽 처리부(170)는 도 4와 같이, 정렬 대상 데이터들을 바이토닉 정렬할 수 있다.
일례로, 바이토닉 정렬을 수행하는 경우, 도 7과 같이, 그래픽 처리부(170)는 복수의 스레드 블록들(thread blocks: 171) 및 메모리(global memory: 172)를 포함할 수 있다. 여기서, 스레드 블록(171)은 공유 메모리(shared memory: 1712) 및 복수의 스레드들(threads: 1711)을 포함할 수 있다.
그러면, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 2차원 메쉬 형태의 배열 여러 개로 분할하여 바이토닉 정렬을 수행하도록 스레드 블록들을 제어할 수 있다. 이때, 그래픽 처리부(170)는 아래의 수학식 9를 이용하여 스레드 블록들(171)을 동시에 제어할 수 있다.
여기서, Threadmax는 하나의 스레드 블록에서 수용할 수 있는 스레드의 최대 개수, Mcol은 2차원 메쉬의 열의 수, Mrow는 2차원 메쉬의 행의 수, SharedMemorysize는 공유 메모리의 크기, Elementsize는 floating-point 2차원 배열에 포함된 Element 하나의 크기이다.
일례로, Threadmax는 256개, SharedMemorysize는 512Kbytes, Elementsize는 8bytes인 경우, 16×16 크기의 메쉬가 한 단위가 될 수 있다. 이때, 전체 배열의 원소, 즉, 제2 그룹에 속하는 데이터들의 개수가 1024개인 경우, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 4개의 단위 메쉬로 분할하여 바이토닉 정렬을 수행할 수 있다.
일례로, 그래픽 처리부(170)는 아래의 표 1과 같이, 제2 그룹에 속하는 데이터들을 복수 개의 메쉬로 분할하여 바이토닉 정렬을 수행할 수 있다.
이때, 메쉬가 8×8로 구성된 경우, 그래픽 처리부(170)는 가로 방향의 8개 데이터들에 대해서만 바이토닉 정렬을 수행하고, 세로 방향의 8개 데이터들에 대해서는 바이토닉 정렬을 수행하지 않을 수 있다.
malloc
total
_
num
_
element
* 2
matrix
on
the
GPU
memcopyHostToDevice ( deviceMatrix , hostMatrix ); alloc threadBolck ( M col ? M row ) on the GPU ; Sort ( float origin _ matrix [ total _ num _ element ][2], float sorted _matrix[ total _ num _ element ][2]){ Mesh [ M col ][ M row ] = copied matrix from global Memory to shared memory for (j = 0; j < M; j++) ParallelBitonicSort(Mesh[j][0]) } |
표 1에서, prevMeshCount는 제2 그룹에 속하는 데이터들이 복수 개의 메쉬로 분할되는 경우, 분활 현황을 확인하기 위해 이용되는 변수이다.
그리고, 바이토닉 정렬이 완료된 경우, 그래픽 처리부(170)는 도 8과 같이, 열(column)을 구성하는 데이터들을 대상으로, 파이프라인 머지 정렬(pipeline merge sort)을 사용하여 정렬된 데이터들을 통합할 수 있다. 이때, 8×8로 구성된 메쉬가 4개이고, 메쉬의 한 열을 하나의 하부 배열로 가정하는 경우, 하나의 메쉬의 행에 해당하는 하부 배열은 8개 배열 ×4=32개가 존재할 수 있다.
일례로, 메쉬가 8×8로 구성되고, 가로 방향의 8개 데이터들은 정렬되고, 세로 방향의 8개 데이터들은 정렬되지 않은 경우, 세로 방향의 데이터들은 독립된 배열로 처리될 수 있다. 즉, 도 8과 같이, 메쉬의 한 행은 각각 하나의 독립된 배열로 처리될 수 있다.
아래의 표 2는 하나의 메시에 대한 4개의 하부 배열의 파이프라인 머지 정렬을 도시한 구조이다.
element
A, B =
elements
from
subArray
or
childNode
if ( firstStage ) { A = GetFirstElementFromSubArray (n) B = GetFirstElementFromSubArray (n+1) } if (A != NULL && B != NULL ) { each thread Compare (A, B) /* assume A is bigger */ if ( lastStage ) PutElementOnGlobalMemory (A) PutElementOnParentNode (A) A = NULL } |
표 2에 따르면, 스레드는 도 9과 같이, 그래픽 처리부(170)는 스레드가 최초 스테이지(stage)인 경우, 메쉬의 하부 배열을 구성하는 데이터들을 이용하고, 스레드가 최종 스테이지인 경우, 메모리(172)의 최종 정렬 배열에 정렬된 데이터들을 기록할 수 있다.
일례로, 그래픽 처리부(170)는 하부 배열을 구성하는 데이터들을 스테이지 별로 비교하여 파이프라인 머지 정렬을 수행할 수 있다.
그리고, 그래픽 처리부(170)는 파이프라인 머지 정렬된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 조합부(180)로 전송할 수 있다. 일례로, 그래픽 처리부(170)로는 GPU(Graphic Processing Unit)가 이용될 수 있다.
조합부(180)는 추출부(110)에서 추출된 정렬 대상 데이터들의 인덱스 및 주소를 이용하여 정렬부(170) 및 그래픽 처리부(180)에서 각각 정렬된 제1 및 제2 그룹에 속하는 데이터들을 재조합할 수 있다.
일례로, 조합부(180)는 머지 정렬(Merge Sort)을 이용하여 도 5와 같이, 추출된 인덱스를 이용하여 정렬된 데이터들을 각각 해당하는 주소에 다시 저장할 수 있다.
보다 상세하게는, 도 5를 참조하면, 조합부(180)는 정렬된 제1 그룹에 속하는 데이터들(510) 및 제2 그룹에 속하는 데이터들(520)을 각각 비교하여 정렬할 수 있다. 즉, 조합부(180)는 제1 그룹에 속하는 데이터 2와 제1 그룹에 속하는 데이터 1을 비교하여 정렬을 수행할 수 있다. 그러면, 조합부(180)는 데이터 1의 주소(&0009)를 기초로 데이터 1을 메모리에 머지 정렬할 수 있다. 이때, 조합부(180)는 머지 정렬 시, 파이프 라이닝을 이용하여 고속 정렬 장치의 성능을 향상시킬 수 있다.
도 6은 정렬 대상 데이터들을 고속 정렬하는 방법을 설명하기 위해 제공되는 흐름도 이다.
도 6을 참조하면, 연산 시간 계산부(120)는 제1 연산 예상 시간 및 제2 연산 예상 시간을 계산할 수 있다(S610). 여기서, 제1 연산 예상 시간은, 정렬 대상 데이터들을 퀵 정렬하는데 소요되는 시간, 제2 연산 예상 시간은, 정렬 대상 데이터들을 바이토닉 정렬하는데 소요되는 시간이다.
일례로, 퀵 정렬은 CPU에서 수행되고, 바이토닉 정렬은 GPU에서 수행될 수 있다. 그러면, 연산 시간 계산부(120)는 CPU에서 데이터들을 정렬하는 데 소요되는 시간을 제1 연산 예상 시간으로 계산할 수 있다. 마찬가지로, 연산 시간 계산부(120)는 GPU에서 정렬 대상 데이터들을 정렬하는 데 소요되는 시간을 제2 연산 예상 시간으로 계산할 수 있다.
분할부(125)는 정렬 대상 데이터들을 제1 및 제2 연산 예상 시간을 이용하여 제1 및 제2 그룹으로 분할할 수 있다(S620). 일례로, 제1 그룹은 CPU에서 정렬이 수행되는 데이터들을 포함하고, 제2 그룹은 GPU에서 정렬이 수행되는 데이터들을 포함할 수 있다.
그리고, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산할 수 있다(S630). 여기서, 제2 그룹에 속하는 데이터들은 그래픽 연산을 수행하는 장치로 전송될 수 있다. 일례로, 그래픽 연산을 수행하는 장치로는 GPU(Graphic Processing Unit)가 이용될 수 있다.
그러면, 연산 시간 재계산부(140)는 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산할 수 있다(S640).
일례로, 연산 시간 계산부(140)는 전송 예상 시간(TRANSMITt)과 S610단계에서 계산된 제2 연산 예상 시간(GPUt)의 합으로써 제2 연산 예상 시간(최종 GPUt)을 재계산할 수 있다.
이어, 재분할부(150)는 제1 연산 예상 시간과 재계산된 제2 연산 예상 시간을 기초로 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다(S650). 이때, 제2 그룹에 속하는 데이터들은 버스(10)를 통해 그래픽 처리부(170)로 전송될 수 있다.
그러면, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 바이토닉 정렬을 이용하여 정렬할 수 있다. 이때, 정렬부(160)는 재분할된 제1 그룹에 속하는 데이터들을 퀵 정렬을 이용하여 정렬할 수 있다(S660).
그리고, 조합부(180)는 정렬된 제1 및 제2 그룹에 속하는 데이터들을 머지 정렬을 이용하여 재조합할 수 있다(S670).
보다 상세하게는, 조합부(180)는 S660단계에서 정렬된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 수신할 수 있다. 그러면, 조합부(180)는 도 5와 같이, 정렬 대상 데이터들의 인덱스 및 주소를 참조하여 제1 및 제2 그룹에 속하는 데이터들을 재조합할 수 있다.
이상에서는 CPU에서 퀵 정렬이 이용되고, GPU에서 바이토닉 정렬이 이용되는 경우를 설명하였으나, 이는 실시예에 해당되며, CPU에서 바이토닉 정렬, GPU에서 퀵 정렬이 이용될 수 있을 뿐만 아니라, 이외의 다른 정렬들이 이용될 수도 있다.
또한, 본 발명의 실시예들에 따른 고속 정렬 장치 및 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
110: 추출부
120: 연산 시간 계산부
125: 분할부
130: 전송 시간 계산부
140: 연산 시간 재계산부
150: 재분할부
160: 정렬부
170: 그래픽 처리부
180: 조합부
120: 연산 시간 계산부
125: 분할부
130: 전송 시간 계산부
140: 연산 시간 재계산부
150: 재분할부
160: 정렬부
170: 그래픽 처리부
180: 조합부
Claims (10)
- 연산 시간 계산부, 분할부, 전송 시간 계산부, 연산 시간 재계산부, 재분할부, 정렬부를 포함하는 고속 정렬 장치가 수행하는, 고속 정렬 방법에 있어서,
상기 연산 시간 계산부가, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 단계;
상기 분할부가 상기 제1 연산 예상 시간과 상기 제2 연산 예상 시간을 이용하여 상기 복수의 정렬 대상 데이터들을 제1 그룹과 제2 그룹으로 분할하는 단계;
상기 전송 시간 계산부가 상기 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 단계;
상기 연산 시간 재계산부가 상기 전송 예상 시간을 기초로 상기 제2 연산 예상 시간을 재계산하는 단계;
상기 재분할부가 상기 제1 연산 예상 시간 및 상기 재계산된 제2 연산 예상 시간을 기초로 상기 복수의 정렬 대상 데이터들을 상기 제1 및 제2 그룹으로 재분할하는 단계; 및
상기 정렬부가 상기 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 단계
를 포함하는 고속 정렬 방법. - 제1항에 있어서,
상기 고속 정렬 장치는,
그래픽 처리부를 더 포함하고,
상기 제1 그룹에 속하는 데이터들은, 상기 정렬부에 의하여 CPU에서 데이터의 정렬이 수행되고,
상기 제2 그룹에 속하는 데이터들은, 상기 그래픽 처리부에 의하여 GPU에서 데이터의 정렬이 수행되는 것을 특징으로 하는 고속 정렬 방법. - 제2항에 있어서,
상기 고속 정렬 장치는,
추출부, 조합부를 더 포함하고,
상기 추출부가 복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 단계;
상기 그래픽 처리부가 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는 단계; 및
상기 조합부가 상기 추출된 인덱스 및 주소를 기초로 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 단계
를 더 포함하는 고속 정렬 방법. - 제3항에 있어서,
상기 재조합하는 단계는,
상기 조합부가 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 머지 정렬(MERGE SORT)을 이용하여 재조합하는 것을 특징으로 하는 고속 정렬 방법. - 제1항에 있어서,
상기 전송 예상 시간을 계산하는 단계는,
상기 전송 시간 계산부가, 상기 분할된 제2 그룹의 크기 및 GPU의 버스 속도를 이용하여 상기 전송 예상 시간을 계산하는 것을 특징으로 하는 고속 정렬 방법. - 제2항에 있어서,
상기 계산하는 단계는,
상기 연산 시간 계산부가, 상기 복수의 정렬 대상 데이터들을 퀵 정렬(QUICK SORT)하는데 소요되는 상기 제1 연산 예상 시간과 상기 복수의 정렬 대상 데이터들을 바이토닉 정렬(BITONIC SORT)하는데 소요되는 상기 제2 연산 예상 시간을 계산하고,
상기 정렬하는 단계는,
상기 정렬부가 상기 제1 그룹에 속하는 정렬 대상 데이터들을 상기 퀵 정렬하고,
상기 그래픽 처리부가 상기 제2 그룹에 속하는 정렬 대상 데이터들을 상기 바이토닉 정렬하는 것을 특징으로 하는 고속 정렬 방법. - 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 연산 시간 계산부;
상기 제1 연산 예상 시간과 상기 제2 연산 예상 시간을 이용하여 상기 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할하는 분할부;
상기 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 전송 시간 계산부;
상기 전송 예상 시간을 기초로 상기 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산하는 연산 시간 재계산부;
상기 제1 연산 예상 시간 및 상기 재계산된 제2 연산 예상 시간을 기초로 상기 복수의 정렬 대상 데이터들을 상기 제1 및 제2 그룹으로 재분할하는 재분할부; 및
상기 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 정렬부
를 포함하는 고속 정렬 장치. - 제7항에 있어서,
상기 재분할된 제2 그룹에 속하는 정렬 대상 데이터들을 정렬하는 그래픽 처리부
를 더 포함하고,
상기 정렬부는,
상기 재분할된 제1 그룹에 속하는 정렬 대상 데이터들을 정렬하는 고속 정렬 장치. - 제8항에 있어서,
복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 추출부; 및
상기 추출된 인덱스 및 주소를 기초로 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 조합부
를 더 포함하는 고속 정렬 장치. - 제7항에 있어서,
상기 연산 시간 계산부는,
상기 복수의 정렬 대상 데이터들을 CPU에서 퀵 정렬(QUICK SORT)하는데 소요되는 상기 제1 연산 예상 시간과 상기 복수의 정렬 대상 데이터들을 GPU에서 바이토닉 정렬(BITONIC SORT)하는데 소용되는 상기 제2 연산 예상 시간을 계산하고,
상기 연산 시간 재계산부는,
상기 전송 예상 시간을 기초로 상기 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 상기 제2 연산 예상 시간을 재계산하는 것을 특징으로 하는 고속 정렬 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100020805A KR101662769B1 (ko) | 2010-03-09 | 2010-03-09 | 고속 정렬 장치 및 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100020805A KR101662769B1 (ko) | 2010-03-09 | 2010-03-09 | 고속 정렬 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110101647A KR20110101647A (ko) | 2011-09-16 |
KR101662769B1 true KR101662769B1 (ko) | 2016-10-05 |
Family
ID=44953631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100020805A KR101662769B1 (ko) | 2010-03-09 | 2010-03-09 | 고속 정렬 장치 및 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101662769B1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10372451B2 (en) | 2017-05-25 | 2019-08-06 | Samsung Electronics Co., Ltd. | Sequence alignment method of vector processor |
US10409593B2 (en) | 2017-03-31 | 2019-09-10 | Samsung Electronics Co., Ltd. | Semiconductor device |
US10649771B2 (en) | 2017-03-31 | 2020-05-12 | Samsung Electronics Co., Ltd. | Semiconductor device |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101482229B1 (ko) * | 2013-04-29 | 2015-01-14 | 주식회사 실리콘아츠 | 컴퓨터 실행 가능한 데이터 정렬 방법, 이를 수행하는 데이터 정렬 시스템 및 이를 저장하는 기록매체 |
US9766888B2 (en) | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001100919A (ja) * | 1999-09-28 | 2001-04-13 | Alps Electric Co Ltd | ディスクアレイ装置およびその制御方法 |
US20090328049A1 (en) * | 2008-06-27 | 2009-12-31 | Kabushiki Kaisha Toshiba | Information processing apparatus, granularity adjustment method and program |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101639769B (zh) * | 2008-07-30 | 2013-03-06 | 国际商业机器公司 | 在多处理器***上对数据集进行划分及排序的方法和装置 |
-
2010
- 2010-03-09 KR KR1020100020805A patent/KR101662769B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001100919A (ja) * | 1999-09-28 | 2001-04-13 | Alps Electric Co Ltd | ディスクアレイ装置およびその制御方法 |
US20090328049A1 (en) * | 2008-06-27 | 2009-12-31 | Kabushiki Kaisha Toshiba | Information processing apparatus, granularity adjustment method and program |
JP2010009395A (ja) * | 2008-06-27 | 2010-01-14 | Toshiba Corp | 情報処理装置、粒度調整方法およびプログラム |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409593B2 (en) | 2017-03-31 | 2019-09-10 | Samsung Electronics Co., Ltd. | Semiconductor device |
US10649771B2 (en) | 2017-03-31 | 2020-05-12 | Samsung Electronics Co., Ltd. | Semiconductor device |
US10990388B2 (en) | 2017-03-31 | 2021-04-27 | Samsung Electronics Co., Ltd. | Semiconductor device |
US11645072B2 (en) | 2017-03-31 | 2023-05-09 | Samsung Electronics Co., Ltd. | Semiconductor device |
US10372451B2 (en) | 2017-05-25 | 2019-08-06 | Samsung Electronics Co., Ltd. | Sequence alignment method of vector processor |
US11068265B2 (en) | 2017-05-25 | 2021-07-20 | Samsung Electronics Co., Ltd. | Sequence alignment method of vector processor |
US11442728B2 (en) | 2017-05-25 | 2022-09-13 | Samsung Electronics Co., Ltd. | Sequence alignment method of vector processor |
Also Published As
Publication number | Publication date |
---|---|
KR20110101647A (ko) | 2011-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101662769B1 (ko) | 고속 정렬 장치 및 방법 | |
US20190079903A1 (en) | Providing matrix multiplication using vector registers in processor-based devices | |
KR20190019081A (ko) | 심층 신경망용 가속기 | |
US11194762B2 (en) | Spatial indexing using resilient distributed datasets | |
CN103984527A (zh) | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 | |
CN110825312A (zh) | 数据处理装置、人工智能芯片及电子设备 | |
CN108170639A (zh) | 基于分布式环境的张量cp分解实现方法 | |
CN112784973A (zh) | 卷积运算电路、装置以及方法 | |
CN103995827B (zh) | MapReduce计算框架中的高性能排序方法 | |
US20080126467A1 (en) | Technique for transposing nonsymmetric sparse matrices | |
Liu et al. | 3D-stacked many-core architecture for biological sequence analysis problems | |
Wienbrandt et al. | Fast genome-wide third-order SNP interaction tests with information gain on a low-cost heterogeneous parallel FPGA-GPU computing architecture | |
CN117539546A (zh) | 基于非空列存储的稀疏矩阵向量乘加速方法及装置 | |
KR101361080B1 (ko) | 행렬간 연산 시스템, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
KR101990735B1 (ko) | 사전 그래프 분할 기반 행렬 벡터 곱을 이용한 대규모 그래프 마이닝 방법 및 장치 | |
CN114329329A (zh) | 硬件中的稀疏矩阵乘法 | |
Bonny et al. | Time efficient segmented technique for dynamic programming based algorithms with FPGA implementation | |
EP4261703A1 (en) | Systems and methods for hybrid storage | |
CN111886605B (zh) | 针对多个输入数据集的处理 | |
CN110515939B (zh) | 一种基于gpu的多列数据排序方法 | |
CN105531602A (zh) | 利用多个加速处理部件(apc)实现时域有限差分模型的***和方法 | |
Kurt et al. | Communication Optimization for Distributed Execution of Graph Neural Networks | |
CN112953549B (zh) | 一种稀疏矩阵的存储处理方法及装置 | |
US20130166218A1 (en) | Methods And Systems For Sequence Alignment Computation | |
CN102880594A (zh) | 基于多核dsp的并行矩阵全选主元高斯约旦求逆算法 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20190814 Year of fee payment: 4 |