AVX2의 맥락에서 Intel의 __m256d _mm256_log2_pd(__m256d a) 함수는 Intel 및 AMD 프로세서에서는 성능이 저하된 것으로 알려졌습니다. 이 문제를 해결하기 위해 효율성과 광범위한 호환성을 제공하는 대체 구현을 살펴보겠습니다.
일반적으로 log2(ab)는 log2(a) log2로 계산됩니다. (비). a는 2^지수 가수로 표현되므로 계산은 지수 log2(가수)로 단순화됩니다. 제한된 범위의 가수(1.0 ~ 2.0)를 사용하면 log2(가수)를 계산하기 위한 맞춤형 다항식 근사가 가능합니다.
테일러 급수 전개는 일반적으로 계수의 시작점으로 사용되지만, 목표 범위에 대한 오류를 최소화하려면 minimax 피팅을 권장합니다. 1.0에 가까운 값 주변의 더 높은 정밀도를 위해 mantissa-1.0을 다항식 입력으로 사용할 수 있으므로 상수 항이 필요하지 않습니다.
원하는 정확도 수준이 구현 선택에 영향을 미칩니다. . 정확도가 높을수록 일반적으로 추가 계산 단계로 인해 속도가 저하됩니다. Agner Fog의 VCL 라이브러리는 매우 정확한 기능을 제공하지만 모든 애플리케이션에 필수적이지 않을 수 있는 복잡한 기술을 사용합니다.
VCL의 log2 기능은 다음 단계로 구성됩니다.
정확도를 높이려면:
속도를 최적화하려면:
위 내용은 Intel의 컴파일러 종속성 없이 AVX2에서 log2(__m256d)를 효율적으로 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!