handle.cc 2.56 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
8
#endif
#ifdef ENABLE_CUDA_API
9
#include "cuda/cuda_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_KUNLUN_API
zhangyue's avatar
zhangyue committed
18
#include "kunlun/kunlun_handle.h"
19
#endif
20
#ifdef ENABLE_METAX_API
21
22
#include "maca/maca_handle.h"
#endif
PanZezhongQY's avatar
PanZezhongQY committed
23

24
__C infiniStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr) {
PanZezhongQY's avatar
PanZezhongQY committed
25
    if (handle_ptr == nullptr) {
PanZezhong's avatar
PanZezhong committed
26
        return INFINI_STATUS_NULL_POINTER;
PanZezhongQY's avatar
PanZezhongQY committed
27
28
    }

29
30
31
32
    infiniDevice_t device;
    int device_id;
    CHECK_STATUS(infinirtGetDevice(&device, &device_id));

33
34
35
36
#define CREATE(CASE, NAMESPACE) \
    case CASE:                  \
        return device::NAMESPACE::Handle::create(handle_ptr, device_id)

PanZezhongQY's avatar
PanZezhongQY committed
37
38
    switch (device) {
#ifdef ENABLE_CPU_API
39
        CREATE(INFINI_DEVICE_CPU, cpu);
PanZezhongQY's avatar
PanZezhongQY committed
40
41
#endif
#ifdef ENABLE_CUDA_API
42
        CREATE(INFINI_DEVICE_NVIDIA, cuda::nvidia);
PanZezhongQY's avatar
PanZezhongQY committed
43
44
#endif
#ifdef ENABLE_CAMBRICON_API
45
        CREATE(INFINI_DEVICE_CAMBRICON, bang::cambricon);
PanZezhongQY's avatar
PanZezhongQY committed
46
47
#endif
#ifdef ENABLE_ASCEND_API
48
    case INFINI_DEVICE_ASCEND: {
49
        return createAscendHandle((infiniopAscendHandle_t *)handle_ptr);
50
    }
51
52
53
54
55
#endif
#ifdef ENABLE_KUNLUN_API
    case INFINI_DEVICE_KUNLUN: {
        return createKunlunHandle((infiniopKunlunHandle_t *)handle_ptr);
    }
PanZezhongQY's avatar
PanZezhongQY committed
56
#endif
57
#ifdef ENABLE_METAX_API
58
59
        CREATE(INFINI_DEVICE_METAX, maca);
#endif
60
61
62

    default:
        return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
63
    }
64
65

#undef CREATE
PanZezhongQY's avatar
PanZezhongQY committed
66
67
}

PanZezhong's avatar
PanZezhong committed
68
__C infiniStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
PanZezhong's avatar
PanZezhong committed
69

70
71
72
73
#define DELETE(CASE, NAMESPACE)                                       \
    case CASE:                                                        \
        delete reinterpret_cast<device::NAMESPACE::Handle *>(handle); \
        return INFINI_STATUS_SUCCESS
PanZezhong's avatar
PanZezhong committed
74

PanZezhongQY's avatar
PanZezhongQY committed
75
76
    switch (handle->device) {
#ifdef ENABLE_CPU_API
77
        DELETE(INFINI_DEVICE_CPU, cpu);
PanZezhongQY's avatar
PanZezhongQY committed
78
79
#endif
#ifdef ENABLE_CUDA_API
80
        DELETE(INFINI_DEVICE_NVIDIA, cuda::nvidia);
PanZezhongQY's avatar
PanZezhongQY committed
81
#endif
PanZezhong's avatar
PanZezhong committed
82
#ifdef ENABLE_CAMBRICON_API
83
        DELETE(INFINI_DEVICE_CAMBRICON, bang::cambricon);
PanZezhongQY's avatar
PanZezhongQY committed
84
#endif
Pan Zezhong's avatar
Pan Zezhong committed
85
#ifdef ENABLE_ASCEND_API
86
87
88
    case INFINI_DEVICE_ASCEND: {
        return destroyAscendHandle((infiniopAscendHandle_t)handle);
    }
89
90
91
92
93
#endif
#ifdef ENABLE_KUNLUN_API
    case INFINI_DEVICE_KUNLUN: {
        return destroyKunlunHandle((infiniopKunlunHandle_t)handle);
    }
94
#endif
95
#ifdef ENABLE_METAX_API
96
        DELETE(INFINI_DEVICE_METAX, maca);
PanZezhongQY's avatar
PanZezhongQY committed
97
#endif
PanZezhong's avatar
PanZezhong committed
98
99
    default:
        return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
100
    }
101

PanZezhong's avatar
PanZezhong committed
102
#undef DELETE
103
}