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

15
__C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr,
16
                                          infiniDevice_t device) {
PanZezhongQY's avatar
PanZezhongQY committed
17
18
19
20
21
22
    if (handle_ptr == nullptr) {
        return INFINIOP_STATUS_NULL_POINTER;
    }

    switch (device) {
#ifdef ENABLE_CPU_API
23
24
    case INFINI_DEVICE_CPU:
        return createCpuHandle((infiniopCpuHandle_t *)handle_ptr);
PanZezhongQY's avatar
PanZezhongQY committed
25
26
#endif
#ifdef ENABLE_CUDA_API
27
    case INFINI_DEVICE_NVIDIA: {
28
        return createCudaHandle((infiniopCudaHandle_t *)handle_ptr, device);
29
    }
PanZezhongQY's avatar
PanZezhongQY committed
30
31
#endif
#ifdef ENABLE_CAMBRICON_API
32
    case INFINI_DEVICE_CAMBRICON: {
33
        return createBangHandle((infiniopBangHandle_t *)handle_ptr);
34
    }
PanZezhongQY's avatar
PanZezhongQY committed
35
36
#endif
#ifdef ENABLE_ASCEND_API
37
    case INFINI_DEVICE_ASCEND: {
38
        return createAscendHandle((infiniopAscendHandle_t *)handle_ptr);
39
    }
PanZezhongQY's avatar
PanZezhongQY committed
40
41
42
43
44
45
46
47
#endif
    }
    return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
}

__C infiniopStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
    switch (handle->device) {
#ifdef ENABLE_CPU_API
48
49
    case INFINI_DEVICE_CPU:
        return destroyCpuHandle((infiniopCpuHandle_t)handle);
PanZezhongQY's avatar
PanZezhongQY committed
50
51
#endif
#ifdef ENABLE_CUDA_API
52
    case INFINI_DEVICE_NVIDIA: {
PanZezhong's avatar
PanZezhong committed
53
        return destroyCudaHandle((infiniopCudaHandle_t)handle);
54
    }
PanZezhongQY's avatar
PanZezhongQY committed
55
#endif
PanZezhong's avatar
PanZezhong committed
56
#ifdef ENABLE_CAMBRICON_API
57
58
59
    case INFINI_DEVICE_CAMBRICON: {
        return destroyBangHandle((infiniopBangHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
60
#endif
Pan Zezhong's avatar
Pan Zezhong committed
61
#ifdef ENABLE_ASCEND_API
62
63
64
    case INFINI_DEVICE_ASCEND: {
        return destroyAscendHandle((infiniopAscendHandle_t)handle);
    }
PanZezhongQY's avatar
PanZezhongQY committed
65
66
67
68
#endif
    }
    return INFINIOP_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
}