--- a/third_party/gpus/rocm_configure.bzl +++ bthird_party/gpus/rocm_configure.bzl @@ -43,7 +43,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): @@ -182,7 +182,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/lib/python3.7/site-packages/numpy/core/include") return inc_dirs @@ -204,51 +204,32 @@ 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") + 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 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 + "/llvm/lib/clang/11.0.0/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/llvm/roc/lib/clang/11.0.0/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(rocm_config.rocm_toolkit_path + "/lib/hcc/3.3/include") + inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hcc/3.3/lib/clang/11.0.0/include") return inc_dirs @@ -330,7 +311,7 @@ return "True" # grep for "HIP_COMPILER=clang" in /opt/rocm/hip/lib/.hipInfo - cmd = "grep HIP_COMPILER=clang %s/hip/lib/.hipInfo || true" % rocm_config.rocm_toolkit_path + cmd = "grep HIP_COMPILER=clang %s/lib/hip/lib/.hipInfo || true" % rocm_config.rocm_toolkit_path grep_result = execute(repository_ctx, [bash_bin, "-c", cmd], empty_stdout_fine = True) result = grep_result.stdout.strip() if result == "HIP_COMPILER=clang": @@ -436,13 +417,13 @@ libs_paths = [ (name, _rocm_lib_paths(repository_ctx, name, path)) for name, path in [ - ("hip_hcc", rocm_config.rocm_toolkit_path), - ("rocblas", rocm_config.rocm_toolkit_path + "/rocblas"), - ("rocfft", rocm_config.rocm_toolkit_path + "/rocfft"), - ("hiprand", rocm_config.rocm_toolkit_path + "/hiprand"), - ("MIOpen", rocm_config.rocm_toolkit_path + "/miopen"), - ("rccl", rocm_config.rocm_toolkit_path + "/rccl"), - ("hipsparse", rocm_config.rocm_toolkit_path + "/hipsparse"), + ("hip_hcc", rocm_config.rocm_toolkit_path + "/lib/hip/lib"), + ("rocblas", rocm_config.rocm_toolkit_path + "/lib64"), + ("rocfft", rocm_config.rocm_toolkit_path + "/lib64"), + ("hiprand", rocm_config.rocm_toolkit_path + "/lib64"), + ("MIOpen", rocm_config.rocm_toolkit_path + "/lib64"), + ("rccl", rocm_config.rocm_toolkit_path + "/lib64"), + ("hipsparse", rocm_config.rocm_toolkit_path + "/lib64"), ] ] @@ -606,43 +587,91 @@ # rocm_toolkit_path rocm_toolkit_path = rocm_config.rocm_toolkit_path copy_rules = [ - make_copy_dir_rule( - repository_ctx, - name = "rocm-include", - src_dir = rocm_toolkit_path + "/include", - out_dir = "rocm/include", - ), +# make_copy_dir_rule( +# repository_ctx, +# name = "rocm-include", +# src_dir = rocm_toolkit_path + "/include", +# out_dir = "rocm/include", +# ), make_copy_dir_rule( repository_ctx, name = "rocfft-include", - src_dir = rocm_toolkit_path + "/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 + "/rocblas/include", + src_dir = rocm_toolkit_path + "/include/rocblas", out_dir = "rocm/include/rocblas", ), make_copy_dir_rule( repository_ctx, name = "miopen-include", - src_dir = rocm_toolkit_path + "/miopen/include", + src_dir = rocm_toolkit_path + "/include/miopen", out_dir = "rocm/include/miopen", + ), +# 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 + "/include/hipsparse", + out_dir = "rocm/include/hipsparse", ), make_copy_dir_rule( repository_ctx, - name = "rccl-include", - src_dir = rocm_toolkit_path + "/rccl/include", - out_dir = "rocm/include/rccl", + name = "hipcub-include", + src_dir = rocm_toolkit_path + "/include/hipcub", + out_dir = "rocm/include/hipcub", ), make_copy_dir_rule( repository_ctx, - name = "hipsparse-include", - src_dir = rocm_toolkit_path + "/hipsparse/include", - out_dir = "rocm/include/hipsparse", + name = "rocprim-include", + src_dir = rocm_toolkit_path + "/include/rocprim", + out_dir = "rocm/include/rocprim", + ), + make_copy_dir_rule( + repository_ctx, + name = "hip-include", + src_dir = rocm_toolkit_path + "/lib/hip/include/hip/", + out_dir = "rocm/include/hip", + ), + make_copy_dir_rule( + repository_ctx, + name = "hiprand-include", + src_dir = rocm_toolkit_path + "/include/hiprand", + out_dir = "rocm/include/hiprand", + ), + make_copy_dir_rule( + repository_ctx, + name = "rocblas-include-main", + src_dir = rocm_toolkit_path + "/include/rocblas", + out_dir = "rocm/include", ), ] + + # Copy required include files + copy_rules.append(make_copy_files_rule( + repository_ctx, + name = "rocm-include", + srcs = [ + "/usr/include/rccl.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/rocrand.h", + "rocm/include/rocrand_discrete_types.h", + "rocm/include/rocrand_version.h", + ], + )) rocm_libs = _find_libs(repository_ctx, rocm_config, bash_bin) rocm_lib_srcs = [] @@ -685,7 +714,11 @@ '":rocfft-include",\n' + '":rocblas-include",\n' + '":miopen-include",\n' + - '":rccl-include",\n' + + '":hipcub-include",\n' + + '":rocprim-include",\n' + + '":hip-include",\n' + + '":hiprand-include",\n' + + '":rocblas-include-main",\n' + '":hipsparse-include",'), }, ) @@ -702,7 +735,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.3/bin/" # For gcc, do not canonicalize system header paths; some versions of gcc # pick the shortest possible path for system includes when creating the @@ -753,14 +786,14 @@ tpl_paths["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/hip/bin/hipcc", "%{hipcc_env}": _hipcc_env(repository_ctx), "%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config, bash_bin), - "%{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.3/lib", "%{hcc_runtime_library}": "mcwamp", "%{crosstool_verbose}": _crosstool_verbose(repository_ctx), "%{gcc_host_compiler_path}": str(cc),