Home | History | Annotate | Download | only in gpu
      1 # Description:
      2 #   GPU-specific components in XLA service implementation.
      3 
      4 licenses(["notice"])  # Apache 2.0
      5 
      6 package(default_visibility = [":friends"])
      7 
      8 package_group(
      9     name = "friends",
     10     includes = [
     11         "//tensorflow/compiler/xla:friends",
     12     ],
     13 )
     14 
     15 # Filegroup used to collect source files for dependency checking.
     16 filegroup(
     17     name = "c_srcs",
     18     data = glob([
     19         "**/*.cc",
     20         "**/*.h",
     21     ]),
     22 )
     23 
     24 load("//tensorflow:tensorflow.bzl", "tf_cc_test")
     25 
     26 cc_library(
     27     name = "gpu_constants",
     28     srcs = ["gpu_constants.cc"],
     29     hdrs = ["gpu_constants.h"],
     30     deps = [
     31         "//tensorflow/compiler/xla:types",
     32     ],
     33 )
     34 
     35 cc_library(
     36     name = "partition_assignment",
     37     srcs = [
     38         "partition_assignment.cc",
     39     ],
     40     hdrs = [
     41         "partition_assignment.h",
     42     ],
     43     deps = [
     44         "//tensorflow/compiler/xla:shape_util",
     45         "//tensorflow/compiler/xla:types",
     46         "//tensorflow/compiler/xla:util",
     47         "//tensorflow/compiler/xla/service:hlo",
     48         "//tensorflow/core:lib",
     49         "//tensorflow/core:stream_executor_no_cuda",
     50     ],
     51 )
     52 
     53 # TODO(b/29140563) This target is flaky, disabled until flakiness is
     54 # root-caused. Failed on 2016-06-08.
     55 #tf_cc_test(
     56 #    name = "partition_assignment_test",
     57 #    srcs = [
     58 #        "partition_assignment_test.cc",
     59 #    ],
     60 #    tags = [
     61 #        "requires-gpu-sm35",
     62 #    ],
     63 #    deps = [
     64 #        ":partition_assignment",
     65 #        "//tensorflow/core:stream_executor_no_cuda",
     66 #        "//tensorflow/compiler/xla:shape_util",
     67 #        "//tensorflow/compiler/xla:xla_data_proto",
     68 #        "//tensorflow/compiler/xla/service:gpu_plugin",
     69 #        "//tensorflow/compiler/xla/service:hlo",
     70 #        "//tensorflow/compiler/xla/tests:hlo_test_base",
     71 #        "//tensorflow/core:test_main",
     72 #    ],
     73 #)
     74 
     75 cc_library(
     76     name = "stream_assignment",
     77     srcs = ["stream_assignment.cc"],
     78     hdrs = ["stream_assignment.h"],
     79     deps = [
     80         ":ir_emission_utils",
     81         "//tensorflow/compiler/xla:util",
     82         "//tensorflow/compiler/xla/service:hlo",
     83         "//tensorflow/compiler/xla/service:hlo_reachability",
     84         "//tensorflow/core:lib",
     85     ],
     86 )
     87 
     88 tf_cc_test(
     89     name = "stream_assignment_test",
     90     srcs = [
     91         "stream_assignment_test.cc",
     92     ],
     93     deps = [
     94         ":stream_assignment",
     95         "//tensorflow/compiler/xla:test_helpers",
     96         "//tensorflow/compiler/xla:types",
     97         "//tensorflow/compiler/xla/service:hlo",
     98         "//tensorflow/compiler/xla/tests:hlo_test_base",
     99         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    100         "//tensorflow/core:lib",
    101     ],
    102 )
    103 
    104 cc_library(
    105     name = "hlo_to_ir_bindings",
    106     srcs = ["hlo_to_ir_bindings.cc"],
    107     hdrs = ["hlo_to_ir_bindings.h"],
    108     deps = [
    109         ":ir_emission_utils",
    110         "//tensorflow/compiler/xla:util",
    111         "//tensorflow/compiler/xla/service:buffer_assignment",
    112         "//tensorflow/compiler/xla/service:hlo",
    113         "//tensorflow/compiler/xla/service/llvm_ir:alias_analysis",
    114         "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
    115         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    116         "//tensorflow/compiler/xla/service/llvm_ir:tuple_ops",
    117         "//tensorflow/core:lib",
    118         "@llvm//:core",
    119     ],
    120 )
    121 
    122 cc_library(
    123     name = "ir_emitter",
    124     srcs = [
    125         "ir_emitter.cc",
    126         "ir_emitter_nested.cc",
    127         "ir_emitter_unnested.cc",
    128     ],
    129     hdrs = [
    130         "ir_emitter.h",
    131         "ir_emitter_context.h",
    132         "ir_emitter_nested.h",
    133         "ir_emitter_unnested.h",
    134     ],
    135     deps = [
    136         ":cudnn_convolution_runner",
    137         ":elemental_ir_emitter",
    138         ":gpu_constants",
    139         ":gpu_executable",
    140         ":hlo_to_ir_bindings",
    141         ":ir_emission_utils",
    142         ":parallel_loop_emitter",
    143         ":partition_assignment",
    144         ":while_transformer",
    145         "//tensorflow/compiler/xla:literal_util",
    146         "//tensorflow/compiler/xla:shape_util",
    147         "//tensorflow/compiler/xla:status_macros",
    148         "//tensorflow/compiler/xla:statusor",
    149         "//tensorflow/compiler/xla:types",
    150         "//tensorflow/compiler/xla:util",
    151         "//tensorflow/compiler/xla:window_util",
    152         "//tensorflow/compiler/xla:xla_data_proto",
    153         "//tensorflow/compiler/xla/service:buffer_assignment",
    154         "//tensorflow/compiler/xla/service:elemental_ir_emitter",
    155         "//tensorflow/compiler/xla/service:hlo",
    156         "//tensorflow/compiler/xla/service:name_uniquer",
    157         "//tensorflow/compiler/xla/service/llvm_ir:fused_ir_emitter",
    158         "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
    159         "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
    160         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    161         "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
    162         "//tensorflow/compiler/xla/service/llvm_ir:ops",
    163         "//tensorflow/compiler/xla/service/llvm_ir:tuple_ops",
    164         "//tensorflow/core:lib",
    165         "//tensorflow/core:stream_executor_no_cuda",
    166         "@llvm//:core",
    167         "@llvm//:support",
    168     ],
    169 )
    170 
    171 cc_library(
    172     name = "parallel_loop_emitter",
    173     srcs = ["parallel_loop_emitter.cc"],
    174     hdrs = ["parallel_loop_emitter.h"],
    175     deps = [
    176         ":partition_assignment",
    177         "//tensorflow/compiler/xla:shape_util",
    178         "//tensorflow/compiler/xla:xla_data_proto",
    179         "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
    180         "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
    181         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    182         "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
    183         "//tensorflow/core:lib",
    184         "@llvm//:core",
    185     ],
    186 )
    187 
    188 cc_library(
    189     name = "elemental_ir_emitter",
    190     srcs = ["elemental_ir_emitter.cc"],
    191     hdrs = ["elemental_ir_emitter.h"],
    192     deps = [
    193         "//tensorflow/compiler/xla:literal_util",
    194         "//tensorflow/compiler/xla:shape_util",
    195         "//tensorflow/compiler/xla:status_macros",
    196         "//tensorflow/compiler/xla:statusor",
    197         "//tensorflow/compiler/xla:types",
    198         "//tensorflow/compiler/xla:util",
    199         "//tensorflow/compiler/xla:window_util",
    200         "//tensorflow/compiler/xla:xla_data_proto",
    201         "//tensorflow/compiler/xla/service:elemental_ir_emitter",
    202         "//tensorflow/compiler/xla/service:hlo",
    203         "//tensorflow/compiler/xla/service:hlo_module_config",
    204         "//tensorflow/compiler/xla/service/llvm_ir:ir_array",
    205         "//tensorflow/compiler/xla/service/llvm_ir:llvm_loop",
    206         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    207         "//tensorflow/compiler/xla/service/llvm_ir:loop_emitter",
    208         "//tensorflow/core:lib",
    209         "@llvm//:core",
    210         "@llvm//:support",
    211     ],
    212 )
    213 
    214 cc_library(
    215     name = "buffer_allocations",
    216     srcs = ["buffer_allocations.cc"],
    217     hdrs = ["buffer_allocations.h"],
    218     deps = [
    219         ":gpu_constants",
    220         "//tensorflow/compiler/xla:status_macros",
    221         "//tensorflow/compiler/xla:statusor",
    222         "//tensorflow/compiler/xla:types",
    223         "//tensorflow/compiler/xla:util",
    224         "//tensorflow/compiler/xla/service:buffer_assignment",
    225         "//tensorflow/compiler/xla/service:device_memory_allocator",
    226         "//tensorflow/core:lib",
    227         "//tensorflow/core:stream_executor_no_cuda",
    228     ],
    229 )
    230 
    231 cc_library(
    232     name = "gpu_executable",
    233     srcs = [
    234         "conditional_thunk.cc",
    235         "convolution_thunk.cc",
    236         "copy_thunk.cc",
    237         "cudnn_batchnorm_thunk.cc",
    238         "fft_thunk.cc",
    239         "for_thunk.cc",
    240         "gemm_thunk.cc",
    241         "gpu_executable.cc",
    242         "infeed_thunk.cc",
    243         "kernel_thunk.cc",
    244         "sequential_thunk.cc",
    245         "thunk_schedule.cc",
    246         "tuple_thunk.cc",
    247         "while_thunk.cc",
    248     ],
    249     hdrs = [
    250         "conditional_thunk.h",
    251         "convolution_thunk.h",
    252         "copy_thunk.h",
    253         "cudnn_batchnorm_thunk.h",
    254         "fft_thunk.h",
    255         "for_thunk.h",
    256         "gemm_thunk.h",
    257         "gpu_executable.h",
    258         "infeed_thunk.h",
    259         "kernel_thunk.h",
    260         "sequential_thunk.h",
    261         "thunk.h",
    262         "thunk_schedule.h",
    263         "tuple_thunk.h",
    264         "while_thunk.h",
    265     ],
    266     deps = [
    267         ":buffer_allocations",
    268         ":cudnn_convolution_runner",
    269         ":infeed_manager",
    270         ":ir_emission_utils",
    271         ":partition_assignment",
    272         ":stream_assignment",
    273         "//tensorflow/compiler/xla:array2d",
    274         "//tensorflow/compiler/xla:shape_tree",
    275         "//tensorflow/compiler/xla:shape_util",
    276         "//tensorflow/compiler/xla:status_macros",
    277         "//tensorflow/compiler/xla:statusor",
    278         "//tensorflow/compiler/xla:types",
    279         "//tensorflow/compiler/xla:util",
    280         "//tensorflow/compiler/xla:xla_data_proto",
    281         "//tensorflow/compiler/xla/service:buffer_assignment",
    282         "//tensorflow/compiler/xla/service:device_memory_allocator",
    283         "//tensorflow/compiler/xla/service:executable",
    284         "//tensorflow/compiler/xla/service:hlo",
    285         "//tensorflow/compiler/xla/service:hlo_execution_profile",
    286         "//tensorflow/compiler/xla/service:logical_buffer",
    287         "//tensorflow/compiler/xla/service:shaped_buffer",
    288         "//tensorflow/compiler/xla/service:transfer_manager",
    289         "//tensorflow/compiler/xla/service:tuple_points_to_analysis",
    290         "//tensorflow/core:lib",
    291         "//tensorflow/core:stream_executor_no_cuda",
    292         "//tensorflow/core/platform/default/build_config:cublas_plugin",
    293         "//tensorflow/core/platform/default/build_config:cudnn_plugin",
    294         "//tensorflow/core/platform/default/build_config:cufft_plugin",
    295         "//tensorflow/core/platform/default/build_config:stream_executor_cuda",  # build_cleaner: keep
    296     ],
    297 )
    298 
    299 cc_library(
    300     name = "ir_emission_utils",
    301     srcs = ["ir_emission_utils.cc"],
    302     hdrs = ["ir_emission_utils.h"],
    303     deps = [
    304         "//tensorflow/compiler/xla:shape_util",
    305         "//tensorflow/compiler/xla:util",
    306         "//tensorflow/compiler/xla:window_util",
    307         "//tensorflow/compiler/xla:xla_data_proto",
    308         "//tensorflow/compiler/xla/service:hlo",
    309         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    310         "//tensorflow/core:lib",
    311         "@llvm//:core",
    312     ],
    313 )
    314 
    315 cc_library(
    316     name = "cudnn_convolution_algorithm_picker",
    317     srcs = ["cudnn_convolution_algorithm_picker.cc"],
    318     hdrs = ["cudnn_convolution_algorithm_picker.h"],
    319     deps = [
    320         ":cudnn_convolution_runner",
    321         ":gpu_executable",
    322         ":ir_emission_utils",
    323         "//tensorflow/compiler/xla/service:device_memory_allocator",
    324         "//tensorflow/compiler/xla/service:hlo",
    325         "//tensorflow/compiler/xla/service:hlo_pass",
    326         "//tensorflow/core:lib",
    327         "//tensorflow/core:stream_executor_no_cuda",
    328     ],
    329 )
    330 
    331 cc_library(
    332     name = "cudnn_convolution_runner",
    333     srcs = ["cudnn_convolution_runner.cc"],
    334     hdrs = ["cudnn_convolution_runner.h"],
    335     deps = [
    336         "//tensorflow/compiler/xla:shape_util",
    337         "//tensorflow/compiler/xla:status",
    338         "//tensorflow/compiler/xla:status_macros",
    339         "//tensorflow/compiler/xla:statusor",
    340         "//tensorflow/compiler/xla:types",
    341         "//tensorflow/compiler/xla:util",
    342         "//tensorflow/compiler/xla:xla_data_proto",
    343         "//tensorflow/core:stream_executor_no_cuda",
    344     ],
    345 )
    346 
    347 cc_library(
    348     name = "cudnn_convolution_rewriter",
    349     srcs = ["cudnn_convolution_rewriter.cc"],
    350     hdrs = ["cudnn_convolution_rewriter.h"],
    351     deps = [
    352         ":ir_emission_utils",
    353         "//tensorflow/compiler/xla:literal_util",
    354         "//tensorflow/compiler/xla:util",
    355         "//tensorflow/compiler/xla:window_util",
    356         "//tensorflow/compiler/xla:xla_data_proto",
    357         "//tensorflow/compiler/xla/service:hlo",
    358         "//tensorflow/compiler/xla/service:hlo_pass",
    359         "//tensorflow/core:lib",
    360     ],
    361 )
    362 
    363 tf_cc_test(
    364     name = "cudnn_convolution_rewriter_test",
    365     srcs = ["cudnn_convolution_rewriter_test.cc"],
    366     deps = [
    367         ":cudnn_convolution_rewriter",
    368         ":ir_emission_utils",
    369         "//tensorflow/compiler/xla:test",
    370         "//tensorflow/compiler/xla:test_helpers",
    371         "//tensorflow/compiler/xla/service:hlo",
    372         "//tensorflow/compiler/xla/service:hlo_matchers",
    373         "//tensorflow/compiler/xla/service:shape_inference",
    374         "//tensorflow/compiler/xla/tests:hlo_test_base",
    375         "//tensorflow/compiler/xla/tests:xla_internal_test_main",  # fixdeps: keep
    376         "//tensorflow/core:test",
    377     ],
    378 )
    379 
    380 cc_library(
    381     name = "instruction_fusion",
    382     srcs = ["instruction_fusion.cc"],
    383     hdrs = ["instruction_fusion.h"],
    384     deps = [
    385         ":ir_emission_utils",
    386         "//tensorflow/compiler/xla:shape_util",
    387         "//tensorflow/compiler/xla/service:hlo",
    388         "//tensorflow/compiler/xla/service:instruction_fusion",
    389     ],
    390 )
    391 
    392 tf_cc_test(
    393     name = "instruction_fusion_test",
    394     srcs = ["instruction_fusion_test.cc"],
    395     deps = [
    396         ":instruction_fusion",
    397         "//tensorflow/compiler/xla/service:hlo_matchers",
    398         "//tensorflow/compiler/xla/tests:hlo_test_base",
    399         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    400     ],
    401 )
    402 
    403 cc_library(
    404     name = "gpu_copy_insertion",
    405     srcs = ["gpu_copy_insertion.cc"],
    406     hdrs = ["gpu_copy_insertion.h"],
    407     deps = [
    408         ":ir_emission_utils",
    409         "//tensorflow/compiler/xla/service:call_graph",
    410         "//tensorflow/compiler/xla/service:copy_insertion",
    411         "//tensorflow/compiler/xla/service:hlo",
    412         "//tensorflow/compiler/xla/service:hlo_dataflow_analysis",
    413         "//tensorflow/compiler/xla/service:hlo_pass",
    414         "//tensorflow/core:lib",
    415     ],
    416 )
    417 
    418 cc_library(
    419     name = "fusion_merger",
    420     srcs = ["fusion_merger.cc"],
    421     hdrs = ["fusion_merger.h"],
    422     deps = [
    423         ":instruction_fusion",
    424         "//tensorflow/compiler/xla:shape_util",
    425         "//tensorflow/compiler/xla:util",
    426         "//tensorflow/compiler/xla/service:hlo",
    427         "//tensorflow/compiler/xla/service:hlo_cost_analysis",
    428         "//tensorflow/compiler/xla/service:hlo_pass",
    429         "//tensorflow/core:lib",
    430     ],
    431 )
    432 
    433 tf_cc_test(
    434     name = "fusion_merger_test",
    435     srcs = ["fusion_merger_test.cc"],
    436     deps = [
    437         ":fusion_merger",
    438         ":instruction_fusion",
    439         "//tensorflow/compiler/xla:test_helpers",
    440         "//tensorflow/compiler/xla/tests:hlo_test_base",
    441         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    442     ],
    443 )
    444 
    445 cc_library(
    446     name = "pad_insertion",
    447     srcs = ["pad_insertion.cc"],
    448     hdrs = ["pad_insertion.h"],
    449     deps = [
    450         ":ir_emission_utils",
    451         "//tensorflow/compiler/xla:literal_util",
    452         "//tensorflow/compiler/xla:util",
    453         "//tensorflow/compiler/xla:window_util",
    454         "//tensorflow/compiler/xla:xla_data_proto",
    455         "//tensorflow/compiler/xla/service:hlo_pass",
    456         "//tensorflow/compiler/xla/service:shape_inference",
    457     ],
    458 )
    459 
    460 cc_library(
    461     name = "gpu_transfer_manager",
    462     srcs = ["gpu_transfer_manager.cc"],
    463     hdrs = ["gpu_transfer_manager.h"],
    464     deps = [
    465         ":gpu_compiler",
    466         "//tensorflow/compiler/xla:literal_util",
    467         "//tensorflow/compiler/xla:shape_util",
    468         "//tensorflow/compiler/xla:status_macros",
    469         "//tensorflow/compiler/xla:statusor",
    470         "//tensorflow/compiler/xla:types",
    471         "//tensorflow/compiler/xla:util",
    472         "//tensorflow/compiler/xla:xla_data_proto",
    473         "//tensorflow/compiler/xla/service:generic_transfer_manager",
    474         "//tensorflow/compiler/xla/service:transfer_manager",
    475         "//tensorflow/compiler/xla/service/gpu:infeed_manager",
    476         "//tensorflow/core:lib",
    477         "//tensorflow/core:stream_executor_no_cuda",
    478         "@llvm//:core",
    479     ],
    480     alwayslink = True,  # Contains per-platform transfer manager registration
    481 )
    482 
    483 cc_library(
    484     name = "gpu_compiler",
    485     srcs = ["gpu_compiler.cc"],
    486     hdrs = ["gpu_compiler.h"],
    487     deps = [
    488         ":cudnn_convolution_algorithm_picker",
    489         ":cudnn_convolution_rewriter",
    490         ":fusion_merger",
    491         ":gpu_constants",
    492         ":gpu_copy_insertion",
    493         ":gpu_executable",
    494         ":gpu_hlo_support_checker",
    495         ":gpu_layout_assignment",
    496         ":hlo_schedule",
    497         ":instruction_fusion",
    498         ":ir_emission_utils",
    499         ":ir_emitter",
    500         ":pad_insertion",
    501         ":partition_assignment",
    502         ":stream_assignment",
    503         "//tensorflow/compiler/xla:protobuf_util",
    504         "//tensorflow/compiler/xla:status_macros",
    505         "//tensorflow/compiler/xla:statusor",
    506         "//tensorflow/compiler/xla:types",
    507         "//tensorflow/compiler/xla:util",
    508         "//tensorflow/compiler/xla/service:algebraic_simplifier",
    509         "//tensorflow/compiler/xla/service:batchnorm_expander",
    510         "//tensorflow/compiler/xla/service:buffer_assignment",
    511         "//tensorflow/compiler/xla/service:buffer_liveness",
    512         "//tensorflow/compiler/xla/service:call_inliner",
    513         "//tensorflow/compiler/xla/service:dot_decomposer",
    514         "//tensorflow/compiler/xla/service:executable",
    515         "//tensorflow/compiler/xla/service:flatten_call_graph",
    516         "//tensorflow/compiler/xla/service:hlo",
    517         "//tensorflow/compiler/xla/service:hlo_constant_folding",
    518         "//tensorflow/compiler/xla/service:hlo_cse",
    519         "//tensorflow/compiler/xla/service:hlo_dce",
    520         "//tensorflow/compiler/xla/service:hlo_element_type_converter",
    521         "//tensorflow/compiler/xla/service:hlo_pass",
    522         "//tensorflow/compiler/xla/service:hlo_pass_pipeline",
    523         "//tensorflow/compiler/xla/service:hlo_proto",
    524         "//tensorflow/compiler/xla/service:hlo_proto_util",
    525         "//tensorflow/compiler/xla/service:hlo_subcomputation_unification",
    526         "//tensorflow/compiler/xla/service:hlo_verifier",
    527         "//tensorflow/compiler/xla/service:llvm_compiler",
    528         "//tensorflow/compiler/xla/service:reduce_precision_insertion",
    529         "//tensorflow/compiler/xla/service:reshape_mover",
    530         "//tensorflow/compiler/xla/service:transpose_folding",
    531         "//tensorflow/compiler/xla/service:tuple_simplifier",
    532         "//tensorflow/compiler/xla/service:while_loop_simplifier",
    533         "//tensorflow/compiler/xla/service:zero_sized_hlo_elimination",
    534         "//tensorflow/compiler/xla/service/gpu:cudnn_batchnorm_rewriter",
    535         "//tensorflow/compiler/xla/service/gpu/llvm_gpu_backend",
    536         "//tensorflow/compiler/xla/service/llvm_ir:llvm_util",
    537         "//tensorflow/core:cuda_libdevice_path",
    538         "//tensorflow/core:lib",
    539         "//tensorflow/core:lib_internal",
    540         "//tensorflow/core:regexp_internal",
    541         "//tensorflow/core:stream_executor_no_cuda",
    542         "@llvm//:core",
    543         "@llvm//:support",
    544     ],
    545     alwayslink = True,  # Contains compiler registration
    546 )
    547 
    548 cc_library(
    549     name = "cudnn_batchnorm_rewriter",
    550     srcs = ["cudnn_batchnorm_rewriter.cc"],
    551     hdrs = ["cudnn_batchnorm_rewriter.h"],
    552     deps = [
    553         ":ir_emission_utils",
    554         "//tensorflow/compiler/xla:literal_util",
    555         "//tensorflow/compiler/xla/service:hlo",
    556         "//tensorflow/compiler/xla/service:hlo_pass",
    557     ],
    558 )
    559 
    560 cc_library(
    561     name = "infeed_manager",
    562     srcs = ["infeed_manager.cc"],
    563     hdrs = ["infeed_manager.h"],
    564     deps = [
    565         "//tensorflow/compiler/xla:types",
    566         "//tensorflow/compiler/xla:util",
    567         "//tensorflow/core:lib",
    568         "//tensorflow/core:stream_executor_no_cuda",
    569     ],
    570 )
    571 
    572 cc_library(
    573     name = "gpu_layout_assignment",
    574     srcs = ["gpu_layout_assignment.cc"],
    575     hdrs = ["gpu_layout_assignment.h"],
    576     deps = [
    577         ":ir_emission_utils",
    578         "//tensorflow/compiler/xla:shape_util",
    579         "//tensorflow/compiler/xla:status_macros",
    580         "//tensorflow/compiler/xla:xla_data_proto",
    581         "//tensorflow/compiler/xla/service:computation_layout",
    582         "//tensorflow/compiler/xla/service:hlo",
    583         "//tensorflow/compiler/xla/service:layout_assignment",
    584         "//tensorflow/core:lib",
    585     ],
    586 )
    587 
    588 tf_cc_test(
    589     name = "gpu_layout_assignment_test",
    590     srcs = ["gpu_layout_assignment_test.cc"],
    591     deps = [
    592         ":gpu_layout_assignment",
    593         ":ir_emission_utils",
    594         "//tensorflow/compiler/xla:shape_layout",
    595         "//tensorflow/compiler/xla:shape_util",
    596         "//tensorflow/compiler/xla:xla_data_proto",
    597         "//tensorflow/compiler/xla/service:computation_layout",
    598         "//tensorflow/compiler/xla/service:hlo",
    599         "//tensorflow/compiler/xla/tests:hlo_test_base",
    600         "//tensorflow/compiler/xla/tests:xla_internal_test_main",  # build_cleaner: keep
    601     ],
    602 )
    603 
    604 cc_library(
    605     name = "hlo_schedule",
    606     srcs = ["hlo_schedule.cc"],
    607     hdrs = ["hlo_schedule.h"],
    608     deps = [
    609         ":stream_assignment",
    610         "//tensorflow/compiler/xla:statusor",
    611         "//tensorflow/compiler/xla:types",
    612         "//tensorflow/compiler/xla:util",
    613         "//tensorflow/compiler/xla/service:hlo",
    614         "//tensorflow/compiler/xla/service:hlo_ordering",
    615         "//tensorflow/compiler/xla/service:hlo_reachability",
    616         "//tensorflow/compiler/xla/service:hlo_scheduling",
    617     ],
    618 )
    619 
    620 tf_cc_test(
    621     name = "hlo_schedule_test",
    622     srcs = [
    623         "hlo_schedule_test.cc",
    624     ],
    625     deps = [
    626         ":hlo_schedule",
    627         ":stream_assignment",
    628         "//tensorflow/compiler/xla:test_helpers",
    629         "//tensorflow/compiler/xla:types",
    630         "//tensorflow/compiler/xla/service:hlo",
    631         "//tensorflow/compiler/xla/tests:hlo_test_base",
    632         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    633     ],
    634 )
    635 
    636 cc_library(
    637     name = "while_transformer",
    638     srcs = ["while_transformer.cc"],
    639     hdrs = ["while_transformer.h"],
    640     deps = [
    641         "//tensorflow/compiler/xla:literal_util",
    642         "//tensorflow/compiler/xla:shape_util",
    643         "//tensorflow/compiler/xla:status_macros",
    644         "//tensorflow/compiler/xla:statusor",
    645         "//tensorflow/compiler/xla:util",
    646         "//tensorflow/compiler/xla/service:hlo",
    647         "//tensorflow/core:lib",
    648     ],
    649 )
    650 
    651 tf_cc_test(
    652     name = "while_transformer_test",
    653     srcs = ["while_transformer_test.cc"],
    654     deps = [
    655         ":instruction_fusion",
    656         ":while_transformer",
    657         "//tensorflow/compiler/xla:shape_util",
    658         "//tensorflow/compiler/xla:test",
    659         "//tensorflow/compiler/xla:test_helpers",
    660         "//tensorflow/compiler/xla/service:copy_insertion",
    661         "//tensorflow/compiler/xla/service:hlo_verifier",
    662         "//tensorflow/compiler/xla/tests:hlo_test_base",
    663         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    664         "//tensorflow/core:test",
    665     ],
    666 )
    667 
    668 cc_library(
    669     name = "gpu_hlo_support_checker",
    670     srcs = ["gpu_hlo_support_checker.cc"],
    671     hdrs = ["gpu_hlo_support_checker.h"],
    672     deps = [
    673         "//tensorflow/compiler/xla:shape_util",
    674         "//tensorflow/compiler/xla:xla_data_proto",
    675         "//tensorflow/compiler/xla/service:hlo_pass",
    676         "//tensorflow/core:lib",
    677     ],
    678 )
    679 
    680 tf_cc_test(
    681     name = "gpu_hlo_support_checker_test",
    682     srcs = ["gpu_hlo_support_checker_test.cc"],
    683     deps = [
    684         ":gpu_hlo_support_checker",
    685         "//tensorflow/compiler/xla:shape_util",
    686         "//tensorflow/compiler/xla:test",
    687         "//tensorflow/compiler/xla/tests:hlo_test_base",
    688         "//tensorflow/compiler/xla/tests:xla_internal_test_main",
    689         "//tensorflow/core:protos_all_cc",
    690         "//tensorflow/core:test",
    691     ],
    692 )
    693 
    694 # -----------------------------------------------------------------------------
    695 
    696 filegroup(
    697     name = "all_files",
    698     srcs = glob(
    699         ["**/*"],
    700         exclude = [
    701             "**/METADATA",
    702             "**/OWNERS",
    703         ],
    704     ),
    705     visibility = ["//tensorflow:__subpackages__"],
    706 )
    707