1*da0073e9SAndroid Build Coastguard Workerload("@rules_cc//cc:defs.bzl", "cc_library") 2*da0073e9SAndroid Build Coastguard Workerload("@pytorch//third_party:substitution.bzl", "template_rule") 3*da0073e9SAndroid Build Coastguard Worker 4*da0073e9SAndroid Build Coastguard Worker_DNNL_RUNTIME_OMP = { 5*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_CPU_THREADING_RUNTIME DNNL_RUNTIME_${DNNL_CPU_THREADING_RUNTIME}": "#define DNNL_CPU_THREADING_RUNTIME DNNL_RUNTIME_OMP", 6*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_CPU_RUNTIME DNNL_RUNTIME_${DNNL_CPU_RUNTIME}": "#define DNNL_CPU_RUNTIME DNNL_RUNTIME_OMP", 7*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_GPU_RUNTIME DNNL_RUNTIME_${DNNL_GPU_RUNTIME}": "#define DNNL_GPU_RUNTIME DNNL_RUNTIME_NONE", 8*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_USE_RT_OBJECTS_IN_PRIMITIVE_CACHE": "/* undef DNNL_USE_RT_OBJECTS_IN_PRIMITIVE_CACHE */", 9*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_WITH_SYCL": "/* #undef DNNL_WITH_SYCL */", 10*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_WITH_LEVEL_ZERO": "/* #undef DNNL_WITH_LEVEL_ZERO */", 11*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_SYCL_CUDA": "/* #undef DNNL_SYCL_CUDA */", 12*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_SYCL_HIP": "/* #undef DNNL_SYCL_HIP */", 13*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_ENABLE_STACK_CHECKER": "#undef DNNL_ENABLE_STACK_CHECKER", 14*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_EXPERIMENTAL_UKERNEL": "/* undef DNNL_EXPERIMENTAL_UKERNEL */", 15*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_EXPERIMENTAL": "#undef DNNL_EXPERIMENTAL", 16*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_EXPERIMENTAL_SPARSE": "#undef DNNL_EXPERIMENTAL_SPARSE", 17*da0073e9SAndroid Build Coastguard Worker "#cmakedefine ONEDNN_BUILD_GRAPH": "#undef ONEDNN_BUILD_GRAPH", 18*da0073e9SAndroid Build Coastguard Worker "#cmakedefine DNNL_EXPERIMENTAL_PROFILING": "#undef DNNL_EXPERIMENTAL_PROFILING", 19*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_TRAINING": "#define BUILD_TRAINING 1", 20*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_INFERENCE": "#define BUILD_INFERENCE 0", 21*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_PRIMITIVE_ALL": "#define BUILD_PRIMITIVE_ALL 1", 22*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_BATCH_NORMALIZATION": "#define BUILD_BATCH_NORMALIZATION 0", 23*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_BINARY": "#define BUILD_BINARY 0", 24*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_CONCAT": "#define BUILD_CONCAT 0", 25*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_CONVOLUTION": "#define BUILD_CONVOLUTION 0", 26*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_DECONVOLUTION": "#define BUILD_DECONVOLUTION 0", 27*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_ELTWISE": "#define BUILD_ELTWISE 0", 28*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GROUP_NORMALIZATION": "#define BUILD_GROUP_NORMALIZATION 0", 29*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_INNER_PRODUCT": "#define BUILD_INNER_PRODUCT 0", 30*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_LAYER_NORMALIZATION": "#define BUILD_LAYER_NORMALIZATION 0", 31*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_LRN": "#define BUILD_LRN 0", 32*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_MATMUL": "#define BUILD_MATMUL 0", 33*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_POOLING": "#define BUILD_POOLING 0", 34*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_PRELU": "#define BUILD_PRELU 0", 35*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_REDUCTION": "#define BUILD_REDUCTION 0", 36*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_REORDER": "#define BUILD_REORDER 0", 37*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_RESAMPLING": "#define BUILD_RESAMPLING 0", 38*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_RNN": "#define BUILD_RNN 0", 39*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_SHUFFLE": "#define BUILD_SHUFFLE 0", 40*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_SOFTMAX": "#define BUILD_SOFTMAX 0", 41*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_SUM": "#define BUILD_SUM 0", 42*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_PRIMITIVE_CPU_ISA_ALL": "#define BUILD_PRIMITIVE_CPU_ISA_ALL 1", 43*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_SSE41": "#define BUILD_SSE41 0", 44*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_AVX2": "#define BUILD_AVX2 0", 45*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_AVX512": "#define BUILD_AVX512 0", 46*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_AMX": "#define BUILD_AMX 0", 47*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_PRIMITIVE_GPU_ISA_ALL": "#define BUILD_PRIMITIVE_GPU_ISA_ALL 1", 48*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEN9": "#define BUILD_GEN9 0", 49*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEN11": "#define BUILD_GEN11 0", 50*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_XELP": "#define BUILD_XELP 0", 51*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_XEHPG": "#define BUILD_XEHPG 0", 52*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_XEHPC": "#define BUILD_XEHPC 0", 53*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_XEHP": "#define BUILD_XEHP 0", 54*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_XE2": "#define BUILD_XE2 0", 55*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEMM_KERNELS_ALL": "#define BUILD_GEMM_KERNELS_ALL 0", 56*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEMM_KERNELS_NONE": "#define BUILD_GEMM_KERNELS_NONE 0", 57*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEMM_SSE41": "#define BUILD_GEMM_SSE41 0", 58*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEMM_AVX2": "#define BUILD_GEMM_AVX2 0", 59*da0073e9SAndroid Build Coastguard Worker "#cmakedefine01 BUILD_GEMM_AVX512": "#define BUILD_GEMM_AVX512 0", 60*da0073e9SAndroid Build Coastguard Worker} 61*da0073e9SAndroid Build Coastguard Worker 62*da0073e9SAndroid Build Coastguard Workertemplate_rule( 63*da0073e9SAndroid Build Coastguard Worker name = "include_dnnl_version", 64*da0073e9SAndroid Build Coastguard Worker src = "include/oneapi/dnnl/dnnl_version.h.in", 65*da0073e9SAndroid Build Coastguard Worker out = "include/oneapi/dnnl/dnnl_version.h", 66*da0073e9SAndroid Build Coastguard Worker substitutions = { 67*da0073e9SAndroid Build Coastguard Worker "@DNNL_VERSION_MAJOR@": "3", 68*da0073e9SAndroid Build Coastguard Worker "@DNNL_VERSION_MINOR@": "5", 69*da0073e9SAndroid Build Coastguard Worker "@DNNL_VERSION_PATCH@": "3", 70*da0073e9SAndroid Build Coastguard Worker "@DNNL_VERSION_HASH@": "66f0cb9eb66affd2da3bf5f8d897376f04aae6af", 71*da0073e9SAndroid Build Coastguard Worker }, 72*da0073e9SAndroid Build Coastguard Worker) 73*da0073e9SAndroid Build Coastguard Worker 74*da0073e9SAndroid Build Coastguard Workertemplate_rule( 75*da0073e9SAndroid Build Coastguard Worker name = "include_dnnl_config", 76*da0073e9SAndroid Build Coastguard Worker src = "include/oneapi/dnnl/dnnl_config.h.in", 77*da0073e9SAndroid Build Coastguard Worker out = "include/oneapi/dnnl/dnnl_config.h", 78*da0073e9SAndroid Build Coastguard Worker substitutions = _DNNL_RUNTIME_OMP, 79*da0073e9SAndroid Build Coastguard Worker) 80*da0073e9SAndroid Build Coastguard Worker 81*da0073e9SAndroid Build Coastguard Workercc_library( 82*da0073e9SAndroid Build Coastguard Worker name = "mkl-dnn", 83*da0073e9SAndroid Build Coastguard Worker srcs = glob([ 84*da0073e9SAndroid Build Coastguard Worker "src/common/*.cpp", 85*da0073e9SAndroid Build Coastguard Worker "src/cpu/**/*.cpp", 86*da0073e9SAndroid Build Coastguard Worker ], exclude=[ 87*da0073e9SAndroid Build Coastguard Worker "src/cpu/aarch64/**/*.cpp", 88*da0073e9SAndroid Build Coastguard Worker "src/cpu/rv64/**/*.cpp", 89*da0073e9SAndroid Build Coastguard Worker ]), 90*da0073e9SAndroid Build Coastguard Worker hdrs = glob([ 91*da0073e9SAndroid Build Coastguard Worker "include/oneapi/dnnl/*.h", 92*da0073e9SAndroid Build Coastguard Worker "include/oneapi/dnnl/*.hpp", 93*da0073e9SAndroid Build Coastguard Worker "include/*.h", 94*da0073e9SAndroid Build Coastguard Worker "include/*.hpp", 95*da0073e9SAndroid Build Coastguard Worker "src/cpu/**/*.hpp", 96*da0073e9SAndroid Build Coastguard Worker "src/cpu/**/*.h", 97*da0073e9SAndroid Build Coastguard Worker "src/common/*.hpp", 98*da0073e9SAndroid Build Coastguard Worker "src/common/ittnotify/jitprofiling.h", 99*da0073e9SAndroid Build Coastguard Worker ], exclude=[ 100*da0073e9SAndroid Build Coastguard Worker "src/cpu/aarch64/**/*.hpp", 101*da0073e9SAndroid Build Coastguard Worker "src/cpu/aarch64/**/*.h", 102*da0073e9SAndroid Build Coastguard Worker "src/cpu/rv64/**/*.hpp", 103*da0073e9SAndroid Build Coastguard Worker "src/cpu/rv64/**/*.h", 104*da0073e9SAndroid Build Coastguard Worker ]) + [ 105*da0073e9SAndroid Build Coastguard Worker "include/oneapi/dnnl/dnnl_config.h", 106*da0073e9SAndroid Build Coastguard Worker "include/oneapi/dnnl/dnnl_version.h", 107*da0073e9SAndroid Build Coastguard Worker ], 108*da0073e9SAndroid Build Coastguard Worker copts = [ 109*da0073e9SAndroid Build Coastguard Worker "-DDNNL_DLL", 110*da0073e9SAndroid Build Coastguard Worker "-DDNNL_DLL_EXPORTS", 111*da0073e9SAndroid Build Coastguard Worker "-DDNNL_ENABLE_CONCURRENT_EXEC", 112*da0073e9SAndroid Build Coastguard Worker "-D__STDC_CONSTANT_MACROS", 113*da0073e9SAndroid Build Coastguard Worker "-D__STDC_LIMIT_MACROS", 114*da0073e9SAndroid Build Coastguard Worker "-fno-strict-overflow", 115*da0073e9SAndroid Build Coastguard Worker "-fopenmp", 116*da0073e9SAndroid Build Coastguard Worker ] + select({ 117*da0073e9SAndroid Build Coastguard Worker "@pytorch//tools/config:thread_sanitizer": ["-DDNNL_CPU_RUNTIME=0"], 118*da0073e9SAndroid Build Coastguard Worker "//conditions:default": ["-DDNNL_CPU_RUNTIME=2"], 119*da0073e9SAndroid Build Coastguard Worker }), 120*da0073e9SAndroid Build Coastguard Worker includes = [ 121*da0073e9SAndroid Build Coastguard Worker "include/", 122*da0073e9SAndroid Build Coastguard Worker "include/oneapi/", 123*da0073e9SAndroid Build Coastguard Worker "include/oneapi/dnnl/", 124*da0073e9SAndroid Build Coastguard Worker "src/", 125*da0073e9SAndroid Build Coastguard Worker "src/common/", 126*da0073e9SAndroid Build Coastguard Worker "src/cpu/", 127*da0073e9SAndroid Build Coastguard Worker "src/cpu/x64/xbyak/", 128*da0073e9SAndroid Build Coastguard Worker ], 129*da0073e9SAndroid Build Coastguard Worker visibility = ["//visibility:public"], 130*da0073e9SAndroid Build Coastguard Worker linkopts = [ 131*da0073e9SAndroid Build Coastguard Worker "-lgomp", 132*da0073e9SAndroid Build Coastguard Worker ], 133*da0073e9SAndroid Build Coastguard Worker deps = [ 134*da0073e9SAndroid Build Coastguard Worker "@mkl", 135*da0073e9SAndroid Build Coastguard Worker ], 136*da0073e9SAndroid Build Coastguard Worker defines = [ 137*da0073e9SAndroid Build Coastguard Worker "DNNL_ENABLE_MAX_CPU_ISA", 138*da0073e9SAndroid Build Coastguard Worker "DNNL_ENABLE_CONCURRENT_EXEC", 139*da0073e9SAndroid Build Coastguard Worker "DNNL_ENABLE_PRIMITIVE_CACHE", 140*da0073e9SAndroid Build Coastguard Worker "DNNL_ENABLE_CPU_ISA_HINTS", 141*da0073e9SAndroid Build Coastguard Worker "DNNL_EXPERIMENTAL_UKERNEL", 142*da0073e9SAndroid Build Coastguard Worker "ONEDNN_BUILD_GRAPH", 143*da0073e9SAndroid Build Coastguard Worker ], 144*da0073e9SAndroid Build Coastguard Worker) 145