KR102527829B1 - Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법 - Google Patents

Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법 Download PDF

Info

Publication number
KR102527829B1
KR102527829B1 KR1020210109459A KR20210109459A KR102527829B1 KR 102527829 B1 KR102527829 B1 KR 102527829B1 KR 1020210109459 A KR1020210109459 A KR 1020210109459A KR 20210109459 A KR20210109459 A KR 20210109459A KR 102527829 B1 KR102527829 B1 KR 102527829B1
Authority
KR
South Korea
Prior art keywords
fft
matrix transposition
matrix
transposition
work
Prior art date
Application number
KR1020210109459A
Other languages
English (en)
Other versions
KR20230027541A (ko
Inventor
김덕수
강호민
이재홍
Original Assignee
한국기술교육대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국기술교육대학교 산학협력단 filed Critical 한국기술교육대학교 산학협력단
Priority to KR1020210109459A priority Critical patent/KR102527829B1/ko
Publication of KR20230027541A publication Critical patent/KR20230027541A/ko
Application granted granted Critical
Publication of KR102527829B1 publication Critical patent/KR102527829B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (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)
  • Discrete Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명의 일 실시예에 따른 행렬 전치기반 2D-FFT 연산 장치는, 데이터 행렬로부터 행렬 전치 혹은 FFT 연산 처리하기 위해 연산처리부로 일을 할당하는 일 분배부; CPU 또는 GPU 기반으로 이루어지고, 상기 일 분배부로부터 받은 일들을 컴퓨팅 자원들이 행렬 전치 혹은 FFT 연산 처리하는 상기 연산처리부; 상기 연산처리부로부터 행렬 전치 혹은 FFT 연산 처리가 끝낸 일들을 받고, 각 행들이 2D-FFT가 마무리될 때까지 다음 수행할 행렬 전치 혹은 FFT에 대한 일을 생성하는 결과수집부를 포함하며, 본 발명에 의하면, 행렬 전치기반 2D-FFT를 이용하여 수행 속도를 빠르게 하고, 행렬 전치와 1D-FFT 내의 적절한 일 분할을 통해 인-플레이스 2D-FFT 연산을 수행하며, 우선순위 동적 스케줄링을 사용하여 CPU와 GPU의 연산 능력을 최대한 활용함으로써, 처리 속도 및 효율을 향상시킬 수 있다

Description

CPU와 GPU를 사용하는 행렬 전치기반 2D-FFT 연산 장치 및 이를 이용한 데이터 연산 방법{Matrix transposition-based 2D-FFT operation device using CPU/GPU and data operation method using the same}
본 발명은 2D-FFT 연산 장치에 관한 것으로, 더욱 상세하게는 CPU와 GPU를 동시에 사용하는 행렬 전치기반 2D-FFT 연산 장치 및 이를 이용한 데이터 연산 방법에 관한 것이다.
일반적으로 CPU (Central Processing Unit)는 컴퓨터 시스템을 통제하고 프로그램의 연산을 실행하는 가장 핵심적인 컴퓨터의 제어 장치, 혹은 그 기능을 내장한 칩을 말한다. 컴퓨터 안의 중앙 처리 장치(CPU)는 외부에서 정보를 입력 받고, 기억하고 컴퓨터 프로그램의 명령어를 해석하여 연산한다.
또한 GPU (Graphics Processing Unit)는 메모리를 빠르게 처리하고 바꾸어 화면으로 출력할 프레임 버퍼 안의 영상 생성을 가속하도록 설계된 전문화된 전자 회로이다. GPU는 컴퓨터 그래픽과 영상 처리에 매우 효과적으로 처리한다. 고도의 병행 구조는 다용도 CPU보다 능률적이다.
한편, 알려진 데이터 정렬 알고리즘 중 인-플레이스(in-place) 기법은 별도의 데이터를 사용하지 않고 입력값을 변환하는 알고리즘이다. 보조 변수를 사용할 수 있도록 약간의 추가 저장 공간은 허용하며, 입력값은 인-플레이스 알고리즘이 실행되면, 그 결과인 출력값으로 덮어쓰기 된다. 또한 출력값을 위한 메모리를 추가적으로 필요하지 않으므로 메모리 사용을 줄일 수 있다.
이를 활용하여 행렬 전치기반 2D-FFT 연산을 목표로, 기존 방식과는 다르게 인-플레이스 기법을 사용하여 2D-FFT 연산을 수행할 수 있다.
그러나 기존 CPU와 GPU를 활용한 행렬 전치기반 2D-FFT 연산 장치의 경우, 아웃-오브-플레이스 기법을 사용하여 연산을 수행했으며, 이러한 아웃-오브-플레이스 기법의 경우 추가적인 메모리와 불필요한 연산이 필요하게 된다.
또한 인-플레이스 기법으로 처리할 경우 입력리스트 내부에서 정렬이 이뤄지므로, 제한적인 크기나 제한적 메모리 공간에서 더 많은 할당을 수행하여 공간 복잡도가 증가하거나, 연산 간의 병렬적으로 처리하기 힘든 문제가 발생할 수 있다.
따라서, 이를 해결하고자 2D-FFT 일 분할 방법과 CPU와 GPU를 최대로 활용할 수 있는 우선순위 동적 스케줄링 방법을 활용함으로써, 기존 방식보다 빠른 2D-FFT 연산을 수행할 수 있도록 할 필요성이 있다.
대한민국 공개 특허 제10-2004-0110338호(2004년12월31일 공개)
본 발명의 목적은 행렬 전치기반 2D-FFT 연산을 목표로, 기존 방식과는 다르게 인-플레이스 기법을 사용하여 2D-FFT 연산을 수행하되, CPU와 GPU를 최대로 활용할 수 있는 우선순위 동적 스케줄링 방법을 활용하여, 기존 방식보다 빠른 2D-FFT 연산을 수행할 수 있는 CPU와 GPU를 동시에 사용하는 행렬 전치 기반 2D-FFT 장치 및 이를 이용한 데이터 연산 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 행렬 전치기반 2D-FFT 연산 장치는, 데이터 행렬로부터 행렬 전치 혹은 FFT 연산 처리하기 위해 연산처리부로 일을 할당하는 일 분배부; CPU 또는 GPU 기반으로 이루어지고, 상기 일 분배부로부터 받은 일들을 컴퓨팅 자원들이 행렬 전치 혹은 FFT 연산 처리하는 상기 연산처리부; 상기 연산처리부로부터 행렬 전치 혹은 FFT 연산 처리가 끝낸 일들을 받고, 각 행들이 2D-FFT가 마무리될 때까지 다음 수행할 행렬 전치 혹은 FFT에 대한 일을 생성하는 결과수집부를 포함한다.
상기 일 분배부는 일을 분배할 때, 분산하여 효율적으로 데이터 처리하기 위해 GPU와 CPU 기반의 연산처리부가 분산 처리하도록 일을 분배하는 것을 특징으로 한다.
상기 연산처리부는 행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT 순으로 2D-FFT를 수행하는 것을 특징으로 한다.
상기 행렬 전치기반 2D-FFT 연산 장치는 빠른 2D-FFT의 처리를 위해서
Figure 112021095631797-pat00001
>
Figure 112021095631797-pat00002
Figure 112021095631797-pat00003
순으로 우선순위를 두어 행렬 전치 혹은 FFT 연산 처리 장치가 활용 가능할 때마다 일을 할당하는 우선순위 동적 스케줄링을 사용해 일을 분배할 수 있는 것을 특징으로 한다.
(여기서,
Figure 112021095631797-pat00004
는 모든 데이터 행에 대해서 i번째 행에서 아래쪽 부분 행렬 전치를 의미하고,
Figure 112021095631797-pat00005
는 모든 데이터 행에 대해서 i번째 행에서 위쪽 부분 행렬 전치를 의미하며,
Figure 112021095631797-pat00006
는 i번째 행에서의 1D-FFT를 수행하는 것을 의미한다.)
본 발명의 일 실시예에 따른 행렬 전치기반 2D-FFT 연산 장치를 이용한 데이터 연산 방법은, CPU와 GPU를 기반으로 분산하여 행렬 전치 및 2D-FFT를 수행하는 행렬 전치기반 2D-FFT 연산 장치를 이용한 데이터 연산 방법에 있어서, 행렬 전치 연산을 위해서 행렬 전치기반 2D-FFT 연산 장치의 일 분배부는 모든 데이터 행에 대해서 i번째 행에서 아래쪽 부분 행렬 전치를 의미하는
Figure 112021095631797-pat00007
를 생성하는 단계; 행렬 전치를 수행하여 일이 끝나면 행렬 전치기반 2D-FFT 연산 장치의 결과수집부로 보내고, 상기 결과수집부는 첫 번째 행렬 전치가 끝난 부분에 i번째 행에서의 1D-FFT를 의미하는
Figure 112021095631797-pat00008
에 해당하는 첫 번째 1D-FFT를 생성하여 상기 일 분배부로 넘겨주는 단계; 첫 번째 행렬 전치 과정이 마무리 되면 행렬 전치기반 2D-FFT 연산 장치에 구비되는 연산처리부는 두 번째 행렬 전치와 첫 번째 1D-FFT를 수행하는 단계; 상기 결과수집부는 두 번째 행렬 전치가 마무리된 행에 대해서 두 번째 1D-FFT를 생성하는 단계; 두 번째 행렬 전치와 첫 번째 1D-FFT를 수행하고 나서, 상기 연산처리부는 생성된 상기 두 번째 1D-FFT를 처리하는 단계를 포함한다.
상기에 있어서, 상기 두 번째 행렬 전치 처리시, 다른 데이터 영역에 영향을 주지 않고 처리할 수 있는 부분인
Figure 112021095631797-pat00009
로 처리하고, 만약 첫 번째 1D-FFT가 끝나면 동기화를 진행하는 단계를 더 포함한다.(여기서,
Figure 112021095631797-pat00010
는 i번째 행에서 위쪽 부분 행렬 전치를 의미한다.)
본 발명의 행렬 전치기반 2D-FFT 연산 장치 은 데이터 정렬 연산시, 행렬 전치기반 2D-FFT를 이용하여 수행 속도를 빠르게 하는 장점이 있다.
또한, 행렬 전치와 1D-FFT 내의 적절한 일 분할을 통해 인-플레이스 2D-FFT 연산을 수행하며, 우선순위 동적 스케줄링을 사용하여 CPU와 GPU의 연산 능력을 최대한 활용함으로써, 처리 속도 및 효율을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 행렬 전치기반 2D-FFT 연산 장치의 전체 구성을 나타낸 블록도이다.
도 2는 본 발명의 일 실시예에 따른 행렬 전치 방법의 개념을 나타낸 도면이다.
도 3은 도 2의 행렬 전치 과정을 구체적으로 설명한 도면이다.
이하에서는 도면을 참조하여 본 발명의 구체적인 실시예를 상세하게 설명한다. 다만, 본 발명의 사상은 제시되는 실시예에 제한되지 아니하고, 본 발명의 사상을 이해하는 당업자는 동일한 사상의 범위 내에서 다른 구성요소를 추가, 변경, 삭제 등을 통하여, 퇴보적인 다른 발명이나 본 발명 사상의 범위 내에 포함되는 다른 실시예를 용이하게 제안할 수 있을 것이나, 이 또한 본원 발명 사상 범위 내에 포함된다고 할 것이다. 또한, 각 실시예의 도면에 나타나는 동일한 사상의 범위 내의 기능이 동일한 구성요소는 동일한 참조부호를 사용하여 설명한다.
우선 기본적으로 FFT(Fast Fourier Transform)은 DFT(Discrete Fourier Transform)을 빠르게 연산할 수 있게 만든 알고리즘이다. f(x,y)를 N x N 크기인 복소수 행렬이라고 하고, x와 y를 각각 행과 열의 순서라고 하면, 2D-DFT는 수학식 1과 같이 나타낼 수 있다(
Figure 112021095631797-pat00011
).
Figure 112021095631797-pat00012
수학식 1은 O(
Figure 112021095631797-pat00013
)의 시간 복잡도를 가지며 이를 줄이기 위해서 2D-DFT를 행과 열 방향 1D-FFT로 분할하여 처리하는 방법을 사용한다. 그러므로 수학식 1은 다음 수학식 2와 같이 표현할 수 있다.
Figure 112021095631797-pat00014
이 방법으로 시간 복잡도를 O(
Figure 112021095631797-pat00015
)까지 낮출 수 있다. 따라서 2D-FFT를 행 방향 1D-FFT와 열 방향 1D-FFT, 두 가지 단계로 2D-FFT를 계산할 수 있다.
FFTW(Fastest Fourier Transform in the West)는 CPU 기반 FFT 라이브러리이다. DFT의 성능을 극대화하기 위해서 SIMD(Single Instruction Multiple Data)를 활용할 수 있다.
본 발명에서는 행렬 전치 기반으로 2D-FFT 연산을 수행한다.
2D-FFT를 행 방향과 열 방향 1D-FFT로 처리할 수 있는데, 실제 컴퓨팅 연산에서 열 방향 1D-FFT를 처리할 때 성능이 저하되는 문제가 발생한다.
보통 데이터는 행 방향으로 데이터가 나열되어 있다(row major order). 그렇기 때문에 행 방향 1D-FFT를 할 때는 연속적인 데이터에서 연산을 처리할 수 있어, 캐시 효율성이 높아지고 빠르게 처리 가능하다.
그러나 열 방향 1D-FFT를 할 때는 비연속적인 데이터를 연산하기 때문에 성능이 저하되는 문제가 발생한다.
이를 해결하고자 행렬 전치를 사용하는 2D-FFT 방법을 사용한다. 행렬 전치는 행렬의 행과 열의 요소를 바꾸는 방법으로써, 열 방향 1D-FFT를 행 방향 1D-FFT로 바꾸어 줄 수 있다. 따라서 1D-FFT 연산의 효율성을 높일 수 있다.
기본 2D-FFT의 연산 과정은 '열 방향 1D-FFT -> 행 방향 1D-FFT' 라고 표현한다면, 행렬 전치기반 2D-FFT의 연산 과정은 '행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT' 라고 표현할 수 있다.
즉, 행렬 전치기반 2D-FFT 연산 장치는 행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT 순으로 진행된다.
인-플레이스 기법 상에서 수행되는 과정을 설명하기 위해서, 본 발명에서는 행렬 전치 예시를 도 2와 같이 나타낼 수 있다.
우선
Figure 112021095631797-pat00016
는 i번째 행에서 위쪽 부분 행렬 전치를 뜻하고,
Figure 112021095631797-pat00017
는 i번째 행에서 아래쪽 부분 행렬 전치를 뜻한다.
Figure 112021095631797-pat00018
는 i번째 행에서의 1D-FFT를 수행하는 것이다
이러한 행렬 전치를 수행하기 위해 본 발명의 행렬 전치기반 2D-FFT 연산 장치는 도 1을 참조하면, 일분배부, 연산 처리부, 결과 수집부를 포함한다.
일 분배부는 데이터 행렬로부터 생성된 전치행렬인 생성된
Figure 112021095631797-pat00019
,
Figure 112021095631797-pat00020
,
Figure 112021095631797-pat00021
를 행렬 전치 혹은 FFT 연산 처리하기 위해 연산처리부로 할당하는 역할을 한다. 각 일들은 행 단위로써 연산을 수행한다.
이때 일을 분배할 때에는 분산하여 효율적으로 데이터 처리하기 위해 GPU는
Figure 112021095631797-pat00022
를, CPU는
Figure 112021095631797-pat00023
,
Figure 112021095631797-pat00024
를 맡아서 처리하도록 분배한다.
그러나 행렬 전치의 경우 비교적 빠르게 수행이 가능하기 때문에 본 발명에서는 CPU에도
Figure 112021095631797-pat00025
를 수행할 수 있도록 한다.
연산처리부는 CPU 또는 GPU 기반으로 이루어진 장치이며, 일 분배부로부터 받은 일들을 컴퓨팅 자원들이 행렬 전치 혹은 FFT 연산 처리한다. 연산 과정에서 행렬 덧셈, 뺄셈 혹은 곱셈 연산이 포함될 수 있다.
또한 연산처리부는 데이터 연산 처리한 후의 일들은 결과수집부로 전송한다.
결과수집부는 상기 연산처리부로부터 행렬 전치 혹은 FFT 연산 처리 장치가 끝낸 일들을 받고, 각 행들이 2D-FFT가 마무리될 때까지 다음 수행할 행렬 전치 혹은 FFT에 대한 일을 생성 및 결과를 내는 역할을 수행한다.
각 행들은 행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT 순으로 2D-FFT를 수행해야 한다. 각 행들이 이러한 연산들을 독립적으로 수행하기에는 행렬 전치와 1D-FFT 간에 연산의 간섭이 발생한다.
따라서 이를 피하고 연산 자원을 최대한으로 활용하기 위해서 행렬 전치를
Figure 112021095631797-pat00026
,
Figure 112021095631797-pat00027
로 나누어서 일을 생성한다.
도 3은 전반적인 일 분배 및 우선순위에 따라 연산하는 과정을 구체적으로 설명하기 위해 보여주고 있다.
처음 행렬 전치 연산을 위해서 일 분배부는 모든 데이터 행에 대해서
Figure 112021095631797-pat00028
를 생성한다.
단, 첫 번째 행부터 마지막 행까지 순서대로 일을 만든다. 일을 만든 후, 행렬 전치를 수행할 연산처리부(CPU)로 보내어 일을 처리한다.
일이 끝났다면 결과수집부로 보내어지고, 결과수집부는 첫 번째 행렬 전치가 끝난 부분에
Figure 112021095631797-pat00029
를 생성하여 일 분배부로 넘겨준다.
첫 번째 행렬 전치 과정이 모두 마무리가 되면, 연산처리부(CPU 기반)는 두 번째 행렬 전치와 첫 번째 1D-FFT를 수행한다. 다만 두 번째 행렬 전치는
Figure 112021095631797-pat00030
이 아닌
Figure 112021095631797-pat00031
로 우선적으로 처리한다.
현재 아래 부분은
Figure 112021095631797-pat00032
로 처리하는 부분이 있기 때문에, 아래 부분에 영향을 주는
Figure 112021095631797-pat00033
로 처리하기 어렵다.
따라서 두 번째 행렬 전치를 처리할 수 있는 부분인
Figure 112021095631797-pat00034
로 처리한다. 만약 첫 번째 FFT가 끝났다면, 동기화를 진행한다.
두 번째 행렬 전치를 빠르게 진행하기 위해서,
Figure 112021095631797-pat00035
진행한 부분을 제외한 나머지 부분의 행렬 전치 연산이 필요하다.
첫 번째 행렬 전치를 수행한 것과 마찬가지로 첫 번째 행부터 진행한다. 두 번째 행렬 전치가 마무리된 행에 대해서 두 번째 1D-FFT인
Figure 112021095631797-pat00036
를 생성한다.
마지막으로 두 번째 행렬 전치가 마무리되면 CPU와 GPU에 있는 연산처리부는 각각 두 번째
Figure 112021095631797-pat00037
처리에 집중한다.
물론, 일 분배부에서 CPU가
Figure 112021095631797-pat00038
,
Figure 112021095631797-pat00039
,
Figure 112021095631797-pat00040
를 모두 처리할 수 있으나, 빠른 2D-FFT의 처리를 위해서 본 발명에서는
Figure 112021095631797-pat00041
>
Figure 112021095631797-pat00042
Figure 112021095631797-pat00043
순으로 우선순위를 두어 CPU와 GPU와 같이 일을 수행하도록 하여 효율을 증가시킬수 있다.
행렬 전치 연산이 빠르게 끝나야만
Figure 112021095631797-pat00044
를 처리할 수 있기 때문에, 행렬 전치에 높은 우선순위를 둔다.
Figure 112021095631797-pat00045
는 두 번째 행렬 전치에 사용되기 때문에 첫 번째 행렬 전치인
Figure 112021095631797-pat00046
에 더 높은 우선 순위를 둔다.
따라서 이러한 우선순위가 있고, 행렬 전치 혹은 FFT 연산 처리 장치가 활용 가능할 때마다 일을 할당하는 우선순위 동적 스케줄링을 사용해 일을 분배할 수 있다.
공평한 결과값을 측정하기 위해 행렬 데이터를 만들었다. 그 데이터를 읽어서 2D-FFT를 실행하였다.
본 발명의 연산 장치와 전통적인 2D-FFT를 장치를 각각 10번씩 실행시키고 실행 시간을 측정하였다.
Figure 112021095631797-pat00047
는 CPU 기반의 라이브러리인 FFTW를 사용한 알고리즘이다.
Figure 112021095631797-pat00048
는 GPU 기반의 라이브러리인 cuFFT를 사용한 알고리즘이다.
Ogata는 CPU와 GPU를 동시에 사용한 알고리즘으로써, 본 발명에서 제안한 알고리즘과 달리 아웃-오브-플레이스 상에서 2D-FFT를 진행한다.
측정한 시간은 아래 표 1 및 표 2와 같으며 단정밀도, 배정밀도에서
Figure 112021095631797-pat00049
~
Figure 112021095631797-pat00050
행렬 크기를 각각 진행했다.
Figure 112021095631797-pat00051
Figure 112021095631797-pat00052
표와 같이 실험 결과, 기존 알고리즘 중 가장 높은 성능을 보여준 알고리즘과 비교했을 경우 본 발명(Ours)의 단정밀도, 배정밀도가 각각 최대 2.27, 1.93배 높은 성능을 보였다.
나아가 본 발명은 2D-FFT를 사용하는 컴퓨터 생성 홀로그램(Compute Generate Hologram, CGH)과 결합하여, 홀로그램 생성 시간을 단축시키는 장치로 확장 가능하다.
본 발명의 데이터 연산 방법은 컴퓨터에서 판독 가능한 저장매체에 저장된 컴퓨터 프로그램에 의해 수행될 수 있다.
여기서 컴퓨터는 예컨대 데스크톱 컴퓨터, 노트북 컴퓨터뿐만 아니라 모바일 환경의 태블릿, 패블릿 폰, 스마트 폰 등이 될 수 있으며, 컴퓨터 프로그램은 모바일 어플리케이션을 포함할 수 있다.
100 : 일 분배부
200 : 연산처리부
300 : 결과수집부

Claims (6)

  1. 데이터 행렬로부터 행렬 전치 혹은 FFT 연산 처리하기 위해 연산처리부로 일을 할당하는 일 분배부;
    CPU 또는 GPU 기반으로 이루어지고, 상기 일 분배부로부터 받은 일들을 컴퓨팅 자원들이 행렬 전치 혹은 FFT 연산 처리하는 상기 연산처리부;
    상기 연산처리부로부터 행렬 전치 혹은 FFT 연산 처리가 끝낸 일들을 받고, 각 행들이 2D-FFT가 마무리될 때까지 다음 수행할 행렬 전치 혹은 FFT에 대한 일을 생성하는 결과수집부를 포함하며,
    상기 연산처리부는, 행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT 순으로 2D-FFT를 수행하고,
    상기 행렬 전치기반 2D-FFT 연산 장치는, 빠른 2D-FFT의 처리를 위해서
    Figure 112023009760887-pat00066
    >
    Figure 112023009760887-pat00067
    Figure 112023009760887-pat00068
    순으로 우선순위를 두어 행렬 전치 혹은 FFT 연산 처리 장치가 활용 가능할 때마다 일을 할당하는 우선순위 동적 스케줄링을 사용해 일을 분배하는
    (여기서,
    Figure 112023009760887-pat00069
    는 모든 데이터 행에 대해서 i번째 행에서 아래쪽 부분 행렬 전치를 의미하고,
    Figure 112023009760887-pat00070
    는 모든 데이터 행에 대해서 i번째 행에서 위쪽 부분 행렬 전치를 의미하며,
    Figure 112023009760887-pat00071
    는 i번째 행에서의 1D-FFT를 수행하는 것을 의미한다.)
    행렬 전치기반 2D-FFT 연산 장치.
  2. 제1항에 있어서,
    상기 일 분배부는
    일을 분배할 때, 분산하여 효율적으로 데이터 처리하기 위해 GPU와 CPU 기반의 연산처리부가 분산 처리하도록 일을 분배하는 것을 특징으로 하는 행렬 전치기반 2D-FFT 연산 장치.
  3. 삭제
  4. 삭제
  5. 행렬 전치 및 2D-FFT를 수행하는 행렬 전치기반 2D-FFT 연산 장치를 이용한 데이터 연산 방법에 있어서,
    행렬 전치 연산을 위해서 행렬 전치기반 2D-FFT 연산 장치의 일 분배부는 모든 데이터 행에 대해서 i번째 행에서 아래쪽 부분 행렬 전치를 의미하는
    Figure 112023009760887-pat00059
    를 생성하는 단계;
    행렬 전치를 수행하여 일이 끝나면 행렬 전치기반 2D-FFT 연산 장치의 결과수집부로 보내고, 상기 결과수집부는 첫 번째 행렬 전치가 끝난 부분에 i번째 행에서의 1D-FFT를 의미하는
    Figure 112023009760887-pat00060
    에 해당하는 첫 번째 1D-FFT를 생성하여 상기 일 분배부로 넘겨주는 단계;
    첫 번째 행렬 전치 과정이 마무리 되면 행렬 전치기반 2D-FFT 연산 장치의 연산처리부는 두 번째 행렬 전치와 첫 번째 1D-FFT를 수행하는 단계;
    상기 결과수집부는 두 번째 행렬 전치가 마무리된 행에 대해서 두 번째 1D-FFT를 생성하는 단계;
    두 번째 행렬 전치와 첫 번째 1D-FFT를 수행하고 나서, 상기 연산처리부는 생성된 상기 두 번째 1D-FFT를 처리하는 단계를 포함하며,
    상기 연산처리부는, 행렬 전치 -> 1D-FFT -> 행렬 전치 -> 1D-FFT 순으로 2D-FFT를 수행하고,
    상기 행렬 전치기반 2D-FFT 연산 장치는, 빠른 2D-FFT의 처리를 위해서
    Figure 112023009760887-pat00072
    >
    Figure 112023009760887-pat00073
    Figure 112023009760887-pat00074
    순으로 우선순위를 두어 행렬 전치 혹은 FFT 연산 처리 장치가 활용 가능할 때마다 일을 할당하는 우선순위 동적 스케줄링을 사용해 일을 분배하는
    (여기서,
    Figure 112023009760887-pat00075
    는 모든 데이터 행에 대해서 i번째 행에서 아래쪽 부분 행렬 전치를 의미하고,
    Figure 112023009760887-pat00076
    는 모든 데이터 행에 대해서 i번째 행에서 위쪽 부분 행렬 전치를 의미하며,
    Figure 112023009760887-pat00077
    는 i번째 행에서의 1D-FFT를 수행하는 것을 의미한다.)
    데이터 연산 방법.
  6. 제5항에 있어서,
    상기 두 번째 행렬 전치 처리시, 다른 데이터 영역에 영향을 주지 않고 처리할 수 있는 부분인
    Figure 112021095631797-pat00061
    로 처리하고, 만약 첫 번째 1D-FFT가 끝나면 동기화를 진행하는 단계
    를 더 포함하는 데이터 연산 방법.
    (여기서,
    Figure 112021095631797-pat00062
    는 i번째 행에서 위쪽 부분 행렬 전치를 의미한다.)
KR1020210109459A 2021-08-19 2021-08-19 Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법 KR102527829B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210109459A KR102527829B1 (ko) 2021-08-19 2021-08-19 Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210109459A KR102527829B1 (ko) 2021-08-19 2021-08-19 Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법

Publications (2)

Publication Number Publication Date
KR20230027541A KR20230027541A (ko) 2023-02-28
KR102527829B1 true KR102527829B1 (ko) 2023-04-28

Family

ID=85326454

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210109459A KR102527829B1 (ko) 2021-08-19 2021-08-19 Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법

Country Status (1)

Country Link
KR (1) KR102527829B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110107060A1 (en) * 2009-11-04 2011-05-05 International Business Machines Corporation Transposing array data on simd multi-core processor architectures
JP2012160092A (ja) * 2011-02-01 2012-08-23 Fujitsu Advanced Engineering Ltd 演算装置、演算方法およびプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040110338A (ko) 2003-06-18 2004-12-31 삼성전자주식회사 코딕연산을 이용한 3780-point DFT 프로세서

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110107060A1 (en) * 2009-11-04 2011-05-05 International Business Machines Corporation Transposing array data on simd multi-core processor architectures
JP2012160092A (ja) * 2011-02-01 2012-08-23 Fujitsu Advanced Engineering Ltd 演算装置、演算方法およびプログラム

Also Published As

Publication number Publication date
KR20230027541A (ko) 2023-02-28

Similar Documents

Publication Publication Date Title
JP7009609B2 (ja) 加速数学エンジン
US10223762B2 (en) Pipelined approach to fused kernels for optimization of machine learning workloads on graphical processing units
CN110678840B (zh) 张量寄存器文件
CN110678841B (zh) 张量处理器指令集架构
CN112840356B (zh) 运算加速器、处理方法及相关设备
US20210004684A1 (en) System and method of executing neural networks
CN106228238B (zh) 现场可编程门阵列平台上加速深度学习算法的方法和系统
JP2019082996A (ja) 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体
CN101398753A (zh) 用于执行扫描运算的系统、方法及计算机程序产品
US11836520B2 (en) Dynamic batching for inference system for transformer-based generation tasks
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
Falch et al. Register caching for stencil computations on GPUs
US20220188382A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
KR102527829B1 (ko) Cpu와 gpu를 사용하는 행렬 전치기반 2d-fft 연산 장치 및 이를 이용한 데이터 연산 방법
JP6766598B2 (ja) 画像処理装置、画像処理方法および制御プログラム
KR101499804B1 (ko) 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치
Kabir et al. On the design, development, and analysis of optimized matrix-vector multiplication routines for coprocessors
US20230177401A1 (en) Selective Batching for Inference System for Transformer-Based Generation Tasks
US20220100814A1 (en) Graphics processor and acceleration method thereof
Szustak et al. Toward parallel modeling of solidification based on the generalized finite difference method using Intel Xeon Phi
CN111142841A (zh) 支持卷积运算的处理器电路系统及其卷积运算控制方法
Biswas et al. An Efficient Reduced-Memory GPU-based Dynamic Programming Strategy for Bounded Knapsack Problems
CN118013934A (zh) 文本生成方法、装置、电子设备、介质及计算机程序产品

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant