handle.cc 1.79 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
14
#endif

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

    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
#endif
    }
PanZezhong's avatar
PanZezhong committed
42
    return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
PanZezhongQY's avatar
PanZezhongQY committed
43
44
}

PanZezhong's avatar
PanZezhong committed
45
__C infiniStatus_t infiniopDestroyHandle(infiniopHandle_t handle) {
PanZezhongQY's avatar
PanZezhongQY committed
46
47
    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
#endif
    }
PanZezhong's avatar
PanZezhong committed
67
    return INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED;
68
}