handle.cc 2.44 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
PanZezhongQY's avatar
PanZezhongQY committed
20

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

26
27
28
29
    infiniDevice_t device;
    int device_id;
    CHECK_STATUS(infinirtGetDevice(&device, &device_id));

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

PanZezhong's avatar
PanZezhong committed
59
__C infiniStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
PanZezhong's avatar
PanZezhong committed
60
61
62
63
64
65

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

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