LAPACK
LAPACK(Netlib 참조 실장)
LAPACK logo.svg
초기 릴리즈1992년; 30년 전(1992년)
안정된 릴리스
3.10.1[1] / 2022년 4월 12일; 3개월 전 (2022년 4월 12일)
저장소
기입처포트란 90
유형소프트웨어 라이브러리
면허증.BSD-신규
웹 사이트www.netlib.org/lapack/ Edit this on Wikidata

LAPACK(선형 대수 패키지)는 수치 선형 대수를 위한 표준 소프트웨어 라이브러리입니다.선형 방정식과 선형 최소 제곱, 고유값 문제 및 특이값 분해시스템을 풀기 위한 루틴을 제공합니다.또한 LU, QR, CholeskySchur [2]분해같은 연관된 행렬 인수분해를 구현하기 위한 루틴을 포함합니다.LAPACK은 원래 FORTRAN 77로 작성되었지만 버전 3.2(2008)[3]에서 Fortran 90으로 변경되었습니다.루틴은 단일 정밀도와 이중 정밀도 모두에서 실제 매트릭스와 복잡한 매트릭스를 모두 처리합니다.LAPACK은 기본 BLAS 구현에 의존하여 [2]: "The BLAS as the Key to Portability" 루틴에 효율적이고 이식 가능한 계산 구성요소를 제공합니다.

LAPACK은 LINPACK의 선형 방정식 및 선형 최소 제곱 루틴과 EISPACK의 고유값 루틴의 후속으로 설계되었으며, 1970년대와 1980년대에 작성된 LINPACK은 공유 메모리를 가진 당시 현대 벡터 컴퓨터에서 실행되도록 설계되었다.LAPACK 반면에 효과적으로 현대cache-based 구조와 현대 슈퍼 스칼라 processors,[2]:"는 성능에 영향을 미친 요소"의instruction-level 유사성에 캐시를 이용하도록 하고, 그리하여 더 빨리 린팩보다 이런 자판기에well-tuned Basic구현한 규모를 실행할 수 있도록 설계되었다.[2]:"그 Basic은 중요한 전화로". 또한 LAPACK은 ScaLAPACK 및 PLAPACK [4]등의 최신 패키지의 분산 메모리 시스템에서 실행되도록 확장되었습니다.

Netlib LAPACK은 BSD 스타일의 3개 조항 라이선스로 라이선스를 취득합니다.이 라이선스는 제한이 [5]거의 없는 허용 자유 소프트웨어 라이선스입니다.

명명 방식

LAPACK의 서브루틴에는 식별자를 매우 컴팩트하게 하는 명명 규칙이 있습니다.번째 Fortran 표준은 최대 6자 길이의 식별자만 지원하므로, 이 [2]: "Naming Scheme" 제한에 맞게 이름을 줄여야 했습니다.

LAPACK 서브루틴 이름은 다음과 같습니다.pmmaaa, 여기서:

  • p는 사용되는 숫자 상수의 유형을 나타내는1글자 코드입니다. S,D각각 단일 정밀도와 이중 정밀도로 실제 부동소수점 산수를 나타냅니다.C그리고.Z각각 단일 정밀도와 이중 정밀도를 갖는 복잡한 산술의 약자입니다.새로운 버전인 LAPACK95에서는 데이터 유형을 명시적으로 지정해야 하는 필요성을 극복하기 위해 범용 서브루틴을 사용합니다.
  • mm는 알고리즘에 의해 예상되는 매트릭스의 종류를 나타내는2글자 코드입니다.다른 종류의 매트릭스에 대한 코드는 다음과 같습니다. 실제 데이터는 특정 종류에 따라 다른 형식으로 저장됩니다. 예를 들어, 코드가 다음과 같은 경우DI주어진 경우 서브루틴은 길이의 벡터를 예상합니다.n대각선상의 요소를 포함하는 한편, 코드는GE지정되면 서브루틴은 매트릭스의 엔트리를 포함하는 n×n 배열을 예상합니다.
  • aaa는 서브루틴에 실장되어 있는 실제 알고리즘을 나타내는1 ~ 3글자 코드입니다.SV는 선형 시스템을 해결하기 위한 서브루틴을 나타냅니다.R는 랭크 1 갱신을 나타내고 있습니다.

예를 들어, 실제 2배 정밀도 산술을 사용하여 일반(비구조화) 행렬로 선형 시스템을 푸는 서브루틴을 호출한다.DGESV를 클릭합니다.[2]: "Linear Equations"

LAPACK 명명 방식의 매트릭스 유형
이름. 묘사
BD 쌍대각 행렬
DI 대각 행렬
GB 일반 대역 행렬
GE 일반 행렬(예: 비대칭, 경우에 따라 직사각형)
GG 일반 행렬, 일반화 문제(즉, 한 쌍의 일반 행렬)
GT 일반 삼각행렬
HB (복소) 에르미트 밴드 매트릭스
(복소수) 에르미트 행렬
HG 상부 헤센베르크 행렬, 일반화 문제(즉, 헤센베르크 행렬과 삼각 행렬)
HP (복잡한) Hermitian, 패킹된 스토리지 매트릭스
HS 상부 헤센베르크 행렬
동작 (실제) 직교 행렬, 포장된 저장 행렬
또는 (실제) 직교 행렬
PB 대칭행렬 또는 에르미트행렬 양의 유한대
PO 대칭 행렬 또는 에르미트 행렬 양의 행렬
PP 대칭행렬 또는 에르미트행렬 양의 유한, 포장된 저장행렬
PT 대칭행렬 또는 에르미트행렬 양삼각행렬
SB (실제) 대칭대칭행렬
SP 대칭, 패킹된 스토리지 매트릭스
세인트 (실제) 대칭행렬삼각행렬
시스템 대칭 행렬
TB 삼각형의 밴드 매트릭스
TG 삼각 행렬, 일반화 문제(예: 삼각 행렬 쌍)
TP 삼각형, 패킹된 스토리지 매트릭스
TR 삼각행렬(또는 경우에 따라서는 준수직)
TZ 사다리꼴 행렬
유엔 (복소) 유니터리 행렬
업. (복잡한) 유니터리, 포장된 스토리지 매트릭스

다른 프로그래밍 언어 및 라이브러리와 함께 사용

오늘날 많은 프로그래밍 환경에서는 C 바인딩이 있는 라이브러리의 사용을 지원하므로 몇 가지 제한이 있는 한 LAPACK 루틴을 직접 사용할 수 있습니다.또한 R,[6] MATLAB [7][8]SciPy같은 과학 및 수치 컴퓨팅을 위한 많은 다른 소프트웨어 라이브러리와 도구가 LAPACK 위에 구축되어 있습니다.

대체 언어 바인딩도 몇 가지 사용할 수 있습니다.

실장

BLAS와 마찬가지로 LAPACK은 특정 시스템에서 보다 나은 성능을 제공하기 위해 포크 또는 개서될 수 있습니다.구현의 일부는 다음과 같습니다.

고속화
AppleMacOSiOS용 프레임워크. BLAS 및 LAPACK [9][10]튜닝 버전을 포함합니다.
넷립 LAPACK
LAPACK 공식
Netlib ScaLAPACK
PBLAS 위에 구축된 스케일러블(멀티코어) LAPACK.
인텔 MKL
인텔의 x86 CPU용 연산 루틴.
오픈블라스
BLAS 및 LAPACK 오픈소스 재실장
Gonum LAPACK
부분적인 네이티브 Go 구현.

LAPACK은 일반적으로 기본적인 BLAS 루틴을 호출하여 계산의 대부분을 실행하므로 단순히 조정된 BLAS 구현에 링크하는 것만으로 퍼포먼스를 대폭 향상시킬 수 있습니다.그 결과 LAPACK은 BLAS만큼 자주 재실장되지 않습니다.

유사한 프로젝트

이들 프로젝트는 LAPACK과 동일한 기능을 제공하지만 LAPACK과는 메인인터페이스가 다릅니다.

libflame
고밀도 선형 대수 라이브러리.LAPACK 호환 래퍼가 있습니다.BLIS가 [11]권장되는 구현이지만 모든 BLAS에서 사용할 수 있습니다.
고유
선형 대수를 위한 헤더 라이브러리입니다.호환성을 위해 BLAS 및 부분 LAPACK 구현이 있습니다.
마그마
MAGMA(Matrix Algebra on GPU and Multicore Architectures) 프로젝트는 LAPACK과 유사한 고밀도 선형 대수 라이브러리를 개발하지만 GPGPU로 가속화된 멀티코어 시스템을 포함한 이종 및 하이브리드 아키텍처용으로 개발합니다.
플라즈마
확장 가능한 멀티 코어 아키텍처를 위한 병렬 선형 대수(PLASMA) 프로젝트는 멀티 코어 아키텍처를 위한 LAPACK의 현대식 대체품입니다.PLASMA는 QUARK라는 런타임 스케줄러와 함께 비동기 연산 및 기능을 개발하기 위한 소프트웨어 프레임워크로, 유향 비순환 [12]그래프로 종속성을 표현하는 모든 코드에 사용될 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "LAPACK 3.10.1".
  2. ^ a b c d e f Anderson, E.; Bai, Z.; Bischof, C.; Blackford, S.; Demmel, J.; Dongarra, J.; Du Croz, J.; Greenbaum, A.; Hammarling, S.; McKenney, A.; Sorensen, D. (1999). LAPACK Users' Guide (Third ed.). Philadelphia, PA: Society for Industrial and Applied Mathematics. ISBN 0-89871-447-8. Retrieved 28 May 2022.
  3. ^ "LAPACK 3.2 Release Notes". 16 November 2008.
  4. ^ "PLAPACK: Parallel Linear Algebra Package". www.cs.utexas.edu. University of Texas at Austin. 12 June 2007. Retrieved 20 April 2017.
  5. ^ "LICENSE.txt". Netlib. Retrieved 28 May 2022.
  6. ^ "R: LAPACK Library". stat.ethz.ch. Retrieved 2022-03-19.
  7. ^ "LAPACK in MATLAB". Mathworks Help Center. Retrieved 28 May 2022.
  8. ^ "Low-level LAPACK functions". SciPy v1.8.1 Manual. Retrieved 28 May 2022.
  9. ^ "Guides and Sample Code". developer.apple.com. Retrieved 2017-07-07.
  10. ^ "Guides and Sample Code". developer.apple.com. Retrieved 2017-07-07.
  11. ^ "amd/libflame: High-performance object-based library for DLA computations". GitHub. AMD. 25 August 2020.
  12. ^ "ICL". icl.eecs.utk.edu. Retrieved 2017-07-07.

외부 링크