제온을 위한 gcc 최적화 플래그?
Xeons에 최적화할 때 어떤 gcc 컴파일러 플래그를 사용할 것인지 당신의 입력을 원합니다.
운치나 행진곡에는 '제온'이 없는데 어떤 것이 가장 가까운가요?
최근 GCC/Xeon에 대한 업데이트입니다.
Sandy-Bridge 기반 Xeon(E3-12xx 시리즈, E5-14xx/24xx 시리즈, E5-16xx/26x/46xx 시리즈).
-march=corei7-avx
< 또는 GCC < 4.9.0 는-march=sandybridge
GCC >= 4.9.0의 경우.그러면 Sandy Bridge에 대한 AES 및 PCLMUL 명령 집합뿐만 아니라 Advanced Vector Extensions 지원이 활성화됩니다.다음은 GCC i386/x86_64 옵션 페이지의 개요입니다.
64비트 확장 기능이 있는 Intel Core i7 CPU, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, AVX, AES 및 PCLMUL 명령 집합 지원.
Ivy-Bridge 기반 Xeon(E3-12xx v2 시리즈, E5-14xx v2/24xx v2 시리즈, E5-16xx v2/26xx v2/46xx v2 시리즈, E7-28xxx v2/48xxx v2/88xxx v2 시리즈).
-march=core-avx-i
< 또는 GCC < 4.9.0 는-march=ivybridge
GCC >= 4.9.0의 경우.여기에는 Sandy Bridge(corei7-avx) 옵션이 포함되어 있으며, 새로운 Ivy 명령 집합인 FGSBASE, RDRND 및 F16C를 지원합니다.GCC 옵션 페이지에서:
64비트 확장 기능이 있는 Intel Core CPU, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FGSBASE, RDRND 및 F16C6 명령 집합 지원.
Haswell 기반 Xeon(E3-1xxv3 시리즈, E5-1xxv3 시리즈, E5-2xxv3 시리즈).
-march=core-avx2
또는 GCC 4.8.2/4.8.3의 경우-march=haswell
GCC >= 4.9.0의 경우.GCC 옵션 페이지에서:
64비트 확장 기능이 있는 Intel Haswell CPU, MOBE, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FGSBASE, RDRND, FMA, BMI, BMI 및 F16C 명령어 세트.
Broadwell 기반 Xeon(E3-12xx v4 시리즈, E5-16xx v4 시리즈)
-march=core-avx2
또는 GCC 4.8.x의 경우-march=broadwell
GCC >= 4.9.0의 경우.GCC 옵션 페이지에서:
64비트 확장 기능이 있는 Intel Broadwell CPU, MOBE, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FGSBASE, RDRND, FMA, BMI, BMI, FDC16, FDC, FDC, FDC, FDC, FDC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC, FSC
스카이레이크 기반 제온(E3-12xx v5 시리즈) 및 카비레이크 기반 제온(E3-12xx v6 시리즈):
-march=core-avx2
또는 GCC 4.8.x의 경우-march=skylake
또는 GCC 4.9.x의 경우-march=skylake-avx512
= xGCC > = 5.x의 경우AVX-512는 256비트 고급 벡터 확장 SIMD 명령에 대한 512비트 확장입니다.
GCC 옵션 페이지에서:
64비트 확장 기능이 있는 Intel Skylake 서버 CPU, MOVE, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, POPNT, PKU, AVX, AVX2, AES, PCLMU, FSGSBase, RDRND, FMC, FX, FX, FX, FX, BMI, BMI, FX2
커피 레이크 기반 제온(E-21xx):
-march=skylake-avx512
.캐스케이드 레이크 기반 제온(플래티넘 8200/9200 시리즈, 골드 5200/6200 시리즈, 실버 4100/4200 시리즈, 브론즈 3100/3200 시리즈):
-march=cascade-lake
(1987 gcc 9.x).GCC 옵션 페이지에서:
MOVEBE, MMX, SSE, SSE2, SSE3, SSE3, SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMU, FGSBASE, RDRND, FMA, BMI, FMUSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FPSH, FX3, FPSH, FS, FS, FS, F
AVX-512 벡터 신경망 명령(AVX512 VNI)은 컨볼루션 신경망 기반 알고리듬을 가속화하도록 설계된 AVX-512의 일부인 x86 확장입니다.
Cooper Lake 기반의 Xeon(플래티넘, 골드, 실버, 브론즈):
-march=cooperlake
(1987 gcc 10.1).이 스위치는 AVX512BF16 ISA 확장을 활성화합니다.
컴파일러가 다음을 사용하여 수행할 작업을 확인합니다.-march=native
사용할 수 있는 옵션:
gcc -march=native -Q --help=target
최신 버전의 gcc는 컴파일러가 자동으로 최적을 결정할 수 있는 -march=native를 가지고 있습니다.-march
깃발
Xeon은 마케팅 용어로 매우 다른 내부의 프로세서 목록을 포괄합니다.
최신 Nehalem 프로세서(Core i7)를 의미하는 경우 이 슬라이드는 4.3.1 gcc 기준으로 -march=filename을 사용해야 함을 나타냅니다(단, 자체 앱 테스트에서 이를 능가하는 다른 설정을 찾을 수 있음).4.3 시리즈는 FP 산술의 해당 측면을 최적화하려는 경우 -mse4.2도 추가했습니다.
다음은 인텔 컴파일러의 튜닝과 일부 gcc 플래그를 비교하는 몇 가지 토론입니다.
march=native는 사용자의 컴퓨터에는 적합하지만 이진 릴리스에는 적합하지 않습니다.
원자 330(p4/64bit)에는 march=nocona가 권장됩니다. march=core2는 core2에 해당합니다.
당신은 64비트로 가고 있다고 생각합니다.
다음은 프로세서가 지원하는 모든 플래그를 보여줍니다.
cat /proc/cpuinfo | grep flags | head -1
프로세스에 대해 어떤 최적화가 존재하는지 또는 구체적으로 어떤 최적화가 있는지 결정하는 가장 좋은 방법은 모델뿐만 아니라 컴파일 중인 시스템에 어떤 버전의 gcc가 있는지에 따라 달라집니다.사용 중인 gcc 버전을 확인하고 해당 문서를 상호 참조하십시오.
https://gcc.gnu.org/onlinedocs
예를 들어, 슬랙웨어 14.1 x64는 gcc 4.8.2이므로 여기로 이동하겠습니다.
https://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/i386-and-x86-64-Options.html#i386-and-x86-64-Options
Intel CPU 및 x86_64를 사용한 경험은 특정 CPU 유형에 맞게 최적화하도록 gcc에 말할 때마다 성능이 -march=vmdk보다 더 나빠진 것이 아니라,YMMV는 물론이죠, 하지만 저는 이런 것들을 가지고 몇 년 동안 여러 번 놀았고, 항상 그래왔습니다.
OTOH, i386에서 적어도 i686 또는 SSE 수학을 원한다면 펜티엄 4를 목표로 하는 것이 합리적일 수 있습니다.
언급URL : https://stackoverflow.com/questions/943755/gcc-optimization-flags-for-xeon
'programing' 카테고리의 다른 글
아약스 요청에서 X-Requested-With 헤더를 제거할 수 있습니까? (0) | 2023.07.31 |
---|---|
Spring JPA로 소프트 삭제 처리 (0) | 2023.07.31 |
PHP 이미지 업로드 보안 확인 목록 (0) | 2023.07.31 |
요소를 전환하는 네이티브 jQuery 기능이 있습니까? (0) | 2023.07.31 |
도커 exec으로 2개의 명령어를 실행하는 방법 (0) | 2023.07.31 |