1

g ++ 컴파일 시간을 줄이기 위해 빌드 서버에 투자하고 싶습니다. 소스가 병렬화 가능하기 때문에 우리의 생각은 많은 핵심 시스템입니다. (32-48-64 코어)g ++ 컴파일 중 CPU 작업

제 질문은 어떤 종류의 CPU 연산이 컴파일 과정에서 사용되는 것입니까? (새로운 AMD cpu는 2 개의 코어에 대해 1 개의 부동 소수점 단위를 가지고 있습니다.)

보통 CPU는 많은 소프트웨어로 벤치마킹되지만 CPU 컴파일을 테스트하는 웹 사이트를 찾을 수 없습니다. 어떤 종류의 소프트웨어가 g ++ 컴파일러와 유사하게 작동합니까? (x264 코딩, 압축, 암호화?)

그래서 기본적인 컴파일러는 코드 컴파일을 위해 독점적으로 사용되는 프로세서의 가장 중요한 매개 변수는 무엇입니까?

감사합니다.

+0

컴파일러는 대부분 분기 및 심볼 룩업/임의 액세스가 많은 정수 태스크입니다. 따라서 이것은 인코딩/압축/암호화 등과 매우 다릅니다. 따라서 강력한 정수 단위, 짧은 CPU 파이프 라인, 빠른 메모리 등을 원할 것입니다. 부동 소수점 및 SIMD는 전혀 중요하지 않습니다. 즉, 나는 교육받은 추측 만하기 때문에 완전히 확신 할 수는 없다. – Mysticial

+0

신비가 말하는 것 꽤 많이. 짧은 파이프 라인, 적어도 중간 정도의 캐시. 원본이 실제로 64 배 병렬 처리가 가능합니까? –

+0

답변 해 주셔서 감사합니다. 이 소프트웨어는 잘 정의 된 계층 구조의 여러 모듈로 구성됩니다. 코드베이스는 약 1.5M 라인입니다. 아니, 우리는 32 개의 스레드로 컴파일합니다. 따라서 64 개의 스레드가 공급되거나 독립적 인 모듈이 가상 서버의 16-32 스레드에서 병렬 처리 될 수 있습니다. – Senki1988

답변

1

컴파일러는 주로 메모리로드/저장 연산과 정수 연산을 사용합니다. 부동 소수점 또는 SIMD를 전혀 사용하지 않습니다 (로드/저장을 제외).

컴파일 소프트웨어는 일반적으로 고유 한 클래스의 벤치 마크와 어려운 것을 형성합니다. 프로세서 제조업체는 일반적으로 최적화하기 어려운 벤치 마크를 선호하지 않습니다.

지배적 인 요소는 클럭 주파수가 아니라 메모리 대역폭입니다. 물론이 모든 것이 함께 연주됩니다. 하지만 메모리에 대한 광범위한 액세스를 원한다면 모든 수준에서 큰 캐시를 원할 것입니다. 예를 들어 10 % 이상의 클럭 속도와 절반의 캐시 크기를 원하지는 않습니다.