Skip to content

Commit 1c6fa3c

Browse files
authored
Merge pull request #903 from veselypeta/petr/move_hip
[UR][HIP] Move HIP adapter sourcer to Unified Runtime
2 parents 6a0eb7e + 48a03ac commit 1c6fa3c

34 files changed

+7546
-35
lines changed

source/adapters/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ if(UR_BUILD_ADAPTER_CUDA)
4141
endif()
4242

4343
if(UR_BUILD_ADAPTER_HIP)
44-
set(SYCL_ADAPTER_DIR "${CMAKE_CURRENT_BINARY_DIR}/external/hip")
45-
FetchSource(https://github.com/intel/llvm.git ${INTEL_LLVM_TAG} "sycl/plugins/unified_runtime/ur" ${SYCL_ADAPTER_DIR})
4644
add_subdirectory(hip)
4745
endif()
4846

source/adapters/hip/.clang-format

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
Language: Cpp
3+
BasedOnStyle: LLVM
4+
...

source/adapters/hip/CMakeLists.txt

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# See LICENSE.TXT
44
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
55

6-
set(HIP_DIR "${SYCL_ADAPTER_DIR}/sycl/plugins/unified_runtime/ur/adapters/hip" CACHE PATH "HIP adapter directory")
6+
set(HIP_DIR "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH "HIP adapter directory")
77

88
set(TARGET_NAME ur_adapter_hip)
99

@@ -44,36 +44,37 @@ set(HIP_HEADERS "${UR_HIP_INCLUDE_DIR};${UR_HIP_HSA_INCLUDE_DIR}")
4444

4545
add_ur_adapter(${TARGET_NAME}
4646
SHARED
47-
${HIP_DIR}/ur_interface_loader.cpp
48-
${HIP_DIR}/adapter.hpp
49-
${HIP_DIR}/adapter.cpp
50-
${HIP_DIR}/command_buffer.hpp
51-
${HIP_DIR}/command_buffer.cpp
52-
${HIP_DIR}/common.hpp
53-
${HIP_DIR}/common.cpp
54-
${HIP_DIR}/context.hpp
55-
${HIP_DIR}/context.cpp
56-
${HIP_DIR}/device.hpp
57-
${HIP_DIR}/device.cpp
58-
${HIP_DIR}/enqueue.cpp
59-
${HIP_DIR}/event.hpp
60-
${HIP_DIR}/event.cpp
61-
${HIP_DIR}/kernel.hpp
62-
${HIP_DIR}/kernel.cpp
63-
${HIP_DIR}/memory.hpp
64-
${HIP_DIR}/memory.cpp
65-
${HIP_DIR}/platform.hpp
66-
${HIP_DIR}/platform.cpp
67-
${HIP_DIR}/program.hpp
68-
${HIP_DIR}/program.cpp
69-
${HIP_DIR}/queue.hpp
70-
${HIP_DIR}/queue.cpp
71-
${HIP_DIR}/sampler.hpp
72-
${HIP_DIR}/sampler.cpp
73-
${HIP_DIR}/usm.cpp
74-
${HIP_DIR}/usm_p2p.cpp
75-
${HIP_DIR}/../../ur.cpp
76-
${HIP_DIR}/../../ur.hpp
47+
${CMAKE_CURRENT_SOURCE_DIR}/ur_interface_loader.cpp
48+
${CMAKE_CURRENT_SOURCE_DIR}/adapter.hpp
49+
${CMAKE_CURRENT_SOURCE_DIR}/adapter.cpp
50+
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.hpp
51+
${CMAKE_CURRENT_SOURCE_DIR}/command_buffer.cpp
52+
${CMAKE_CURRENT_SOURCE_DIR}/common.hpp
53+
${CMAKE_CURRENT_SOURCE_DIR}/common.cpp
54+
${CMAKE_CURRENT_SOURCE_DIR}/context.hpp
55+
${CMAKE_CURRENT_SOURCE_DIR}/context.cpp
56+
${CMAKE_CURRENT_SOURCE_DIR}/device.hpp
57+
${CMAKE_CURRENT_SOURCE_DIR}/device.cpp
58+
${CMAKE_CURRENT_SOURCE_DIR}/enqueue.cpp
59+
${CMAKE_CURRENT_SOURCE_DIR}/event.hpp
60+
${CMAKE_CURRENT_SOURCE_DIR}/event.cpp
61+
${CMAKE_CURRENT_SOURCE_DIR}/image.cpp
62+
${CMAKE_CURRENT_SOURCE_DIR}/kernel.hpp
63+
${CMAKE_CURRENT_SOURCE_DIR}/kernel.cpp
64+
${CMAKE_CURRENT_SOURCE_DIR}/memory.hpp
65+
${CMAKE_CURRENT_SOURCE_DIR}/memory.cpp
66+
${CMAKE_CURRENT_SOURCE_DIR}/platform.hpp
67+
${CMAKE_CURRENT_SOURCE_DIR}/platform.cpp
68+
${CMAKE_CURRENT_SOURCE_DIR}/program.hpp
69+
${CMAKE_CURRENT_SOURCE_DIR}/program.cpp
70+
${CMAKE_CURRENT_SOURCE_DIR}/queue.hpp
71+
${CMAKE_CURRENT_SOURCE_DIR}/queue.cpp
72+
${CMAKE_CURRENT_SOURCE_DIR}/sampler.hpp
73+
${CMAKE_CURRENT_SOURCE_DIR}/sampler.cpp
74+
${CMAKE_CURRENT_SOURCE_DIR}/usm.cpp
75+
${CMAKE_CURRENT_SOURCE_DIR}/usm_p2p.cpp
76+
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.cpp
77+
${CMAKE_CURRENT_SOURCE_DIR}/../../ur/ur.hpp
7778
)
7879

7980
if(NOT MSVC)
@@ -148,5 +149,5 @@ else()
148149
endif()
149150

150151
target_include_directories(${TARGET_NAME} PRIVATE
151-
${HIP_DIR}/../../../
152+
"${CMAKE_CURRENT_SOURCE_DIR}/../../"
152153
)

source/adapters/hip/adapter.cpp

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//===--------- adapter.cpp - HIP Adapter ----------------------------------===//
2+
//
3+
// Copyright (C) 2023 Intel Corporation
4+
//
5+
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM
6+
// Exceptions. See LICENSE.TXT
7+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8+
//
9+
//===----------------------------------------------------------------------===//
10+
11+
#include "adapter.hpp"
12+
#include "common.hpp"
13+
14+
#include <atomic>
15+
#include <ur_api.h>
16+
17+
struct ur_adapter_handle_t_ {
18+
std::atomic<uint32_t> RefCount = 0;
19+
};
20+
21+
ur_adapter_handle_t_ adapter{};
22+
23+
UR_APIEXPORT ur_result_t UR_APICALL urInit(ur_device_init_flags_t,
24+
ur_loader_config_handle_t) {
25+
return UR_RESULT_SUCCESS;
26+
}
27+
28+
UR_APIEXPORT ur_result_t UR_APICALL urTearDown(void *) {
29+
return UR_RESULT_SUCCESS;
30+
}
31+
32+
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGet(
33+
uint32_t, ur_adapter_handle_t *phAdapters, uint32_t *pNumAdapters) {
34+
if (phAdapters) {
35+
adapter.RefCount++;
36+
*phAdapters = &adapter;
37+
}
38+
if (pNumAdapters) {
39+
*pNumAdapters = 1;
40+
}
41+
42+
return UR_RESULT_SUCCESS;
43+
}
44+
45+
UR_APIEXPORT ur_result_t UR_APICALL urAdapterRelease(ur_adapter_handle_t) {
46+
// No state to clean up so we don't need to check for 0 references
47+
adapter.RefCount--;
48+
return UR_RESULT_SUCCESS;
49+
}
50+
51+
UR_APIEXPORT ur_result_t UR_APICALL urAdapterRetain(ur_adapter_handle_t) {
52+
adapter.RefCount++;
53+
return UR_RESULT_SUCCESS;
54+
}
55+
56+
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetLastError(
57+
ur_adapter_handle_t, const char **ppMessage, int32_t *pError) {
58+
*ppMessage = ErrorMessage;
59+
*pError = ErrorMessageCode;
60+
return UR_RESULT_SUCCESS;
61+
}
62+
63+
UR_APIEXPORT ur_result_t UR_APICALL urAdapterGetInfo(ur_adapter_handle_t,
64+
ur_adapter_info_t propName,
65+
size_t propSize,
66+
void *pPropValue,
67+
size_t *pPropSizeRet) {
68+
UrReturnHelper ReturnValue(propSize, pPropValue, pPropSizeRet);
69+
70+
switch (propName) {
71+
case UR_ADAPTER_INFO_BACKEND:
72+
return ReturnValue(UR_ADAPTER_BACKEND_HIP);
73+
case UR_ADAPTER_INFO_REFERENCE_COUNT:
74+
return ReturnValue(adapter.RefCount.load());
75+
default:
76+
return UR_RESULT_ERROR_INVALID_ENUMERATION;
77+
}
78+
79+
return UR_RESULT_SUCCESS;
80+
}

source/adapters/hip/adapter.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//===--------- adapter.hpp - HIP Adapter ----------------------------------===//
2+
//
3+
// Copyright (C) 2023 Intel Corporation
4+
//
5+
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM
6+
// Exceptions. See LICENSE.TXT
7+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8+
//
9+
//===----------------------------------------------------------------------===//
10+
11+
struct ur_adapter_handle_t_;
12+
13+
extern ur_adapter_handle_t_ adapter;
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
//===--------- command_buffer.cpp - HIP Adapter ---------------------------===//
2+
//
3+
// Copyright (C) 2023 Intel Corporation
4+
//
5+
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM
6+
// Exceptions. See LICENSE.TXT
7+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8+
//
9+
//===----------------------------------------------------------------------===//
10+
11+
#include "command_buffer.hpp"
12+
#include "common.hpp"
13+
14+
/// Stub implementations of UR experimental feature command-buffers
15+
16+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferCreateExp(
17+
ur_context_handle_t, ur_device_handle_t,
18+
const ur_exp_command_buffer_desc_t *, ur_exp_command_buffer_handle_t *) {
19+
detail::ur::die("Experimental Command-buffer feature is not "
20+
"implemented for HIP adapter.");
21+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
22+
}
23+
24+
UR_APIEXPORT ur_result_t UR_APICALL
25+
urCommandBufferRetainExp(ur_exp_command_buffer_handle_t) {
26+
detail::ur::die("Experimental Command-buffer feature is not "
27+
"implemented for HIP adapter.");
28+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
29+
}
30+
31+
UR_APIEXPORT ur_result_t UR_APICALL
32+
urCommandBufferReleaseExp(ur_exp_command_buffer_handle_t) {
33+
detail::ur::die("Experimental Command-buffer feature is not "
34+
"implemented for HIP adapter.");
35+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
36+
}
37+
38+
UR_APIEXPORT ur_result_t UR_APICALL
39+
urCommandBufferFinalizeExp(ur_exp_command_buffer_handle_t) {
40+
detail::ur::die("Experimental Command-buffer feature is not "
41+
"implemented for HIP adapter.");
42+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
43+
}
44+
45+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendKernelLaunchExp(
46+
ur_exp_command_buffer_handle_t, ur_kernel_handle_t, uint32_t,
47+
const size_t *, const size_t *, const size_t *, uint32_t,
48+
const ur_exp_command_buffer_sync_point_t *,
49+
ur_exp_command_buffer_sync_point_t *) {
50+
detail::ur::die("Experimental Command-buffer feature is not "
51+
"implemented for HIP adapter.");
52+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
53+
}
54+
55+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMemcpyUSMExp(
56+
ur_exp_command_buffer_handle_t, void *, const void *, size_t, uint32_t,
57+
const ur_exp_command_buffer_sync_point_t *,
58+
ur_exp_command_buffer_sync_point_t *) {
59+
detail::ur::die("Experimental Command-buffer feature is not "
60+
"implemented for HIP adapter.");
61+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
62+
}
63+
64+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMembufferCopyExp(
65+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, ur_mem_handle_t, size_t,
66+
size_t, size_t, uint32_t, const ur_exp_command_buffer_sync_point_t *,
67+
ur_exp_command_buffer_sync_point_t *) {
68+
detail::ur::die("Experimental Command-buffer feature is not "
69+
"implemented for HIP adapter.");
70+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
71+
}
72+
73+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferAppendMembufferCopyRectExp(
74+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, ur_mem_handle_t,
75+
ur_rect_offset_t, ur_rect_offset_t, ur_rect_region_t, size_t, size_t,
76+
size_t, size_t, uint32_t, const ur_exp_command_buffer_sync_point_t *,
77+
ur_exp_command_buffer_sync_point_t *) {
78+
detail::ur::die("Experimental Command-buffer feature is not "
79+
"implemented for HIP adapter.");
80+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
81+
}
82+
83+
UR_APIEXPORT
84+
ur_result_t UR_APICALL urCommandBufferAppendMembufferWriteExp(
85+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, size_t, size_t,
86+
const void *, uint32_t, const ur_exp_command_buffer_sync_point_t *,
87+
ur_exp_command_buffer_sync_point_t *) {
88+
detail::ur::die("Experimental Command-buffer feature is not "
89+
"implemented for HIP adapter.");
90+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
91+
}
92+
93+
UR_APIEXPORT
94+
ur_result_t UR_APICALL urCommandBufferAppendMembufferReadExp(
95+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, size_t, size_t, void *,
96+
uint32_t, const ur_exp_command_buffer_sync_point_t *,
97+
ur_exp_command_buffer_sync_point_t *) {
98+
detail::ur::die("Experimental Command-buffer feature is not "
99+
"implemented for HIP adapter.");
100+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
101+
}
102+
103+
UR_APIEXPORT
104+
ur_result_t UR_APICALL urCommandBufferAppendMembufferWriteRectExp(
105+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, ur_rect_offset_t,
106+
ur_rect_offset_t, ur_rect_region_t, size_t, size_t, size_t, size_t, void *,
107+
uint32_t, const ur_exp_command_buffer_sync_point_t *,
108+
ur_exp_command_buffer_sync_point_t *) {
109+
detail::ur::die("Experimental Command-buffer feature is not "
110+
"implemented for HIP adapter.");
111+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
112+
}
113+
114+
UR_APIEXPORT
115+
ur_result_t UR_APICALL urCommandBufferAppendMembufferReadRectExp(
116+
ur_exp_command_buffer_handle_t, ur_mem_handle_t, ur_rect_offset_t,
117+
ur_rect_offset_t, ur_rect_region_t, size_t, size_t, size_t, size_t, void *,
118+
uint32_t, const ur_exp_command_buffer_sync_point_t *,
119+
ur_exp_command_buffer_sync_point_t *) {
120+
detail::ur::die("Experimental Command-buffer feature is not "
121+
"implemented for HIP adapter.");
122+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
123+
}
124+
125+
UR_APIEXPORT ur_result_t UR_APICALL urCommandBufferEnqueueExp(
126+
ur_exp_command_buffer_handle_t, ur_queue_handle_t, uint32_t,
127+
const ur_event_handle_t *, ur_event_handle_t *) {
128+
detail::ur::die("Experimental Command-buffer feature is not "
129+
"implemented for HIP adapter.");
130+
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
131+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//===--------- command_buffer.hpp - HIP Adapter ---------------------------===//
2+
//
3+
// Copyright (C) 2023 Intel Corporation
4+
//
5+
// Part of the Unified-Runtime Project, under the Apache License v2.0 with LLVM
6+
// Exceptions. See LICENSE.TXT
7+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8+
//
9+
//===----------------------------------------------------------------------===//
10+
11+
#include <ur/ur.hpp>
12+
13+
/// Stub implementation of command-buffers for HIP
14+
15+
struct ur_exp_command_buffer_handle_t_ {};

0 commit comments

Comments
 (0)