선형대수 프로그래밍

규규·2024년 3월 15일
post-thumbnail

BLAS

  • Basic Linear Algebra Subprograms
  • 벡터 덧셈, 스칼라 곱셈, 닷 프로덕트, 선형 조합, 행렬 곱셈 등의 일반적인 선형대수 연산을 수행하는 low level routine set 을 명세한 규약(표준) 임. BLAS 구현은 vector register, SIMD 명령과 같은 부동 소수점 처리 방식을 활용 함.
  • 대부분의 선형대수 라이브러리는 BLAS interface 를 따른다. 그 예시로 AMD Core Math Library (ACML), ATLAS(오픈소스), Intel MKL, OpenBLAS(가장 범용적인 오픈소스), cuBLAS (Nvidia), 애플 Accelerate framework 에 포함된 vecLib 가 있다.
  • Armadillo, LAPACK, LINPACK, GNU Octave, Mathematica, MATLAB, Numpy, R, Julia 등 많은 수치연산 SW 는 BLAS 호환 라이브러리를 사용한다.
  • High performance computing (HPC) 분야에서 성능을 측정하는 도구로도 사용되며, 기본적으로 선형 대수가 많은 산업 분야에서 사용되기에 최고의 성능을 내는 것을 목적으로 많은 연구가 진행되고 있다. 특히 SIMD 연산자를 이용한 병렬처리가 BLAS 연산 최적화에 많이 사용된다. 대표적으로 NVIDIA는 자신의 GPU에 최적화된 cuBLAS[2] library를, INTEL은 자신들의 CPU(multi core CPU)에 최적화된 MKL[3] library를 제공한다.

출처 :
https://www.lucypark.kr/blog/2015/09/06/blas-benchmarks/

LAPACK

  • Linear Algebra Package
  • ...

Intel MKL

  • Intel Math Kernel Library

  • Intel oneAPI 에 포함되었음. (oneMKL 이라고 명 함) oneAPI Math Kernel Library(oneMKL) 는 Intel MKL 루틴을 Data Parallel C++ 에서 사용 할 수 있게 해주는 오픈 소스 글루 코드 인터페이스.

  • Intel C++ compiler 와 Intel DPC++ compiler 에서 생성된 MKL 은 multi versioning 기술을 활용.

  • 즉, CPUID instruction 을 활용하여 현재 CPU 에 가장 적합한 버전을 선택. 단, Intel CPU 가 아니라면 가장 기본적이고 느린 기능을 선택.

  • *oneAPI
    Intel 이 채택한 다양한 기종의 컴퓨터 accelerator (GPU, AI Acceleator 등) 에서 동일하게 사용 할 수 있게 만든 open standard API. 개발자가 각각의 아키텍처마다 코드를 관리 할 필요성을 없앰.

    PARDISO

  • PARallel Direct Solver

  • solution of large sparse linear systems of equations on shared-memory multicore architectures.

  • solver algorithms are based on a Level-3 BLAS update and they exploit pipelining parallelism with a combination of left-looking and right-looking supermode technique

  • support all kinds of matrices (complex, real, symmetric, nonsymmetric, indefinite)

profile
복습용 저장소

0개의 댓글