Computing

BLAS란? (AXPY, GEMV, GEMM 연산자) 본문

Parallel | Distributed Computing/알고리즘

BLAS란? (AXPY, GEMV, GEMM 연산자)

jhson989 2022. 7. 7. 23:08

BLAS 란

BLAS는 Basic Linear Algebra Subprograms(BLAS)의 약자[1]로, 한국어로 해석하자면 기본 선형 대수 함수(subprogram을 어떻게 번역하는 게 좋을 지 모르겠다.)이다. 말 그대로 선형 대수 분야에서 사용되는 기본적인 연산자들의 일반화된 형태들의 집합을 나타낸다. 

 

High performance computing (HPC) 분야에서 성능을 측정하는 도구로도 사용되며, 기본적으로 선형 대수가 많은 산업 분야에서 사용되기에 최고의 성능을 내는 것을 목적으로 많은 연구가 진행되고 있다. 특히 SIMD 연산자를 이용한 병렬처리가 BLAS 연산 최적화에 많이 사용된다. 대표적으로 NVIDIA는 자신의 GPU에 최적화된 cuBLAS[2] library를, INTEL은 자신들의 CPU(multi core CPU)에 최적화된 MKL[3] library를 제공한다.

 

BLAS가 제공하는 선형 대수 함수는 level 1, level 2, level 3으로 구분된다. Level 1 연산은 벡터-벡터의 일반화된 연산, level 2 연산은 행렬-벡터의 일반화된 연산, level 3 연산은 행렬-행렬일반화된 연산을 의미한다.

 

 

 

Level 1 : AXPY

Level 1 연산은 벡터-벡터의 일반화된 연산을 의미하며, 가장 대표적인 연산으로 AXPY가 있다. AXPY는 "a x plus y"를 나타내는 것으로, 다음 Eq 1.과 같다. α=1 일 때, AXPY는 벡터-벡터 덧셈을 나타낸다.

 

Eq 1. AXPY

 

Level 1 연산자에는 벡터-벡터 내적, 벡터 normalize 등이 있다. AXPY와 같이 level 1 연산은 O(n) 시간 복잡도를 가진다.

 

 

 

Level 2 : GEMV

Level 2 연산은 행렬-벡터의 일반화된 연산을 의미하며, 가장 대표적인 연산으로 GEMV가 있다. GEMV는 "GEneral Matrix Vector multiplication"을 나타내는 것으로, 다음 Eq 2.과 같다. α=1, β=0 일 떄, GEMV는 행렬-벡터 곱셈을 나타낸다.

 

Eq 2. GEMV

 

Level 2 연산자에는 linear solver(Tx=y)이 포함된다. GEMV와 같이 level 2 연산은 O(n^2) 시간 복잡도를 가진다.

 

 

 

Level 3 : GEMM

Level 3 연산은 행렬-행렬의 일반화된 연산을 의미하며, 가장 대표적인 연산으로 GEMM가 있다. GEMM는 "GEneral Matrix Matrix multiplication"을 나타내는 것으로, 다음 Eq 3.과 같다. α=1, β=0 일 떄, GEMM는 행렬-행렬 곱셈을 나타낸다.

 

Eq 3. GEMM

 

GEMM와 같이 level 3 연산은 O(n^3) 시간 복잡도를 가진다.

 

 

 

Reference 

[1] https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms

[2] https://docs.nvidia.com/cuda/cublas/index.html

[3] https://en.wikipedia.org/wiki/Math_Kernel_Library