AVX2에서 log2(__m256d)의 효율적인 구현
SVML의 __m256d _mm256_log2_pd(__m256d a)는 Intel 컴파일러로 제한되며 AMD 프로세서에서는 속도가 느린 것으로 알려졌습니다. 대체 구현이 존재하지만 AVX2보다는 SSE에 중점을 두는 경우가 많습니다. 이 논의의 목적은 다양한 컴파일러와 호환되고 AMD 및 Intel 프로세서 모두에서 잘 작동하는 4개의 이중 숫자 벡터에 대한 log2()의 효율적인 구현을 제공하는 것입니다.
기존 전략
일반적인 접근 방식은 log2(a*b) = log2(a) log2(b) 공식을 활용하여 지수로 단순화됩니다. log2(가수)는 이중 숫자입니다. 가수의 범위는 1.0~2.0으로 제한되어 있어 log2(가수)를 구하는 다항식 근사에 적합합니다.
정확도 및 정밀도
원하는 정확도와 입력 범위가 구현에 영향을 미칩니다. Agner Fog의 VCL은 오류 방지 기술을 사용하여 높은 정밀도를 목표로 합니다. 그러나 보다 빠른 대략적인 float log()를 위해서는 JRF의 다항식 구현을 고려하십시오(여기에서 확인: http://jrfonseca.blogspot.ca/2008/09/fast-sse2-pow-tables-or-polynomials.html).
VCL 알고리즘
VCL의 로그 부동 및 이중 기능 두 부분으로 구성된 접근 방식을 따릅니다.
- 지수 및 가수 추출: 지수는 다시 부동 소수점으로 변환되고 가수는 SQRT2*보다 작은 값을 확인하여 조정됩니다. 0.5. 그런 다음 가수에서 1.0을 뺍니다.
- 다항식 근사: 조정된 가수에 다항식 근사를 적용하여 x=1.0 주변의 log(x)를 계산합니다. 배정밀도를 위해 VCL은 두 개의 5차 다항식의 비율을 사용합니다.
최종 결과는 다항식 근사값에 지수를 추가하여 얻습니다. VCL에는 반올림 오류를 최소화하기 위한 추가 단계가 포함되어 있습니다.
대체 다항식 근사치
정확도를 높이려면 VCL을 직접 사용할 수 있습니다. 그러나 float에 대한 보다 빠른 대략적인 log2() 구현을 위해서는 JRF의 SSE2 함수를 FMA를 사용하여 AVX2로 이식하는 것을 고려하십시오.
반올림 오류 방지
VCL은 다양한 기술을 사용하여 오류를 줄입니다. 반올림 오류. 여기에는 다음이 포함됩니다:
- ln2를 더 작은 상수(ln2_lo 및 ln2_hi)로 분할
- res = nmul_add(x2, 0.5, x); 행 추가 다항식 평가
불필요한 단계 제거
값이 유한하고 양수인 것으로 알려진 경우 다음 검사에 주석을 추가하여 성능을 크게 향상시킬 수 있습니다. 언더플로, 오버플로 또는 비정규.
더 보기 독서
- [minimax 오류를 사용한 다항식 근사](http://gallium.inria.fr/blog/fast-Vectorizing-math-app/)
- [비트를 사용한 빠른 근사 로그 조작](http://www.machinedlearnings.com/2011/06/fast-aboutimate-logarithm-exponential.html)
위 내용은 Intel 및 AMD 프로세서 모두에 대해 AVX2에서 log2(__m256d)를 어떻게 효율적으로 구현할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

C는 죽지 않았지만 많은 주요 영역에서 번성했습니다 : 1) 게임 개발, 2) 시스템 프로그래밍, 3) 고성능 컴퓨팅, 4) 브라우저 및 네트워크 응용 프로그램, C는 여전히 유명한 활력 및 응용 시나리오를 보여줍니다.

C#과 C의 주요 차이점은 구문, 메모리 관리 및 성능입니다. 1) C# Syntax는 현대적이며 Lambda 및 Linq를 지원하며 C 기능을 유지하고 템플릿을 지원합니다. 2) C# 자동으로 메모리를 관리하고 C는 수동으로 관리해야합니다. 3) C 성능은 C#보다 낫지 만 C# 성능도 최적화되고 있습니다.

tinyxml, pugixml 또는 libxml2 라이브러리를 사용하여 C에서 XML 데이터를 처리 할 수 있습니다. 1) XML 파일을 구문 분석 할 수 있습니다. dom 또는 sax 메소드 사용, dom은 작은 파일에 적합하며 Sax는 큰 파일에 적합합니다. 2) XML 파일 생성 : 데이터 구조를 XML 형식으로 변환하고 파일에 씁니다. 이러한 단계를 통해 XML 데이터를 효과적으로 관리하고 조작 할 수 있습니다.

C에서 XML 데이터 구조로 작업하면 tinyxml 또는 pugixml 라이브러리를 사용할 수 있습니다. 1) pugixml 라이브러리를 사용하여 XML 파일을 구문 분석하고 생성하십시오. 2) 책 정보와 같은 복잡한 중첩 XML 요소를 처리합니다. 3) XML 처리 코드를 최적화하면 효율적인 라이브러리 및 스트리밍 구문 분석을 사용하는 것이 좋습니다. 이러한 단계를 통해 XML 데이터를 효율적으로 처리 할 수 있습니다.

C는 낮은 수준의 메모리 관리 및 효율적인 실행 기능으로 인해 게임 개발, 금융 거래 시스템 및 임베디드 시스템에 없어서는 안될 것이기 때문에 여전히 성능 최적화를 지배합니다. 구체적으로, 그것은 다음과 같이 나타납니다. 1) 게임 개발에서 C의 저수준 메모리 관리 및 효율적인 실행 기능은 게임 엔진 개발에 선호되는 언어가됩니다. 2) 금융 거래 시스템에서 C의 성능 장점은 대기 시간이 매우 낮고 처리량이 높음을 보장합니다. 3) 임베디드 시스템에서 C의 저수준 메모리 관리 및 효율적인 실행 기능은 자원 제약 환경에서 매우 인기가 있습니다.

C XML 프레임 워크의 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) TinyXML은 자원으로 제한된 환경에 적합합니다. 2) PugixML은 고성능 요구 사항에 적합합니다. 3) XERCES-C는 복잡한 XMLSCHEMA 검증 및 성능, 사용 편의성 및 라이센스를 고려해야합니다.

C#은 개발 효율성과 유형 안전이 필요한 프로젝트에 적합한 반면 C#은 고성능 및 하드웨어 제어가 필요한 프로젝트에 적합합니다. 1) C#은 기업 애플리케이션 및 Windows 개발에 적합한 가비지 컬렉션 및 LINQ를 제공합니다. 2) C는 고성능 및 기본 제어로 유명하며 게임 및 시스템 프로그래밍에 널리 사용됩니다.

C 코드 최적화는 다음 전략을 통해 달성 할 수 있습니다. 1. 최적화 사용을 위해 메모리를 수동으로 관리합니다. 2. 컴파일러 최적화 규칙을 준수하는 코드를 쓰십시오. 3. 적절한 알고리즘 및 데이터 구조를 선택하십시오. 4. 인라인 함수를 사용하여 통화 오버 헤드를 줄입니다. 5. 템플릿 메타 프로 그램을 적용하여 컴파일 시간에 최적화하십시오. 6. 불필요한 복사를 피하고 움직이는 의미와 참조 매개 변수를 사용하십시오. 7. Const를 올바르게 사용하여 컴파일러 최적화를 돕습니다. 8. std :: 벡터와 같은 적절한 데이터 구조를 선택하십시오.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.