자동 조정된 선형 대수 소프트웨어
Automatically Tuned Linear Algebra Software리포지토리 | |
---|---|
유형 | 소프트웨어 라이브러리 |
면허증 | BSD 라이선스 |
웹사이트 | 수학을 공부하다원천 포브스그물을 치다 |
자동 조정 선형 대수 소프트웨어(ATLAS)는 선형 대수용 소프트웨어 라이브러리다.C와 Fortran77을 위한 BLAS API의 성숙한 오픈 소스 구현을 제공한다.
ATLAS는 최적화된 BLAS 라이브러리를 자동으로 생성하는 방법으로 권장되는 경우가 많다.그것의 성능은 종종 특정 하드웨어 플랫폼에 대해 작성된 전문 라이브러리의 성능보다 뒤처지지만, 그것은 종종 새로운 시스템에서 이용 가능한 최초의 또는 심지어 최적화된 BLAS 구현이며 Netlib에서 이용 가능한 일반 BLAS보다 크게 향상된다.이 때문에 ATLAS는 다른 제품과의 비교를 위한 성능 기준선으로 이용되기도 한다.
ATLAS는 대부분의 Unix와 유사한 운영 체제와 Microsoft Windows(Cygwin 사용)에서 실행된다.광고 조항 없이 BSD 방식의 라이센스로 출시되며, MATLAB, Mathematica, Scilab, SageMath 등 유명 수학 어플리케이션과 GNU 옥타브 일부 빌드 등이 사용할 수 있다.
기능
ATLAS는 BLAS API의 완전한 구현뿐만 아니라 BLAS 위에 지어진 상위 레벨 라이브러리인 LAPACK의 일부 추가 기능을 제공한다.BLAS에서 기능성은 레벨 1, 2, 3이라고 불리는 세 그룹으로 나뉜다.
- 레벨 1은 폼의 벡터 작동을 포함한다.
- 레벨 2는 폼의 매트릭스 벡터 연산을 포함한다.
- = 에 대한 해결 방법 T 이(가) 무엇보다도 삼각형인 경우.
- 레벨 3은 널리 사용되는 GEM(General Matrix Multiplate) 작동과 같은 매트릭스 작동을 포함한다.
- 삼각형 T 에 BT - {\ T 해결뿐 아니라 다른 것들도 마찬가지 입니다
최적화 접근법
최적화 접근방식은 AEOS(Automaticed Propertic Optimization of Software)라고 불리며, ATLAS는 다음의 [1]3가지 방법을 채용하고 있다.
- 매개변수화—함수의 매개변수 공간 검색, 차단 계수, 캐시 에지 등에 사용.
- 다중 구현—동일한 기능을 구현하기 위한 다양한 접근방식(예: 본질적으로 C 코드에서 SSE 지원을 사용하기 전에 SSE 지원)을 검색
- 코드 생성—시스템에 가장 적합한 성능을 제공할 수 있는 지식을 통합한 프로그램을 작성하는 프로그램
- 매개변수화 및 다중 구현을 이용한 레벨 1 BLAS 최적화
- 모든 ATLAS 레벨 1 BLAS 함수는 자체 커널을 가지고 있다.ATLAS에서 수천 건을 유지하는 것은 어렵기 때문에 레벨 1 BLAS에 대한 아키텍처별 최적화는 거의 없다.대신, 컴파일러 최적화를 통해 시스템에 대한 고성능 구현을 생성할 수 있도록 다중 구현에 의존한다.
- 매개변수화 및 다중 구현을 이용한 레벨 2 BLAS 최적화
- 개의 데이터와 기능을 수행하기 위한 회 연산은 대개 메모리에 대한 대역폭에 의해 제한되므로 최적화 기회가 많지 않다.
- ATLAS 레벨 2 BLAS의 모든 루틴은 레벨 2 BLAS 커널 2개로 구축된다.
- GEMV—벡터 곱셈 업데이트에 의한 매트릭스:
- GER—외부 제품의 일반 순위 1 업데이트:
- 코드 생성과 다른 두 가지 기술을 사용한 레벨 3 BLAS 최적화
- ops를 N 2 }}개 데이터만 가지고 있기 때문에 최적화 기회가 많다.
레벨 3 BLAS
레벨 3 BLAS의 대부분은 GEMM에서 파생되므로, 그것이 최적화의 주요 초점이다.
- ) 작업 대( ) 데이터
연산이 n 회 데이터 액세스에 대해 지배할 것이라는 직관은 대략 제곱 행렬에만 적용된다.실제 측정은 부피 대 표면적이어야 한다.그 차이는 매우 비제곱 행렬의 경우 중요해진다.
카피할 수 있을까?
입력을 복사하면 커널 함수에 대한 최적의 액세스를 제공하는 방식으로 데이터가 배열될 수 있지만, 이는 임시 공간 할당 비용과 입력에 대한 추가 읽기 및 쓰기 비용으로 이루어진다.
GEMM이 직면한 첫 번째 질문은, 입력 내용을 복사할 여유가 있는가입니다.
그렇다면
- 정렬 상태가 양호한 블록 주 형식에 넣으십시오.
- 사용자 제공 커널 및 정리 활용
- 전치 케이스는 카피로 처리: 모든 것을 TN(전치 - 전치 없음)으로 만드십시오.
- 사본에서 α를 처리한다.
아니라면
- nocopy 버전 사용
- 메모리에 있는 행렬 A와 B의 경도에 대해 가정하지 마십시오.
- 모든 전치 사례를 명시적으로 처리
- 데이터 정렬에 대한 보장 없음
- 지원 α별 코드
- TLB 문제, 약진 등의 리스크를 실행한다.
실제적인 결정은 "피부적인 경우"를 확인하는 단순한 경험적 휴리스틱을 통해 이루어진다.
캐시 에지
2단계 캐시 차단에는 단일 캐시 에지 매개 변수가 사용된다.높은 레벨은 블록을 가로지르는 순서를 선택한다: ijk, jik, iikj, jiki, kji, kji.이것들은 제품이 한 블록 내에서 행해지는 것과 같은 주문일 필요는 없다.
전형적으로 선택된 주문은 ijk 또는 jik이다.직장의 경우 이상적인 상황은 A와 B의 NB 와이드 패널을 복사하는 것이다.ijk의 경우 A와 B의 역할을 교환한다.
외부 루프에 대해 M 또는 N 중 큰 것을 선택하면 사본의 설치 공간이 감소한다.그러나 대형 K ALASS에게는 그렇게 많은 양의 메모리조차 할당하지 않는다.대신에 그것은 L2 캐시를 가장 잘 사용하기 위해 매개변수 Kp를 정의한다.패널의 길이는 Kp로 제한된다.It first tries to allocate (in the jik case) . If that fails it tries . (If that fails it uses the no-copy version of GEMM, but this case is unlikely for reasonable choices of cache edge.) Kp는 캐시 에지와 NB의 함수다.
라팩
ATLAS BLAS를 LAPACK과 통합할 때 중요한 고려사항은 LAPACK에 대한 차단계수의 선택이다.ATLAS 차단계수가 충분히 작을 경우 라팩의 차단계수가 ATLAS 차단계수와 일치하도록 설정될 수 있다.
반복 인자화를 활용하기 위해 ATLAS는 일부 LAPACK 루틴에 대한 교체 루틴을 제공한다.이는 단순히 Netlib에서 해당 LAPACK 루틴을 덮어쓴다.
설치 필요
특정 플랫폼에 ATLAS를 설치하는 것은 일반적으로 시스템 벤더나 지역 전문가가 하고 더 많은 시청자가 이용할 수 있도록 하는 도전적인 과정이다.
많은 시스템에서 아키텍처 기본 매개변수를 사용할 수 있다. 이러한 매개변수는 본질적으로 저장된 검색과 수작업의 결과를 더한 것이다.아치 기본값이 작동하면 설치 검색보다 10-15% 더 나은 성능을 얻을 수 있다.그러한 시스템에서는 설치 프로세스가 크게 단순화된다.
참조
- ^ R. Clint Whaley; Antoine Petitet & Jack J. Dongarra (2001). "Automated Empirical Optimization of Software and the ATLAS Project" (PDF). Parallel Computing. 27 (1–2): 3–35. CiteSeerX 10.1.1.35.2297. doi:10.1016/S0167-8191(00)00087-9. Retrieved 2006-10-06.
외부 링크
- SourceForge에서 자동으로 조정된 선형 대수 소프트웨어
- ATLAS에 대한 사용자 기여
- ATLAS 개발에 대한 협업 가이드
- FAQ에는 BLAS에 대한 빠른 참조 가이드와 ATLAS LAPACK API 참조에 대한 빠른 참조 링크가 있다.
- Microsoft Visual C++ ATLAS용 방법