handle.cc 3.22 KB
Newer Older
PanZezhongQY's avatar
PanZezhongQY committed
1
#include "infiniop/handle.h"
2
3
4
#include "../../utils.h"
#include "infinirt.h"

PanZezhongQY's avatar
PanZezhongQY committed
5
#ifdef ENABLE_CPU_API
6
#include "cpu/cpu_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
7
#endif
wooway777's avatar
wooway777 committed
8
#if defined(ENABLE_NVIDIA_API) || defined(ENABLE_ILUVATAR_API) || defined(ENABLE_QY_API) || defined(ENABLE_HYGON_API) || defined(ENABLE_ALI_API)
9
#include "nvidia/nvidia_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
10
#endif
PanZezhong's avatar
PanZezhong committed
11
#ifdef ENABLE_CAMBRICON_API
12
#include "bang/bang_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
13
#endif
Pan Zezhong's avatar
Pan Zezhong committed
14
#ifdef ENABLE_ASCEND_API
15
#include "ascend/ascend_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
16
#endif
17
#ifdef ENABLE_MOORE_API
18
#include "moore/moore_handle.h"
19
#endif
20
#ifdef ENABLE_KUNLUN_API
zhangyue's avatar
zhangyue committed
21
#include "kunlun/kunlun_handle.h"
22
#endif
23
#ifdef ENABLE_METAX_API
24
#include "metax/metax_handle.h"
25
#endif
PanZezhongQY's avatar
PanZezhongQY committed
26

27
__INFINI_C infiniStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr) {
PanZezhongQY's avatar
PanZezhongQY committed
28
    if (handle_ptr == nullptr) {
PanZezhong's avatar
PanZezhong committed
29
        return INFINI_STATUS_NULL_POINTER;
PanZezhongQY's avatar
PanZezhongQY committed
30
31
    }

32
33
34
35
    infiniDevice_t device;
    int device_id;
    CHECK_STATUS(infinirtGetDevice(&device, &device_id));

36
37
38
39
#define CREATE(CASE, NAMESPACE) \
    case CASE:                  \
        return device::NAMESPACE::Handle::create(handle_ptr, device_id)

PanZezhongQY's avatar
PanZezhongQY committed
40
41
    switch (device) {
#ifdef ENABLE_CPU_API
42
        CREATE(INFINI_DEVICE_CPU, cpu);
PanZezhongQY's avatar
PanZezhongQY committed
43
#endif
44
#ifdef ENABLE_NVIDIA_API
45
        CREATE(INFINI_DEVICE_NVIDIA, nvidia);
PanZezhongQY's avatar
PanZezhongQY committed
46
#endif
47
#ifdef ENABLE_ILUVATAR_API
Derui Yang's avatar
Derui Yang committed
48
        CREATE(INFINI_DEVICE_ILUVATAR, iluvatar);
49
#endif
wooway777's avatar
wooway777 committed
50
51
52
#ifdef ENABLE_ALI_API
        CREATE(INFINI_DEVICE_ALI, ali);
#endif
53
54
55
#ifdef ENABLE_QY_API
        CREATE(INFINI_DEVICE_QY, qy);
#endif
PanZezhongQY's avatar
PanZezhongQY committed
56
#ifdef ENABLE_CAMBRICON_API
57
        CREATE(INFINI_DEVICE_CAMBRICON, bang::cambricon);
PanZezhongQY's avatar
PanZezhongQY committed
58
59
#endif
#ifdef ENABLE_ASCEND_API
60
        CREATE(INFINI_DEVICE_ASCEND, ascend);
61
#endif
62
#ifdef ENABLE_MOORE_API
63
        CREATE(INFINI_DEVICE_MOORE, moore);
64
#endif
65
#ifdef ENABLE_KUNLUN_API
zhangyue's avatar
zhangyue committed
66
        CREATE(INFINI_DEVICE_KUNLUN, kunlun);
PanZezhongQY's avatar
PanZezhongQY committed
67
#endif
68
#ifdef ENABLE_METAX_API
69
        CREATE(INFINI_DEVICE_METAX, metax);
70
#endif
71
72
73
#ifdef ENABLE_HYGON_API
        CREATE(INFINI_DEVICE_HYGON, hygon);
#endif
74
75
76

    default:
        return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
77
    }
78
79

#undef CREATE
PanZezhongQY's avatar
PanZezhongQY committed
80
81
}

82
__INFINI_C infiniStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
PanZezhong's avatar
PanZezhong committed
83

84
85
86
87
#define DELETE(CASE, NAMESPACE)                                       \
    case CASE:                                                        \
        delete reinterpret_cast<device::NAMESPACE::Handle *>(handle); \
        return INFINI_STATUS_SUCCESS
PanZezhong's avatar
PanZezhong committed
88

PanZezhongQY's avatar
PanZezhongQY committed
89
90
    switch (handle->device) {
#ifdef ENABLE_CPU_API
91
        DELETE(INFINI_DEVICE_CPU, cpu);
PanZezhongQY's avatar
PanZezhongQY committed
92
#endif
93
#ifdef ENABLE_NVIDIA_API
94
        DELETE(INFINI_DEVICE_NVIDIA, nvidia);
PanZezhongQY's avatar
PanZezhongQY committed
95
#endif
96
#ifdef ENABLE_ILUVATAR_API
Derui Yang's avatar
Derui Yang committed
97
        DELETE(INFINI_DEVICE_ILUVATAR, iluvatar);
98
#endif
wooway777's avatar
wooway777 committed
99
100
101
#ifdef ENABLE_ALI_API
        DELETE(INFINI_DEVICE_ALI, ali);
#endif
102
103
104
#ifdef ENABLE_QY_API
        DELETE(INFINI_DEVICE_QY, qy);
#endif
PanZezhong's avatar
PanZezhong committed
105
#ifdef ENABLE_CAMBRICON_API
106
        DELETE(INFINI_DEVICE_CAMBRICON, bang::cambricon);
PanZezhongQY's avatar
PanZezhongQY committed
107
#endif
Pan Zezhong's avatar
Pan Zezhong committed
108
#ifdef ENABLE_ASCEND_API
109
        DELETE(INFINI_DEVICE_ASCEND, ascend);
110
#endif
111
#ifdef ENABLE_MOORE_API
112
        DELETE(INFINI_DEVICE_MOORE, moore);
113
#endif
114
#ifdef ENABLE_KUNLUN_API
zhangyue's avatar
zhangyue committed
115
        DELETE(INFINI_DEVICE_KUNLUN, kunlun);
116
#endif
117
#ifdef ENABLE_METAX_API
118
        DELETE(INFINI_DEVICE_METAX, metax);
119
120
121
#endif
#ifdef ENABLE_HYGON_API
        DELETE(INFINI_DEVICE_HYGON, hygon);
PanZezhongQY's avatar
PanZezhongQY committed
122
#endif
PanZezhong's avatar
PanZezhong committed
123
124
    default:
        return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
125
    }
126

PanZezhong's avatar
PanZezhong committed
127
#undef DELETE
128
}