handle.cc 2.35 KB
Newer Older
PanZezhongQY's avatar
PanZezhongQY committed
1
2
#include "infiniop/handle.h"
#ifdef ENABLE_CPU_API
3
#include "cpu/cpu_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
4
5
#endif
#ifdef ENABLE_CUDA_API
6
#include "cuda/cuda_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
7
#endif
PanZezhong's avatar
PanZezhong committed
8
#ifdef ENABLE_CAMBRICON_API
9
#include "bang/bang_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
10
#endif
Pan Zezhong's avatar
Pan Zezhong committed
11
#ifdef ENABLE_ASCEND_API
12
#include "ascend/ascend_handle.h"
PanZezhongQY's avatar
PanZezhongQY committed
13
#endif
14
#ifdef ENABLE_KUNLUN_API
zhangyue's avatar
zhangyue committed
15
#include "kunlun/kunlun_handle.h"
16
#endif
PanZezhongQY's avatar
PanZezhongQY committed
17

PanZezhong's avatar
PanZezhong committed
18
19
__C infiniStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr,
                                        infiniDevice_t device) {
PanZezhongQY's avatar
PanZezhongQY committed
20
    if (handle_ptr == nullptr) {
PanZezhong's avatar
PanZezhong committed
21
        return INFINI_STATUS_NULL_POINTER;
PanZezhongQY's avatar
PanZezhongQY committed
22
23
24
25
    }

    switch (device) {
#ifdef ENABLE_CPU_API
26
    case INFINI_DEVICE_CPU:
PanZezhong's avatar
PanZezhong committed
27
        return infiniop::cpu::Handle::create(handle_ptr);
PanZezhongQY's avatar
PanZezhongQY committed
28
29
#endif
#ifdef ENABLE_CUDA_API
30
    case INFINI_DEVICE_NVIDIA: {
31
        return createCudaHandle((infiniopCudaHandle_t *)handle_ptr, device);
32
    }
PanZezhongQY's avatar
PanZezhongQY committed
33
34
#endif
#ifdef ENABLE_CAMBRICON_API
35
    case INFINI_DEVICE_CAMBRICON: {
36
        return createBangHandle((infiniopBangHandle_t *)handle_ptr);
37
    }
PanZezhongQY's avatar
PanZezhongQY committed
38
39
#endif
#ifdef ENABLE_ASCEND_API
40
    case INFINI_DEVICE_ASCEND: {
41
        return createAscendHandle((infiniopAscendHandle_t *)handle_ptr);
42
    }
43
44
45
46
47
#endif
#ifdef ENABLE_KUNLUN_API
    case INFINI_DEVICE_KUNLUN: {
        return createKunlunHandle((infiniopKunlunHandle_t *)handle_ptr);
    }
PanZezhongQY's avatar
PanZezhongQY committed
48
49
#endif
    }
PanZezhong's avatar
PanZezhong committed
50
    return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
51
52
}

PanZezhong's avatar
PanZezhong committed
53
__C infiniStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
PanZezhong's avatar
PanZezhong committed
54
55
56
57
58
59

#define DELETE(CASE, NAMESPACE)                                         \
    case CASE:                                                          \
        delete reinterpret_cast<infiniop::NAMESPACE::Handle *>(handle); \
        return INFINI_STATUS_SUCCESS;

PanZezhongQY's avatar
PanZezhongQY committed
60
61
    switch (handle->device) {
#ifdef ENABLE_CPU_API
PanZezhong's avatar
PanZezhong committed
62
        DELETE(INFINI_DEVICE_CPU, cpu)
PanZezhongQY's avatar
PanZezhongQY committed
63
64
#endif
#ifdef ENABLE_CUDA_API
65
    case INFINI_DEVICE_NVIDIA: {
PanZezhong's avatar
PanZezhong committed
66
        return destroyCudaHandle((infiniopCudaHandle_t)handle);
67
    }
PanZezhongQY's avatar
PanZezhongQY committed
68
#endif
PanZezhong's avatar
PanZezhong committed
69
#ifdef ENABLE_CAMBRICON_API
70
71
72
    case INFINI_DEVICE_CAMBRICON: {
        return destroyBangHandle((infiniopBangHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
73
#endif
Pan Zezhong's avatar
Pan Zezhong committed
74
#ifdef ENABLE_ASCEND_API
75
76
77
    case INFINI_DEVICE_ASCEND: {
        return destroyAscendHandle((infiniopAscendHandle_t)handle);
    }
78
79
80
81
82
#endif
#ifdef ENABLE_KUNLUN_API
    case INFINI_DEVICE_KUNLUN: {
        return destroyKunlunHandle((infiniopKunlunHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
83
#endif
PanZezhong's avatar
PanZezhong committed
84
85
    default:
        return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
86
    }
PanZezhong's avatar
PanZezhong committed
87
#undef DELETE
88
}