🐛 Describe the bug
Run following command to build for x64 on arm64 mac:
cmake . -B out \-DCMAKE_BUILD_TYPE=Release \-DCMAKE_PREFIX_PATH=/opt/homebrew/Caskroom/miniconda/base/envs/executorch/lib/python3.10/site-packages/torch \-DPYTHON_EXECUTABLE=/opt/homebrew/Caskroom/miniconda/base/envs/executorch/bin/python3 \-DFLATC_EXECUTABLE=/opt/homebrew/Caskroom/miniconda/base/envs/executorch/bin/flatc \-DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \-DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \-DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \-DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \-DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \-DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \-DEXECUTORCH_BUILD_XNNPACK=ON \-DDEPLOYMENT_TARGET=10.15 \-DEXECUTORCH_BUILD_COREML=ON \-DEXECUTORCH_BUILD_MPS=ON \-DCMAKE_TOOLCHAIN_FILE=third-party/ios-cmake/ios.toolchain.cmake \-DPLATFORM=MACcmake --build out --config Release -j
And compilation fails at custom_ops:
/Users/zcbenz/codes/executorch-binaries/executorch/extension/llm/custom_ops/spinquant/third-party/FFHT/fht_neon.c:28:11: error: unknown register name '%v0' in asm : "%v0", ^/Users/zcbenz/codes/executorch-binaries/executorch/extension/llm/custom_ops/spinquant/third-party/FFHT/fht_neon.c:82:15: error: unknown register name '%v0' in asm : "%v0", ^
Which is because of fht_neon.c being compiled for x64.
The extension/llm/custom_ops/spinquant/third-party/FFHT/targets.bzl file sets the file to only build from arm64, so I suspect the build system did not handle target/host arch correctly somewhere, however I know nothing about buck2 so I can't see how to fix this, even though I suspect the fix could be simple.
Also note that while mac x64 is not a supported target, everything else works fine with EXECUTORCH_BUILD_KERNELS_CUSTOM=OFF.
Versions
I'm building with the latest ExecuTorch (5b51bb8).
cc @larryliu0820
🐛 Describe the bug
Run following command to build for x64 on arm64 mac:
And compilation fails at custom_ops:
Which is because of
fht_neon.cbeing compiled for x64.The
extension/llm/custom_ops/spinquant/third-party/FFHT/targets.bzlfile sets the file to only build from arm64, so I suspect the build system did not handle target/host arch correctly somewhere, however I know nothing about buck2 so I can't see how to fix this, even though I suspect the fix could be simple.Also note that while mac x64 is not a supported target, everything else works fine with
EXECUTORCH_BUILD_KERNELS_CUSTOM=OFF.Versions
I'm building with the latest ExecuTorch (5b51bb8).
cc @larryliu0820