handle.cc 2.03 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
16
17
__C infiniopStatus_t infiniopCreateHandle(infiniopHandle_t *handle_ptr,
                                          infiniDevice_t device,
                                          int device_id) {
PanZezhongQY's avatar
PanZezhongQY committed
18
19
20
21
22
23
24
25
26
    if (handle_ptr == nullptr) {
        return INFINIOP_STATUS_NULL_POINTER;
    }
    if (device_id < 0) {
        return INFINIOP_STATUS_BAD_DEVICE;
    }

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

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