handle.cc 2.13 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
27
    case INFINI_DEVICE_CPU:
        return createCpuHandle((infiniopCpuHandle_t *)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) {
PanZezhongQY's avatar
PanZezhongQY committed
54
55
    switch (handle->device) {
#ifdef ENABLE_CPU_API
56
57
    case INFINI_DEVICE_CPU:
        return destroyCpuHandle((infiniopCpuHandle_t)handle);
PanZezhongQY's avatar
PanZezhongQY committed
58
59
#endif
#ifdef ENABLE_CUDA_API
60
    case INFINI_DEVICE_NVIDIA: {
PanZezhong's avatar
PanZezhong committed
61
        return destroyCudaHandle((infiniopCudaHandle_t)handle);
62
    }
PanZezhongQY's avatar
PanZezhongQY committed
63
#endif
PanZezhong's avatar
PanZezhong committed
64
#ifdef ENABLE_CAMBRICON_API
65
66
67
    case INFINI_DEVICE_CAMBRICON: {
        return destroyBangHandle((infiniopBangHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
68
#endif
Pan Zezhong's avatar
Pan Zezhong committed
69
#ifdef ENABLE_ASCEND_API
70
71
72
    case INFINI_DEVICE_ASCEND: {
        return destroyAscendHandle((infiniopAscendHandle_t)handle);
    }
73
74
75
76
77
#endif
#ifdef ENABLE_KUNLUN_API
    case INFINI_DEVICE_KUNLUN: {
        return destroyKunlunHandle((infiniopKunlunHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
78
79
#endif
    }
PanZezhong's avatar
PanZezhong committed
80
    return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
81
}