--- a/third_party/gpus/rocm_configure.bzl +++ b/third_party/gpus/rocm_configure.bzl @@ -30,7 +30,7 @@ _DEFAULT_ROCM_VERSION = "" _DEFAULT_MIOPEN_VERSION = "" -_DEFAULT_ROCM_TOOLKIT_PATH = "/opt/rocm" +_DEFAULT_ROCM_TOOLKIT_PATH = "/usr" _DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"] def verify_build_defines(params): @@ -169,7 +169,7 @@ inc_dirs = get_cxx_inc_directories(repository_ctx, cc) # Add numpy headers - inc_dirs.append("/usr/lib/python2.7/dist-packages/numpy/core/include") + inc_dirs.append("/usr/lib64/python3.6/site-packages/numpy/core/include/numpy") return inc_dirs @@ -191,50 +191,29 @@ inc_dirs.append(rocm_config.rocm_toolkit_path + "/include") # Add HSA headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hsa/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hsa") # Add HIP headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip/hcc_detail") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hip/include") - - # Add HIP-Clang headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/8.0/include") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/9.0.0/include") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/10.0.0/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip/hcc_detail") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include") # Add rocrand and hiprand headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocrand/include") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hiprand/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocrand") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hiprand") # Add rocfft headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocfft/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocFFT") # Add rocBLAS headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocblas/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocblas") # Add MIOpen headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/miopen/include") - - # Add RCCL headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/rccl/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/miopen") # Add hcc headers - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/include") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/7.0.0/include/") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/7.0.0/include") - - # Newer hcc builds use/are based off of clang 8.0.0. - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/8.0.0/include/") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/8.0.0/include") - - # Support hcc based off clang 9.0.0, included in ROCm2.2 - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/9.0.0/include/") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/9.0.0/include") - - # Support hcc based off clang 10.0.0, included in ROCm2.8 - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/10.0.0/include/") - inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/10.0.0/include") + inc_dirs.append("/usr/lib/hcc/3.0/include") + inc_dirs.append("/usr/lib/hcc/3.0/lib/clang/10.0.0/include") return inc_dirs @@ -317,10 +296,10 @@ if name in repository_ctx.os.environ: return "True" - # grep for "HIP_COMPILER=clang" in /opt/rocm/hip/lib/.hipInfo + # grep for "HIP_COMPILER=clang" in /usr/lib/hip/lib/.hipInfo grep_result = _execute( repository_ctx, - ["grep", "HIP_COMPILER=clang", rocm_config.rocm_toolkit_path + "/hip/lib/.hipInfo"], + ["grep", "HIP_COMPILER=clang", rocm_config.rocm_toolkit_path + "/lib/hip/lib/.hipInfo"], empty_stdout_fine = True, ) result = grep_result.stdout.strip() @@ -453,37 +432,37 @@ "hip": _find_rocm_lib( "hip_hcc", repository_ctx, - rocm_config.rocm_toolkit_path, + rocm_config.rocm_toolkit_path + "/lib/hip/lib", ), "rocblas": _find_rocm_lib( "rocblas", repository_ctx, - rocm_config.rocm_toolkit_path + "/rocblas", + rocm_config.rocm_toolkit_path + "/lib64", ), "rocfft": _find_rocm_lib( "rocfft", repository_ctx, - rocm_config.rocm_toolkit_path + "/rocfft", + rocm_config.rocm_toolkit_path + "/lib64", ), "hiprand": _find_rocm_lib( "hiprand", repository_ctx, - rocm_config.rocm_toolkit_path + "/hiprand", + rocm_config.rocm_toolkit_path + "/lib64", ), "miopen": _find_rocm_lib( "MIOpen", repository_ctx, - rocm_config.rocm_toolkit_path + "/miopen", + rocm_config.rocm_toolkit_path + "/lib64", ), "rccl": _find_rocm_lib( "rccl", repository_ctx, - rocm_config.rocm_toolkit_path + "/rccl", + rocm_config.rocm_toolkit_path + "/lib64", ), "hipsparse": _find_rocm_lib( "hipsparse", repository_ctx, - rocm_config.rocm_toolkit_path + "/hipsparse", + rocm_config.rocm_toolkit_path + "/lib64", ), } @@ -683,42 +662,74 @@ copy_rules = [ make_copy_dir_rule( repository_ctx, - name = "rocm-include", - src_dir = rocm_toolkit_path + "/include", + name = "rocfft-include", + src_dir = rocm_toolkit_path + "/include/rocFFT", + out_dir = "rocm/include/rocfft", + ), + make_copy_dir_rule( + repository_ctx, + name = "rocblas-include", + src_dir = rocm_toolkit_path + "/include/rocblas", + out_dir = "rocm/include/rocblas", + ), + make_copy_dir_rule( + repository_ctx, + name = "rocblas-include-link", + src_dir = rocm_toolkit_path + "/include/rocblas", out_dir = "rocm/include", - ), + ), make_copy_dir_rule( repository_ctx, - name = "rocfft-include", - src_dir = rocm_toolkit_path + "/rocfft/include", - out_dir = "rocm/include/rocfft", + name = "miopen-include", + src_dir = rocm_toolkit_path + "/include/miopen", + out_dir = "rocm/include/miopen", ), make_copy_dir_rule( repository_ctx, - name = "rocblas-include", - src_dir = rocm_toolkit_path + "/rocblas/include", - out_dir = "rocm/include/rocblas", + name = "hipsparse-include", + src_dir = rocm_toolkit_path + "/include/hipsparse", + out_dir = "rocm/include/hipsparse", ), make_copy_dir_rule( repository_ctx, - name = "miopen-include", - src_dir = rocm_toolkit_path + "/miopen/include", - out_dir = "rocm/include/miopen", + name = "hipcub-include", + src_dir = rocm_toolkit_path + "/include/hipcub", + out_dir = "rocm/include/hipcub", ), make_copy_dir_rule( repository_ctx, - name = "rccl-include", - src_dir = rocm_toolkit_path + "/rccl/include", - out_dir = "rocm/include/rccl", - ), - make_copy_dir_rule( - repository_ctx, - name = "hipsparse-include", - src_dir = rocm_toolkit_path + "/hipsparse/include", - out_dir = "rocm/include/hipsparse", + name = "hip-include", + src_dir = rocm_toolkit_path + "/lib/hip/include/hip", + out_dir = "rocm/include/hip", ), ] + # Copy required include files + copy_rules.append(make_copy_files_rule( + repository_ctx, + name = "files", + srcs = [ + "/usr/include/rccl.h", + "/usr/include/rocprim/rocprim_version.hpp", + "/usr/include/hiprand/hiprand.h", + "/usr/include/hiprand/hiprand_version.h", + "/usr/include/hiprand/hiprand_hcc.h", + "/usr/include/rocrand/rocrand.h", + "/usr/include/rocrand/rocrand_discrete_types.h", + "/usr/include/rocrand/rocrand_version.h", + ], + outs = [ + "rocm/include/rccl/rccl.h", + "rocm/include/rocprim/rocprim_version.hpp", + "rocm/include/hiprand/hiprand.h", + "rocm/include/hiprand/hiprand_version.h", + "rocm/include/hiprand/hiprand_hcc.h", + "rocm/include/rocrand/rocrand.h", + "rocm/include/rocrand/rocrand_discrete_types.h", + "rocm/include/rocrand/rocrand_version.h", + ], + )) + rocm_libs = _find_libs(repository_ctx, rocm_config) rocm_lib_srcs = [] rocm_lib_outs = [] @@ -756,11 +767,13 @@ "%{rccl_lib}": rocm_libs["rccl"].file_name, "%{hipsparse_lib}": rocm_libs["hipsparse"].file_name, "%{copy_rules}": "\n".join(copy_rules), - "%{rocm_headers}": ('":rocm-include",\n' + + "%{rocm_headers}": ('":files",\n' + '":rocfft-include",\n' + '":rocblas-include",\n' + '":miopen-include",\n' + - '":rccl-include",\n' + + '":hip-include",\n' + + '":hipcub-include",\n' + + '":rocblas-include-link",\n' + '":hipsparse-include",'), }, ) @@ -779,7 +792,7 @@ rocm_defines["%{host_compiler_prefix}"] = host_compiler_prefix - rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/hcc/compiler/bin" + rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/bin" # For gcc, do not canonicalize system header paths; some versions of gcc # pick the shortest possible path for system includes when creating the @@ -832,14 +845,14 @@ "crosstool:clang/bin/crosstool_wrapper_driver_rocm", { "%{cpu_compiler}": str(cc), - "%{hipcc_path}": rocm_config.rocm_toolkit_path + "/bin/hipcc", + "%{hipcc_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/bin/hcc", "%{hipcc_env}": _hipcc_env(repository_ctx), "%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config), - "%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib", + "%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib64", "%{rocr_runtime_library}": "hsa-runtime64", - "%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/hip/lib", + "%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hip/lib", "%{hip_runtime_library}": "hip_hcc", - "%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/hcc/lib", + "%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/lib", "%{hcc_runtime_library}": "mcwamp", "%{crosstool_verbose}": _crosstool_verbose(repository_ctx), "%{gcc_host_compiler_path}": str(cc),