Commit a9db6af1 authored by PanZezhong's avatar PanZezhong
Browse files

issue/69 增加通用status,增加运行时接口

parent 484554c7
......@@ -2,8 +2,8 @@
#define __INFINICORE_H__
#include <stdint.h>
#ifndef __INFINICORE_EXPORT_C__
#define __INFINICORE_EXPORT_C__
#ifndef __INFINI_EXPORT_C__
#define __INFINI_EXPORT_C__
#if defined(_WIN32)
#define __export __declspec(dllexport)
#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
......@@ -19,7 +19,27 @@
#define __C
#include <stddef>
#endif
#endif // __INFINICORE_EXPORT_C__
#endif // __INFINI_EXPORT_C__
#ifndef __INFINI_STATUS__
#define __INFINI_STATUS__
typedef enum {
// Success
INFINI_STATUS_SUCCESS = 0,
// General Errors
INFINI_STATUS_INTERNAL_ERROR = 1,
INFINI_STATUS_NOT_IMPLEMENTED = 2,
INFINI_STATUS_BAD_PARAM = 3,
INFINI_STATUS_NULL_POINTER = 4,
INFINI_STATUS_DEVICE_TYPE_NOT_SUPPORTED = 5,
INFINI_STATUS_DEVICE_NOT_FOUND = 6,
// Op Errors
INFINI_STATUS_BAD_TENSOR_DTYPE = 10,
INFINI_STATUS_BAD_TENSOR_SHAPE = 11,
INFINI_STATUS_BAD_TENSOR_STRIDES = 12,
INFINI_STATUS_INSUFFICIENT_WORKSPACE = 13,
} infiniStatus_t;
#endif // __INFINI_STATUS__
#ifndef __INFINI_DEVICE__
#define __INFINI_DEVICE__
......
#ifndef __INFINIRT_H__
#define __INFINIRT_H__
#include "infinicore.h"
typedef void *infinirtStream_t;
typedef void *infinirtEvent_t;
__C __export infiniStatus_t infinirtInit(infiniDevice_t device);
// Device
__C __export infiniStatus_t infinirtSetDevice(infiniDevice_t device, int device_id);
__C __export infiniStatus_t infinirtGetDevice(infiniDevice_t *device_ptr, int *device_id_ptr);
__C __export infiniStatus_t infinirtGetDeviceCount(infiniDevice_t device, int *count);
__C __export infiniStatus_t infinirtDeviceSynchronize();
// Stream
__C __export infiniStatus_t infinirtStreamCreate(infinirtStream_t *stream_ptr);
__C __export infiniStatus_t infinirtStreamDestroy(infinirtStream_t stream);
__C __export infiniStatus_t infinirtStreamSynchronize(infinirtStream_t stream);
__C __export infiniStatus_t infinirtStreamWaitEvent(infinirtStream_t stream, infinirtEvent_t event);
// Event
__C __export infiniStatus_t infinirtEventCreate(infinirtEvent_t *event_ptr);
__C __export infiniStatus_t infinirtEventRecord(infinirtEvent_t event, infinirtStream_t stream);
__C __export infiniStatus_t infinirtEventQuery(infinirtEvent_t event);
__C __export infiniStatus_t infinirtEventSynchronize(infinirtEvent_t event);
__C __export infiniStatus_t infinirtEventDestroy(infinirtEvent_t event);
// Memory
typedef enum {
INFINIRT_MEMCPY_H2H = 0,
INFINIRT_MEMCPY_H2D = 1,
INFINIRT_MEMCPY_D2H = 2,
INFINIRT_MEMCPY_D2D = 3,
} infinirtMemcpyKind_t;
__C __export infiniStatus_t infinirtMalloc(void **p_ptr, size_t size);
__C __export infiniStatus_t infinirtMallocHost(void **p_ptr, size_t size);
__C __export infiniStatus_t infinirtFree(void *ptr);
__C __export infiniStatus_t infinirtFreeHost(void *ptr);
__C __export infiniStatus_t infinirtMemcpy(void *dst, const void *src, size_t size, infinirtMemcpyKind_t kind);
__C __export infiniStatus_t infinirtMemcpyAsync(void *dst, const void *src, infinirtMemcpyKind_t kind, infinirtStream_t stream);
// Stream-ordered memory
__C __export infiniStatus_t infinirtMallocAsync(void **p_ptr, size_t size, infinirtStream_t stream);
__C __export infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream);
#endif // __INFINIRT_H__
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment