| # useful command for debugging which files are included: |
| # buck targets caffe2/caffe2: --json | jq -r "map(select(.srcs)) | map({key: .name, value: .srcs | sort}) | from_entries" |
| load("@fbsource//tools/build_defs:type_defs.bzl", "is_list") |
| load("//tools/build/buck:flags.bzl", "get_flags") |
| |
| flags = get_flags() |
| |
| _BASE_PATHS = ( |
| "core/*", |
| "core/boxing/*", |
| "core/boxing/impl/*", |
| "core/dispatch/*", |
| "core/op_registration/*", |
| "cuda_rtc/*", |
| "db/*", |
| "experiments/operators/*", |
| "ideep/**/*", |
| "observers/*", |
| "onnx/**/*", |
| "operators/**/*", |
| "observers/*", |
| "predictor/*", |
| "queue/*", |
| "sgd/*", |
| "share/contrib/zstd/*", |
| "transforms/*", |
| "utils/**/*", |
| ) |
| |
| _BASE_SGX_PATHS = ( |
| "core/*", |
| "core/boxing/*", |
| "core/boxing/impl/*", |
| "core/dispatch/*", |
| "core/op_registration/*", |
| "cuda_rtc/*", |
| "db/*", |
| "experiments/operators/*", |
| "observers/*", |
| "onnx/**/*", |
| "operators/**/*", |
| "observers/*", |
| "predictor/*", |
| "queue/*", |
| "sgd/*", |
| "serialize/*", |
| "share/contrib/zstd/*", |
| "transforms/*", |
| "utils/**/*", |
| ) |
| |
| def get_sgx_patterns(ext): |
| if not is_list(ext): |
| ext = [ext] |
| return [path + e for path in _BASE_SGX_PATHS for e in ext] |
| |
| def get_patterns(ext): |
| if not is_list(ext): |
| ext = [ext] |
| return [path + e for path in _BASE_PATHS for e in ext] |
| |
| def get_simd_preprocessor_flags(): |
| return [ |
| "-DUSE_FBGEMM", |
| ] |
| |
| def get_simd_compiler_flags(): |
| if flags.USE_SSE_ONLY: |
| return ["-mno-avx"] |
| |
| simd_compiler_flags = [ |
| "-mavx", |
| ] + get_simd_preprocessor_flags() |
| |
| # Every uarch with AVX512 support has AVX2 support |
| if (flags.USE_AVX2 or flags.USE_AVX512): |
| simd_compiler_flags += [ |
| "-mavx2", |
| "-mfma", |
| ] |
| |
| if flags.USE_AVX512: |
| simd_compiler_flags += [ |
| "-mavx512f", |
| "-mavx512dq", |
| "-mavx512vl", |
| ] |
| |
| return simd_compiler_flags |