|
| 1 | +#ifndef __INFINIRT_H__ |
| 2 | +#define __INFINIRT_H__ |
| 3 | + |
| 4 | +#include "infinicore.h" |
| 5 | + |
| 6 | +typedef void *infinirtStream_t; |
| 7 | +typedef void *infinirtEvent_t; |
| 8 | + |
| 9 | +__C __export infiniStatus_t infinirtInit(infiniDevice_t device); |
| 10 | + |
| 11 | +// Device |
| 12 | +__C __export infiniStatus_t infinirtGetAllDeviceCount(int *count_array); |
| 13 | +__C __export infiniStatus_t infinirtGetDeviceCount(infiniDevice_t device, int *count); |
| 14 | +__C __export infiniStatus_t infinirtSetDevice(infiniDevice_t device, int device_id); |
| 15 | +__C __export infiniStatus_t infinirtGetDevice(infiniDevice_t *device_ptr, int *device_id_ptr); |
| 16 | +__C __export infiniStatus_t infinirtDeviceSynchronize(); |
| 17 | + |
| 18 | +// Stream |
| 19 | +__C __export infiniStatus_t infinirtStreamCreate(infinirtStream_t *stream_ptr); |
| 20 | +__C __export infiniStatus_t infinirtStreamDestroy(infinirtStream_t stream); |
| 21 | +__C __export infiniStatus_t infinirtStreamSynchronize(infinirtStream_t stream); |
| 22 | +__C __export infiniStatus_t infinirtStreamWaitEvent(infinirtStream_t stream, infinirtEvent_t event); |
| 23 | + |
| 24 | +// Event |
| 25 | +typedef enum { |
| 26 | + INFINIRT_EVENT_COMPLETE = 0, |
| 27 | + INFINIRT_EVENT_NOT_READY = 1, |
| 28 | +} infinirtEventStatus_t; |
| 29 | + |
| 30 | +__C __export infiniStatus_t infinirtEventCreate(infinirtEvent_t *event_ptr); |
| 31 | +__C __export infiniStatus_t infinirtEventRecord(infinirtEvent_t event, infinirtStream_t stream); |
| 32 | +__C __export infiniStatus_t infinirtEventQuery(infinirtEvent_t event, infinirtEventStatus_t *status_ptr); |
| 33 | +__C __export infiniStatus_t infinirtEventSynchronize(infinirtEvent_t event); |
| 34 | +__C __export infiniStatus_t infinirtEventDestroy(infinirtEvent_t event); |
| 35 | + |
| 36 | +// Memory |
| 37 | +typedef enum { |
| 38 | + INFINIRT_MEMCPY_H2H = 0, |
| 39 | + INFINIRT_MEMCPY_H2D = 1, |
| 40 | + INFINIRT_MEMCPY_D2H = 2, |
| 41 | + INFINIRT_MEMCPY_D2D = 3, |
| 42 | +} infinirtMemcpyKind_t; |
| 43 | + |
| 44 | +__C __export infiniStatus_t infinirtMalloc(void **p_ptr, size_t size); |
| 45 | +__C __export infiniStatus_t infinirtMallocHost(void **p_ptr, size_t size); |
| 46 | +__C __export infiniStatus_t infinirtFree(void *ptr); |
| 47 | +__C __export infiniStatus_t infinirtFreeHost(void *ptr); |
| 48 | + |
| 49 | +__C __export infiniStatus_t infinirtMemcpy(void *dst, const void *src, size_t size, infinirtMemcpyKind_t kind); |
| 50 | +__C __export infiniStatus_t infinirtMemcpyAsync(void *dst, const void *src, infinirtMemcpyKind_t kind, infinirtStream_t stream); |
| 51 | + |
| 52 | +// Stream-ordered memory |
| 53 | +__C __export infiniStatus_t infinirtMallocAsync(void **p_ptr, size_t size, infinirtStream_t stream); |
| 54 | +__C __export infiniStatus_t infinirtFreeAsync(void *ptr, infinirtStream_t stream); |
| 55 | + |
| 56 | +#endif // __INFINIRT_H__ |
0 commit comments