기본 선형 대수 하위 프로그램

Basic Linear Algebra Subprograms
부서지다
안정된 릴리스
3.10.0 / 2021년 6월 29일, 13개월 전(2021-06-29)
기입처구현에 따라 다름
플랫폼크로스 플랫폼
유형도서관
웹 사이트www.netlib.org/blas/

기본 선형 대수 서브 프로그램(BLAS)은 벡터 덧셈, 스칼라 곱셈, 도트 곱, 선형 조합 및 행렬 곱셈과 같은 공통 선형 대수 연산을 수행하기 위한 일련의 저레벨 루틴을 규정하는 규격입니다.선형 대수 라이브러리를 위한 사실상의 표준 로우 레벨 루틴입니다. 루틴에는 C("CBLAS 인터페이스")와 Fortran("BLAS 인터페이스") 모두에 대한 바인딩이 있습니다.BLAS 사양은 일반적이지만 BLAS 구현은 특정 머신에서의 속도에 최적화되어 있는 경우가 많기 때문에 이를 사용하면 상당한 퍼포먼스 이점을 얻을 수 있습니다.BLAS의 실장에서는 벡터 레지스터나 SIMD 명령과 같은 특수한 부동소수점 하드웨어가 이용됩니다.

1979년에[1] Fortran 라이브러리로 시작되었으며, 인터페이스는 BLAST Technical(BLAST) Forum에 의해 표준화되었습니다.BLAS 포럼의 최신 BLAS 보고서는 netlib [2]웹사이트에서 찾을 수 있습니다.이 Fortran 라이브러리는 참조 구현(BLAS 라이브러리라고도 혼동할 수 있음)으로 알려져 있으며 속도에 최적화되지 않았지만 공용 [3][4]도메인에 있습니다.

선형 대수 루틴을 제공하는 대부분의 라이브러리는 BLAS 인터페이스를 준수하므로 라이브러리 사용자는 사용되는 BLAS 라이브러리와 무관한 프로그램을 개발할 수 있습니다.BLAS의 실장은 GPGPU의 개발과 함께 cuBLASrocB를 통한 급격한 사용 증가를 알고 있다.LAS가 대표적인 예입니다.BLAS 라이브러리의 CPU 기반의 예는 다음과 같습니다.OpenBLAS, BLIS(BLAS 유사 라이브러리 인스턴스화 소프트웨어), 암 퍼포먼스 라이브러리,[5]ATLAS, 및 인텔·매스·커널·라이브러리(MKL)에 대응하고 있습니다.AMD는 AMD [6]플랫폼에 최적화된 BLIS 포크를 유지합니다.ATLAS는 임의의 아키텍처에 자동으로 최적화되는 휴대용 라이브러리입니다.MKL은 인텔 [9]프로세서를 중심으로 한 x86 및 x86-64용으로 최적화된 프리웨어[7] 및 독자 사양 벤더[8] 라이브러리입니다.OpenBLAS는 널리 사용되는 많은 아키텍처에 수작업으로 최적화된 오픈 소스 라이브러리입니다.LINPACK 벤치마크는 BLAS 루틴에 크게 의존합니다.gemm퍼포먼스 측정을 위해 사용합니다.

LAPACK, LINPACK, Armadillo, GNU 옥타브, Mathematica,[10] MATLAB,[11] NumPy,[12] RJulia를 포함한 많은 수치 소프트웨어 애플리케이션은 선형 대수 계산을 수행하기 위해 BLAS 호환 라이브러리를 사용합니다.

배경

수치 프로그래밍의 등장으로 정교한 서브루틴 라이브러리가 유용해졌다.이러한 라이브러리에는 루트 찾기, 행렬 반전 및 방정식 풀기 시스템과 같은 일반적인 높은 수준의 수학 연산을 위한 서브루틴이 포함됩니다.선택한 언어는 FORTRAN이었습니다.가장 유명한 수치 프로그래밍 라이브러리는 IBM의 SSP([13]Scientific Subroutine Package)였습니다.이러한 서브루틴 라이브러리는 프로그래머가 특정 문제에 집중하여 잘 알려진 알고리즘의 재실장을 피할 수 있도록 했다.라이브러리 루틴은 또한 평균 구현보다 나을 수 있습니다. 예를 들어 매트릭스 알고리즘은 수치 정확도를 높이기 위해 전체 피벗을 사용할 수 있습니다.도서관의 루틴은 또한 보다 효율적인 루틴을 가질 것이다.예를 들어, 라이브러리는 상위 삼각형 행렬을 해결하기 위한 프로그램을 포함할 수 있습니다.라이브러리에는 일부 알고리즘의 단정도 버전과 2배정도 버전이 포함됩니다.

처음에 이들 서브루틴은 저레벨 동작에 하드코드된 루프를 사용했습니다.예를 들어 서브루틴이 매트릭스 곱셈을 실행할 필요가 있는 경우 서브루틴에는 3개의 중첩된 루프가 있습니다.선형 대수 프로그램에는 많은 공통 하위 연산(운영 [14]체제와 관련이 없는 소위 "커널" 연산)이 있습니다.1973년과 1977년 사이에 이러한 커널 연산 중 몇 가지가 확인되었다.[15]이러한 커널 연산은 수학 라이브러리가 호출할 수 있는 정의된 서브루틴이 되었습니다.커널 콜은 하드 코드화된 루프보다 더 읽기 쉽고, 버그가 발생할 가능성이 적으며, 커널 구현이 속도에 맞게 최적화될 수 있다는 장점이 있습니다.스칼라벡터를 사용한 이러한 커널 연산의 사양인 레벨 1 BLAS(Basic Linear Algebrazal Subroutines)는 [16]1979년에 발표되었다.BLAS는 선형 대수 서브루틴 라이브러리 LINPACK을 구현하기 위해 사용되었습니다.

BLAS 추상화에 의해 하이 퍼포먼스를 실현하기 위한 커스터마이즈가 가능하게 됩니다.예를 들어 LINPACK은 많은 다른 머신에서 수정 없이 사용할 수 있는 범용 라이브러리입니다.LINPACK에서는 범용 버전의 BLAS를 사용할 수 있습니다.퍼포먼스를 향상시키기 위해 머신마다 맞춤형 버전의 BLAS를 사용할 수 있습니다.컴퓨터 아키텍처가 더욱 정교해지면서 벡터 머신이 등장했습니다.벡터 기계의 BLAS는 기계의 빠른 벡터 연산을 사용할 수 있습니다.(벡터 프로세서는 결국 인기를 잃었지만 최신 CPU의 벡터 명령은 BLAS 루틴의 성능을 최적화하기 위해 필수적입니다.)

다른 시스템 기능을 사용할 수 있게 되어 악용될 수도 있습니다.결과적으로, BLAS는 벡터 매트릭스 연산에 관련된 레벨 2 커널 연산을 통해 1984년부터 1986년까지 강화되었다.메모리 계층도 악용 대상으로 인식되었습니다.많은 컴퓨터에는 메인 메모리보다 훨씬 빠른 캐시 메모리가 있습니다. 매트릭스 조작을 현지화하면 캐시를 보다 효율적으로 사용할 수 있습니다.1987년과 1988년에 매트릭스 연산을 수행하기 위해 레벨 3 BLAS가 식별되었다.레벨 3 BLAS는 블록 분할 알고리즘을 권장했다.LAPACK 라이브러리는 레벨3 BLAS [17]를 사용합니다.

원래 BLAS는 조밀하게 저장된 벡터와 매트릭스만 관련이 있었다.희박한 행렬과 같은 BLAS에 대한 추가 확장이 [18]다루어졌다.

기능

BLAS 기능은 "레벨"이라고 불리는 세 가지 루틴으로 분류되며, 이는 알고리즘의 복잡도에서의 다항식의 정도뿐만 아니라 정의와 발행의 연대순에 대응한다. 레벨 1 BLAS 연산은 일반적으로 선형 시간, O(n), 레벨 2 연산의 2차 시간 및 레벨 3 c 연산을 필요로 한다.우빅 [19]타임현대의 BLAS 실장에서는 일반적으로 3가지 레벨이 모두 제공됩니다.

레벨 1

이 레벨은 BLAS(1979)[1]의 최초 프레젠테이션에서 기술된 모든 루틴으로 구성되어 있습니다.이러한 루틴은 스플라이드 배열에 벡터 연산만을 정의했습니다: 도트 곱, 벡터 규범, 형식의 일반화 벡터 덧셈

(「」라고 부릅니다).axpy", "a x + y") 및 기타 몇 가지 연산.

레벨 2

이 레벨에는 특히 일반화된 행렬-벡터 곱셈을 포함한 행렬-벡터 연산이 포함됩니다.gemv):

또한 선형 방정식의 x에 대한 해결사

T는 삼각형이구요.레벨 2 BLAS의 설계는 1984년에 시작되었고,[20] 결과는 1988년에 발표되었다.레벨 2 서브루틴은 특히 벡터 프로세서에서 BLAS를 사용하여 프로그램의 성능을 향상시키는 것을 목적으로 하고 있습니다.레벨 1 BLAS는 [20]"컴파일러로부터 연산의 매트릭스 벡터 특성을 숨기기 때문에" 차선책입니다.

레벨 3

1990년에 [19]공식적으로 발표된 이 수준은 "일반 행렬 곱셈"을 포함한 행렬 연산을 포함한다.gemm)의 형식입니다.

여기A와 B는 선택적으로 루틴 내부에 전치되거나 은둔될 수 있으며, 세 개의 행렬 모두 스트라이딩될 수 있다.통상행렬 곱셈 A B는 α를 1로 설정하고 C를 적절한 크기의 all-zeros 행렬로 설정함으로써 실행할 수 있다.

레벨 3에는 컴퓨팅 루틴도 포함됩니다.

여기서 T는 삼각행렬이며, 다른 기능 중 하나입니다.

레벨 3 [21]BLAS의 나머지 구현을 포함한 많은 과학적 응용 프로그램에서 매트릭스 곱셈이 보편화되고 매트릭스-벡터 곱셈의 명백한 반복을 넘어 더 빠른 알고리즘이 존재하기 때문에,gemm는 BLAS 구현자에게 최적화의 주요 타깃입니다.예: A, B하나 또는 모두를 블록 매트릭스로 분해함으로써,gemm재귀적으로 구현할 수 있습니다.이는 [dubious ]β 파라미터를 포함하는 동기 중 하나이므로 이전 블록의 결과를 축적할 수 있다.이러한 분해에는 많은 구현이 최적화되는 특수한 경우 β = 1이 필요하며, 따라서 C의 각 값에 대해 하나의 곱셈을 제거한다.이러한 분해는 제품에 사용된 데이터의 공간 및 시간 모두에서 참조의 더 나은 인접성을 제공합니다.이 경우 시스템상의 [22]캐시가 이용됩니다.캐시 레벨이 여러 개인 시스템의 경우 블록이 계산에서 사용되는 순서에 따라 블록을 두 번째로 적용할 수 있습니다.이러한 최적화 레벨은 모두 ATLAS 의 구현에서 사용됩니다.최근 Goto Kazushige에 의한 실장에서는, L2 캐시 전용의 블로킹과 TLB 미스를 줄이기 위한 연속 메모리에의 카피의 신중한 상각의 조합이, [23]ATLAS보다 우수함을 나타내고 있습니다.이러한 아이디어를 바탕으로 고도로 조정된 구현은 GotoB의 일부입니다.LAS, OpenBLASBLIS.

일반적인 변종gemmgemm3m이것은 "기존의 4개의 실제 행렬 곱셈과 2개의 실제 행렬 덧셈 대신 3개의 실제 행렬 곱셈과 5개의 실제 행렬 덧셈"을 사용하여 복소수를 계산합니다. 이 알고리즘은 Peter Ungar가 처음 [24]설명한 Strassen 알고리즘과 유사합니다.

실장

고속화
AppleMacOSiOS용 프레임워크. BLASLAPACK [25][26]튜닝 버전을 포함합니다.
암 퍼포먼스 라이브러리
Arm 64비트 AArch64 기반 프로세서를 지원하는 Arm Performance Libraries([5]암 퍼포먼스 라이브러리)를 Arm에서 이용할 수 있습니다.
지도책
자동 조정 선형 대수 소프트웨어,[27] C 및 Fortran 77용 BLAS API오픈 소스 구현.
점멸
신속한 인스턴스화를 위한 BLAS와 같은 라이브러리 인스턴스화 소프트웨어 프레임워크.대부분의 최신 CPU에 최적화되어 있습니다.BLIS는 GotoB의 완전한 리팩터링입니다.특정 플랫폼에서 작성해야 하는 코드 양을 줄이는 LAS.[28][29]
C++ AMP BLAS
C++ AMP BLAS 라이브러리는 Visual C++[30]용 Microsoft AMP 언어 확장을 위한 BLAS의 오픈 소스 구현입니다.
큐블라스
NVIDIA 기반 GPU 카드에 최적화된 BLAS로 추가 라이브러리 [31]호출이 거의 필요 없습니다.
NVLAS
NVIDIA 기반의 GPU 카드용으로 최적화된 BLAS.레벨 3 기능만 제공.다른 BLAS [32]라이브러리의 직접적인 대체 기능으로서 기능합니다.
모니터
AMD에 의한 BLAS의 OpenCL 실장.AMD Compute [33]Libraries의 일부.
클래스블라스트
대부분의 BLAS API의 [34]조정된 OpenCL 구현.
고유 BLAS
MPL 라이선스가 부여된 고유 라이브러리 위에 구현된 Fortran 77 C BLAS 라이브러리.x86, x86-64, ARM(NEON)PowerPC 아키텍처를 지원합니다.
ESSL
AIX [35]Linux에서 PowerPC 아키텍처를 지원하는 IBM의 Engineering and Scientific Subroutine Library.
고토블라스
인텔 Nehalem/Atom, VIA Nanoprocessor, AMD Opteron용으로 [36]특별히 조정된 BLAS의 Kazushige Goto의 BSD 라이센스 실장.
GNU 과학 라이브러리
다수의 수치 루틴의 멀티 플랫폼 구현.CBLAS 인터페이스를 포함합니다.
HP MLIB
HP-UX Linux에서 IA-64, PA-RISC, x86Opteron 아키텍처를 지원하는 HP의 Math 라이브러리.
인텔 MKL
x86 32비트 및 64비트를 지원하는 인텔 매스 커널 라이브러리는 [7]인텔에서 무료로 이용하실 수 있습니다.인텔 Pentium, Core 및 인텔 Xeon CPU 및 인텔 Xeon Phi 최적화, Linux, WindowsMacOS 지원.[37]
매스케이산
SUPER-UX에서는 NEC SX 아키텍처를, Linux에서는[38] Itanium지원하는 NEC의 연산 라이브러리
넷립 BLAS
Fortran [39]77로 작성Netlib에서의 공식 참조 구현.
Netlib CBLAS
C 인터페이스를 BLAS에 참조합니다.C에서 [40]Fortran BLAS를 호출할 수도 있습니다(또한 일반적입니다).
오픈블라스
GotoB 기반의 최적화된 BLASLAS, x86, x86-64,[41] MIPS ARM 프로세서 지원.
PDLIB/SX
NEC SX-4 [42]시스템을 위한 NEC의 Public Domain Mathemical Library.
록블라스
ROCm을 통해 [43]AMD GPU에서 실행되는 구현.
SCSL
SGI의 Scientific Computing Software Library에는 SGI의 [44]Irix 워크스테이션용 BLAS 및 LAPACK 구현이 포함되어 있습니다.
Sun 퍼포먼스 라이브러리
Solaris 8, 9, 10 [45]및 Linux의 SPARC, CoreAMD64 아키텍처에 최적화된 BLAS 및 LAPACK
uBLAS
BLAS 기능을 제공하는 범용 C++ 템플릿클래스 라이브러리부스트 라이브러리의 일부입니다.많은 하드웨어 액셀러레이션라이브러리에 통일된 표기로 바인딩을 제공합니다.게다가 uBLAS는 고도의 C++ [46]기능을 사용한 알고리즘의 정확성에 초점을 맞추고 있습니다.

BLAS를 사용하는 라이브러리

아르마딜로
Armadillo는 속도와 사용 편의성의 균형을 목표로 하는 C++ 선형 대수 라이브러리입니다.템플릿 클래스를 사용하여 BLAS/ATLAS 및 LAPACK에 대한 링크를 옵션으로 제공합니다.NICTA(호주)가 후원하고 있으며 [47]무료 라이선스로 라이센스가 부여됩니다.
LAPACK은 BLAS를 기반으로 구축된 상위 수준의 선형 대수 라이브러리입니다.BLAS와 마찬가지로 참조 구현이 존재하지만 libFlame 및 MKL과 같은 많은 대안이 있습니다.
미르
D로 작성된 과학과 기계 학습을 위한 LLVM 가속 범용 수치 라이브러리.범용 선형 대수 서브 프로그램(GLAS)을 제공합니다.CBLAS [48]실장 위에 구축할 수 있습니다.

유사한 라이브러리(BLAS와 호환되지 않음)

요소
Elemental은 분산 메모리 고밀도 및 스파스 직접 선형 대수 및 [49]최적화를 위한 오픈 소스 소프트웨어입니다.
하셈
는 선형 방정식을 풀고 고유값을 계산할 수 있는 C++ 템플릿 라이브러리입니다.BSD [50]라이선스로 라이선스가 부여되어 있습니다.
라마
Library for Accelerated Math Applications (LAMA)는 분산 메모리 시스템의 다양한 종류의 하드웨어(CUDA 또는 OpenCL을 통한 GPU 등)를 대상으로 하는 수치 솔버를 쓰기 위한 C++ 템플릿 라이브러리이며 하드웨어 고유의 프로그래밍을 프로그램 개발자에게 숨깁니다.
MTL4
매트릭스 템플릿라이브러리 버전4는 스퍼스 고밀도 BLAS 기능을 제공하는 범용 C++ 템플릿라이브러리입니다MTL4는 범용 프로그래밍을 통해 직관적인 인터페이스(MATLAB와 유사)와 폭넓은 적용성을 확립합니다.

스파스 BLAS

라이브러리의 역사를 통해 스파스 매트릭스를 처리하기 위한 BLAS에 대한 몇 가지 확장이 제안되었다; 스파스 매트릭스 커널 루틴의 작은 집합은 마침내 [51]2002년에 표준화되었다.

배치된 BLAS

기존의 BLAS 기능은 GPU와 같은 대량의 병렬 처리를 지원하는 아키텍처에도 이식되어 있습니다.여기서 기존의 BLAS 함수는 일반적으로 대규모 매트릭스에 뛰어난 성능을 제공합니다.그러나, 예를 들어, GEMM 루틴을 사용하여 많은 작은 행렬의 행렬 행렬 곱을 계산할 때, 그러한 아키텍처는 상당한 성능 손실을 보여줍니다.이 문제를 해결하기 위해 2017년에는 BLAS 함수의 일괄 [52]버전이 지정되었습니다.

위의 GEMM 루틴을 예로 들어 배치 버전은 많은 매트릭스에 대해 다음 계산을 동시에 수행합니다.

각 괄호 안의 k {\ k 스택 내의 모든 k {\ k 대해 연산이 수행되었음을 나타냅니다.의 경우 이 연산은 모든 매트릭스가 A 어레이 B 어레이 및 연결된 스트레이트 메모리 레이아웃에 대해 구현됩니다

배치된 BLAS 기능은 다용도 툴이 될 수 있습니다.예를 들어, 많은 시간 [53]스텝으로 긴 통합 기간을 처리하는 지수 인테그레이터Magnus 인테그레이터를 신속하게 구현할 수 있습니다.여기서, 통합의 계산 비용이 많이 드는 부분인 매트릭스 지수화는 배치된 BLAS 함수를 사용하여 모든 시간 단계에 대해 병렬로 구현될 수 있다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b *Lawson, C. L.; Hanson, R. J.; Kincaid, D.; Krogh, F. T. (1979). "Basic Linear Algebra Subprograms for FORTRAN usage". ACM Trans. Math. Softw. 5 (3): 308–323. doi:10.1145/355841.355847. hdl:2060/19780018835. S2CID 6585321. Algorithm 539.
  2. ^ "BLAS Technical Forum". netlib.org. Retrieved 2017-07-07.
  3. ^ Wayback Machine에서 blaseman Archived 2016-10-12 "제품은 Professional 등의 그룹에 의해 개발된 퍼블릭 도메인 BLAS(Basic Linear Algemal Subprograms)LAPACK(Linear Algemal PACKage) 구현입니다. Jack Dongara, 미국 테네시 대학교, 그리고 모두 WWW에 게재되었습니다(URL:[permanent dead link] http://www.netlib.org/)).
  4. ^ Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore. "Netlib and NA-Net: building a scientific computing community" (PDF). netlib.org. Retrieved 2016-02-13. The Netlib software repository was created in 1984 to facilitate quick distribution of public domain software routines for use in scientific computation.
  5. ^ a b "Arm Performance Libraries". Arm. 2020. Retrieved 2020-12-16.
  6. ^ "BLAS Library".
  7. ^ a b "No Cost Options for Intel Math Kernel Library (MKL), Support yourself, Royalty-Free". Intel. 2015. Retrieved 2015-08-31.
  8. ^ "Intel Math Kernel Library (Intel MKL)". Intel. 2015. Retrieved 2015-08-25.
  9. ^ "Optimization Notice". Intel. 2012. Retrieved 2013-04-10.
  10. ^ Douglas Quinney (2003). "So what's new in Mathematica 5.0?" (PDF). MSOR Connections. The Higher Education Academy. 3 (4). Archived from the original (PDF) on 2013-10-29.
  11. ^ Cleve Moler (2000). "MATLAB Incorporates LAPACK". MathWorks. Retrieved 2013-10-26.
  12. ^ Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). "The NumPy array: a structure for efficient numerical computation". Computing in Science and Engineering. 13 (2): 22–30. arXiv:1102.1523. Bibcode:2011arXiv1102.1523V. doi:10.1109/MCSE.2011.37. S2CID 16907816.
  13. ^ Boisvert, Ronald F. (2000). "Mathematical software: past, present, and future". Mathematics and Computers in Simulation. 54 (4–5): 227–241. arXiv:cs/0004004. Bibcode:2000cs........4004B. doi:10.1016/S0378-4754(00)00185-3. S2CID 15157725.
  14. ^ 1966년경 등장한 SSP도 RADD(행 추가), CADD(열 추가), SRMA(행 확장 및 다른 행 추가), RINT(행 교환)와 같은 몇 가지 기본 루틴을 가지고 있었다.이들 루틴은 매트릭스 반전 등의 다른 루틴을 구현하기 위한 커널 연산으로 사용되지 않은 것으로 보인다.를 참조해 주세요.
  15. ^ BLAST 포럼 2001, 페이지 1
  16. ^ 로슨 1979년
  17. ^ BLAST 포럼 2001, 페이지 1-2.
  18. ^ BLAST 포럼 2001, 페이지 2
  19. ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). "A set of level 3 basic linear algebra subprograms". ACM Transactions on Mathematical Software. 16 (1): 1–17. doi:10.1145/77626.79170. ISSN 0098-3500. S2CID 52873593.
  20. ^ a b Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "An extended set of FORTRAN Basic Linear Algebra Subprograms". ACM Trans. Math. Softw. 14: 1–17. CiteSeerX 10.1.1.17.5421. doi:10.1145/42288.42291. S2CID 3579623.
  21. ^ Goto, Kazushige; van de Geijn, Robert A. (2008). "High-performance implementation of the level-3 BLAS" (PDF). ACM Transactions on Mathematical Software. 35 (1): 1–14. doi:10.1145/1377603.1377607. S2CID 14722514.
  22. ^ Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations (3rd ed.), Johns Hopkins, ISBN 978-0-8018-5414-9
  23. ^ Goto, Kazushige; van de Geijn, Robert A. (2008). "Anatomy of High-Performance Matrix Multiplication". ACM Transactions on Mathematical Software. 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873. doi:10.1145/1356052.1356053. ISSN 0098-3500. S2CID 9359223. (25페이지) [1]
  24. ^ Van Zee, Field G.; Smith, Tyler M. (2017-07-24). "Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods". ACM Transactions on Mathematical Software. 44 (1): 1–36. doi:10.1145/3086466. S2CID 25580883.
  25. ^ "Guides and Sample Code". developer.apple.com. Retrieved 2017-07-07.
  26. ^ "Guides and Sample Code". developer.apple.com. Retrieved 2017-07-07.
  27. ^ "Automatically Tuned Linear Algebra Software (ATLAS)". math-atlas.sourceforge.net. Retrieved 2017-07-07.
  28. ^ blis: BLAS-like Library Instantiation Software Framework, flame, 2017-06-30, retrieved 2017-07-07
  29. ^ BLIS GitHub Repository, 2021-10-15
  30. ^ "C++ AMP BLAS Library". CodePlex. Archived from the original on 2017-07-08. Retrieved 2017-07-07.
  31. ^ "cuBLAS". NVIDIA Developer. 2013-07-29. Retrieved 2017-07-07.
  32. ^ "NVBLAS". NVIDIA Developer. 2018-05-15. Retrieved 2018-05-15.
  33. ^ clBLAS: a software library containing BLAS functions written in OpenCL, clMathLibraries, 2017-07-03, retrieved 2017-07-07
  34. ^ Nugteren, Cedric (2017-07-05), CLBlast: Tuned OpenCL BLAS, retrieved 2017-07-07
  35. ^ IBM Knowledge Centre: Engineering and Scientific Subroutine Library
  36. ^ Milfeld, Kent. "GotoBLAS2". Texas Advanced Computing Center. Archived from the original on 2020-03-23. Retrieved 2013-08-28.
  37. ^ "Intel Math Kernel Library (Intel MKL) Intel Software". software.intel.com. Retrieved 2017-07-07.
  38. ^ Mathkeisan, NEC. "MathKeisan". www.mathkeisan.com. Retrieved 2017-07-07.
  39. ^ "BLAS (Basic Linear Algebra Subprograms)". www.netlib.org. Retrieved 2017-07-07.
  40. ^ "BLAS (Basic Linear Algebra Subprograms)". www.netlib.org. Retrieved 2017-07-07.
  41. ^ "OpenBLAS : An optimized BLAS library". www.openblas.net. Retrieved 2017-07-07.
  42. ^ "Archived copy". Archived from the original on 2007-02-22. Retrieved 2007-05-20.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  43. ^ "rocBLAS". rocmdocs.amd.com. Retrieved 2021-05-21.
  44. ^ "Archived copy". Archived from the original on 2007-05-13. Retrieved 2007-05-20.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  45. ^ "Oracle Developer Studio". www.oracle.com. Retrieved 2017-07-07.
  46. ^ "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Retrieved 2017-07-07.
  47. ^ "Armadillo: C++ linear algebra library". arma.sourceforge.net. Retrieved 2017-07-07.
  48. ^ "Dlang Numerical and System Libraries".
  49. ^ "Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental". libelemental.org. Retrieved 2017-07-07.
  50. ^ "HASEM". SourceForge. Retrieved 2017-07-07.
  51. ^ Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). "An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum". ACM Transactions on Mathematical Software. 28 (2): 239–267. doi:10.1145/567806.567810. S2CID 9411006.
  52. ^ Dongarra, Jack; Hammarling, Sven; Higham, Nicholas J.; Relton, Samuel D.; Valero-Lara, Pedro; Zounon, Mawussi (2017). "The Design and Performance of Batched BLAS on Modern High-Performance Computing Systems". Procedia Computer Science. 108: 495–504. doi:10.1016/j.procs.2017.05.138.
  53. ^ Herb, Konstantin; Welter, Pol (2022). "Parallel time integration using Batched BLAS (Basic Linear Algebra Subprograms) routines". Computer Physics Communications. 270: 108181. arXiv:2108.07126. doi:10.1016/j.cpc.2021.108181.

추가 정보

  • BLAST Forum (2001-08-21), Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard, Knoxville, TN: University of Tennessee
  • Dodson, D. S.; Grimes, R. G. (1982), "Remark on algorithm 539: Basic Linear Algebra Subprograms for Fortran usage", ACM Trans. Math. Softw., 8 (4): 403–404, doi:10.1145/356012.356020, S2CID 43081631
  • Dodson, D. S. (1983), "Corrigendum: Remark on "Algorithm 539: Basic Linear Algebra Subroutines for FORTRAN usage"", ACM Trans. Math. Softw., 9: 140, doi:10.1145/356022.356032, S2CID 22163977
  • J. J. Dongara, J. Du Croz, S. Hammarling 및 R. J. Hanson, 알고리즘 656: FORTRAN 기본 선형 대수 서브 프로그램, ACM Trans의 확장 세트.수학. 소프트, 14(1988), 페이지 18-32.
  • J. J. Dongara, J. Du Croz, I. S. Duff, S.Hammarling, 레벨 3 기본 선형 대수 서브 프로그램 세트, ACM Trans.수학. 소프트, 16(1990), 1~17페이지.
  • J. J. Dongara, J. Du Croz, I. S. Duff, S.Hammarling, Algorithm 679: 레벨 3 기본 선형 대수 서브 프로그램 세트, ACM Trans.수학. 소프트, 16(1990), 페이지 18-28.
새로운 BLAS
  • L. S. Blackford, J. Demmel, J. Dongara, I. Duff, S. Hammarling, G. Henry, M.Heroux, L. Kaufman,Lumsdaine, A.Petitet, R. Pozo, K. Remington, R. C.Waley, 기본 선형 대수 서브 프로그램(BLAS), ACM 전송 업데이트 세트.수학. 소프트웨어, 28-2(2002), 135-151페이지.
  • J. Dongara, Basic Linear Algebra Subprograms Technical Forum Standard, 고성능 애플리케이션 및 슈퍼컴퓨팅 국제 저널, 16 (1)(2002), 페이지 1 ~ 111 및 고성능 애플리케이션 및 슈퍼컴퓨팅 국제 저널, 16 (2) (2002), 페이지 115 ~ 199.

외부 링크

  • BLAS 홈페이지(Netlib.org)
  • BLAS FAQ
  • LAPACK 사용자 가이드의 BLAS 퀵레퍼런스 가이드
  • 로슨 구술사 BLAS의 원저자 중 한 명은 구술사 인터뷰에서 BLAS의 창설을 논의한다.Charles L. Lawson Oral history 인터뷰 (2004년 11월 6일과 7일, 캘리포니아 주 샌 클레멘테)펜실베이니아 주 필라델피아, 산업 및 응용 수학 협회
  • Dongara의 구술 이력 인터뷰에서 Jack Dongara는 LINPACK에 대한 BLAS의 초기 관계, 새로운 아키텍처를 위한 상위 레벨의 BLAS 버전의 작성, 특정 머신에 대한 BLAS를 자동으로 최적화하기 위한 ATLAS 시스템의 향후 작업에 대해 조사합니다.잭 동가라, 2005년 4월 26일, 녹스빌 TN 테네시 대학교 토마스 헤이의 구두 역사 인터뷰.필라델피아, 펜실베이니아, 산업 및 응용 수학 학회
  • BLAS의 퍼포먼스가 이렇게 뛰어난 이유는 무엇입니까?2.6GHz 프로세서에서 10개의 순진한 1000×1000 행렬 곱셈(10개의10 부동소수점 곱셈)은 15.77초, BLAS 구현은 1.32초 걸립니다.
  • 스파스 기본 선형 대수 하위 프로그램의 개요:BLAS 테크니컬 포럼의 새로운 표준 [2]