산술 커널 라이브러리

Math Kernel Library
산술 커널 라이브러리
개발자인텔(R)
초기 릴리즈2003년 5월 9일, 19년 전(2003-05-09)
안정된 릴리스
2022.1 / 2022년 5월 18일, 2개월 전(2022-05-18)[1]
기입처C/C++, 인텔 DPC++ 컴파일러, Fortran
운영 체제Microsoft Windows, Linux, macOS
플랫폼인텔 Xeon, 인텔 Xe, 인텔 Core, 인텔[2] ATOM
유형라이브러리프레임워크
면허증.ISSL에서의[3][4] 프리웨어
웹 사이트www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html Edit this on Wikidata

인텔 oneAPI 매스 커널 라이브러리 (인텔 oneMKL, 구 인텔 매스 커널 라이브러리 또는 인텔 MKL)는 과학, 엔지니어링 및 재무 애플리케이션에 최적화된 연산 루틴 라이브러리입니다.핵심 산술 함수에는 BLAS, LAPACK, ScaLAPACK, 스파스 솔버, 고속 푸리에 변환 및 벡터 [5][6]산술이 포함됩니다.

라이브러리는 인텔 프로세서를[2] 지원하며 Windows, LinuxMacOS 운영 [5][6][7]체제에서 사용할 수 있습니다.

Intel oneAPI Math Kernel Library 는 oneAPI MKL (oneMKL) 인터페이스와 혼동하지 마십시오.이 인터페이스는 오픈 소스 글루 코드로 Data Parallel C+[8]에서 인텔 MKL 루틴을 사용할 수 있습니다.

이력 및 라이선스

인텔은 2003년 5월 9일에 Math Kernel Library를 출시하여 blas.[9]lib로 명명하였습니다.이 프로젝트의 개발팀은 러시아와 미국에 있다.

라이브러리는 인텔(R) Simplified Software[3] License 조건에 따라 스탠드아론 형식으로 무료로 이용할 수 있었습니다.[10]

2020년 4월부터 MKL은 하나의 API의 일부가 되었습니다.one API Base Toolkit의 일부로 구입하면 one MKL에 대한 상업적 지원을 이용할 수 있습니다.

퍼포먼스와 벤더의 제약

인텔 C++ 컴파일러 인텔 DPC+ 컴파일러에 의해 생성된 MKL 및 기타 프로그램은 함수 멀티버전이라고 불리는 기술을 통해 성능을 향상시킵니다.함수는 x86 명령 집합 확장의 많은 부분에 대해 컴파일 또는 쓰이며 실행 시 CPUID 명령을 사용하여 가장 적합한 버전을 선택합니다.현재 CPU단, 마스터 함수가 인텔 이외의 CPU를 검출하는 한 CPU가 지원하는 명령 설정에 관계없이 가장 기본적이고 느린 기능을 선택합니다.이는 2009년부터 [11]이 시스템에 "크립플 AMD" 루틴이라는 별명을 부여하고 있습니다.2020년 현재 인텔의 MKL은 Windows에 미리 컴파일된 수학 어플리케이션(NumPy, SymPy [12][13]등)과 함께 기본적으로 설치되어 있습니다.MKL에 의존하지만 MATLAB은 릴리스 2020a부터 회피책을 도입하여 인텔(AMD)[14] 이외의 CPU에서도 MKL에 의한 AVX2의 완전한 지원을 보증하고 있습니다.

이전 버전에서는 문서화되지 않은 환경 변수 설정MKL_DEBUG_CPU_TYPE=5를 사용하면 벤더 문자열에 의존한 코드 패스의 선택을 덮어쓰고 AMD 프로세서 기반 시스템에서 지원되는 명령(AVX2)을 활성화하여 인텔 CPU와 [15][16][17]동등하거나 더 나은 성능을 얻을 수 있습니다.업데이트 1 2020 이후 환경변수는 기능하지 않게 되었습니다만, 인텔은 dgemm용 Zen 2 커스텀 커널을 삽입했습니다(단, sgemm용은 아닙니다).이것은 mkl_serv_intel_cpu_true hack을 [12][13][18]사용하는 경우보다 더 심합니다.

식별을 제거하기 위해 MKL의 내부 루틴을 걸기 위한 최소 두 가지 경로가 발견되었습니다.후크는 링크하여 컴파일 시 또는 주입하여 런타임에 추가할 수 있습니다.애그너 포그는 MKL과 ICC 바이너리에도 숨겨진 비차별 디스패처가 있음을 발견했다.amkl_serv_intel_cpu_true함수는 2019년에 발견되었습니다.Fog의 intel_dispatch_patch는 두 경로를 모두 [19]후크하는 코드를 제공합니다.Daniél de Kok에 따르면 MKL 2020 Update 1의 후자 기능을 패치하는 것만으로 AMD [18]Zen의 퍼포먼스가 향상됩니다.

세부 사항

기능 카테고리

인텔 MKL에는 다음과 같은 기능 [20]카테고리가 있습니다.

  • 선형 대수: BLAS 루틴은 실제 및 복잡한 단일 및 이중 정밀 데이터에 대한 벡터 벡터(레벨 1), 매트릭스 벡터(레벨 2) 및 매트릭스(레벨 3) 연산입니다.LAPACK은 조정된 LU, 콜레스키 및 QR 인수분해, 고유값 및 최소 제곱 솔버로 구성됩니다.또한 MKL에는 Sparse BLAS, ScaLAPACK, Sparse Solver, Extended Eigensolver(FEAST, PARDISO), PBLAS 및 BLACS가 포함되어 있습니다.MKL은 libxsmm로 인해 작은 치수만 사용할 수 있습니다.
    MKL은 BLAS 및 LAPACK에 표준 인터페이스를 사용하기 때문에 다른 구현을 사용하는 애플리케이션은 MKL 라이브러리와 재링크함으로써 인텔 및 호환 프로세서에서 더 나은 성능을 얻을 수 있습니다.
  • MKL에는 1D에서 다차원, 복잡에서 복잡, 실제에서 복잡, 임의의 길이의 실제에서 실제로 변환하는 다양한 FFT(Fast Fourier Transforms)가 포함되어 있습니다.오픈 소스 FFTW로 작성된 애플리케이션은 MKL의 일부로 제공되는 인터페이스 래퍼 라이브러리와 링크하여 쉽게 MKL로 이식할 수 있습니다.
    LAPACK 및 FFT 클러스터 버전도 MKL의 일부로 사용할 수 있으며 멀티스레딩에서 단일 노드 병렬 처리와 더불어 MPI 병렬 처리도 이용할 수 있습니다.
  • 벡터 함수에는 단정밀 및 배정밀 실수 및 복소수 데이터 유형에 대한 계산 집약적인 핵심 수학 연산이 포함됩니다.컴파일러 라이브러리의 libm 함수와 비슷하지만 더 나은 성능을 제공하기 위해 스칼라가 아닌 벡터로 작동합니다.루틴의 동작을 커스터마이즈하기 위해 정확도, 에러 모드 및 디노멀라이즈된 번호 처리를 설정하는 다양한 컨트롤이 있습니다.
  • 통계 함수에는 난수 생성자와 확률 분포가 포함됩니다.멀티코어 프로세서에 최적화되어 있습니다.또한 기본적인 통계, 의존관계 추정 등을 계산하기 위한 계산집약적인 코어 내 및 코어 외 루틴도 포함됩니다.
  • 데이터 피팅 기능에는 데이터 해석, 기하학적 모델링 및 표면 근사 애플리케이션에서 사용할 수 있는 1차원 보간용 스플라인(선형, 2차, 입방체, 룩업, 단계적 상수)이 포함됩니다.
  • 심층 뉴럴 네트워크
  • 편미분 방정식
  • 비선형 최적화 문제 해결기

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Intel® Math Kernel Library Release Notes and New Features". software.intel.com.
  2. ^ a b 인텔 ® oneAPI 마스 커널 라이브러리 (oneMKL) 인텔 ®소프트웨어
  3. ^ a b "Intel Simplified Software License".
  4. ^ "OneMKL — oneAPI Specification 1.1-rev-1 documentation".
  5. ^ a b "Intel Math Kernel Library".
  6. ^ a b "Intel Math Kernel Library (MKL)".
  7. ^ "MKL - Intel Math Kernel Library". 23 April 2012.
  8. ^ "oneapi-src/oneMKL". oneAPI-SRC. 19 March 2021. oneMKL interfaces are an open-source implementation of the oneMKL Data Parallel C++ (DPC++) interface according to the oneMKL specification. It works with multiple devices (backends) using device-specific libraries underneath.
  9. ^ "Intel launches library tool for developers. (Intel Math Kernel Library 6.0) (Brief Article)". Telecomworldwire. May 9, 2003. Retrieved November 29, 2009.
  10. ^ "Intel Math Kernel Library Licensing FAQ".
  11. ^ Agner Fog. "Agner's CPU blog - Intel's "cripple AMD" function".
  12. ^ a b "Comment chain in: r/matlab - How-To force Matlab to use a fast codepath on AMD Ryzen/TR CPUs - up to 250% performance gains". reddit. Retrieved 2020-06-06.
  13. ^ a b "High-Performance Computing Center Stuttgart - Knowledge Base - Libraries(Hawk)". Retrieved 2020-06-06.
  14. ^ "Crippled No Longer: Matlab Now Runs on AMD CPUs at Full Speed - ExtremeTech". www.extremetech.com. Retrieved 2020-10-29.
  15. ^ "r/matlab - How-To force Matlab to use a fast codepath on AMD Ryzen/TR CPUs - up to 250% performance gains". reddit. 17 November 2019. Retrieved 2019-11-27.
  16. ^ Sherbaz (2019-11-06), GitHub - SherbazHashmi/HackathonServer: Hackathon Python Server with ArcGIS Integration, retrieved 2019-11-27
  17. ^ "MKL has bad performance on an AMD cpu". Mingru Yang.
  18. ^ a b de Kok, Daniël. "Intel MKL on AMD Zen". danieldk.eu.
  19. ^ "Intel's "cripple AMD" function - Agner's CPU blog".
  20. ^ admin (2019-11-14). "Developer Reference for Intel® Math Kernel Library - C". software.intel.com. Retrieved 2019-11-27.

외부 링크