Unverified Commit 3165aba0 authored by PanZezhong1725's avatar PanZezhong1725 Committed by GitHub
Browse files

Merge pull request #70 from PanZezhong1725/issue/69

Issue/69 增加运行时接口
parents 87d10975 4ee4c4f4
#ifndef __INFINICORE_H__
#define __INFINICORE_H__
#include <stdint.h>
#ifndef __INFINICORE_EXPORT_C__
#define __INFINICORE_EXPORT_C__
#if defined(_WIN32)
#define __export __declspec(dllexport)
#elif defined(__GNUC__) && ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
......@@ -17,12 +14,26 @@
#include <cstddef>
#else
#define __C
#include <stddef>
#include <stddef.h>
#endif
#endif // __INFINICORE_EXPORT_C__
#ifndef __INFINI_DEVICE__
#define __INFINI_DEVICE__
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;
typedef enum {
INFINI_DEVICE_CPU = 0,
INFINI_DEVICE_NVIDIA = 1,
......@@ -33,11 +44,9 @@ typedef enum {
INFINI_DEVICE_ILUVATAR = 6,
INFINI_DEVICE_KUNLUN = 7,
INFINI_DEVICE_SUGON = 8,
INFINI_DEVICE_TYPE_COUNT
} infiniDevice_t;
#endif // __INFINI_DEVICE__
#ifndef __INFINI_DTYPE__
#define __INFINI_DTYPE__
typedef enum {
INFINI_DTYPE_INVALID = 0,
INFINI_DTYPE_BYTE = 1,
......@@ -107,6 +116,5 @@ inline size_t infiniSizeof(infiniDtype_t dtype) {
return 0;
}
}
#endif // __INFINI_DTYPE__
#endif // __INFINICORE_H__
#ifndef __INFINIOP_H__
#define __INFINIOP_H__
#include "infiniop/tensor_descriptor.h"
#include "infiniop/handle.h"
#include "infiniop/ops/add.h"
#include "infiniop/ops/attention.h"
#include "infiniop/ops/avg_pool.h"
......
#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 infinirtGetAllDeviceCount(int *count_array);
__C __export infiniStatus_t infinirtGetDeviceCount(infiniDevice_t device, int *count);
__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 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
typedef enum {
INFINIRT_EVENT_COMPLETE = 0,
INFINIRT_EVENT_NOT_READY = 1,
} infinirtEventStatus_t;
__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, infinirtEventStatus_t *status_ptr);
__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