Line
Link Here
|
0 |
-- a/third_party/gpus/rocm_configure.bzl |
0 |
++ b/third_party/gpus/rocm_configure.bzl |
Lines 30-36
Link Here
|
30 |
|
30 |
|
31 |
_DEFAULT_ROCM_VERSION = "" |
31 |
_DEFAULT_ROCM_VERSION = "" |
32 |
_DEFAULT_MIOPEN_VERSION = "" |
32 |
_DEFAULT_MIOPEN_VERSION = "" |
33 |
_DEFAULT_ROCM_TOOLKIT_PATH = "/opt/rocm" |
33 |
_DEFAULT_ROCM_TOOLKIT_PATH = "/usr" |
34 |
_DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"] |
34 |
_DEFAULT_ROCM_AMDGPU_TARGETS = ["gfx803", "gfx900"] |
35 |
|
35 |
|
36 |
def verify_build_defines(params): |
36 |
def verify_build_defines(params): |
Lines 169-175
Link Here
|
169 |
inc_dirs = get_cxx_inc_directories(repository_ctx, cc) |
169 |
inc_dirs = get_cxx_inc_directories(repository_ctx, cc) |
170 |
|
170 |
|
171 |
# Add numpy headers |
171 |
# Add numpy headers |
172 |
inc_dirs.append("/usr/lib/python2.7/dist-packages/numpy/core/include") |
172 |
inc_dirs.append("/usr/lib64/python3.6/site-packages/numpy/core/include/numpy") |
173 |
|
173 |
|
174 |
return inc_dirs |
174 |
return inc_dirs |
175 |
|
175 |
|
Lines 191-241
Link Here
|
191 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include") |
191 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include") |
192 |
|
192 |
|
193 |
# Add HSA headers |
193 |
# Add HSA headers |
194 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hsa/include") |
194 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hsa") |
195 |
|
195 |
|
196 |
# Add HIP headers |
196 |
# Add HIP headers |
197 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip") |
197 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip") |
198 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hip/hcc_detail") |
198 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include/hip/hcc_detail") |
199 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hip/include") |
199 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/lib/hip/include") |
200 |
|
|
|
201 |
# Add HIP-Clang headers |
202 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/8.0/include") |
203 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/9.0.0/include") |
204 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/10.0.0/include") |
205 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/llvm/lib/clang/11.0.0/include") |
206 |
|
200 |
|
207 |
# Add rocrand and hiprand headers |
201 |
# Add rocrand and hiprand headers |
208 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocrand/include") |
202 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocrand") |
209 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hiprand/include") |
203 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/hiprand") |
210 |
|
204 |
|
211 |
# Add rocfft headers |
205 |
# Add rocfft headers |
212 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocfft/include") |
206 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocFFT") |
213 |
|
207 |
|
214 |
# Add rocBLAS headers |
208 |
# Add rocBLAS headers |
215 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/rocblas/include") |
209 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/rocblas") |
216 |
|
210 |
|
217 |
# Add MIOpen headers |
211 |
# Add MIOpen headers |
218 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/miopen/include") |
212 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/include/miopen") |
219 |
|
|
|
220 |
# Add RCCL headers |
221 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/rccl/include") |
222 |
|
213 |
|
223 |
# Add hcc headers |
214 |
# Add hcc headers |
224 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/include") |
215 |
inc_dirs.append("/usr/lib/hcc/3.0/include") |
225 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/7.0.0/include/") |
216 |
inc_dirs.append("/usr/lib/hcc/3.0/lib/clang/10.0.0/include") |
226 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/7.0.0/include") |
|
|
227 |
|
228 |
# Newer hcc builds use/are based off of clang 8.0.0. |
229 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/8.0.0/include/") |
230 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/8.0.0/include") |
231 |
|
232 |
# Support hcc based off clang 9.0.0, included in ROCm2.2 |
233 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/9.0.0/include/") |
234 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/9.0.0/include") |
235 |
|
236 |
# Support hcc based off clang 10.0.0, included in ROCm2.8 |
237 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/compiler/lib/clang/10.0.0/include/") |
238 |
inc_dirs.append(rocm_config.rocm_toolkit_path + "/hcc/lib/clang/10.0.0/include") |
239 |
|
217 |
|
240 |
return inc_dirs |
218 |
return inc_dirs |
241 |
|
219 |
|
Lines 317-326
Link Here
|
317 |
if name in repository_ctx.os.environ: |
296 |
if name in repository_ctx.os.environ: |
318 |
return "True" |
297 |
return "True" |
319 |
|
298 |
|
320 |
# grep for "HIP_COMPILER=clang" in /opt/rocm/hip/lib/.hipInfo |
299 |
# grep for "HIP_COMPILER=clang" in /usr/lib/hip/lib/.hipInfo |
321 |
grep_result = _execute( |
300 |
grep_result = _execute( |
322 |
repository_ctx, |
301 |
repository_ctx, |
323 |
["grep", "HIP_COMPILER=clang", rocm_config.rocm_toolkit_path + "/hip/lib/.hipInfo"], |
302 |
["grep", "HIP_COMPILER=clang", rocm_config.rocm_toolkit_path + "/lib/hip/lib/.hipInfo"], |
324 |
empty_stdout_fine = True, |
303 |
empty_stdout_fine = True, |
325 |
) |
304 |
) |
326 |
result = grep_result.stdout.strip() |
305 |
result = grep_result.stdout.strip() |
Lines 453-489
Link Here
|
453 |
"hip": _find_rocm_lib( |
432 |
"hip": _find_rocm_lib( |
454 |
"hip_hcc", |
433 |
"hip_hcc", |
455 |
repository_ctx, |
434 |
repository_ctx, |
456 |
rocm_config.rocm_toolkit_path, |
435 |
rocm_config.rocm_toolkit_path + "/lib/hip/lib", |
457 |
), |
436 |
), |
458 |
"rocblas": _find_rocm_lib( |
437 |
"rocblas": _find_rocm_lib( |
459 |
"rocblas", |
438 |
"rocblas", |
460 |
repository_ctx, |
439 |
repository_ctx, |
461 |
rocm_config.rocm_toolkit_path + "/rocblas", |
440 |
rocm_config.rocm_toolkit_path + "/lib64", |
462 |
), |
441 |
), |
463 |
"rocfft": _find_rocm_lib( |
442 |
"rocfft": _find_rocm_lib( |
464 |
"rocfft", |
443 |
"rocfft", |
465 |
repository_ctx, |
444 |
repository_ctx, |
466 |
rocm_config.rocm_toolkit_path + "/rocfft", |
445 |
rocm_config.rocm_toolkit_path + "/lib64", |
467 |
), |
446 |
), |
468 |
"hiprand": _find_rocm_lib( |
447 |
"hiprand": _find_rocm_lib( |
469 |
"hiprand", |
448 |
"hiprand", |
470 |
repository_ctx, |
449 |
repository_ctx, |
471 |
rocm_config.rocm_toolkit_path + "/hiprand", |
450 |
rocm_config.rocm_toolkit_path + "/lib64", |
472 |
), |
451 |
), |
473 |
"miopen": _find_rocm_lib( |
452 |
"miopen": _find_rocm_lib( |
474 |
"MIOpen", |
453 |
"MIOpen", |
475 |
repository_ctx, |
454 |
repository_ctx, |
476 |
rocm_config.rocm_toolkit_path + "/miopen", |
455 |
rocm_config.rocm_toolkit_path + "/lib64", |
477 |
), |
456 |
), |
478 |
"rccl": _find_rocm_lib( |
457 |
"rccl": _find_rocm_lib( |
479 |
"rccl", |
458 |
"rccl", |
480 |
repository_ctx, |
459 |
repository_ctx, |
481 |
rocm_config.rocm_toolkit_path + "/rccl", |
460 |
rocm_config.rocm_toolkit_path + "/lib64", |
482 |
), |
461 |
), |
483 |
"hipsparse": _find_rocm_lib( |
462 |
"hipsparse": _find_rocm_lib( |
484 |
"hipsparse", |
463 |
"hipsparse", |
485 |
repository_ctx, |
464 |
repository_ctx, |
486 |
rocm_config.rocm_toolkit_path + "/hipsparse", |
465 |
rocm_config.rocm_toolkit_path + "/lib64", |
487 |
), |
466 |
), |
488 |
} |
467 |
} |
489 |
|
468 |
|
Lines 683-724
Link Here
|
683 |
copy_rules = [ |
662 |
copy_rules = [ |
684 |
make_copy_dir_rule( |
663 |
make_copy_dir_rule( |
685 |
repository_ctx, |
664 |
repository_ctx, |
686 |
name = "rocm-include", |
665 |
name = "rocfft-include", |
687 |
src_dir = rocm_toolkit_path + "/include", |
666 |
src_dir = rocm_toolkit_path + "/include/rocFFT", |
|
|
667 |
out_dir = "rocm/include/rocfft", |
668 |
), |
669 |
make_copy_dir_rule( |
670 |
repository_ctx, |
671 |
name = "rocblas-include", |
672 |
src_dir = rocm_toolkit_path + "/include/rocblas", |
673 |
out_dir = "rocm/include/rocblas", |
674 |
), |
675 |
make_copy_dir_rule( |
676 |
repository_ctx, |
677 |
name = "rocblas-include-link", |
678 |
src_dir = rocm_toolkit_path + "/include/rocblas", |
688 |
out_dir = "rocm/include", |
679 |
out_dir = "rocm/include", |
689 |
), |
680 |
), |
690 |
make_copy_dir_rule( |
681 |
make_copy_dir_rule( |
691 |
repository_ctx, |
682 |
repository_ctx, |
692 |
name = "rocfft-include", |
683 |
name = "miopen-include", |
693 |
src_dir = rocm_toolkit_path + "/rocfft/include", |
684 |
src_dir = rocm_toolkit_path + "/include/miopen", |
694 |
out_dir = "rocm/include/rocfft", |
685 |
out_dir = "rocm/include/miopen", |
695 |
), |
686 |
), |
696 |
make_copy_dir_rule( |
687 |
make_copy_dir_rule( |
697 |
repository_ctx, |
688 |
repository_ctx, |
698 |
name = "rocblas-include", |
689 |
name = "hipsparse-include", |
699 |
src_dir = rocm_toolkit_path + "/rocblas/include", |
690 |
src_dir = rocm_toolkit_path + "/include/hipsparse", |
700 |
out_dir = "rocm/include/rocblas", |
691 |
out_dir = "rocm/include/hipsparse", |
701 |
), |
692 |
), |
702 |
make_copy_dir_rule( |
693 |
make_copy_dir_rule( |
703 |
repository_ctx, |
694 |
repository_ctx, |
704 |
name = "miopen-include", |
695 |
name = "hipcub-include", |
705 |
src_dir = rocm_toolkit_path + "/miopen/include", |
696 |
src_dir = rocm_toolkit_path + "/include/hipcub", |
706 |
out_dir = "rocm/include/miopen", |
697 |
out_dir = "rocm/include/hipcub", |
707 |
), |
698 |
), |
708 |
make_copy_dir_rule( |
699 |
make_copy_dir_rule( |
709 |
repository_ctx, |
700 |
repository_ctx, |
710 |
name = "rccl-include", |
701 |
name = "hip-include", |
711 |
src_dir = rocm_toolkit_path + "/rccl/include", |
702 |
src_dir = rocm_toolkit_path + "/lib/hip/include/hip", |
712 |
out_dir = "rocm/include/rccl", |
703 |
out_dir = "rocm/include/hip", |
713 |
), |
|
|
714 |
make_copy_dir_rule( |
715 |
repository_ctx, |
716 |
name = "hipsparse-include", |
717 |
src_dir = rocm_toolkit_path + "/hipsparse/include", |
718 |
out_dir = "rocm/include/hipsparse", |
719 |
), |
704 |
), |
720 |
] |
705 |
] |
721 |
|
706 |
|
|
|
707 |
# Copy required include files |
708 |
copy_rules.append(make_copy_files_rule( |
709 |
repository_ctx, |
710 |
name = "files", |
711 |
srcs = [ |
712 |
"/usr/include/rccl.h", |
713 |
"/usr/include/rocprim/rocprim_version.hpp", |
714 |
"/usr/include/hiprand/hiprand.h", |
715 |
"/usr/include/hiprand/hiprand_version.h", |
716 |
"/usr/include/hiprand/hiprand_hcc.h", |
717 |
"/usr/include/rocrand/rocrand.h", |
718 |
"/usr/include/rocrand/rocrand_discrete_types.h", |
719 |
"/usr/include/rocrand/rocrand_version.h", |
720 |
], |
721 |
outs = [ |
722 |
"rocm/include/rccl/rccl.h", |
723 |
"rocm/include/rocprim/rocprim_version.hpp", |
724 |
"rocm/include/hiprand/hiprand.h", |
725 |
"rocm/include/hiprand/hiprand_version.h", |
726 |
"rocm/include/hiprand/hiprand_hcc.h", |
727 |
"rocm/include/rocrand/rocrand.h", |
728 |
"rocm/include/rocrand/rocrand_discrete_types.h", |
729 |
"rocm/include/rocrand/rocrand_version.h", |
730 |
], |
731 |
)) |
732 |
|
722 |
rocm_libs = _find_libs(repository_ctx, rocm_config) |
733 |
rocm_libs = _find_libs(repository_ctx, rocm_config) |
723 |
rocm_lib_srcs = [] |
734 |
rocm_lib_srcs = [] |
724 |
rocm_lib_outs = [] |
735 |
rocm_lib_outs = [] |
Lines 756-766
Link Here
|
756 |
"%{rccl_lib}": rocm_libs["rccl"].file_name, |
767 |
"%{rccl_lib}": rocm_libs["rccl"].file_name, |
757 |
"%{hipsparse_lib}": rocm_libs["hipsparse"].file_name, |
768 |
"%{hipsparse_lib}": rocm_libs["hipsparse"].file_name, |
758 |
"%{copy_rules}": "\n".join(copy_rules), |
769 |
"%{copy_rules}": "\n".join(copy_rules), |
759 |
"%{rocm_headers}": ('":rocm-include",\n' + |
770 |
"%{rocm_headers}": ('":files",\n' + |
760 |
'":rocfft-include",\n' + |
771 |
'":rocfft-include",\n' + |
761 |
'":rocblas-include",\n' + |
772 |
'":rocblas-include",\n' + |
762 |
'":miopen-include",\n' + |
773 |
'":miopen-include",\n' + |
763 |
'":rccl-include",\n' + |
774 |
'":hip-include",\n' + |
|
|
775 |
'":hipcub-include",\n' + |
776 |
'":rocblas-include-link",\n' + |
764 |
'":hipsparse-include",'), |
777 |
'":hipsparse-include",'), |
765 |
}, |
778 |
}, |
766 |
) |
779 |
) |
Lines 779-785
Link Here
|
779 |
|
792 |
|
780 |
rocm_defines["%{host_compiler_prefix}"] = host_compiler_prefix |
793 |
rocm_defines["%{host_compiler_prefix}"] = host_compiler_prefix |
781 |
|
794 |
|
782 |
rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/hcc/compiler/bin" |
795 |
rocm_defines["%{linker_bin_path}"] = rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/bin" |
783 |
|
796 |
|
784 |
# For gcc, do not canonicalize system header paths; some versions of gcc |
797 |
# For gcc, do not canonicalize system header paths; some versions of gcc |
785 |
# pick the shortest possible path for system includes when creating the |
798 |
# pick the shortest possible path for system includes when creating the |
Lines 832-845
Link Here
|
832 |
"crosstool:clang/bin/crosstool_wrapper_driver_rocm", |
845 |
"crosstool:clang/bin/crosstool_wrapper_driver_rocm", |
833 |
{ |
846 |
{ |
834 |
"%{cpu_compiler}": str(cc), |
847 |
"%{cpu_compiler}": str(cc), |
835 |
"%{hipcc_path}": rocm_config.rocm_toolkit_path + "/bin/hipcc", |
848 |
"%{hipcc_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/bin/hcc", |
836 |
"%{hipcc_env}": _hipcc_env(repository_ctx), |
849 |
"%{hipcc_env}": _hipcc_env(repository_ctx), |
837 |
"%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config), |
850 |
"%{hipcc_is_hipclang}": _hipcc_is_hipclang(repository_ctx, rocm_config), |
838 |
"%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib", |
851 |
"%{rocr_runtime_path}": rocm_config.rocm_toolkit_path + "/lib64", |
839 |
"%{rocr_runtime_library}": "hsa-runtime64", |
852 |
"%{rocr_runtime_library}": "hsa-runtime64", |
840 |
"%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/hip/lib", |
853 |
"%{hip_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hip/lib", |
841 |
"%{hip_runtime_library}": "hip_hcc", |
854 |
"%{hip_runtime_library}": "hip_hcc", |
842 |
"%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/hcc/lib", |
855 |
"%{hcc_runtime_path}": rocm_config.rocm_toolkit_path + "/lib/hcc/3.0/lib", |
843 |
"%{hcc_runtime_library}": "mcwamp", |
856 |
"%{hcc_runtime_library}": "mcwamp", |
844 |
"%{crosstool_verbose}": _crosstool_verbose(repository_ctx), |
857 |
"%{crosstool_verbose}": _crosstool_verbose(repository_ctx), |
845 |
"%{gcc_host_compiler_path}": str(cc), |
858 |
"%{gcc_host_compiler_path}": str(cc), |