programing

Apple M1에서 march= native가 작동하지 않는 이유는 무엇입니까?

newstyles 2023. 10. 11. 20:33

Apple M1에서 march= native가 작동하지 않는 이유는 무엇입니까?

C++ 프로그램을 컴파일하려고 할 때마다march=nativeM1 칩이 탑재된 맥북에서 clang을 사용할 때 다음과 같은 오류가 발생합니다.

clang: error: the clang compiler does not support '-march=native'

그런데 예전에는 인텔 CPU를 탑재한 구형 맥북에서 작동했습니다. clan은 이 아키텍처를 지원하지 않습니까?

clang --version다음을 제공:

Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: arm64-apple-darwin20.2.0

Apple clang 버전 13.0.0에서는-mcpu=apple-m1를 사용할 수 있습니다.

$ clang --print-supported-cpus
Apple clang version 12.0.5 (clang-1205.0.22.9)
Target: arm64-apple-darwin20.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
Available CPUs for this target:

    a64fx
    apple-a10
    apple-a11
    apple-a12
    apple-a13
    apple-a14
    apple-a7
    apple-a8
    apple-a9
    apple-latest
    apple-s4
    apple-s5
    carmel
    cortex-a34
    cortex-a35
    cortex-a53
    cortex-a55
    cortex-a57
    cortex-a65
    cortex-a65ae
    cortex-a72
    cortex-a73
    cortex-a75
    cortex-a76
    cortex-a76ae
    cortex-a77
    cortex-a78
    cortex-x1
    cyclone
    exynos-m3
    exynos-m4
    exynos-m5
    falkor
    generic
    kryo
    lightning
    neoverse-e1
    neoverse-n1
    saphira
    thunderx
    thunderx2t99
    thunderx3t110
    thunderxt81
    thunderxt83
    thunderxt88
    tsv110
    vortex

-mcpu=apple-a14M1이 제일 좋을 것 같아요.

15번방에서.-march=native이제 Apple M1용으로 존재합니다(개인적으로 사용합니다).

내가 알기론 이건 아닙니다.Apple M1구체적으로, 그것은 또한 다양한 다른 아키텍처(mostly를 들어 다양한 다른 암 프로세서)에 대한 clang과 함께 발생합니다. 예를 들어, 이 버그 보고서를 여기서 보세요 https://github.com/DMOJ/judge-server/issues/303 .

기본적으로 새로운 아키텍처에 대한 모든 클랑의 빌드는 컴파일러가 빌드되는 대상에 대해 "march= native"에 대한 기본값을 제공하도록 선택해야 합니다. 그렇지 않은 경우 이 오류 메시지가 나타납니다.최적화 대상이 있는 암 프로세서의 경우에도 종종 "-march" 대신 "-mcpu=xxx"를 사용해야 합니다.

예를 들어 당신이 사용할 아이폰의 경우-mcpu=apple-a11 -mcpu=apple-a12기타.

그러나 아직 그러한 목표가 실행되지 않았습니다.Apple M1

또 다른 해결책은 브루와 함께 하는 업데이트 클랑입니다.

lang: error: clang 컴파일러가 '-march= native'를 지원하지 않습니다.

1° - llvm 콘브루 설치

brew install llvm

2° - 클랑 버전 점검

cd /opt/homebrew/opt/llvm
.clang --version

결과:

Homebrew clang version 15.0.6
Target: arm64-apple-darwin22.2.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin

3° - 새 버전으로 경로를 수정합니다(예: .zshrc에 추가).

export PATH="/opt/homebrew/opt/llvm/bin:$PATH"

언급URL : https://stackoverflow.com/questions/65966969/why-does-march-native-not-work-on-apple-m1