Skip to content

Commit 4012db5

Browse files
committed
Simplify a lot hip
1 parent b794dd0 commit 4012db5

5 files changed

Lines changed: 99 additions & 146 deletions

File tree

backends/hip/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# HIP Backend
2+
3+
## `hip_missing_apis.h`
4+
5+
`hip_missing_apis.h` is not part of the official header.
6+
7+
Declarations for functions and types exported by `libamdhip64.so` but not declared in any public HIP header:
8+
9+
- `hipGraphDebugDotPrint`: Exports a `hipGraph_t` as a DOT file. The `hipGraphDebugDotFlags` enum (used by the `flag` parameter) is declared in `hip_runtime_api.h`, but the function itself is not.
10+
- Runtime registration functions: `__hipRegisterFatBinary`, `__hipRegisterFunction`, `__hipRegisterVar`, etc.
11+
- `hipGetCmdName`, `activity_domain_t`, `hipRegisterTracerCallback`

backends/hip/extract/hip_api.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
#define __HIP_PLATFORM_AMD__
2-
#define THAPI_NO_INCLUDE
32

43
#include <hip/hip_runtime_api.h>
54

65
#include <hip/hiprtc.h>
76

8-
#include <hip/hip_runtime_load_api.h>
9-
107
#include <hip/hip_ext.h>
118

129
#include "hip_cpp_symbols.h"

backends/hip/headers.patch

Lines changed: 3 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,7 @@
11
diff -u4 -r --new-file include/hip/hip_ext.h modified_include/hip/hip_ext.h
22
--- include/hip/hip_ext.h 2026-03-27 20:57:07.000000000 +0000
3-
+++ modified_include/hip/hip_ext.h 2026-03-31 22:37:08.000000000 +0000
4-
@@ -21,9 +21,11 @@
5-
*/
6-
7-
#ifndef HIP_INCLUDE_HIP_HIP_EXT_H
8-
#define HIP_INCLUDE_HIP_HIP_EXT_H
9-
+#ifndef THAPI_NO_INCLUDE
10-
#include "hip/hip_runtime.h"
11-
+#endif
12-
#if defined(__cplusplus)
13-
#include <tuple>
14-
#include <type_traits>
15-
#endif
16-
@@ -69,11 +71,11 @@
3+
+++ modified_include/hip/hip_ext.h 2026-04-01 22:11:28.000000000 +0000
4+
@@ -69,11 +69,11 @@
175
uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ,
186
uint32_t localWorkSizeX, uint32_t localWorkSizeY,
197
uint32_t localWorkSizeZ, size_t sharedMemBytes,
@@ -28,7 +16,7 @@ diff -u4 -r --new-file include/hip/hip_ext.h modified_include/hip/hip_ext.h
2816
* @brief This HIP API is deprecated, please use hipExtModuleLaunchKernel() instead.
2917
*
3018
*/
31-
@@ -82,10 +84,10 @@
19+
@@ -82,10 +82,10 @@
3220
uint32_t globalWorkSizeY, uint32_t globalWorkSizeZ,
3321
uint32_t localWorkSizeX, uint32_t localWorkSizeY,
3422
uint32_t localWorkSizeZ, size_t sharedMemBytes,
@@ -41,127 +29,3 @@ diff -u4 -r --new-file include/hip/hip_ext.h modified_include/hip/hip_ext.h
4129

4230
#if defined(__cplusplus)
4331

44-
diff -u4 -r --new-file include/hip/hip_runtime_api.h modified_include/hip/hip_runtime_api.h
45-
--- include/hip/hip_runtime_api.h 2026-03-27 20:57:07.000000000 +0000
46-
+++ modified_include/hip/hip_runtime_api.h 2026-03-31 22:37:08.000000000 +0000
47-
@@ -29,9 +29,8 @@
48-
49-
#ifndef HIP_INCLUDE_HIP_HIP_RUNTIME_API_H
50-
#define HIP_INCLUDE_HIP_HIP_RUNTIME_API_H
51-
52-
-
53-
#include <string.h> // for getDeviceProp
54-
#include <hip/hip_version.h>
55-
#include <hip/hip_common.h>
56-
57-
@@ -520,9 +519,11 @@
58-
hipDevP2PAttrHipArrayAccessSupported
59-
} hipDeviceP2PAttr;
60-
typedef struct ihipStream_t* hipStream_t;
61-
#define hipIpcMemLazyEnablePeerAccess 0
62-
+#ifndef HIP_IPC_HANDLE_SIZE
63-
#define HIP_IPC_HANDLE_SIZE 64
64-
+#endif
65-
typedef struct hipIpcMemHandle_st {
66-
char reserved[HIP_IPC_HANDLE_SIZE];
67-
} hipIpcMemHandle_t;
68-
typedef struct hipIpcEventHandle_st {
69-
diff -u4 -r --new-file include/hip/hip_runtime_load_api.h modified_include/hip/hip_runtime_load_api.h
70-
--- include/hip/hip_runtime_load_api.h 1970-01-01 00:00:00.000000000 +0000
71-
+++ modified_include/hip/hip_runtime_load_api.h 2026-03-31 22:37:08.000000000 +0000
72-
@@ -0,0 +1,95 @@
73-
+#ifndef HIP_RUNTIME_LOAD_API_
74-
+#define HIP_RUNTIME_LOAD_API_
75-
+
76-
+#ifdef __cplusplus
77-
+extern "C" {
78-
+#endif /* __cplusplus */
79-
+
80-
+extern void **__hipRegisterFatBinary(
81-
+ const void *data);
82-
+
83-
+
84-
+extern void __hipRegisterFunction(
85-
+ void **modules,
86-
+ const void *hostFunction,
87-
+ char *deviceFunction,
88-
+ const char *deviceName,
89-
+ unsigned int threadLimit,
90-
+ uint3 *tid,
91-
+ uint3 *bid,
92-
+ dim3 *blockDim,
93-
+ dim3 *gridDim,
94-
+ int *wSize);
95-
+
96-
+extern void __hipRegisterManagedVar(
97-
+ void **modules, // Pointer to hip module returned from __hipRegisterFatbinary
98-
+ void **pointer, // Pointer to a chunk of managed memory with size \p size and alignment \p
99-
+ // align HIP runtime allocates such managed memory and assign it to \p pointer
100-
+ void *init_value, // Initial value to be copied into \p pointer
101-
+ const char *name, // Name of the variable in code object
102-
+ size_t size,
103-
+ unsigned align);
104-
+
105-
+extern void __hipRegisterSurface(
106-
+ void **modules, // The device modules containing code object
107-
+ void *var, // The shadow variable in host code
108-
+ char *hostVar, // Variable name in host code
109-
+ char *deviceVar, // Variable name in device code
110-
+ int type,
111-
+ int ext);
112-
+
113-
+
114-
+extern void __hipRegisterTexture(
115-
+ void **modules, // The device modules containing code object
116-
+ void *var, // The shadow variable in host code
117-
+ char *hostVar, // Variable name in host code
118-
+ char *deviceVar, // Variable name in device code
119-
+ int type,
120-
+ int norm,
121-
+ int ext);
122-
+
123-
+extern void __hipRegisterVar(
124-
+ void **modules, // The device modules containing code object
125-
+ void *var, // The shadow variable in host code
126-
+ char *hostVar, // Variable name in host code
127-
+ char *deviceVar, // Variable name in device code
128-
+ int ext, // Whether this variable is external
129-
+ size_t size, // Size of the variable
130-
+ int constant, // Whether this variable is constant
131-
+ int global); // Unknown, always 0
132-
+
133-
+extern void __hipUnregisterFatBinary(
134-
+ void** modules);
135-
+
136-
+extern const char* hipGetCmdName(
137-
+ uint32_t id);
138-
+
139-
+typedef enum activity_domain_t {
140-
+ ACTIVITY_DOMAIN_HSA_API = 0, /* HSA API domain */
141-
+ ACTIVITY_DOMAIN_HSA_OPS = 1, /* HSA async activity domain */
142-
+ ACTIVITY_DOMAIN_HIP_OPS = 2, /* HIP async activity domain */
143-
+ ACTIVITY_DOMAIN_HCC_OPS =
144-
+ ACTIVITY_DOMAIN_HIP_OPS, /* HCC async activity domain */
145-
+ ACTIVITY_DOMAIN_HIP_VDI =
146-
+ ACTIVITY_DOMAIN_HIP_OPS, /* HIP VDI async activity domain */
147-
+ ACTIVITY_DOMAIN_HIP_API = 3, /* HIP API domain */
148-
+ ACTIVITY_DOMAIN_KFD_API = 4, /* KFD API domain */
149-
+ ACTIVITY_DOMAIN_EXT_API = 5, /* External ID domain */
150-
+ ACTIVITY_DOMAIN_ROCTX = 6, /* ROCTX domain */
151-
+ ACTIVITY_DOMAIN_HSA_EVT = 7, /* HSA events */
152-
+ ACTIVITY_DOMAIN_NUMBER
153-
+} activity_domain_t;
154-
+
155-
+typedef int hipRegisterTracerCallback_callback_t(
156-
+ activity_domain_t domain,
157-
+ uint32_t operation_id,
158-
+ void* data);
159-
+
160-
+extern void hipRegisterTracerCallback(
161-
+ hipRegisterTracerCallback_callback_t *function);
162-
+
163-
+#ifdef __cplusplus
164-
+}
165-
+#endif /* __cplusplus */
166-
+
167-
+#endif

backends/hip/hip.h.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#define __HIP_PLATFORM_AMD__
22
#include <hip/hip_runtime_api.h>
33
#include <hip/hiprtc.h>
4-
#include "modified_include/hip/hip_runtime_load_api.h"
4+
#include "hip_missing_apis.h"

backends/hip/hip_missing_apis.h

Lines changed: 84 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,86 @@
1+
#ifndef HIP_MISSING_APIS_H
2+
#define HIP_MISSING_APIS_H
3+
14
hipError_t hipGraphDebugDotPrint(hipGraph_t graph, const char *fName, unsigned int flag);
25

3-
const char *amd_dbgapi_get_build_name();
4-
const char *amd_dbgapi_get_git_hash();
5-
size_t amd_dbgapi_get_build_id();
6+
extern void **__hipRegisterFatBinary(
7+
const void *data);
8+
9+
extern void __hipRegisterFunction(
10+
void **modules,
11+
const void *hostFunction,
12+
char *deviceFunction,
13+
const char *deviceName,
14+
unsigned int threadLimit,
15+
uint3 *tid,
16+
uint3 *bid,
17+
dim3 *blockDim,
18+
dim3 *gridDim,
19+
int *wSize);
20+
21+
extern void __hipRegisterManagedVar(
22+
void **modules,
23+
void **pointer,
24+
void *init_value,
25+
const char *name,
26+
size_t size,
27+
unsigned align);
28+
29+
extern void __hipRegisterSurface(
30+
void **modules,
31+
void *var,
32+
char *hostVar,
33+
char *deviceVar,
34+
int type,
35+
int ext);
36+
37+
extern void __hipRegisterTexture(
38+
void **modules,
39+
void *var,
40+
char *hostVar,
41+
char *deviceVar,
42+
int type,
43+
int norm,
44+
int ext);
45+
46+
extern void __hipRegisterVar(
47+
void **modules,
48+
void *var,
49+
char *hostVar,
50+
char *deviceVar,
51+
int ext,
52+
size_t size,
53+
int constant,
54+
int global);
55+
56+
extern void __hipUnregisterFatBinary(
57+
void** modules);
58+
59+
extern const char* hipGetCmdName(
60+
uint32_t id);
61+
62+
typedef enum activity_domain_t {
63+
ACTIVITY_DOMAIN_HSA_API = 0,
64+
ACTIVITY_DOMAIN_HSA_OPS = 1,
65+
ACTIVITY_DOMAIN_HIP_OPS = 2,
66+
ACTIVITY_DOMAIN_HCC_OPS =
67+
ACTIVITY_DOMAIN_HIP_OPS,
68+
ACTIVITY_DOMAIN_HIP_VDI =
69+
ACTIVITY_DOMAIN_HIP_OPS,
70+
ACTIVITY_DOMAIN_HIP_API = 3,
71+
ACTIVITY_DOMAIN_KFD_API = 4,
72+
ACTIVITY_DOMAIN_EXT_API = 5,
73+
ACTIVITY_DOMAIN_ROCTX = 6,
74+
ACTIVITY_DOMAIN_HSA_EVT = 7,
75+
ACTIVITY_DOMAIN_NUMBER
76+
} activity_domain_t;
77+
78+
typedef int hipRegisterTracerCallback_callback_t(
79+
activity_domain_t domain,
80+
uint32_t operation_id,
81+
void* data);
82+
83+
extern void hipRegisterTracerCallback(
84+
hipRegisterTracerCallback_callback_t *function);
85+
86+
#endif

0 commit comments

Comments
 (0)