CMakeLists.txt 18.2 KB
Newer Older
1 2 3 4 5 6 7 8
set(pass_file
    ${PADDLE_BINARY_DIR}/paddle/fluid/inference/api/paddle_inference_pass.h.tmp)
set(pass_file_final
    ${PADDLE_BINARY_DIR}/paddle/fluid/inference/api/paddle_inference_pass.h)
file(
  WRITE ${pass_file}
  "// Generated by the paddle/fluid/framework/ir/CMakeLists.txt.  DO NOT EDIT!\n\n"
)
L
luotao1 已提交
9
file(APPEND ${pass_file} "\#pragma once\n")
L
luotao1 已提交
10
file(APPEND ${pass_file} "\#include \"paddle/fluid/framework/ir/pass.h\"\n")
Y
Yan Chunwei 已提交
11

12
copy_if_different(${pass_file} ${pass_file_final})
13

14 15 16
add_subdirectory(fuse_optimizer_ops_pass)
add_subdirectory(memory_optimize_pass)
add_subdirectory(multi_devices_graph_pass)
17 18 19 20
if(NOT APPLE
   AND NOT WIN32
   AND (WITH_GPU OR WITH_ROCM))
  add_subdirectory(fusion_group)
21
endif()
Y
Yan Chunwei 已提交
22 23

# Usage: pass_library(target inference) will append to paddle_inference_pass.h
24
unset(INFER_IR_PASSES CACHE) # clear the global variable
Y
Yan Chunwei 已提交
25
function(pass_library TARGET DEST)
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
  set(options "")
  set(oneValueArgs "")
  set(multiValueArgs SRCS DEPS DIR)
  set(targetPrefix "")

  cmake_parse_arguments(pass_library "${options}" "${oneValueArgs}"
                        "${multiValueArgs}" ${ARGN})
  if(pass_library_DIR)
    cc_library(
      ${TARGET}
      SRCS ${pass_library_DIR}/${TARGET}.cc
      DEPS graph_pattern_detector pass fuse_pass_base op_version_registry
           ${pass_library_DEPS})
  else()
    cc_library(
      ${TARGET}
      SRCS ${TARGET}.cc
      DEPS graph_pattern_detector pass fuse_pass_base op_version_registry
           ${pass_library_DEPS})
  endif()
46

47 48 49 50
  # add more DEST here, such as train, dist and collect USE_PASS into a file automatically.
  if(${DEST} STREQUAL "base" OR ${DEST} STREQUAL "inference")
    if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
      message(STATUS "add pass ${TARGET} ${DEST}")
Y
Yan Chunwei 已提交
51
    endif()
52 53 54 55 56
    file(APPEND ${pass_file} "USE_PASS(${TARGET});\n")
    set(INFER_IR_PASSES
        ${INFER_IR_PASSES} ${TARGET}
        CACHE INTERNAL "")
  endif()
L
luotao1 已提交
57 58
endfunction()

59 60 61 62 63 64 65 66 67 68 69
cc_library(
  node
  SRCS node.cc
  DEPS proto_desc)
cc_library(
  graph
  SRCS graph.cc
  DEPS node pretty_log)
cc_library(
  graph_helper
  SRCS graph_helper.cc
70
  DEPS graph program_utils scale_loss_grad_op_handle)
71 72 73 74 75 76 77 78 79 80 81 82
cc_library(
  pass
  SRCS pass.cc
  DEPS graph node graph_helper)
cc_library(
  graph_traits
  SRCS graph_traits.cc
  DEPS graph)
cc_library(
  cost_model
  SRCS cost_model.cc
  DEPS executor graph profiler proto_desc device_tracer)
H
Huihuang Zheng 已提交
83

84 85 86
set(GRAPH_PATTERN_DETECTOR_DEPS graph graph_helper graph_traits)
if(WITH_TESTING)
  set(GRAPH_PATTERN_DETECTOR_DEPS ${GRAPH_PATTERN_DETECTOR_DEPS} gtest)
87
endif()
88 89 90 91
cc_library(
  graph_pattern_detector
  SRCS graph_pattern_detector.cc
  DEPS ${GRAPH_PATTERN_DETECTOR_DEPS})
H
Huihuang Zheng 已提交
92

93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
cc_library(
  op_compat_sensible_pass
  SRCS op_compat_sensible_pass.cc
  DEPS graph_pattern_detector op_def_api pass)
cc_library(
  subgraph_detector
  SRCS subgraph_detector.cc
  DEPS graph_pattern_detector executor)
cc_library(
  fuse_pass_base
  SRCS fuse_pass_base.cc
  DEPS op_compat_sensible_pass)
cc_library(
  placement_pass_base
  SRCS placement_pass_base.cc
  DEPS pass)
L
luotao1 已提交
109

110 111 112 113
cc_library(
  coalesce_grad_tensor_pass
  SRCS coalesce_grad_tensor_pass.cc
  DEPS graph graph_helper)
114

Y
Yan Chunwei 已提交
115 116
pass_library(graph_to_program_pass base)
pass_library(graph_viz_pass base)
117
pass_library(lock_free_optimize_pass base DEPS string_helper)
Y
Yan Chunwei 已提交
118 119
pass_library(fc_fuse_pass inference)
pass_library(attention_lstm_fuse_pass inference)
F
feng_shuai 已提交
120
pass_library(vit_attention_fuse_pass inference)
Y
Yan Chunwei 已提交
121
pass_library(fc_lstm_fuse_pass inference)
122
pass_library(embedding_fc_lstm_fuse_pass inference)
123
pass_library(fc_gru_fuse_pass inference)
Y
Yan Chunwei 已提交
124
pass_library(seq_concat_fc_fuse_pass inference)
125
pass_library(multi_batch_merge_pass base)
S
Sylwester Fraczek 已提交
126
pass_library(conv_bn_fuse_pass inference)
T
tensor-tang 已提交
127
pass_library(seqconv_eltadd_relu_fuse_pass inference)
T
tensor-tang 已提交
128
pass_library(seqpool_concat_fuse_pass inference)
129
pass_library(seqpool_cvm_concat_fuse_pass inference)
T
tensor-tang 已提交
130
pass_library(repeated_fc_relu_fuse_pass inference)
131
pass_library(squared_mat_sub_fuse_pass inference)
132
pass_library(is_test_pass base)
133 134
pass_library(conv_elementwise_add_act_fuse_pass inference)
pass_library(conv_elementwise_add2_act_fuse_pass inference)
N
nhzlx 已提交
135
pass_library(conv_elementwise_add_fuse_pass inference)
136
pass_library(transpose_flatten_concat_fuse_pass inference)
137
pass_library(identity_scale_op_clean_pass base)
Q
qingqing01 已提交
138
pass_library(sync_batch_norm_pass base)
L
luotao1 已提交
139
pass_library(runtime_context_cache_pass base)
N
nhzlx 已提交
140
pass_library(quant_conv2d_dequant_fuse_pass inference)
141
pass_library(shuffle_channel_detect_pass inference)
142
pass_library(delete_quant_dequant_op_pass inference)
143
pass_library(delete_quant_dequant_filter_op_pass inference)
144 145
pass_library(delete_weight_dequant_linear_op_pass inference)
pass_library(delete_quant_dequant_linear_op_pass inference)
D
denglin-github 已提交
146
pass_library(delete_dropout_op_pass inference)
147 148
pass_library(delete_c_identity_op_pass inference)
pass_library(preln_residual_bias_fuse_pass inference)
S
shentanyue 已提交
149
pass_library(delete_fill_constant_op_pass inference)
150
pass_library(constant_folding_pass inference)
151
pass_library(simplify_with_basic_ops_pass base)
152
pass_library(fc_elementwise_layernorm_fuse_pass base)
153
pass_library(skip_layernorm_fuse_pass base)
154
pass_library(multihead_matmul_fuse_pass inference)
155 156
pass_library(fused_multi_transformer_encoder_pass inference)
pass_library(fused_multi_transformer_decoder_pass inference)
157 158
pass_library(adaptive_pool2d_convert_global_pass inference)
pass_library(unsqueeze2_eltwise_fuse_pass inference)
159
pass_library(yolo_box_fuse_pass inference)
160
pass_library(layer_norm_fuse_pass inference)
161
pass_library(add_support_int8_pass inference)
H
heliqi 已提交
162
pass_library(matmul_scale_fuse_pass inference)
163
pass_library(gpu_cpu_map_matmul_to_mul_pass inference)
164 165
pass_library(dense_fc_to_sparse_pass inference)
pass_library(dense_multihead_matmul_to_sparse_pass inference)
166 167
pass_library(generate_pass DEPS pass_desc_proto)
target_link_libraries(generate_pass pass_desc_proto)
168 169

if(WITH_TENSORRT)
170 171 172
  pass_library(trt_map_matmul_to_mul_pass inference)
  pass_library(trt_embedding_eltwise_layernorm_fuse_pass inference)
  pass_library(trt_multihead_matmul_fuse_pass inference)
173
  pass_library(trt_skip_layernorm_fuse_pass inference)
174 175 176 177 178
  pass_library(preln_embedding_eltwise_layernorm_fuse_pass inference)
  pass_library(preln_skip_layernorm_fuse_pass inference)
  pass_library(set_transformer_input_convert_pass inference)
  pass_library(remove_padding_recover_padding_pass inference)
  pass_library(delete_remove_padding_recover_padding_pass inference)
W
wenbin 已提交
179
  pass_library(layernorm_shift_partition_fuse_pass inference)
180 181
endif()

182
if(WITH_GPU OR WITH_ROCM)
183 184
  pass_library(cudnn_placement_pass base DEPS placement_pass_base)
  pass_library(embedding_eltwise_layernorm_fuse_pass inference)
185
endif()
186

W
Wojciech Uss 已提交
187
if(WITH_MKLDNN)
188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
  pass_library(mkldnn_placement_pass base DEPS placement_pass_base DIR mkldnn)
  pass_library(
    mkldnn_inplace_pass
    inference
    DEPS
    mkldnn_placement_pass
    op_registry
    elementwise_add_op
    gelu_op
    activation_op
    softmax_op
    softmax
    DIR
    mkldnn)
  pass_library(depthwise_conv_mkldnn_pass base DIR mkldnn)
  pass_library(conv_affine_channel_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(conv_bias_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(conv_activation_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(conv_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(int8_scale_calculation_mkldnn_pass inference DIR mkldnn)
208
  pass_library(params_quantization_mkldnn_pass inference DIR mkldnn)
209 210 211 212 213 214 215 216 217 218
  pass_library(fc_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(scale_matmul_fuse_pass inference DIR mkldnn)
  pass_library(cpu_bfloat16_placement_pass inference DIR mkldnn)
  pass_library(cpu_bfloat16_pass inference DIR mkldnn)
  pass_library(fc_mkldnn_pass inference DIR mkldnn)
  pass_library(interpolate_mkldnn_pass inference DIR mkldnn)
  pass_library(softplus_activation_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(shuffle_channel_mkldnn_detect_pass inference DIR mkldnn)
  pass_library(fc_act_mkldnn_fuse_pass inference DIR mkldnn)
  pass_library(elt_act_mkldnn_fuse_pass inference DIR mkldnn)
219
  pass_library(matmul_elementwise_add_mkldnn_fuse_pass inference DIR mkldnn)
220
  pass_library(matmul_activation_mkldnn_fuse_pass inference DIR mkldnn)
221 222 223 224
  pass_library(cpu_quantize_placement_pass base DIR mkldnn)
  pass_library(cpu_quantize_pass inference DIR mkldnn)
  pass_library(cpu_quantize_squash_pass inference DIR mkldnn)
  pass_library(reshape_transpose_matmul_mkldnn_fuse_pass inference DIR mkldnn)
225
  pass_library(matmul_transpose_reshape_mkldnn_fuse_pass inference DIR mkldnn)
226 227 228 229 230
  pass_library(batch_norm_act_fuse_pass inference DIR mkldnn)
  pass_library(multi_gru_fuse_pass inference DIR mkldnn)
  pass_library(multi_gru_seq_fuse_pass inference DIR mkldnn)
  pass_library(quant_dequant_mkldnn_pass inference DIR mkldnn)
  pass_library(compute_propagate_scales_mkldnn_pass inference DIR mkldnn)
W
Wojciech Uss 已提交
231
endif()
232

A
Allen Guo 已提交
233
if(WITH_IPU)
234 235 236 237 238 239 240 241 242 243 244 245
  pass_library(forward_graph_extract_pass base DIR ipu)
  pass_library(optimizer_extract_pass base DIR ipu)
  pass_library(optimizer_state_align_pass base DIR ipu)
  pass_library(ipu_graph_builder_pass base DIR ipu)
  pass_library(ipu_runtime_replacer_pass base DIR ipu)
  pass_library(inference_process_pass base DIR ipu)
  pass_library(inference_postprocess_pass base DIR ipu)
  pass_library(popart_canonicalization_pass base DIR ipu)
  pass_library(ipu_inplace_pass base DIR ipu)
  pass_library(infer_shape_pass base DIR ipu)
  pass_library(delete_scale_op_pass base DIR ipu)
  pass_library(avg_shard_pass base DIR ipu)
246
  pass_library(inference_dtype_transfer_pass base DIR ipu)
A
Allen Guo 已提交
247 248
endif()

249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358
cc_library(
  fuse_bn_act_pass
  SRCS fuse_bn_act_pass.cc
  DEPS pass graph_pattern_detector)
cc_library(
  fuse_bn_add_act_pass
  SRCS fuse_bn_add_act_pass.cc
  DEPS pass graph_pattern_detector)
cc_library(
  fuse_elewise_add_act_pass
  SRCS fuse_elewise_add_act_pass.cc
  DEPS pass graph_pattern_detector)
cc_library(
  fuse_gemm_epilogue_pass
  SRCS fuse_gemm_epilogue_pass.cc
  DEPS pass graph_pattern_detector)
cc_library(
  fuse_relu_depthwise_conv_pass
  SRCS fuse_relu_depthwise_conv_pass.cc
  DEPS pass graph_pattern_detector)

set(GLOB_PASS_LIB
    ${PASS_LIBRARY}
    CACHE INTERNAL "Global PASS library")

cc_library(
  pass_builder
  SRCS pass_builder.cc
  DEPS pass)
cc_library(
  pass_test_util
  SRCS pass_test_util.cc
  DEPS graph pass)

cc_test(
  node_test
  SRCS node_test.cc
  DEPS node)
cc_test(
  pass_test
  SRCS pass_test.cc
  DEPS graph pass graph_helper)
cc_test(
  graph_test
  SRCS graph_test.cc
  DEPS graph graph_helper op_registry)
cc_test(
  graph_helper_test
  SRCS graph_helper_test.cc
  DEPS graph graph_helper op_registry)
cc_test(
  graph_to_program_pass_test
  SRCS graph_to_program_pass_test.cc
  DEPS graph_to_program_pass)
cc_test(
  cost_model_test
  SRCS cost_model_test.cc
  DEPS cost_model op_registry)
cc_test(
  test_graph_pattern_detector
  SRCS graph_pattern_detector_tester.cc
  DEPS graph_pattern_detector)
cc_test(
  test_op_compat_sensible_pass
  SRCS op_compat_sensible_pass_tester.cc
  DEPS op_compat_sensible_pass)
cc_test(
  test_fc_fuse_pass_cc
  SRCS fc_fuse_pass_tester.cc
  DEPS fc_fuse_pass framework_proto)
cc_test(
  test_fc_lstm_fuse_pass_cc
  SRCS fc_lstm_fuse_pass_tester.cc
  DEPS fc_lstm_fuse_pass framework_proto)
cc_test(
  test_fc_gru_fuse_pass_cc
  SRCS fc_gru_fuse_pass_tester.cc
  DEPS fc_gru_fuse_pass framework_proto)
cc_test(
  test_seqpool_concat_fuse_pass
  SRCS seqpool_concat_fuse_pass_tester.cc
  DEPS seqpool_concat_fuse_pass framework_proto)
cc_test(
  test_seqpool_cvm_concat_fuse_pass
  SRCS seqpool_cvm_concat_fuse_pass_tester.cc
  DEPS seqpool_cvm_concat_fuse_pass framework_proto)
cc_test(
  test_repeated_fc_relu_fuse_pass_cc
  SRCS repeated_fc_relu_fuse_pass_tester.cc
  DEPS repeated_fc_relu_fuse_pass framework_proto)
cc_test(
  test_is_test_pass
  SRCS is_test_pass_tester.cc
  DEPS is_test_pass)
cc_test(
  test_simplify_with_basic_ops_pass
  SRCS simplify_with_basic_ops_pass_tester.cc
  DEPS simplify_with_basic_ops_pass)
cc_test(
  test_fc_elementwise_layernorm_fuse_pass_cc
  SRCS fc_elementwise_layernorm_fuse_pass_tester.cc
  DEPS fc_elementwise_layernorm_fuse_pass)
cc_test(
  test_skip_layernorm_fuse_pass
  SRCS skip_layernorm_fuse_pass_tester.cc
  DEPS skip_layernorm_fuse_pass)
cc_test(
  test_multihead_matmul_fuse_pass
  SRCS multihead_matmul_fuse_pass_tester.cc
  DEPS multihead_matmul_fuse_pass)
359 360 361 362 363 364 365 366
cc_test(
  test_fused_multi_transformer_encoder_pass
  SRCS fused_multi_transformer_encoder_pass_tester.cc
  DEPS fused_multi_transformer_encoder_pass)
cc_test(
  test_fused_multi_transformer_decoder_pass
  SRCS fused_multi_transformer_decoder_pass_tester.cc
  DEPS fused_multi_transformer_decoder_pass)
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
cc_test(
  test_conv_bn_fuse_pass_cc
  SRCS conv_bn_fuse_pass_tester.cc
  DEPS conv_bn_fuse_pass)
cc_test(
  test_adaptive_pool2d_convert_global_pass
  SRCS adaptive_pool2d_convert_global_pass_tester.cc
  DEPS adaptive_pool2d_convert_global_pass)
cc_test(
  test_unsqueeze2_eltwise_fuse_pass_cc
  SRCS unsqueeze2_eltwise_fuse_pass_tester.cc
  DEPS unsqueeze2_eltwise_fuse_pass)
cc_test(
  test_generate_pass_cc
  SRCS generate_pass_tester.cc
  DEPS generate_pass pass_desc_proto)
383 384 385 386
cc_test(
  test_delete_dropout_pass_cc
  SRCS delete_dropout_op_pass_test.cc
  DEPS delete_dropout_op_pass)
387
if(WITH_GPU OR WITH_ROCM)
388 389 390 391 392 393 394 395
  cc_test(
    test_embedding_eltwise_layernorm_fuse_pass
    SRCS embedding_eltwise_layernorm_fuse_pass_tester.cc
    DEPS embedding_eltwise_layernorm_fuse_pass)
  cc_test(
    test_cudnn_placement_pass
    SRCS cudnn_placement_pass_tester.cc
    DEPS cudnn_placement_pass)
396
endif()
Q
qingqing01 已提交
397
if(NOT WIN32)
398 399 400 401
  cc_test(
    test_sync_batch_norm_pass
    SRCS sync_batch_norm_pass_tester.cc
    DEPS sync_batch_norm_pass)
402 403 404 405 406 407 408 409
  cc_test(
    test_dense_fc_to_sparse_pass_cc
    SRCS dense_fc_to_sparse_pass_tester.cc
    DEPS fc_fuse_pass dense_fc_to_sparse_pass framework_proto)
  cc_test(
    test_dense_multihead_matmul_to_sparse_pass
    SRCS dense_multihead_matmul_to_sparse_pass_tester.cc
    DEPS multihead_matmul_fuse_pass dense_multihead_matmul_to_sparse_pass)
Q
qingqing01 已提交
410
endif()
411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426
if(WITH_MKLDNN)
  cc_test(
    test_depthwise_conv_mkldnn_pass
    SRCS mkldnn/depthwise_conv_mkldnn_pass_tester.cc
    DEPS depthwise_conv_mkldnn_pass)
  cc_test(
    test_conv_bias_mkldnn_fuse_pass_cc
    SRCS mkldnn/conv_bias_mkldnn_fuse_pass_tester.cc
    DEPS conv_bias_mkldnn_fuse_pass naive_executor)
  cc_test(
    test_conv_activation_mkldnn_fuse_pass
    SRCS mkldnn/conv_activation_mkldnn_fuse_pass_tester.cc
    DEPS conv_activation_mkldnn_fuse_pass)
  cc_test(
    test_conv_concat_relu_mkldnn_fuse_pass
    SRCS mkldnn/conv_concat_relu_mkldnn_fuse_pass_tester.cc
427
    DEPS conv_activation_mkldnn_fuse_pass)
428 429 430 431 432 433 434 435
  cc_test(
    test_conv_elementwise_add_mkldnn_fuse_pass
    SRCS mkldnn/conv_elementwise_add_mkldnn_fuse_pass_tester.cc
    DEPS conv_elementwise_add_mkldnn_fuse_pass pass_test_util)
  cc_test(
    test_int8_scale_calculation_mkldnn_pass
    SRCS mkldnn/int8_scale_calculation_mkldnn_pass_tester.cc
    DEPS int8_scale_calculation_mkldnn_pass pass_test_util)
436 437 438 439
  cc_test(
    test_params_quantization_mkldnn_pass
    SRCS mkldnn/params_quantization_mkldnn_pass_tester.cc
    DEPS params_quantization_mkldnn_pass)
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468
  cc_test(
    test_fc_elementwise_add_mkldnn_fuse_pass
    SRCS mkldnn/fc_elementwise_add_mkldnn_fuse_pass_tester.cc
    DEPS fc_elementwise_add_mkldnn_fuse_pass pass_test_util)
  cc_test(
    test_fc_act_mkldnn_fuse_pass
    SRCS mkldnn/fc_act_mkldnn_fuse_pass_tester.cc
    DEPS fc_act_mkldnn_fuse_pass pass_test_util)
  cc_test(
    test_batch_norm_act_fuse_pass
    SRCS mkldnn/batch_norm_act_fuse_pass_tester.cc
    DEPS batch_norm_act_fuse_pass pass_test_util)
  set(TEST_CONV_BN_PASS_DEPS
      conv_bn_fuse_pass
      graph_to_program_pass
      conv_op
      conv_transpose_op
      math_function
      im2col
      vol2col
      batch_norm_op
      gelu_op
      activation_op
      elementwise_add_op
      concat_and_split
      naive_executor
      device_context
      eigen_function)
  if(WITH_GPU OR WITH_ROCM)
469
    set(TEST_CONV_BN_PASS_DEPS ${TEST_CONV_BN_PASS_DEPS} depthwise_conv)
470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490
  endif()
  cc_test(
    test_conv_batch_norm_mkldnn_fuse_pass
    SRCS mkldnn/mkldnn_conv_bn_fuse_pass_tester.cc
    DEPS ${TEST_CONV_BN_PASS_DEPS})
  cc_test(
    test_scale_matmul_fuse_pass
    SRCS mkldnn/scale_matmul_fuse_pass_tester.cc
    DEPS scale_matmul_fuse_pass)
  cc_test(
    test_mkldnn_placement_pass
    SRCS mkldnn/mkldnn_placement_pass_tester.cc
    DEPS mkldnn_placement_pass)
  cc_test(
    test_mkldnn_inplace_pass
    SRCS mkldnn/mkldnn_inplace_pass_tester.cc
    DEPS mkldnn_inplace_pass)
  cc_test(
    test_compute_propagate_scales_mkldnn_pass
    SRCS mkldnn/compute_propagate_scales_mkldnn_pass_tester.cc
    DEPS compute_propagate_scales_mkldnn_pass naive_executor)
491 492 493 494 495 496 497

  if(WITH_ONNXRUNTIME AND WIN32)
    # Copy onnxruntime for some c++ test in Windows, since the test will
    # be build only in CI, so suppose the generator in Windows is Ninja.
    copy_onnx(test_compute_propagate_scales_mkldnn_pass)
  endif()

498 499 500 501 502 503 504 505 506 507 508 509 510 511 512
  cc_test(
    test_cpu_quantize_placement_pass
    SRCS mkldnn/cpu_quantize_placement_pass_tester.cc
    DEPS cpu_quantize_placement_pass)
  cc_test(
    test_cpu_quantize_pass
    SRCS mkldnn/cpu_quantize_pass_tester.cc
    DEPS cpu_quantize_pass naive_executor)
  cc_test(
    test_cpu_quantize_squash_pass
    SRCS mkldnn/cpu_quantize_squash_pass_tester.cc
    DEPS cpu_quantize_squash_pass naive_executor)
  cc_test(
    test_reshape_transpose_matmul_mkldnn_fuse_pass
    SRCS mkldnn/reshape_transpose_matmul_mkldnn_fuse_pass_tester.cc
513
    DEPS reshape_transpose_matmul_mkldnn_fuse_pass)
514 515
  cc_test(
    test_matmul_transpose_reshape_fuse_pass
516 517
    SRCS mkldnn/matmul_transpose_reshape_mkldnn_fuse_pass_tester.cc
    DEPS matmul_transpose_reshape_mkldnn_fuse_pass)
518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543
  cc_test(
    test_shuffle_channel_mkldnn_detect_pass
    SRCS mkldnn/shuffle_channel_mkldnn_detect_pass_tester.cc
    DEPS shuffle_channel_mkldnn_detect_pass)
  cc_test(
    test_cpu_bfloat16_placement_pass
    SRCS mkldnn/cpu_bfloat16_placement_pass_tester.cc
    DEPS cpu_bfloat16_placement_pass)
  cc_test(
    test_cpu_bfloat16_pass
    SRCS mkldnn/cpu_bfloat16_pass_tester.cc
    DEPS cpu_bfloat16_pass)
  cc_test(
    test_multi_gru_fuse_pass
    SRCS mkldnn/multi_gru_fuse_pass_tester.cc
    DEPS multi_gru_fuse_pass)
  cc_test(
    test_multi_gru_seq_fuse_pass
    SRCS mkldnn/multi_gru_seq_fuse_pass_tester.cc
    DEPS multi_gru_seq_fuse_pass)
  set(TEST_FC_RNN_PASS_DEPS fc_gru_fuse_pass fc_lstm_fuse_pass
                            mkldnn_placement_pass)
  cc_test(
    test_fc_rnn_mkldnn_fuse_pass
    SRCS mkldnn/mkldnn_fc_rnn_fuse_pass_tester.cc
    DEPS ${TEST_FC_RNN_PASS_DEPS})
544
endif()