Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 705712 | Differences between
and this patch

Collapse All | Expand All

(-)a/third_party/gpus/rocm_configure.bzl (-59 / +111 lines)
Lines 43-49 Link Here
43
43
44
_DEFAULT_ROCM_VERSION = ""
44
_DEFAULT_ROCM_VERSION = ""
45
_DEFAULT_MIOPEN_VERSION = ""
45
_DEFAULT_MIOPEN_VERSION = ""
46
_DEFAULT_ROCM_TOOLKIT_PATH = "/opt/rocm"
46
_DEFAULT_ROCM_TOOLKIT_PATH = "/usr"
47
_DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"]
47
_DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"]
48
48
49
def verify_build_defines(params):
49
def verify_build_defines(params):
Lines 182-189 Link Here
182
    inc_dirs = get_cxx_inc_directories(repository_ctx, cc)
182
    inc_dirs = get_cxx_inc_directories(repository_ctx, cc)
183
183
184
    # Add numpy headers
184
    # Add numpy headers
185
    inc_dirs.append("/usr/lib/python2.7/dist-packages/numpy/core/include")
185
    inc_dirs.append("/usr/lib64/python3.6/site-packages/numpy/core/include/numpy")
186
187
    return inc_dirs
186
    return inc_dirs
188
187
189
def _rocm_include_path(repository_ctx, rocm_config):
188
def _rocm_include_path(repository_ctx, rocm_config):
Lines 204-254 Link Here
204
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include")
203
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include")
205
204
206
    # Add HSA headers
205
    # Add HSA headers
207
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hsa/include")
206
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hsa")
208
207
209
    # Add HIP headers
208
    # Add HIP headers
210
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip")
209
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip")
211
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip/hcc_detail")
210
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip/hcc_detail")
212
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hip/include")
211
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hip/include")
213
212
214
    # Add HIP-Clang headers
213
    # Add HIP-Clang headers
215
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/8.0/include")
214
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/8.0/include")
216
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/9.0.0/include")
215
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/9.0.0/include")
217
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/10.0.0/include")
216
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/10.0.0/include")
218
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/11.0.0/include")
217
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/11.0.0/include")
218
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip")
219
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip/hcc_detail")
220
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include")
219
221
220
    # Add rocrand and hiprand headers
222
    # Add rocrand and hiprand headers
221
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocrand/include")
223
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocrand")
222
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hiprand/include")
224
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hiprand")
223
225
224
    # Add rocfft headers
226
    # Add rocfft headers
225
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocfft/include")
227
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocfft")
226
228
227
    # Add rocBLAS headers
229
    # Add rocBLAS headers
228
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocblas/include")
230
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocblas")
229
231
230
    # Add MIOpen headers
232
    # Add MIOpen headers
231
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/miopen/include")
233
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/miopen/include")
232
234
233
    # Add RCCL headers
235
    # Add RCCL headers
234
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/rccl/include")
236
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/rccl/include")
237
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/miopen")
235
238
236
    # Add hcc headers
239
    # Add hcc headers
237
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/include")
240
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/include")
238
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/7.0.0/include/")
241
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/7.0.0/include/")
239
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/7.0.0/include")
242
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/7.0.0/include")
240
243
241
    # Newer hcc builds use/are based off of clang 8.0.0.
244
    # Newer hcc builds use/are based off of clang 8.0.0.
242
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/8.0.0/include/")
245
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/8.0.0/include/")
243
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/8.0.0/include")
246
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/8.0.0/include")
244
247
245
    # Support hcc based off clang 9.0.0, included in ROCm2.2
248
    # Support hcc based off clang 9.0.0, included in ROCm2.2
246
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/9.0.0/include/")
249
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/9.0.0/include/")
247
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/9.0.0/include")
250
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/9.0.0/include")
248
251
249
    # Support hcc based off clang 10.0.0, included in ROCm2.8
252
    # Support hcc based off clang 10.0.0, included in ROCm2.8
250
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/10.0.0/include/")
253
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/10.0.0/include/")
251
    inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/10.0.0/include")
254
    #inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/10.0.0/include")
255
    
256
    # hcc 3.0 and clang 11.0.0
257
    inc_dirs.append("/usr/lib/hcc/3.3/include")
258
    inc_dirs.append("/usr/lib/hcc/3.3/lib/clang/11.0.0/include")
252
259
253
    return inc_dirs
260
    return inc_dirs
254
261
Lines 329-336 Link Here
329
        if get_host_environ(repository_ctx, name):
336
        if get_host_environ(repository_ctx, name):
330
            return "True"
337
            return "True"
331
338
332
    # grep for "HIP_COMPILER=clang" in /opt/rocm/hip/lib/.hipInfo
339
    # grep for "HIP_COMPILER=clang" in /usr/lib/hip/lib/.hipInfo
333
    cmd = "grep HIP_COMPILER=clang %s/hip/lib/.hipInfo || true" % rocm_config.rocm_toolkit_path
340
    cmd = "grep HIP_COMPILER=clang %s/lib/hip/lib/.hipInfo || true" % rocm_config.rocm_toolkit_path
334
    grep_result = execute(repository_ctx, [bash_bin, "-c", cmd], empty_stdout_fine = True)
341
    grep_result = execute(repository_ctx, [bash_bin, "-c", cmd], empty_stdout_fine = True)
335
    result = grep_result.stdout.strip()
342
    result = grep_result.stdout.strip()
336
    if result == "HIP_COMPILER=clang":
343
    if result == "HIP_COMPILER=clang":
Lines 436-448 Link Here
436
    libs_paths = [
443
    libs_paths = [
437
        (name, _rocm_lib_paths(repository_ctx, name, path))
444
        (name, _rocm_lib_paths(repository_ctx, name, path))
438
        for name, path in [
445
        for name, path in [
439
            ("hip_hcc", rocm_config.rocm_toolkit_path),
446
            ("hip_hcc", rocm_config.rocm_toolkit_path + "/lib/hip/lib"),
440
            ("rocblas", rocm_config.rocm_toolkit_path + "/rocblas"),
447
            ("rocblas", rocm_config.rocm_toolkit_path + "/lib64"),
441
            ("rocfft", rocm_config.rocm_toolkit_path + "/rocfft"),
448
            ("rocfft", rocm_config.rocm_toolkit_path + "/lib64"),
442
            ("hiprand", rocm_config.rocm_toolkit_path + "/hiprand"),
449
            ("hiprand", rocm_config.rocm_toolkit_path + "/lib64"),
443
            ("MIOpen", rocm_config.rocm_toolkit_path + "/miopen"),
450
            ("MIOpen", rocm_config.rocm_toolkit_path + "/lib64"),
444
            ("rccl", rocm_config.rocm_toolkit_path + "/rccl"),
451
            ("rccl", rocm_config.rocm_toolkit_path + "/lib64"),
445
            ("hipsparse", rocm_config.rocm_toolkit_path + "/hipsparse"),
452
            ("hipsparse", rocm_config.rocm_toolkit_path + "/lib64"),
446
        ]
453
        ]
447
    ]
454
    ]
448
455
Lines 608-649 Link Here
608
    copy_rules = [
615
    copy_rules = [
609
        make_copy_dir_rule(
616
        make_copy_dir_rule(
610
            repository_ctx,
617
            repository_ctx,
611
            name = "rocm-include",
618
            #name = "rocm-include",
612
            src_dir = rocm_toolkit_path + "/include",
619
            #src_dir = rocm_toolkit_path + "/include",
613
            out_dir = "rocm/include",
614
        ),
615
        make_copy_dir_rule(
616
            repository_ctx,
617
            name = "rocfft-include",
620
            name = "rocfft-include",
618
            src_dir = rocm_toolkit_path + "/rocfft/include",
621
            src_dir = rocm_toolkit_path + "/include/rocFFT",
619
            out_dir = "rocm/include/rocfft",
622
            out_dir = "rocm/include/rocfft",
620
        ),
623
        ),
621
        make_copy_dir_rule(
624
        make_copy_dir_rule(
622
            repository_ctx,
625
            repository_ctx,
623
            name = "rocblas-include",
626
            name = "rocblas-include",
624
            src_dir = rocm_toolkit_path + "/rocblas/include",
627
            src_dir = rocm_toolkit_path + "/include/rocblas",
625
            out_dir = "rocm/include/rocblas",
628
            out_dir = "rocm/include/rocblas",
626
        ),
629
        ),
627
        make_copy_dir_rule(
630
        make_copy_dir_rule(
628
            repository_ctx,
631
            repository_ctx,
632
            name = "rocblas-include-link",
633
            src_dir = rocm_toolkit_path + "/include/rocblas",
634
            out_dir = "rocm/include",
635
         ),
636
        make_copy_dir_rule(
637
            repository_ctx,
638
            #name = "rocfft-include",
639
            #src_dir = rocm_toolkit_path + "/rocfft/include",
640
            #out_dir = "rocm/include/rocfft",
629
            name = "miopen-include",
641
            name = "miopen-include",
630
            src_dir = rocm_toolkit_path + "/miopen/include",
642
            src_dir = rocm_toolkit_path + "/include/miopen",
631
            out_dir = "rocm/include/miopen",
643
            out_dir = "rocm/include/miopen",
632
        ),
644
        ),
633
        make_copy_dir_rule(
645
        make_copy_dir_rule(
634
            repository_ctx,
646
            repository_ctx,
635
            name = "rccl-include",
647
            #name = "rocblas-include",
636
            src_dir = rocm_toolkit_path + "/rccl/include",
648
            #src_dir = rocm_toolkit_path + "/rocblas/include",
637
            out_dir = "rocm/include/rccl",
649
            #out_dir = "rocm/include/rocblas",
650
            name = "hipsparse-include",
651
            src_dir = rocm_toolkit_path + "/include/hipsparse",
652
            out_dir = "rocm/include/hipsparse",
638
        ),
653
        ),
639
        make_copy_dir_rule(
654
        make_copy_dir_rule(
640
            repository_ctx,
655
            repository_ctx,
641
            name = "hipsparse-include",
656
            #name = "miopen-include",
642
            src_dir = rocm_toolkit_path + "/hipsparse/include",
657
            #src_dir = rocm_toolkit_path + "/miopen/include",
643
            out_dir = "rocm/include/hipsparse",
658
            #out_dir = "rocm/include/miopen",
659
            name = "hipcub-include",
660
            src_dir = rocm_toolkit_path + "/include/hipcub",
661
            out_dir = "rocm/include/hipcub",
662
        ),
663
        make_copy_dir_rule(
664
            repository_ctx,
665
            name = "hip-include",
666
            src_dir = rocm_toolkit_path + "/lib/hip/include/hip",
667
            out_dir = "rocm/include/hip",
644
        ),
668
        ),
645
    ]
669
    ]
646
670
    # Copy required include files
671
    copy_rules.append(make_copy_files_rule(
672
    repository_ctx,
673
    name = "files",
674
        srcs = [
675
            "/usr/include/rccl.h",
676
            "/usr/include/rocprim/rocprim_version.hpp",
677
            "/usr/include/hiprand/hiprand.h",
678
            "/usr/include/hiprand/hiprand_version.h",
679
            "/usr/include/hiprand/hiprand_hcc.h",
680
            "/usr/include/rocrand/rocrand.h",
681
            "/usr/include/rocrand/rocrand_discrete_types.h",
682
            "/usr/include/rocrand/rocrand_version.h",
683
        ],
684
        outs = [
685
            "rocm/include/rccl/rccl.h",
686
            "rocm/include/rocprim/rocprim_version.hpp",
687
            "rocm/include/hiprand/hiprand.h",
688
            "rocm/include/hiprand/hiprand_version.h",
689
            "rocm/include/hiprand/hiprand_hcc.h",
690
            "rocm/include/rocrand/rocrand.h",
691
            "rocm/include/rocrand/rocrand_discrete_types.h",
692
            "rocm/include/rocrand/rocrand_version.h",
693
        ],
694
    ))
695
    
647
    rocm_libs = _find_libs(repository_ctx, rocm_config, bash_bin)
696
    rocm_libs = _find_libs(repository_ctx, rocm_config, bash_bin)
648
    rocm_lib_srcs = []
697
    rocm_lib_srcs = []
649
    rocm_lib_outs = []
698
    rocm_lib_outs = []
Lines 681-691 Link Here
681
            "%{rccl_lib}": rocm_libs["rccl"].file_name,
730
            "%{rccl_lib}": rocm_libs["rccl"].file_name,
682
            "%{hipsparse_lib}": rocm_libs["hipsparse"].file_name,
731
            "%{hipsparse_lib}": rocm_libs["hipsparse"].file_name,
683
            "%{copy_rules}": "\n".join(copy_rules),
732
            "%{copy_rules}": "\n".join(copy_rules),
684
            "%{rocm_headers}": ('":rocm-include",\n' +
733
            "%{rocm_headers}": ('":files",\n' +
685
                                '":rocfft-include",\n' +
734
                                '":rocfft-include",\n' +
686
                                '":rocblas-include",\n' +
735
                                '":rocblas-include",\n' +
687
                                '":miopen-include",\n' +
736
                                '":miopen-include",\n' +
688
                                '":rccl-include",\n' +
737
                                '":hip-include",\n' +
738
                                '":hipcub-include",\n' +
739
                                '":rocblas-include-link",\n' +
689
                                '":hipsparse-include",'),
740
                                '":hipsparse-include",'),
690
        },
741
        },
691
    )
742
    )
Lines 702-709 Link Here
702
753
703
    rocm_defines["%{host_compiler_prefix}"] = host_compiler_prefix
754
    rocm_defines["%{host_compiler_prefix}"] = host_compiler_prefix
704
755
705
    rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/hcc/compiler/bin"
756
    #rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/hcc/compiler/bin"
706
757
    rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/lib/hcc/3.3/bin"
758
    
707
    # For gcc, do not canonicalize system header paths; some versions of gcc
759
    # For gcc, do not canonicalize system header paths; some versions of gcc
708
    # pick the shortest possible path for system includes when creating the
760
    # pick the shortest possible path for system includes when creating the
709
    # .d file - given that includes that are prefixed with "../" multiple
761
    # .d file - given that includes that are prefixed with "../" multiple
Lines 753-766 Link Here
753
        tpl_paths["crosstool:clang/bin/crosstool_wrapper_driver_rocm"],
805
        tpl_paths["crosstool:clang/bin/crosstool_wrapper_driver_rocm"],
754
        {
806
        {
755
            "%{cpu_compiler}": str(cc),
807
            "%{cpu_compiler}": str(cc),
756
            "%{hipcc_path}": rocm_config.rocm_toolkit_path + "/bin/hipcc",
808
            "%{hipcc_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.3/bin/hcc",
757
            "%{hipcc_env}": _hipcc_env(repository_ctx),
809
            "%{hipcc_env}": _hipcc_env(repository_ctx),
758
            "%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config, bash_bin),
810
            "%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config, bash_bin),
759
            "%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib",
811
            "%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib64",
760
            "%{rocr_runtime_library}": "hsa-runtime64",
812
            "%{rocr_runtime_library}": "hsa-runtime64",
761
            "%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/hip/lib",
813
            "%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hip/lib",
762
            "%{hip_runtime_library}": "hip_hcc",
814
            "%{hip_runtime_library}": "hip_hcc",
763
            "%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/hcc/lib",
815
            "%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.3/lib",
764
            "%{hcc_runtime_library}": "mcwamp",
816
            "%{hcc_runtime_library}": "mcwamp",
765
            "%{crosstool_verbose}": _crosstool_verbose(repository_ctx),
817
            "%{crosstool_verbose}": _crosstool_verbose(repository_ctx),
766
            "%{gcc_host_compiler_path}": str(cc),
818
            "%{gcc_host_compiler_path}": str(cc),

Return to bug 705712