diff --git a/cmake/onnxruntime_python.cmake b/cmake/onnxruntime_python.cmake index 864f7fe320..1ee9d29932 100644 --- a/cmake/onnxruntime_python.cmake +++ b/cmake/onnxruntime_python.cmake @@ -608,6 +608,16 @@ if (onnxruntime_USE_CUDA) ) endif() +if (onnxruntime_USE_ROCM) + add_custom_command( + TARGET onnxruntime_pybind11_state POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + $ + $ + $/onnxruntime/capi/ + ) +endif() + if (onnxruntime_USE_TVM) add_custom_command( TARGET onnxruntime_pybind11_state POST_BUILD diff --git a/setup.py b/setup.py index 73c70f79b8..41b775b4f2 100644 --- a/setup.py +++ b/setup.py @@ -50,6 +50,7 @@ wheel_name_suffix = parse_arg_remove_string(sys.argv, '--wheel_name_suffix=') cuda_version = None rocm_version = None +is_rocm = False # The following arguments are mutually exclusive if parse_arg_remove_boolean(sys.argv, '--use_tensorrt'): package_name = 'onnxruntime-gpu-tensorrt' if not nightly_build else 'ort-trt-nightly' @@ -57,6 +58,7 @@ elif wheel_name_suffix == 'gpu': # TODO: how to support multiple CUDA versions? cuda_version = parse_arg_remove_string(sys.argv, '--cuda_version=') elif parse_arg_remove_boolean(sys.argv, '--use_rocm'): + is_rocm = True package_name = 'onnxruntime-rocm' if not nightly_build else 'ort-rocm-nightly' rocm_version = parse_arg_remove_string(sys.argv, '--rocm_version=') elif parse_arg_remove_boolean(sys.argv, '--use_openvino'): @@ -155,7 +157,7 @@ try: if len(args) > 3: subprocess.run(args, check=True, stdout=subprocess.PIPE) - dest = 'onnxruntime/capi/libonnxruntime_providers_cuda.so' + dest = 'onnxruntime/capi/libonnxruntime_providers_' + 'rocm.so' if is_rocm else 'cuda.so' if path.isfile(dest): result = subprocess.run(['patchelf', '--print-needed', dest], check=True, stdout=subprocess.PIPE, universal_newlines=True) @@ -190,17 +192,20 @@ except ImportError as error: print(error) bdist_wheel = None +providers_cuda_or_rocm = 'libonnxruntime_providers_rocm.so' if is_rocm else 'libonnxruntime_providers_cuda.so' + # Additional binaries if platform.system() == 'Linux': libs = ['onnxruntime_pybind11_state.so', 'libdnnl.so.2', 'libmklml_intel.so', 'libmklml_gnu.so', 'libiomp5.so', 'mimalloc.so'] - dl_libs = ['libonnxruntime_providers_shared.so', 'libonnxruntime_providers_cuda.so'] + dl_libs = ['libonnxruntime_providers_shared.so'] + dl_libs.append(providers_cuda_or_rocm) # DNNL, TensorRT & OpenVINO EPs are built as shared libs libs.extend(['libonnxruntime_providers_shared.so']) libs.extend(['libonnxruntime_providers_dnnl.so']) libs.extend(['libonnxruntime_providers_tensorrt.so']) libs.extend(['libonnxruntime_providers_openvino.so']) - libs.extend(['libonnxruntime_providers_cuda.so']) + libs.append(providers_cuda_or_rocm) # Nuphar Libs libs.extend(['libtvm.so.0.5.1']) if nightly_build: