Skip to content

Commit 3165aba

Browse files
Merge pull request #70 from PanZezhong1725/issue/69
Issue/69 增加运行时接口
2 parents 87d1097 + 4ee4c4f commit 3165aba

3 files changed

Lines changed: 77 additions & 11 deletions

File tree

include/infinicore.h

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
#ifndef __INFINICORE_H__
22
#define __INFINICORE_H__
3-
#include <stdint.h>
43

5-
#ifndef __INFINICORE_EXPORT_C__
6-
#define __INFINICORE_EXPORT_C__
74
#if defined(_WIN32)
85
#define __export __declspec(dllexport)
96
#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
@@ -17,12 +14,26 @@
1714
#include <cstddef>
1815
#else
1916
#define __C
20-
#include <stddef>
17+
#include <stddef.h>
2118
#endif
22-
#endif // __INFINICORE_EXPORT_C__
2319

24-
#ifndef __INFINI_DEVICE__
25-
#define __INFINI_DEVICE__
20+
typedef enum {
21+
// Success
22+
INFINI_STATUS_SUCCESS = 0,
23+
// General Errors
24+
INFINI_STATUS_INTERNAL_ERROR = 1,
25+
INFINI_STATUS_NOT_IMPLEMENTED = 2,
26+
INFINI_STATUS_BAD_PARAM = 3,
27+
INFINI_STATUS_NULL_POINTER = 4,
28+
INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED = 5,
29+
INFINI_STATUS_DEVICE_NOT_FOUND = 6,
30+
// Op Errors
31+
INFINI_STATUS_BAD_TENSOR_DTYPE = 10,
32+
INFINI_STATUS_BAD_TENSOR_SHAPE = 11,
33+
INFINI_STATUS_BAD_TENSOR_STRIDES = 12,
34+
INFINI_STATUS_INSUFFICIENT_WORKSPACE = 13,
35+
} infiniStatus_t;
36+
2637
typedef enum {
2738
INFINI_DEVICE_CPU = 0,
2839
INFINI_DEVICE_NVIDIA = 1,
@@ -33,11 +44,9 @@ typedef enum {
3344
INFINI_DEVICE_ILUVATAR = 6,
3445
INFINI_DEVICE_KUNLUN = 7,
3546
INFINI_DEVICE_SUGON = 8,
47+
INFINI_DEVICE_TYPE_COUNT
3648
} infiniDevice_t;
37-
#endif // __INFINI_DEVICE__
3849

39-
#ifndef __INFINI_DTYPE__
40-
#define __INFINI_DTYPE__
4150
typedef enum {
4251
INFINI_DTYPE_INVALID = 0,
4352
INFINI_DTYPE_BYTE = 1,
@@ -107,6 +116,5 @@ inline size_t infiniSizeof(infiniDtype_t dtype) {
107116
return 0;
108117
}
109118
}
110-
#endif // __INFINI_DTYPE__
111119

112120
#endif // __INFINICORE_H__

include/infiniop.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#ifndef __INFINIOP_H__
22
#define __INFINIOP_H__
3+
#include "infiniop/tensor_descriptor.h"
4+
#include "infiniop/handle.h"
35
#include "infiniop/ops/add.h"
46
#include "infiniop/ops/attention.h"
57
#include "infiniop/ops/avg_pool.h"

include/infinirt.h

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#ifndef __INFINIRT_H__
2+
#define __INFINIRT_H__
3+
4+
#include "infinicore.h"
5+
6+
typedef void *infinirtStream_t;
7+
typedef void *infinirtEvent_t;
8+
9+
__C __export infiniStatus_t infinirtInit(infiniDevice_t device);
10+
11+
// Device
12+
__C __export infiniStatus_t infinirtGetAllDeviceCount(int *count_array);
13+
__C __export infiniStatus_t infinirtGetDeviceCount(infiniDevice_t device, int *count);
14+
__C __export infiniStatus_t infinirtSetDevice(infiniDevice_t device, int device_id);
15+
__C __export infiniStatus_t infinirtGetDevice(infiniDevice_t *device_ptr, int *device_id_ptr);
16+
__C __export infiniStatus_t infinirtDeviceSynchronize();
17+
18+
// Stream
19+
__C __export infiniStatus_t infinirtStreamCreate(infinirtStream_t *stream_ptr);
20+
__C __export infiniStatus_t infinirtStreamDestroy(infinirtStream_t stream);
21+
__C __export infiniStatus_t infinirtStreamSynchronize(infinirtStream_t stream);
22+
__C __export infiniStatus_t infinirtStreamWaitEvent(infinirtStream_t stream, infinirtEvent_t event);
23+
24+
// Event
25+
typedef enum {
26+
INFINIRT_EVENT_COMPLETE = 0,
27+
INFINIRT_EVENT_NOT_READY = 1,
28+
} infinirtEventStatus_t;
29+
30+
__C __export infiniStatus_t infinirtEventCreate(infinirtEvent_t *event_ptr);
31+
__C __export infiniStatus_t infinirtEventRecord(infinirtEvent_t event, infinirtStream_t stream);
32+
__C __export infiniStatus_t infinirtEventQuery(infinirtEvent_t event, infinirtEventStatus_t *status_ptr);
33+
__C __export infiniStatus_t infinirtEventSynchronize(infinirtEvent_t event);
34+
__C __export infiniStatus_t infinirtEventDestroy(infinirtEvent_t event);
35+
36+
// Memory
37+
typedef enum {
38+
INFINIRT_MEMCPY_H2H = 0,
39+
INFINIRT_MEMCPY_H2D = 1,
40+
INFINIRT_MEMCPY_D2H = 2,
41+
INFINIRT_MEMCPY_D2D = 3,
42+
} infinirtMemcpyKind_t;
43+
44+
__C __export infiniStatus_t infinirtMalloc(void **p_ptr, size_t size);
45+
__C __export infiniStatus_t infinirtMallocHost(void **p_ptr, size_t size);
46+
__C __export infiniStatus_t infinirtFree(void *ptr);
47+
__C __export infiniStatus_t infinirtFreeHost(void *ptr);
48+
49+
__C __export infiniStatus_t infinirtMemcpy(void *dst, const void *src, size_t size, infinirtMemcpyKind_t kind);
50+
__C __export infiniStatus_t infinirtMemcpyAsync(void *dst, const void *src, infinirtMemcpyKind_t kind, infinirtStream_t stream);
51+
52+
// Stream-ordered memory
53+
__C __export infiniStatus_t infinirtMallocAsync(void **p_ptr, size_t size, infinirtStream_t stream);
54+
__C __export infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream);
55+
56+
#endif // __INFINIRT_H__

0 commit comments

Comments
 (0)