KR101662769B1 - Apparatus for quick sorting and the method thereof - Google Patents

Apparatus for quick sorting and the method thereof Download PDF

Info

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
Application number
KR1020100020805A
Other languages
Korean (ko)
Other versions
KR20110101647A (en
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 KR1020100020805A priority Critical patent/KR101662769B1/en
Publication of KR20110101647A publication Critical patent/KR20110101647A/en
Application granted granted Critical
Publication of KR101662769B1 publication Critical patent/KR101662769B1/en

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement 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)
  • User Interface Of Digital Computer (AREA)
  • Image Processing (AREA)

Abstract

고속 정렬 장치 및 방법이 개시된다. 정렬 대상 데이터들을 복수의 그룹으로 분할하고, 분할된 그룹에 속하는 데이터들을 각각 정렬하는데 소요되는 시간을 계산하여 정렬 대상 데이터들을 재분할할 수 있다. 그리고, 재분할된 데이터들을 각각 정렬 및 재조합하여 정렬 시간을 단축할 수 있다.A fast alignment apparatus and method are disclosed. The sorting target data can be divided into a plurality of groups and the time required for sorting the data belonging to each of the divided groups can be calculated and the sorting target data can be re-divided. And, the sorted time can be shortened by rearranging and recombining the re-divided data, respectively.

Description

고속 정렬 장치 및 방법{APPARATUS FOR QUICK SORTING AND THE METHOD THEREOF}[0001] APPARATUS FOR QUICK SORTING AND THE METHOD THEREOF [0002]

고속 정렬 장치 및 방법이 개시된다. 특히, 제어장치에서 수행되는 데이터 정렬 연산을 분담하여 수행하는 고속 정렬 장치가 개시된다.A fast alignment apparatus and method are disclosed. In particular, a high-speed alignment apparatus that performs sharing and performing a sorting operation performed in a control apparatus is disclosed.

일반적으로, 디지털 데이터를 사용하기 위해 정렬(Sorting) 등의 가공 기술이 필요하다. 이때, 데이터의 양이 증가할수록 데이터 정렬을 위한 연산 시간이 많이 소모된다. Generally, processing techniques such as sorting are required to use digital data. At this time, as the amount of data increases, the calculation time for data sorting is consumed.

보통, 컴퓨터의 연산 속도를 증가하는 연구에 의해 데이터 정렬 시간을 감소시킬 수 있다.Normally, data sorting time can be reduced by research that increases the computational speed of a computer.

그러나, 지리적으로 구역을 분할하여 지형 데이터를 연산하는 경우, 데이터의 양이 매우 방대하므로 컴퓨터 연산 속도의 증가 만으로는 정렬 시간을 충분히 단축시키는데 어려움이 존재한다.However, in the case of geographical division of terrain data, the amount of data is very large, so there is a difficulty in sufficiently shortening the alignment time only by increasing the computer operation speed.

이에 따라, 중앙 제어 장치에 집중되어 수행되는 연산을 분산하여 연산 시간을 단축할 수 있는 기술이 필요하다.Accordingly, there is a need for a technique capable of shortening the computation time by distributing computations that are performed in a centralized control apparatus.

고속 정렬 방법은, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 단계, 제1 연산 예상 시간과 제2 연산 예상 시간을 이용하여 복수의 정렬 대상 데이터들을 제1 그룹과 제2 그룹으로 분할하는 단계, 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 단계, 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산하는 단계, 제1 연산 예상 시간 및 재계산된 제2 연산 예상 시간을 기초로 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할하는 단계, 및 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 단계를 포함할 수 있다.The fast sorting method includes: calculating first and second estimated operation times required for sorting a plurality of pieces of data to be sorted by different techniques, respectively; calculating a plurality of sorting times using the first operation estimation time and the second operation estimation time; Dividing the target data into a first group and a second group, calculating a transmission expected time required to transmit data belonging to the second group, recalculating a second calculation expected time based on the estimated transmission time, Dividing the plurality of sorting target data into first and second groups based on the first calculation expected time and the recalculated second calculation expected time, and sorting the sorting target data belonging to the subdivided group can do.

여기서, 제1 그룹에 속하는 데이터들은, CPU에서 데이터의 정렬이 수행되고, 제2 그룹에 속하는 데이터들은, GPU에서 데이터의 정렬이 수행될 수 있다.Here, data belonging to the first group is sorted by the CPU, data belonging to the second group is sorted by the GPU.

또한, 복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 단계, 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는 단계, 및 추출된 인덱스 및 주소를 기초로 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 단계를 더 포함할 수 있다.Extracting an index and an address corresponding to the plurality of pieces of sorting target data, transmitting sorting target data belonging to the sorted second group, and transmitting the sorting target data belonging to the first group arranged based on the extracted index and address And rearranging the data to be sorted belonging to the second group that is aligned with the data to be sorted belonging to the data.

또한, 재조합하는 단계는, 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 머지 정렬(MERGE SORT)을 이용하여 재조합할 수 있다.In addition, the recombining step may rearrange the alignment target data belonging to the second group aligned with the alignment target data belonging to the aligned first group using a merge sort.

또한, 고속 정렬 장치는, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 연산 시간 계산부, 제1 연산 예상 시간과 제2 연산 예상 시간을 이용하여 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할하는 분할부, 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 전송 시간 계산부, 전송 예상 시간을 기초로 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산하는 연산 시간 재계산부, 제1 연산 예상 시간 및 재계산된 제2 연산 예상 시간을 기초로 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할하는 재분할부, 및 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 정렬부를 포함할 수 있다.The fast alignment apparatus may further include a calculation time calculation unit for calculating first and second estimated operation times required to align the plurality of pieces of alignment target data in different techniques, A transmission time calculation unit for calculating a transmission expected time required to transmit sorting target data belonging to the second group, A calculation time recalculation unit for recalculating a second calculation expected time required for sorting the data belonging to the second group, a plurality of sorting target data based on the first calculation expected time and the recalculated second calculation expected time, And a re-division unit for re-division into a second group, and an arrangement unit for arranging the data to be sorted belonging to the re-divided group.

이때, 연산 시간 계산부는, 복수의 정렬 대상 데이터들을 CPU에서 퀵 정렬(QUICK SORT)하는데 소요되는 제1 연산 예상 시간과 복수의 정렬 대상 데이터들을 GPU에서 바이토닉 정렬(BITONIC SORT)하는데 소용되는 제2 연산 예상 시간을 계산할 수 있다.In this case, the calculation time calculation unit may calculate a first calculation expected time required for quick sorting of a plurality of sorting target data in the CPU and a second calculation expected time required for a second sorting target data to be used for bi- It is possible to calculate the estimated operation time.

그리고, 연산 시간 재계산부는, 전송 예상 시간을 기초로 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산할 수 있다.The computation time recalculation unit may recalculate a second computation expected time required for sorting the data belonging to the second group based on the estimated transmission time.

고속 정렬 장치는, 데이터 정렬 연산을 중앙 제어 장치 및 그래픽 제어 장치에서 병행하여 처리함으로써, 연산 시간을 단축시킬 수 있다.The high-speed alignment apparatus can process the data alignment operation in parallel in the central control device and the graphic control device, thereby shortening the calculation time.

도 1은 고속 정렬 장치의 구성을 도시한 도면이다.
도 2는 정렬 대상 데이터들의 인덱스 및 주소를 추출하는 동작을 설명하기 위해 제공되는 도면이다.
도 3은 정렬 대상 데이터들을 복수의 그룹으로 분할하여 정렬 및 재조합하는 정을 설명하기 위해 제공되는 도면이다.
도 5 및 도 7은 바이토닉 정렬을 설명하기 위해 제공되는 도면이다.
도 6은 정렬 대상 데이터들을 고속 정렬하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 8 및 도 9는 파이프라인 머지 정렬을 설명하기 위해 제공되는 도면이다.
1 is a diagram showing a configuration of a high-speed alignment apparatus.
2 is a diagram for explaining an operation of extracting indexes and addresses of data to be sorted.
FIG. 3 is a diagram for explaining a definition of sorting and recombining data to be sorted by dividing the data into a plurality of groups. FIG.
Figures 5 and 7 are diagrams provided to illustrate bichronic alignment.
6 is a flowchart provided to explain a method of fast sorting data to be sorted.
Figures 8 and 9 are diagrams provided to illustrate pipeline merge alignment.

이하에서는 첨부된 도면을 참조하여, 본 발명의 실시예를 설명하기로 한다.Hereinafter, embodiments of the present invention will be described with reference to the accompanying drawings.

도 1은 고속 정렬 장치의 구성을 도시한 도면이다.1 is a diagram showing a configuration of a high-speed alignment apparatus.

도 1을 참조하면, 고속 정렬 장치(100)는 추출부(110), 연산 시간 계산부(120), 분할부(125), 전송 시간 계산부(130), 연산 시간 재계산부(140) 재분할부(150), 정렬부(160), 그래픽 처리부(170), 및 조합부(180)를 포함할 수 있다.1, the fast alignment apparatus 100 includes an extraction unit 110, a calculation time calculation unit 120, a division unit 125, a transmission time calculation unit 130, a calculation time recalculation unit 140, A display unit 150, an arranging unit 160, a graphics processing unit 170, and a combining unit 180. [

추출부(110)는 정렬 대상 데이터들 각각에 해당하는 인덱스 및 주소를 추출할 수 있다. The extracting unit 110 may extract an index and an address corresponding to the data to be sorted.

일례로, 정렬 대상 데이터들은 CPU(Computer Processing Unit)s의 메모리에 저장될 수 있다. 도 2를 참조하면, 추출부(110)는 정렬 대상 데이터들(210)에 저장된 메모리의 주소(230)와 데이터들 각각의 인덱스(220)를 추출할 수 있다.For example, the data to be sorted can be stored in a memory of a CPU (Computer Processing Unit) s. Referring to FIG. 2, the extracting unit 110 may extract an address 230 of a memory and an index 220 of each of the data stored in the data to be aligned 210.

연산 시간 계산부(120)는 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 계산할 수 있다.The calculation time calculation unit 120 may calculate first and second estimated operation times required for sorting a plurality of sorting target data by different techniques.

일례로, 연산 시간 계산부(120)는 아래의 수학식 1을 이용하여 CPU에서 복수의 정렬 대상 데이터들을 퀵 정렬(QUICK SORT)하는데 소요되는 제1 연산 예상 시간(CPUt)을 계산할 수 있다. 또한, 연산 시간 계산부(120)는 아래의 수학식 2를 이용하여 GPU에서 정렬 대상 데이터들을 바이토닉 정렬(BITONIC SORT)하는데 소요되는 제2 연산 예상 시간(GPUt)을 계산할 수 있다.For example, the calculation time calculator 120 may calculate a first calculation expected time (CPU t ) required for quick sorting a plurality of sorting target data in the CPU using the following equation (1). Also, the calculation time calculation unit 120 may calculate a second calculation expected time (GPU t ) required for bi-tonic sorting the alignment target data in the GPU using the following equation (2).

Figure 112010014902191-pat00001
Figure 112010014902191-pat00001

Figure 112010014902191-pat00002
Figure 112010014902191-pat00002

수학식 1 및 2에서, n은 정렬 대상 데이터들의 개수이다. In Equations (1) and (2), n is the number of data to be sorted.

이때, 퀵 정렬(Quick Sort)을 이용하여 제1 연산 예상 시간을 계산하는 경우, 연산 시간 계산부(120)는 퀵 정렬의 시간 복잡도(nlogn(QuickSort))를 flops(Floating-point Operations Per Second)로 나눔으로써 제1 연산 예상 시간을 계산할 수 있다.In this case, when calculating the first calculation expected time using the Quick Sort, the calculation time calculation unit 120 calculates the time complexity (nlogn (QuickSort)) of the quick alignment by flops (Floating-point Operations Per Second) The first calculation expected time can be calculated.

또한, 바이토닉 정렬(Bitonic Sort)을 이용하여 제2 연산 예상 시간을 계산하는 경우, 연산 시간 계산부(120)는 바이토닉 정렬의 시간 복잡도(nlogn(n2)(BitonicSort))를 flops로 나눔으로써 제2 연산 예상 시간을 계산할 수 있다.In addition, when calculating the second calculation expected time using the biphonic sort, the calculation time calculation unit 120 divides the time complexity (nlogn (n 2 ) (BitonicSort)) of the bionic arrangement by flops The second calculation expected time can be calculated.

분할부(125)는 제1 및 제2 연산 예상 시간을 이용하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할할 수 있다.The division unit 125 may divide the sorting target data into first and second groups using the first and second estimated operation time.

이때, 분할부(125)는 정렬 대상 데이터들을 CPU에서 정렬을 수행하기 위한 제1 그룹과, 그래픽 처리부(170)에서 정렬을 수행하기 위한 제2 그룹으로 분할할 수 있다.At this time, the partitioning unit 125 may divide the data to be sorted into a first group for performing sorting in the CPU and a second group for performing sorting in the graphic processing unit 170. [

일례로, 분할부(125)는 아래의 수학식 3을 이용하여 정렬 대상 데이터들 중 분할된 제1 그룹의 크기를 계산할 수 있다.For example, the dividing unit 125 may calculate the size of the divided first group among the data to be sorted by using Equation (3) below.

Figure 112010014902191-pat00003
Figure 112010014902191-pat00003

여기서, Array는 정렬 대상 데이터들의 전체 개수, CPUarray는 제1 그룹의 크기이다.Here, Array is the total number of data to be sorted, and CPU array is the size of the first group.

또한, 분할부(125)는 아래의 수학식 4과 같이, 정렬 대상 데이터들의 전체 개수(Array)와 제1 그룹의 크기(CPUarray)의 차로써 제2 그룹의 크기(GPUarray)를 계산할 수 있다. 그리고, 분할부(125)는 계산된 제1 및 제2 그룹의 크기에 기초하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할할 수 있다.Also, the partitioning unit 125 can calculate the size of the second group (GPU array ) as a difference between the total number of arrays to be sorted (Array) and the size of the first group (CPU array ) have. Then, the division unit 125 may divide the data to be sorted into the first and second groups based on the calculated size of the first and second groups.

Figure 112010014902191-pat00004
Figure 112010014902191-pat00004

전송 시간 계산부(130)는 분할된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 그래픽 처리부(170)로 전송하는데 소요되는 전송 예상 시간을 계산할 수 있다.The transmission time calculation unit 130 may calculate a transmission expected time required for transmitting data belonging to the divided second group to the graphic processing unit 170 through the bus 10. [

이때, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터 배열의 크기(GPUarray)와 그래픽 카드의 버스 속도(GPUBUS(SPEED))를 이용하여 전송 예상 시간을 계산할 수 있다. At this time, the transmission time calculation unit 130 may calculate the transmission expected time using the size of the data array belonging to the second group (GPU array ) and the bus speed of the graphics card (GPUBUS (SPEED)).

이때, 제2 그룹에 속하는 데이터들은 버스(10)를 통해 그래픽 처리부(170)로 전송될 수 있다. 그러면, 그래픽 처리부(170)에서 정렬된 제2 그룹에 속하는 데이터들은 버스(10)를 통해 조합부(180)로 수신될 수 있다. 이에 따라, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터들이 정렬 전과 정렬 이후에 버스(10)를 통해 두 번 전송되는 시간을 기초로 전송 예상 시간을 계산할 수 있다.At this time, data belonging to the second group can be transmitted to the graphic processing unit 170 through the bus 10. [ Then, the data belonging to the second group arranged in the graphic processing unit 170 can be received by the combining unit 180 through the bus 10. Accordingly, the transmission time calculation unit 130 can calculate the transmission expected time based on the time that the data belonging to the second group is transmitted twice through the bus 10 before and after the alignment.

일례로, 전송 시간 계산부(130)는 아래의 수학식 5와 같이, 제2 그룹에 속하는 데이터 배열의 크기(GPUarray)를 그래픽 카드의 버스 속도로 나눔으로써 전송 예상 시간(TRANSMITt)을 계산할 수 있다.For example, the transmission time calculation unit 130 calculates the transmission expected time TRANSMIT t by dividing the size (GPU array ) of the data array belonging to the second group by the bus speed of the graphics card, as shown in Equation (5) .

Figure 112010014902191-pat00005
Figure 112010014902191-pat00005

연산 시간 재계산부(140)는 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산할 수 있다.The computation time recalculation unit 140 can recalculate the second computation expected time based on the estimated transmission time.

일례로, 연산 시간 재계산부(140)는 수학식 2를 이용하여 계산된 제2 연산 예상 시간과 전송 예상 시간의 합으로써 제2 연산 예상 시간을 재계산할 수 있다. 이때, 재계산된 제2 연산 예상 시간(최종 GPUt)은 아래의 수학식 6과 같을 수 있다.For example, the calculation time recalculation unit 140 may recalculate the second calculation expected time as the sum of the second calculation expected time and the transmission expected time calculated using Equation (2). At this time, the recalculated second calculation expected time (final GPU t ) may be expressed by Equation (6) below.

Figure 112010014902191-pat00006
Figure 112010014902191-pat00006

재분할부(150)는 연산 시간 계산부(120)에서 계산된 제1 연산 예상 시간과 연산 시간 재계산부(140)에서 재계산된 제2 연산 예상 시간(최종 GPUt)을 기초로 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다.The re-division unit 150 divides the sorting target data based on the first calculation estimated time calculated by the calculation time calculating unit 120 and the second calculation estimated time (final GPU t ) recalculated in the calculation time recalculating unit 140 And can be subdivided into first and second groups.

일례로, 재분할부(150)는 아래의 수학식 7과 같이, 복수의 정렬 대상 데이터들의 개수(Array), 제1 연산 예상 시간(CPUt), 및 재계산된 제2 연산 예상 시간(최종 GPUt)을 이용하여 제1 그룹의 크기를 재계산할 수 있다.For example, the re-divider 150 calculates the number of arrays to be sorted (Array), the first calculation estimated time (CPU t ), and the recalculated second calculation estimated time (final GPU t ) to recalculate the size of the first group.

Figure 112010014902191-pat00007
Figure 112010014902191-pat00007

여기서, Array는 정렬 대상 데이터들의 전체 개수, CPUarray는 제1 그룹의 크기이다.Here, Array is the total number of data to be sorted, and CPU array is the size of the first group.

또한, 재분할부(150)는 아래의 수학식 8과 같이, 정렬 대상 데이터들의 전체 개수(Array)와 재계산된 제1 그룹의 크기(CPUarray)의 차로써 제2 그룹의 크기를 재계산할 수 있다. Also, the re-divider 150 can recalculate the size of the second group by a difference between the total number of arrays to be sorted (Array) and the recalculated size of the first group (CPU array ) have.

Figure 112010014902191-pat00008
Figure 112010014902191-pat00008

그리고, 재분할부(150)는 재계산된 제1 및 제2 그룹의 크기에 기초하여 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다.Then, the re-division unit 150 may re-divide the data to be sorted into the first and second groups based on the size of the re-computed first and second groups.

일례로, 도 3을 참조하면, 제1 및 제2 그룹의 크기가 4로 재계산된 경우, 재분할부(150)는 데이터 4,6,2,8을 제1 그룹(231), 데이터 3,1,7,5를 제2 그룹(232)으로 재분할할 수 있다3, if the sizes of the first and second groups are recalculated to 4, the re-divider 150 divides the data 4, 6, 2, and 8 into the first group 231, the data 3, 1, 7, 5 can be subdivided into a second group 232

이때, 바이토닉 정렬의 경우, 2n개의 행렬에 대해 최적 효율을 가질 수 있다. 이에 따라, GPU에서 바이토닉 정렬을 수행하는 경우, 재분할부(150)는 계산된 제2 그룹의 크기(GPUarray)가 2의 제곱 승인지 여부를 검사할 수 있다. 제2 그룹의 크기가 2의 제곱 승이 아닌 경우, 재분할부(150)는 제2 그룹의 크기가 2의 제곱 승이 되도록 제1 그룹의 크기(CPUarray)를 조절할 수 있다.At this time, in the case of the bi-tonic sort, optimal efficiency can be obtained for 2 n matrices. Thus, when performing bi-tonic sorting in the GPU, the subdivider 150 can check whether the calculated second group size (GPU array ) is squared or not. If the size of the second group is not a power of two, the redistribution unit 150 may adjust the size of the first group (CPU array ) so that the size of the second group is a power of two.

그리고, 재분할부(150)는 재분할된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 그래픽 처리부(170)로 전송할 수 있다.The re-division unit 150 may transmit the data belonging to the re-divided second group to the graphic processing unit 170 via the bus 10.

정렬부(160)는 재분할된 제1 그룹에 속하는 데이터들을 대상으로, 퀵 정렬을 수행할 수 있다. 제1 그룹에 속하는 데이터들은 퀵 정렬을 통해 2,4,6,8 순으로 정렬될 수 있다.The sorting unit 160 may perform quick sorting on the data belonging to the first divided group. The data belonging to the first group can be sorted in the order of 2, 4, 6, and 8 through quick alignment.

그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 대상으로 바이토닉 정렬을 수행할 수 있다. 제2 그룹에 속하는 데이터들은 1,3,5,7 순으로 정렬될 수 있다. 일례로, 바이토닉 정렬의 경우, 그래픽 처리부(170)는 도 4와 같이, 정렬 대상 데이터들을 바이토닉 정렬할 수 있다.The graphic processing unit 170 may perform vitalonic alignment on the data belonging to the second group. Data belonging to the second group can be sorted in order of 1, 3, 5, and 7. For example, in the case of a bi-tonic sorting, the graphic processing unit 170 can vithorise-align the sorting data as shown in FIG.

일례로, 바이토닉 정렬을 수행하는 경우, 도 7과 같이, 그래픽 처리부(170)는 복수의 스레드 블록들(thread blocks: 171) 및 메모리(global memory: 172)를 포함할 수 있다. 여기서, 스레드 블록(171)은 공유 메모리(shared memory: 1712) 및 복수의 스레드들(threads: 1711)을 포함할 수 있다.7, the graphics processing unit 170 may include a plurality of thread blocks 171 and a memory (global memory) 172. In this case, Here, the thread block 171 may include a shared memory 1712 and a plurality of threads 1711.

그러면, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 2차원 메쉬 형태의 배열 여러 개로 분할하여 바이토닉 정렬을 수행하도록 스레드 블록들을 제어할 수 있다. 이때, 그래픽 처리부(170)는 아래의 수학식 9를 이용하여 스레드 블록들(171)을 동시에 제어할 수 있다. Then, the graphics processor 170 may control the thread blocks to divide the data belonging to the second group into a plurality of arrays of a two-dimensional mesh shape to perform vitalonic alignment. At this time, the graphic processing unit 170 can simultaneously control the thread blocks 171 using the following Equation (9).

Figure 112010014902191-pat00009
Figure 112010014902191-pat00009

여기서, Threadmax는 하나의 스레드 블록에서 수용할 수 있는 스레드의 최대 개수, Mcol은 2차원 메쉬의 열의 수, Mrow는 2차원 메쉬의 행의 수, SharedMemorysize는 공유 메모리의 크기, Elementsize는 floating-point 2차원 배열에 포함된 Element 하나의 크기이다.Here, Thread max is the maximum number of threads that can be accommodated in one thread block of, M col is the number of columns of the two-dimensional mesh, M row is the number of rows of the two-dimensional mesh, SharedMemory size is the size of the shared memory, Element size Is the size of an Element contained in a floating-point 2D array.

일례로, Threadmax는 256개, SharedMemorysize는 512Kbytes, Elementsize는 8bytes인 경우, 16×16 크기의 메쉬가 한 단위가 될 수 있다. 이때, 전체 배열의 원소, 즉, 제2 그룹에 속하는 데이터들의 개수가 1024개인 경우, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 4개의 단위 메쉬로 분할하여 바이토닉 정렬을 수행할 수 있다. For example, if the thread max is 256, the SharedMemory size is 512 Kbytes, and the Element size is 8 bytes, a 16 × 16 mesh can be a unit. In this case, when the number of elements in the entire array, that is, the number of data belonging to the second group is 1024, the graphic processing unit 170 divides the data belonging to the second group into four unit meshes, .

일례로, 그래픽 처리부(170)는 아래의 표 1과 같이, 제2 그룹에 속하는 데이터들을 복수 개의 메쉬로 분할하여 바이토닉 정렬을 수행할 수 있다. For example, the graphic processing unit 170 may divide data belonging to the second group into a plurality of meshes, and perform bi-tonic sorting, as shown in Table 1 below.

이때, 메쉬가 8×8로 구성된 경우, 그래픽 처리부(170)는 가로 방향의 8개 데이터들에 대해서만 바이토닉 정렬을 수행하고, 세로 방향의 8개 데이터들에 대해서는 바이토닉 정렬을 수행하지 않을 수 있다.At this time, when the mesh is composed of 8x8, the graphic processing unit 170 performs the vitalonic alignment only for the eight data in the horizontal direction and does not perform the vitalonic alignment for the eight data in the vertical direction have.

mallocmalloc totaltotal __ numnum __ elementelement * 2  * 2 matrixmatrix onon thethe GPUGPU
memcopyHostToDevicememcopyHostToDevice (( deviceMatrixdeviceMatrix , , hostMatrixhostMatrix ););
allocalloc threadBolckthreadBolck (( MM colcol ? ? MM rowrow ) ) onon thethe GPUGPU ;;

SortSort (( floatfloat originorigin __ matrixmatrix [[ totaltotal __ numnum __ elementelement ][2], ][2],
floatfloat sortedsorted _matrix[_matrix [ totaltotal __ numnum __ elementelement ][2]){][2]){
MeshMesh [[ MM colcol ][] [ MM rowrow ] = ] = copiedcopied matrixmatrix fromfrom globalglobal MemoryMemory toto sharedshared memorymemory
forfor (j = 0; j < M; j++) (j = 0; j <M; j + +)
ParallelBitonicSort(Mesh[j][0])ParallelBitonicSort (Mesh [j] [0])
}}

표 1에서, prevMeshCount는 제2 그룹에 속하는 데이터들이 복수 개의 메쉬로 분할되는 경우, 분활 현황을 확인하기 위해 이용되는 변수이다.In Table 1, prevMeshCount is a variable used for confirming the division status when the data belonging to the second group is divided into a plurality of meshes.

그리고, 바이토닉 정렬이 완료된 경우, 그래픽 처리부(170)는 도 8과 같이, 열(column)을 구성하는 데이터들을 대상으로, 파이프라인 머지 정렬(pipeline merge sort)을 사용하여 정렬된 데이터들을 통합할 수 있다. 이때, 8×8로 구성된 메쉬가 4개이고, 메쉬의 한 열을 하나의 하부 배열로 가정하는 경우, 하나의 메쉬의 행에 해당하는 하부 배열은 8개 배열 ×4=32개가 존재할 수 있다.When the bi-tonic sorting is completed, the graphic processing unit 170 integrates the sorted data using a pipeline merge sort on the data constituting the column as shown in FIG. 8 . In this case, when there are 4 meshes constituted by 8 × 8 and one row of the mesh is assumed to be one subarray, the subarray corresponding to one mesh row may have 8 arrays × 4 = 32.

일례로, 메쉬가 8×8로 구성되고, 가로 방향의 8개 데이터들은 정렬되고, 세로 방향의 8개 데이터들은 정렬되지 않은 경우, 세로 방향의 데이터들은 독립된 배열로 처리될 수 있다. 즉, 도 8과 같이, 메쉬의 한 행은 각각 하나의 독립된 배열로 처리될 수 있다.For example, if the mesh is composed of 8.times.8, the eight data in the horizontal direction are aligned, and the eight data in the vertical direction are not aligned, the data in the vertical direction can be processed as an independent array. That is, as shown in FIG. 8, one row of meshes can be processed into one independent array.

아래의 표 2는 하나의 메시에 대한 4개의 하부 배열의 파이프라인 머지 정렬을 도시한 구조이다.Table 2 below illustrates the pipeline merge alignment of four subarrays for one mesh.

elementelement A, B =  A, B = elementselements fromfrom subArraysubArray oror childNodechildNode
ifif ( ( firstStagefirstStage ) {) {
A = A = GetFirstElementFromSubArrayGetFirstElementFromSubArray (n)(n)
B = B = GetFirstElementFromSubArrayGetFirstElementFromSubArray (n+1)(n + 1)
}}
ifif (A !=  (A! = NULLNULL && B !=  && B! = NULLNULL ) {) {
eacheach threadthread CompareCompare (A, B) /* (A, B) / * assumeassume A  A isis biggerbigger */ * /
ifif ( ( lastStagelastStage ))
PutElementOnGlobalMemoryPutElementOnGlobalMemory (A)(A)
PutElementOnParentNodePutElementOnParentNode (A) (A)
A = A = NULLNULL
}}

표 2에 따르면, 스레드는 도 9과 같이, 그래픽 처리부(170)는 스레드가 최초 스테이지(stage)인 경우, 메쉬의 하부 배열을 구성하는 데이터들을 이용하고, 스레드가 최종 스테이지인 경우, 메모리(172)의 최종 정렬 배열에 정렬된 데이터들을 기록할 수 있다. According to Table 2, according to Table 2, the graphics processor 170 uses the data constituting the sub-array of the mesh when the thread is the initial stage, and when the thread is the final stage, &Lt; / RTI &gt; in the final alignment array of FIG.

일례로, 그래픽 처리부(170)는 하부 배열을 구성하는 데이터들을 스테이지 별로 비교하여 파이프라인 머지 정렬을 수행할 수 있다. For example, the graphics processor 170 may perform pipeline merge sorting by comparing the data constituting the sub-array on a stage-by-stage basis.

그리고, 그래픽 처리부(170)는 파이프라인 머지 정렬된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 조합부(180)로 전송할 수 있다. 일례로, 그래픽 처리부(170)로는 GPU(Graphic Processing Unit)가 이용될 수 있다.The graphics processing unit 170 may transmit the data belonging to the second group, which is pipeline-merge-aligned, to the combining unit 180 through the bus 10. [ For example, a GPU (Graphic Processing Unit) can be used as the graphic processor 170.

조합부(180)는 추출부(110)에서 추출된 정렬 대상 데이터들의 인덱스 및 주소를 이용하여 정렬부(170) 및 그래픽 처리부(180)에서 각각 정렬된 제1 및 제2 그룹에 속하는 데이터들을 재조합할 수 있다.The combining unit 180 combines the data belonging to the first and second groups arranged in the arranging unit 170 and the graphic processing unit 180 using the indexes and addresses of the data to be sorted extracted by the extracting unit 110, can do.

일례로, 조합부(180)는 머지 정렬(Merge Sort)을 이용하여 도 5와 같이, 추출된 인덱스를 이용하여 정렬된 데이터들을 각각 해당하는 주소에 다시 저장할 수 있다.For example, the combining unit 180 may use merge sort to store data sorted by using the extracted index in the corresponding addresses again, as shown in FIG.

보다 상세하게는, 도 5를 참조하면, 조합부(180)는 정렬된 제1 그룹에 속하는 데이터들(510) 및 제2 그룹에 속하는 데이터들(520)을 각각 비교하여 정렬할 수 있다. 즉, 조합부(180)는 제1 그룹에 속하는 데이터 2와 제1 그룹에 속하는 데이터 1을 비교하여 정렬을 수행할 수 있다. 그러면, 조합부(180)는 데이터 1의 주소(&0009)를 기초로 데이터 1을 메모리에 머지 정렬할 수 있다. 이때, 조합부(180)는 머지 정렬 시, 파이프 라이닝을 이용하여 고속 정렬 장치의 성능을 향상시킬 수 있다.More specifically, referring to FIG. 5, the combining unit 180 may compare and sort the data 510 belonging to the sorted first group and the data 520 belonging to the second group, respectively. That is, the combining unit 180 may perform sorting by comparing data 2 belonging to the first group and data 1 belonging to the first group. Then, the combining unit 180 may merge the data 1 into the memory based on the address (& 0009) of the data 1. At this time, the combining unit 180 can improve the performance of the high-speed alignment apparatus by using pipelining in merge alignment.

도 6은 정렬 대상 데이터들을 고속 정렬하는 방법을 설명하기 위해 제공되는 흐름도 이다.6 is a flowchart provided to explain a method of fast sorting data to be sorted.

도 6을 참조하면, 연산 시간 계산부(120)는 제1 연산 예상 시간 및 제2 연산 예상 시간을 계산할 수 있다(S610). 여기서, 제1 연산 예상 시간은, 정렬 대상 데이터들을 퀵 정렬하는데 소요되는 시간, 제2 연산 예상 시간은, 정렬 대상 데이터들을 바이토닉 정렬하는데 소요되는 시간이다.Referring to FIG. 6, the calculation time calculation unit 120 may calculate a first calculation expected time and a second calculation estimated time (S610). Here, the first calculation expected time is a time required for quick sorting of the sorting target data, and the second calculation expected time is a time required for biotonic sorting the sorting target data.

일례로, 퀵 정렬은 CPU에서 수행되고, 바이토닉 정렬은 GPU에서 수행될 수 있다. 그러면, 연산 시간 계산부(120)는 CPU에서 데이터들을 정렬하는 데 소요되는 시간을 제1 연산 예상 시간으로 계산할 수 있다. 마찬가지로, 연산 시간 계산부(120)는 GPU에서 정렬 대상 데이터들을 정렬하는 데 소요되는 시간을 제2 연산 예상 시간으로 계산할 수 있다.For example, quick alignment may be performed on the CPU, and vitalic alignment may be performed on the GPU. Then, the calculation time calculation unit 120 may calculate the time required for sorting the data by the CPU as the first calculation estimated time. Similarly, the calculation time calculation unit 120 may calculate a time required for sorting the sort target data in the GPU as a second calculation expected time.

분할부(125)는 정렬 대상 데이터들을 제1 및 제2 연산 예상 시간을 이용하여 제1 및 제2 그룹으로 분할할 수 있다(S620). 일례로, 제1 그룹은 CPU에서 정렬이 수행되는 데이터들을 포함하고, 제2 그룹은 GPU에서 정렬이 수행되는 데이터들을 포함할 수 있다.The dividing unit 125 may divide the data to be sorted into first and second groups using the first and second estimated operation time (S620). In one example, the first group includes data for which sorting is performed in the CPU, and the second group may include data for which sorting is performed in the GPU.

그리고, 전송 시간 계산부(130)는 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산할 수 있다(S630). 여기서, 제2 그룹에 속하는 데이터들은 그래픽 연산을 수행하는 장치로 전송될 수 있다. 일례로, 그래픽 연산을 수행하는 장치로는 GPU(Graphic Processing Unit)가 이용될 수 있다.Then, the transmission time calculation unit 130 may calculate a transmission expected time required to transmit data belonging to the second group (S630). Here, the data belonging to the second group can be transmitted to the device performing the graphic operation. For example, a GPU (Graphic Processing Unit) can be used as an apparatus for performing a graphic operation.

그러면, 연산 시간 재계산부(140)는 전송 예상 시간을 기초로 제2 연산 예상 시간을 재계산할 수 있다(S640).Then, the calculation time recalculation unit 140 can recalculate the second calculation expected time based on the estimated transmission time (S640).

일례로, 연산 시간 계산부(140)는 전송 예상 시간(TRANSMITt)과 S610단계에서 계산된 제2 연산 예상 시간(GPUt)의 합으로써 제2 연산 예상 시간(최종 GPUt)을 재계산할 수 있다.For example, the calculation time calculation unit 140 can recalculate the second calculation expected time (final GPU t ) as the sum of the transmission estimated time TRANSMIT t and the second calculated estimated time GPU t in step S610 have.

이어, 재분할부(150)는 제1 연산 예상 시간과 재계산된 제2 연산 예상 시간을 기초로 정렬 대상 데이터들을 제1 및 제2 그룹으로 재분할할 수 있다(S650). 이때, 제2 그룹에 속하는 데이터들은 버스(10)를 통해 그래픽 처리부(170)로 전송될 수 있다.Subsequently, the re-division unit 150 may re-divide the sorting target data into first and second groups based on the first calculation expected time and the re-calculated second calculation expected time (S650). At this time, data belonging to the second group can be transmitted to the graphic processing unit 170 through the bus 10. [

그러면, 그래픽 처리부(170)는 제2 그룹에 속하는 데이터들을 바이토닉 정렬을 이용하여 정렬할 수 있다. 이때, 정렬부(160)는 재분할된 제1 그룹에 속하는 데이터들을 퀵 정렬을 이용하여 정렬할 수 있다(S660). Then, the graphic processing unit 170 can sort the data belonging to the second group using the bionic arrangement. At this time, the sorting unit 160 may sort the data belonging to the re-divided first group using quick alignment (S660).

그리고, 조합부(180)는 정렬된 제1 및 제2 그룹에 속하는 데이터들을 머지 정렬을 이용하여 재조합할 수 있다(S670).Then, the combining unit 180 may recombine data belonging to the sorted first and second groups using merge sorting (S670).

보다 상세하게는, 조합부(180)는 S660단계에서 정렬된 제2 그룹에 속하는 데이터들을 버스(10)를 통해 수신할 수 있다. 그러면, 조합부(180)는 도 5와 같이, 정렬 대상 데이터들의 인덱스 및 주소를 참조하여 제1 및 제2 그룹에 속하는 데이터들을 재조합할 수 있다.More specifically, the combining unit 180 may receive data belonging to the second group arranged in the step S660 through the bus 10. [ 5, the combining unit 180 can reassemble data belonging to the first and second groups by referring to the indexes and addresses of the data to be sorted.

이상에서는 CPU에서 퀵 정렬이 이용되고, GPU에서 바이토닉 정렬이 이용되는 경우를 설명하였으나, 이는 실시예에 해당되며, CPU에서 바이토닉 정렬, GPU에서 퀵 정렬이 이용될 수 있을 뿐만 아니라, 이외의 다른 정렬들이 이용될 수도 있다.In the above description, the quick alignment is used in the CPU and the biphonic alignment is used in the GPU. However, this corresponds to the embodiment, and not only the bionic array in the CPU, quick alignment in the GPU can be used, Other alignments may be used.

또한, 본 발명의 실시예들에 따른 고속 정렬 장치 및 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.In addition, the fast alignment apparatus and method according to embodiments of the present invention include a computer-readable medium including program instructions for performing various computer-implemented operations. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The media may be program instructions that are specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.While the invention has been shown and described with reference to certain preferred embodiments thereof, it will be understood by those of ordinary skill in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims. This is possible.

그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined by the equivalents of the claims, as well as the claims.

110: 추출부
120: 연산 시간 계산부
125: 분할부
130: 전송 시간 계산부
140: 연산 시간 재계산부
150: 재분할부
160: 정렬부
170: 그래픽 처리부
180: 조합부
110:
120: calculation time calculation unit
125: quarter installment
130: transmission time calculation unit
140: calculation time recalculation unit
150: Subdivision
160:
170: Graphics processor
180: Combination unit

Claims (10)

연산 시간 계산부, 분할부, 전송 시간 계산부, 연산 시간 재계산부, 재분할부, 정렬부를 포함하는 고속 정렬 장치가 수행하는, 고속 정렬 방법에 있어서,
상기 연산 시간 계산부가, 복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 단계;
상기 분할부가 상기 제1 연산 예상 시간과 상기 제2 연산 예상 시간을 이용하여 상기 복수의 정렬 대상 데이터들을 제1 그룹과 제2 그룹으로 분할하는 단계;
상기 전송 시간 계산부가 상기 제2 그룹에 속하는 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 단계;
상기 연산 시간 재계산부가 상기 전송 예상 시간을 기초로 상기 제2 연산 예상 시간을 재계산하는 단계;
상기 재분할부가 상기 제1 연산 예상 시간 및 상기 재계산된 제2 연산 예상 시간을 기초로 상기 복수의 정렬 대상 데이터들을 상기 제1 및 제2 그룹으로 재분할하는 단계; 및
상기 정렬부가 상기 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 단계
를 포함하는 고속 정렬 방법.
A high-speed alignment method performed by a high-speed alignment apparatus including a calculation time calculation unit, a division unit, a transmission time calculation unit, a calculation time recalculation unit, a subdivision unit, and an alignment unit,
Calculating the first and second estimated operation time required for arranging the plurality of sorting target data in different techniques;
Dividing the plurality of sorting target data into a first group and a second group using the first calculation expected time and the second calculation expected time;
Calculating a transmission expected time required for the transmission time calculation unit to transmit data belonging to the second group;
The operation time recalculation unit recalculating the second operation expected time based on the expected transmission time;
Dividing the plurality of sorting target data into the first and second groups based on the first calculation expected time and the recalculated second calculation expected time; And
Wherein the sorting unit arranges sorting data belonging to the re-divided group
/ RTI &gt;
제1항에 있어서,
상기 고속 정렬 장치는,
그래픽 처리부를 더 포함하고,
상기 제1 그룹에 속하는 데이터들은, 상기 정렬부에 의하여 CPU에서 데이터의 정렬이 수행되고,
상기 제2 그룹에 속하는 데이터들은, 상기 그래픽 처리부에 의하여 GPU에서 데이터의 정렬이 수행되는 것을 특징으로 하는 고속 정렬 방법.
The method according to claim 1,
The high-speed alignment apparatus includes:
Further comprising a graphics processing unit,
The data belonging to the first group are sorted by the CPU by the sorting unit,
Wherein the data belonging to the second group are sorted by the GPU by the graphics processing unit.
제2항에 있어서,
상기 고속 정렬 장치는,
추출부, 조합부를 더 포함하고,
상기 추출부가 복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 단계;
상기 그래픽 처리부가 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는 단계; 및
상기 조합부가 상기 추출된 인덱스 및 주소를 기초로 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 단계
를 더 포함하는 고속 정렬 방법.
3. The method of claim 2,
The high-speed alignment apparatus includes:
An extracting unit, and a combining unit,
Extracting an index and an address corresponding to the plurality of sorting target data;
Transmitting the sorting data belonging to the sorted second group to the graphics processing unit; And
The combination unit recombining the data to be sorted belonging to the sorted first group and the data to be sorted belonging to the sorted second group based on the extracted index and address
Further comprising:
제3항에 있어서,
상기 재조합하는 단계는,
상기 조합부가 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 머지 정렬(MERGE SORT)을 이용하여 재조합하는 것을 특징으로 하는 고속 정렬 방법.
The method of claim 3,
Wherein the recombining step comprises:
Wherein the combining unit recombines the data to be sorted belonging to the sorted first group and the data to be sorted belonging to the sorted second group using a MERGE SORT.
제1항에 있어서,
상기 전송 예상 시간을 계산하는 단계는,
상기 전송 시간 계산부가, 상기 분할된 제2 그룹의 크기 및 GPU의 버스 속도를 이용하여 상기 전송 예상 시간을 계산하는 것을 특징으로 하는 고속 정렬 방법.
The method according to claim 1,
Wherein the step of calculating the expected transmission time comprises:
Wherein the transmission time calculation unit calculates the transmission expected time using the size of the divided second group and the bus speed of the GPU.
제2항에 있어서,
상기 계산하는 단계는,
상기 연산 시간 계산부가, 상기 복수의 정렬 대상 데이터들을 퀵 정렬(QUICK SORT)하는데 소요되는 상기 제1 연산 예상 시간과 상기 복수의 정렬 대상 데이터들을 바이토닉 정렬(BITONIC SORT)하는데 소요되는 상기 제2 연산 예상 시간을 계산하고,
상기 정렬하는 단계는,
상기 정렬부가 상기 제1 그룹에 속하는 정렬 대상 데이터들을 상기 퀵 정렬하고,
상기 그래픽 처리부가 상기 제2 그룹에 속하는 정렬 대상 데이터들을 상기 바이토닉 정렬하는 것을 특징으로 하는 고속 정렬 방법.
3. The method of claim 2,
Wherein the calculating step comprises:
Wherein the calculation time calculation unit calculates the first calculation expected time required for quick sorting the plurality of sorting target data and the second calculation used for bitwise sorting the plurality of sorting target data Estimated time is calculated,
Wherein the aligning comprises:
The sorting unit quick-aligns sorting data belonging to the first group,
Wherein the graphics processing unit arranges the sorting data belonging to the second group vigorously.
복수의 정렬 대상 데이터들을 서로 다른 기법으로 정렬하는데 소요되는 제1 및 제2 연산 예상 시간을 각각 계산하는 연산 시간 계산부;
상기 제1 연산 예상 시간과 상기 제2 연산 예상 시간을 이용하여 상기 복수의 정렬 대상 데이터들을 제1 및 제2 그룹으로 분할하는 분할부;
상기 제2 그룹에 속하는 정렬 대상 데이터들을 전송하는데 소요되는 전송 예상 시간을 계산하는 전송 시간 계산부;
상기 전송 예상 시간을 기초로 상기 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 제2 연산 예상 시간을 재계산하는 연산 시간 재계산부;
상기 제1 연산 예상 시간 및 상기 재계산된 제2 연산 예상 시간을 기초로 상기 복수의 정렬 대상 데이터들을 상기 제1 및 제2 그룹으로 재분할하는 재분할부; 및
상기 재분할된 그룹에 속하는 정렬 대상 데이터들을 정렬하는 정렬부
를 포함하는 고속 정렬 장치.
A calculation time calculating unit for calculating first and second estimated operation times required for sorting a plurality of pieces of alignment target data by different techniques;
A dividing unit dividing the plurality of sorting target data into first and second groups using the first calculation expected time and the second calculation expected time;
A transmission time calculation unit for calculating a transmission expected time required to transmit data to be sorted belonging to the second group;
A calculation time recalculation unit for recalculating a second calculation expected time required for sorting the data belonging to the second group based on the transmission expected time;
A subdivision unit for subdividing the plurality of sorting target data into the first and second groups based on the first calculation expected time and the recalculated second calculation expected time; And
And a sorting unit for sorting the sorting target data belonging to the re-
/ RTI &gt;
제7항에 있어서,
상기 재분할된 제2 그룹에 속하는 정렬 대상 데이터들을 정렬하는 그래픽 처리부
를 더 포함하고,
상기 정렬부는,
상기 재분할된 제1 그룹에 속하는 정렬 대상 데이터들을 정렬하는 고속 정렬 장치.
8. The method of claim 7,
And a graphics processing unit for sorting the sorting target data belonging to the re-divided second group
Further comprising:
The alignment unit may include:
And sorting the data to be sorted belonging to the re-divided first group.
제8항에 있어서,
복수의 정렬 대상 데이터들에 해당하는 인덱스 및 주소를 각각 추출하는 추출부; 및
상기 추출된 인덱스 및 주소를 기초로 상기 정렬된 제1 그룹에 속하는 정렬 대상 데이터들과 상기 정렬된 제2 그룹에 속하는 정렬 대상 데이터들을 재조합하는 조합부
를 더 포함하는 고속 정렬 장치.
9. The method of claim 8,
An extracting unit for extracting an index and an address corresponding to a plurality of sorting target data, respectively; And
A combination unit for recombining the data to be sorted belonging to the sorted first group and the data to be sorted belonging to the sorted second group based on the extracted index and address,
Further comprising:
제7항에 있어서,
상기 연산 시간 계산부는,
상기 복수의 정렬 대상 데이터들을 CPU에서 퀵 정렬(QUICK SORT)하는데 소요되는 상기 제1 연산 예상 시간과 상기 복수의 정렬 대상 데이터들을 GPU에서 바이토닉 정렬(BITONIC SORT)하는데 소용되는 상기 제2 연산 예상 시간을 계산하고,
상기 연산 시간 재계산부는,
상기 전송 예상 시간을 기초로 상기 제2 그룹에 속하는 데이터들을 정렬하는데 소요되는 상기 제2 연산 예상 시간을 재계산하는 것을 특징으로 하는 고속 정렬 장치.
8. The method of claim 7,
The calculation time calculator calculates,
Wherein the first calculation expected time required for quick sorting the plurality of sorting target data by the CPU and the second calculation estimated time used for bitwise sorting the plurality of sorting target data in the GPU Lt; / RTI &gt;
The calculation time recalculation unit,
And recalculates the second estimated operation time required for sorting the data belonging to the second group based on the estimated transmission time.
KR1020100020805A 2010-03-09 2010-03-09 Apparatus for quick sorting and the method thereof KR101662769B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100020805A KR101662769B1 (en) 2010-03-09 2010-03-09 Apparatus for quick sorting and the method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100020805A KR101662769B1 (en) 2010-03-09 2010-03-09 Apparatus for quick sorting and the method thereof

Publications (2)

Publication Number Publication Date
KR20110101647A KR20110101647A (en) 2011-09-16
KR101662769B1 true KR101662769B1 (en) 2016-10-05

Family

ID=44953631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100020805A KR101662769B1 (en) 2010-03-09 2010-03-09 Apparatus for quick sorting and the method thereof

Country Status (1)

Country Link
KR (1) KR101662769B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101482229B1 (en) * 2013-04-29 2015-01-14 주식회사 실리콘아츠 Computer enabled method of data sort, system performing the same and storage media storing the same
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001100919A (en) * 1999-09-28 2001-04-13 Alps Electric Co Ltd Disk array device and its control method
US20090328049A1 (en) * 2008-06-27 2009-12-31 Kabushiki Kaisha Toshiba Information processing apparatus, granularity adjustment method and program

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101639769B (en) * 2008-07-30 2013-03-06 国际商业机器公司 Method and device for splitting and sequencing dataset in multiprocessor system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001100919A (en) * 1999-09-28 2001-04-13 Alps Electric Co Ltd Disk array device and its control method
US20090328049A1 (en) * 2008-06-27 2009-12-31 Kabushiki Kaisha Toshiba Information processing apparatus, granularity adjustment method and program
JP2010009395A (en) * 2008-06-27 2010-01-14 Toshiba Corp Information processing apparatus, and method and program for adjusting grain size

Cited By (7)

* Cited by examiner, † Cited by third party
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 (en) 2011-09-16

Similar Documents

Publication Publication Date Title
KR101662769B1 (en) Apparatus for quick sorting and the method thereof
US10140123B2 (en) SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
US20190079903A1 (en) Providing matrix multiplication using vector registers in processor-based devices
KR101196566B1 (en) Multiprocessor system, and its information processing method
US8762655B2 (en) Optimizing output vector data generation using a formatted matrix data structure
US8296515B1 (en) RAID-6 computation system and method
US20200371993A1 (en) Spatial indexing using resilient distributed datasets
CN110825312A (en) Data processing device, artificial intelligence chip and electronic equipment
KR20200019734A (en) Parallel compute offload to database accelerator
US9170836B2 (en) System and method for re-factorizing a square matrix into lower and upper triangular matrices on a parallel processor
CN112784973A (en) Convolution operation circuit, device and method
CN103995827B (en) High-performance sort method in MapReduce Computational frames
Wienbrandt et al. Fast genome-wide third-order SNP interaction tests with information gain on a low-cost heterogeneous parallel FPGA-GPU computing architecture
TWI831076B (en) Method for training or prediction using cluster-connected neural network and system for training or prediction using cluster-connected neural network
CN105677755A (en) Method and device for processing graph data
Lu et al. GSNP: a DNA single-nucleotide polymorphism detection system with GPU acceleration
Bonny et al. Time efficient segmented technique for dynamic programming based algorithms with FPGA implementation
CN103106181B (en) A kind of ultra long FFT implementation method on a processor
CN117539546A (en) Sparse matrix vector multiplication acceleration method and device based on non-empty column storage
CN111886605B (en) Processing for multiple input data sets
Lysakov et al. FPGA-based hardware accelerator for high-performance data-stream processing
CN103262068B (en) For using single pass hierarchical single ergodic data to produce the system and method for cross product matrix
CN105531602A (en) System and method of implementing finite difference time domain models with multiple accelerated processing components (APCs)
WO2017051300A1 (en) Method and system for interpolating data
CN112953549B (en) Storage processing method and device for sparse matrix

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