* Copyright (c) 2025 Huawei Technologies Co., Ltd.
* This program is free software, you can redistribute it and/or modify it under the terms and conditions of
* CANN Open Software License Agreement Version 2.0 (the "License").
* Please refer to the License for details. You may not use this file except in compliance with the License.
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
* See LICENSE in the root of the software repository for the full text of the License.
*/
#ifndef CCE_RUNTIME_API_HPP
#define CCE_RUNTIME_API_HPP
#include "runtime.hpp"
#include "ipc_event.hpp"
#include "model.hpp"
#include "runtime/event.h"
#include "runtime/base.h"
#include "runtime/rt_mem_queue.h"
#include "runtime/rt_preload_task.h"
#include "runtime/rt_inner_dfx.h"
#include "runtime/rt_inner_mem.h"
#include "runtime/rt_inner_model.h"
#include "runtime/rt_inner_stream.h"
#include "runtime/rt_inner_device.h"
#include "runtime/rt_inner_task.h"
#include "dqs/task_dqs.hpp"
namespace cce {
namespace runtime {
constexpr uint32_t MIN_ARG_SIZE = 4U;
constexpr uint32_t ARG_ENTRY_SIZE = 2624U;
constexpr uint32_t MULTI_GRAPH_ARG_ENTRY_SIZE = 6208U;
constexpr uint32_t DEFAULT_INIT_CNT = 1024U;
constexpr uint32_t MULTI_GRAPH_SUPER_ARG_ENTRY_SIZE = 15360U;
constexpr uint32_t ARG_ENTRY_INCRETMENT_SIZE = 40960U;
constexpr uint32_t KERNEL_INFO_ENTRY_SIZE = 256U;
constexpr uint32_t MEMCPY_ASYNC_UB_SIZE = 256U * 1024U * 1024U;
constexpr uint32_t HOST_CALLBACK_SQCQ_BIT = 1024U;
constexpr uint32_t RT_GET_ERR_CODE = 0xFFFU;
constexpr uint32_t API_ENV_FLAGS_DEFAULT = 0U;
constexpr uint32_t API_ENV_FLAGS_NO_TSD = 1U;
constexpr uint32_t SOC_VERSION_LEN = 50U;
constexpr uint32_t RT_DEFAULT_FLAG = 0U;
constexpr uint32_t INVALID_CHECK_KIND = 0U;
constexpr uint32_t WITHOUT_CHECK_KIND = 1U;
constexpr uint32_t CHECK_MEMORY_PINNED = 2U;
constexpr uint32_t NOT_CHECK_KIND_BUT_CHECK_PINNED = 3U;
constexpr uint32_t MEMCPY_DESC_SIZE = 32U;
constexpr uint32_t MEMCPY_DESC_SIZE_V2 = 64U;
constexpr uint32_t MEMCPY_DESC_LENGTH_OFFSET = 12U;
static inline uint64_t CalculateMemcpyAsyncSingleMaxSize(
const rtMemcpyKind_t kind, const uint32_t transType = UINT32_MAX)
{
uint64_t sqSize = MEMCPY_ASYNC_UNIT_SIZE;
if (kind == RT_MEMCPY_ADDR_DEVICE_TO_DEVICE) {
sqSize = MAX_MEMCPY_SIZE_OF_D2D;
}
if (kind == RT_MEMCPY_DEVICE_TO_DEVICE) {
if (transType == RT_MEMCPY_DIR_D2D_UB) {
sqSize = MEMCPY_ASYNC_UB_SIZE;
} else if (transType == RT_MEMCPY_DIR_D2D_PCIe) {
sqSize = MEMCPY_ASYNC_UNIT_SIZE;
} else {
sqSize = MAX_MEMCPY_SIZE_OF_D2D;
}
}
if (Runtime::Instance()->GetConnectUbFlag() &&
((kind == RT_MEMCPY_HOST_TO_DEVICE) || (kind == RT_MEMCPY_DEVICE_TO_HOST))) {
sqSize = MEMCPY_ASYNC_UB_SIZE;
}
return sqSize;
}
struct LaunchArgment {
bool isConfig;
bool smUsed;
rtStream_t stm;
rtSmDesc_t smDesc;
uint32_t numBlocks;
uint32_t argSize;
char_t args[ARG_ENTRY_SIZE];
uint16_t argsOffset[ARG_ENTRY_SIZE / MIN_ARG_SIZE];
uint32_t argCount;
const void* stubFunc;
};
#pragma pack(push)
#pragma pack(1)
struct rtProfTraceUserData {
uint64_t id;
uint64_t modelId;
uint16_t tagId;
};
#pragma pack(pop)
class Stream;
class Event;
class Program;
class Context;
class Notify;
class DvppGrp;
class CountNotify;
class CondHandle;
class Api {
public:
Api() = default;
virtual ~Api() = default;
Api(const Api&) = delete;
Api& operator=(const Api&) = delete;
Api(Api&&) = delete;
Api& operator=(Api&&) = delete;
virtual rtError_t DevBinaryRegister(const rtDevBinary_t* const bin, Program** const prog) = 0;
virtual rtError_t GetNotifyAddress(Notify* const notify, uint64_t* const notifyAddress) = 0;
virtual rtError_t RegisterAllKernel(const rtDevBinary_t* const bin, Program** const prog) = 0;
virtual rtError_t BinaryRegisterToFastMemory(Program* const prog) = 0;
virtual rtError_t DevBinaryUnRegister(Program* const prog) = 0;
virtual rtError_t BinaryLoad(const rtDevBinary_t* const bin, Program** const prog) = 0;
virtual rtError_t BinaryGetFunction(
const Program* const prog, const uint64_t tilingKey, Kernel** const funcHandle) = 0;
virtual rtError_t BinaryLoadWithoutTilingKey(const void* data, const uint64_t length, Program** const prog) = 0;
virtual rtError_t BinaryGetFunctionByName(
const Program* const binHandle, const char* kernelName, Kernel** const funcHandle) = 0;
virtual rtError_t BinaryGetFunctionByEntry(
const Program* const binHandle, const uint64_t funcEntry, Kernel** const funcHandle) = 0;
virtual rtError_t BinaryEnumerateFunctions(
const Program* const binHandle, Kernel** const funcHandles, const uint32_t numFunctions,
uint32_t* const actualCount) = 0;
virtual rtError_t BinaryGetFunctionCount(const Program* const binHandle, uint32_t* const count) = 0;
virtual rtError_t BinaryGetMetaNum(Program* const binHandle, const rtBinaryMetaType type, size_t* numOfMeta) = 0;
virtual rtError_t BinaryGetMetaInfo(
Program* const binHandle, const rtBinaryMetaType type, const size_t numOfMeta, void** data,
const size_t* dataSize) = 0;
virtual rtError_t FunctionGetMetaInfo(
const Kernel* const funcHandle, const rtFunctionMetaType type, void* data, const uint32_t length) = 0;
virtual rtError_t FunctionGetMetaInfoSize(
const Kernel* const funcHandle, const rtFunctionMetaType type, size_t* size) = 0;
virtual rtError_t GetFunctionBySymbol(const void* symbol, Kernel** const funcHandle) = 0;
virtual rtError_t RegisterFuncSymbol(
void* const binHandle, const void* const symbol, const char_t* const kernelName) = 0;
virtual rtError_t RegisterCpuFunc(
rtBinHandle binHandle, const char_t* const funcName, const char_t* const kernelName,
rtFuncHandle* funcHandle) = 0;
virtual rtError_t LaunchKernel(
Kernel* const kernel, uint32_t blockDim, const rtArgsEx_t* const argsInfo, Stream* const stm,
const rtTaskCfgInfo_t* const cfgInfo = nullptr) = 0;
virtual rtError_t LaunchKernelV2(
Kernel* const kernel, uint32_t blockDim, const RtArgsWithType* const argsWithType, Stream* const stm,
const rtKernelLaunchCfg_t* const cfg = nullptr) = 0;
virtual rtError_t BinaryUnLoad(Program* const binHandle) = 0;
virtual rtError_t BinaryLoadFromFile(
const char* const binPath, const rtLoadBinaryConfig_t* const optionalCfg, Program** handle) = 0;
virtual rtError_t BinaryLoadFromData(
const void* const data, const uint64_t length, const rtLoadBinaryConfig_t* const optionalCfg,
Program** handle) = 0;
virtual rtError_t MetadataRegister(Program* const prog, const char_t* const metadata) = 0;
virtual rtError_t DependencyRegister(Program* const mProgram, Program* const sProgram) = 0;
virtual rtError_t FunctionRegister(
Program* const prog, const void* const stubFunc, const char_t* const stubName, const void* const kernelInfoExt,
const uint32_t funcMode) = 0;
virtual rtError_t RegisterVariable(
void* const binHandle, const void* const hostVar, const char_t* const deviceVarName, const size_t size,
const uint32_t flags) = 0;
virtual rtError_t SymbolLookup(const void* const hostVar, void** const devPtr, size_t* const size) = 0;
virtual rtError_t GetFunctionByName(const char_t* const stubName, void** const stubFunc) = 0;
virtual rtError_t GetAddrByFun(const void* const stubFunc, void** const addr) = 0;
virtual rtError_t GetAddrAndPrefCntWithHandle(
void* const hdl, const void* const kernelInfoExt, void** const addr, uint32_t* const prefetchCnt) = 0;
virtual rtError_t KernelGetAddrAndPrefCnt(
void* const hdl, const uint64_t tilingKey, const void* const stubFunc, const uint32_t flag, void** const addr,
uint32_t* const prefetchCnt) = 0;
virtual rtError_t KernelGetAddrAndPrefCntV2(
void* const hdl, const uint64_t tilingKey, const void* const stubFunc, const uint32_t flag,
rtKernelDetailInfo_t* const kernelInfo) = 0;
virtual rtError_t QueryFunctionRegistered(const char_t* const stubName) = 0;
virtual rtError_t KernelLaunch(
const void* const stubFunc, uint32_t coreDim, const rtArgsEx_t* const argsInfo, Stream* const stm,
const rtTaskCfgInfo_t* const cfgInfo = nullptr, const bool isLaunchVec = false) = 0;
virtual rtError_t KernelLaunchWithHandle(
void* const hdl, const uint64_t tilingKey, const uint32_t coreDim, const rtArgsEx_t* const argsInfo,
Stream* const stm, const rtTaskCfgInfo_t* const cfgInfo = nullptr, const bool isLaunchVec = false) = 0;
virtual rtError_t KernelLaunchEx(
const char_t* const opName, const void* const args, const uint32_t argsSize, const uint32_t flags,
Stream* const stm) = 0;
virtual rtError_t CpuKernelLaunch(
const rtKernelLaunchNames_t* const launchNames, const uint32_t coreDim, const rtArgsEx_t* const argsInfo,
Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t CpuKernelLaunchExWithArgs(
const char_t* const opName, const uint32_t coreDim, const rtAicpuArgsEx_t* const argsInfo, Stream* const stm,
const uint32_t flag, const uint32_t kernelType) = 0;
virtual rtError_t MultipleTaskInfoLaunch(
const rtMultipleTaskInfo_t* const taskInfo, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t DatadumpInfoLoad(const void* const dumpInfo, const uint32_t length, const uint32_t flag) = 0;
virtual rtError_t AicpuInfoLoad(const void* const aicpuInfo, const uint32_t length) = 0;
virtual rtError_t SetupArgument(const void* const setupArg, const uint32_t size, const uint32_t offset) = 0;
virtual rtError_t KernelTransArgSet(
const void* const ptr, const uint64_t size, const uint32_t flag, void** const setupArg) = 0;
virtual rtError_t AppendLaunchAddrInfo(rtLaunchArgs_t* const hdl, void* const addrInfo) = 0;
virtual rtError_t AppendLaunchHostInfo(
rtLaunchArgs_t* const hdl, size_t const hostInfoSize, void** const hostInfo) = 0;
virtual rtError_t DestroyLaunchArgs(rtLaunchArgs_t* argsHandle) = 0;
virtual rtError_t ResetLaunchArgs(rtLaunchArgs_t* argsHandle) = 0;
virtual rtError_t CalcLaunchArgsSize(
size_t const argsSize, size_t const hostInfoTotalSize, size_t hostInfoNum, size_t* const launchArgsSize) = 0;
virtual rtError_t CreateLaunchArgs(
size_t const argsSize, size_t const hostInfoTotalSize, size_t hostInfoNum, void* const argsData,
rtLaunchArgs_t** const argsHandle) = 0;
virtual rtError_t GetTaskBufferLen(const rtTaskBuffType_t type, uint32_t* const bufferLen) = 0;
virtual rtError_t TaskSqeBuild(const rtTaskInput_t* const taskInput, uint32_t* const taskLen) = 0;
virtual rtError_t GetKernelBin(const char_t* const binFileName, char_t** const buffer, uint32_t* length) = 0;
virtual rtError_t GetBinBuffer(
rtBinHandle const binHandle, const rtBinBufferType_t type, void** bin, uint32_t* binSize) = 0;
virtual rtError_t GetStackBuffer(
rtBinHandle const binHandle, uint32_t deviceId, const uint32_t stackType, const uint32_t coreType,
const uint32_t coreId, const void** stack, uint32_t* stackSize) = 0;
virtual rtError_t BinaryGetGlobal(const Program* const binHandle, const char* name, void** dptr, size_t* size) = 0;
virtual rtError_t FreeKernelBin(char_t* const buffer) = 0;
virtual rtError_t FusionLaunch(void* const fusionInfo, Stream* const stm, rtFusionArgsEx_t* argsInfo) = 0;
virtual rtError_t StreamCreate(Stream** const stm, const int32_t priority, const uint32_t flags, DvppGrp* grp) = 0;
virtual rtError_t StreamDestroy(Stream* const stm, bool flag = true) = 0;
virtual rtError_t StreamWaitEvent(
Stream* const stm, Event* const evt, const uint32_t timeout = 0U,
const uint32_t flag = RT_EVENT_WAIT_DEFAULT) = 0;
virtual rtError_t StreamSynchronize(Stream* const stm, const int32_t timeout = -1) = 0;
virtual rtError_t NonBlockingLaunchBegin(Stream* const stream, const uint64_t flag) = 0;
virtual rtError_t NonBlockingLaunchEnd(Stream* const stream, const uint64_t flag) = 0;
virtual rtError_t StreamQuery(Stream* const stm) = 0;
virtual rtError_t GetStreamId(Stream* const stm, int32_t* const streamId) = 0;
virtual rtError_t GetSqId(Stream* const stm, uint32_t* const sqId) = 0;
virtual rtError_t GetCqId(Stream* const stm, uint32_t* const cqId, uint32_t* const logicCqId) = 0;
virtual rtError_t StreamSetMode(Stream* const stm, const uint64_t stmMode) = 0;
virtual rtError_t StreamGetMode(const Stream* const stm, uint64_t* const stmMode) = 0;
virtual rtError_t StreamBeginCapture(
Stream* const stm, const rtStreamCaptureMode mode, Model* const mdl = nullptr) = 0;
virtual rtError_t StreamEndCapture(Stream* const stm, Model** const captureMdl) = 0;
virtual rtError_t StreamGetCaptureInfo(
const Stream* const stm, rtStreamCaptureStatus* const status, Model** const captureMdl) = 0;
virtual rtError_t ThreadExchangeCaptureMode(rtStreamCaptureMode* const mode) = 0;
virtual rtError_t StreamBeginTaskGrp(Stream* const stm) = 0;
virtual rtError_t StreamEndTaskGrp(Stream* const stm, TaskGroup** const handle) = 0;
virtual rtError_t StreamBeginTaskUpdate(Stream* const stm, TaskGroup* handle) = 0;
virtual rtError_t StreamEndTaskUpdate(Stream* const stm) = 0;
virtual rtError_t StreamGetPriority(Stream* const stm, uint32_t* const priority) = 0;
virtual rtError_t StreamGetFlags(Stream* const stm, uint32_t* const flags) = 0;
virtual rtError_t EventCreate(Event** const evt, const uint64_t flag) = 0;
virtual rtError_t EventCreateEx(Event** const evt, const uint64_t flag) = 0;
virtual rtError_t EventDestroy(Event* evt) = 0;
virtual rtError_t EventDestroySync(Event* evt) = 0;
virtual rtError_t EventRecord(
Event* const evt, Stream* const stm, const uint32_t flag = RT_EVENT_RECORD_DEFAULT) = 0;
virtual rtError_t EventReset(Event* const evt, Stream* const stm) = 0;
virtual rtError_t EventSynchronize(Event* const evt, const int32_t timeout = -1) = 0;
virtual rtError_t DevMalloc(
void** const devPtr, const uint64_t size, const rtMemType_t type,
const uint16_t moduleId = MODULEID_RUNTIME) = 0;
virtual rtError_t DevFree(void* const devPtr) = 0;
virtual rtError_t DevDvppMalloc(
void** const devPtr, const uint64_t size, const uint32_t flag, const uint16_t moduleId = MODULEID_RUNTIME) = 0;
virtual rtError_t DevDvppFree(void* const devPtr) = 0;
virtual rtError_t ManagedMemAlloc(
void** const ptr, const uint64_t size, const uint32_t flag, const uint16_t moduleId = MODULEID_RUNTIME) = 0;
virtual rtError_t ManagedMemFree(const void* const ptr) = 0;
virtual rtError_t MemAdvise(void* devPtr, uint64_t count, uint32_t advise) = 0;
virtual rtError_t MemManagedAdvise(
const void* const ptr, uint64_t size, uint16_t advise, rtMemManagedLocation location) = 0;
virtual rtError_t DevMallocCached(
void** const devPtr, const uint64_t size, const rtMemType_t type,
const uint16_t moduleId = MODULEID_RUNTIME) = 0;
virtual rtError_t FlushCache(const uint64_t base, const size_t len) = 0;
virtual rtError_t InvalidCache(const uint64_t base, const size_t len) = 0;
virtual rtError_t DeviceL2CacheFlush() = 0;
virtual rtError_t MemCopySync(
void* const dst, uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind_t kind,
const uint32_t checkKind = INVALID_CHECK_KIND) = 0;
virtual rtError_t MemCopySyncEx(
void* const dst, uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind_t kind) = 0;
virtual rtError_t MemcpyAsync(
void* const dst, uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind_t kind,
Stream* const stm, const rtTaskCfgInfo_t* const cfgInfo = nullptr,
const rtD2DAddrCfgInfo_t* const addrCfg = nullptr, bool checkKind = true,
const rtMemcpyConfig_t* const memcpyConfig = nullptr) = 0;
virtual rtError_t LaunchSqeUpdateTask(
uint32_t streamId, uint32_t taskId, void* src, uint64_t cnt, Stream* const stm, bool needCpuTask = false) = 0;
virtual rtError_t MemcpyAsyncPtr(
void* const memcpyAddrInfo, const uint64_t destMax, const uint64_t count, Stream* stm,
const rtTaskCfgInfo_t* const cfgInfo = nullptr, const bool isMemcpyDesc = false) = 0;
virtual rtError_t ReduceAsync(
void* const dst, const void* const src, const uint64_t cnt, const rtRecudeKind_t kind, const rtDataType_t type,
Stream* const stm, const rtTaskCfgInfo_t* const cfgInfo = nullptr) = 0;
virtual rtError_t ReduceAsyncV2(
void* const dst, const void* const src, const uint64_t cnt, const rtRecudeKind_t kind, const rtDataType_t type,
Stream* const stm, void* const overflowAddr) = 0;
virtual rtError_t MemSetSync(
const void* const devPtr, const uint64_t destMax, const uint32_t val, const uint64_t cnt) = 0;
virtual rtError_t MemsetAsync(
void* const ptr, const uint64_t destMax, const uint32_t val, const uint64_t cnt, Stream* const stm) = 0;
virtual rtError_t MemsetD32(
void* const dst, const uint64_t destMax, const uint32_t value, const uint64_t count) = 0;
virtual rtError_t MemsetD32Async(
void* const dst, const uint64_t destMax, const uint32_t value, const uint64_t count, Stream* const stm) = 0;
virtual rtError_t MemGetInfoByDeviceId(
uint32_t deviceId, bool isHugeOnly, size_t* const freeSize, size_t* const totalSize) = 0;
virtual rtError_t MemGetInfo(size_t* const freeSize, size_t* const totalSize) = 0;
virtual rtError_t MemGetInfoByType(const int32_t devId, const rtMemType_t type, rtMemInfo_t* const info) = 0;
virtual rtError_t CheckMemType(
void** addrs, uint32_t size, uint32_t memType, uint32_t* checkResult, uint32_t reserve) = 0;
virtual rtError_t GetMemUsageInfo(
const uint32_t deviceId, rtMemUsageInfo_t* const memUsageInfo, const size_t inputNum,
size_t* const outputNum) = 0;
virtual rtError_t MemGetInfoEx(
const rtMemInfoType_t memInfoType, size_t* const freeSize, size_t* const totalSize) = 0;
virtual rtError_t PointerGetAttributes(rtPointerAttributes_t* const attributes, const void* const ptr) = 0;
virtual rtError_t PtrGetAttributes(const void* const ptr, rtPtrAttributes_t* const attributes) = 0;
virtual rtError_t MemManagedGetAttr(
rtMemManagedRangeAttribute attribute, const void* ptr, size_t size, void* data, size_t dataSize) = 0;
virtual rtError_t MemManagedGetAttrs(
rtMemManagedRangeAttribute* attributes, size_t numAttributes, const void* ptr, size_t size, void** data,
size_t* dataSizes) = 0;
virtual rtError_t MemPrefetchToDevice(const void* const devPtr, const uint64_t len, const int32_t devId) = 0;
virtual rtError_t MemCopy2DSync(
void* const dst, const uint64_t dstPitch, const void* const src, const uint64_t srcPitch, const uint64_t width,
const uint64_t height, const rtMemcpyKind_t kind = RT_MEMCPY_RESERVED,
const rtMemcpyKind newKind = RT_MEMCPY_KIND_MAX) = 0;
virtual rtError_t MemCopy2DAsync(
void* const dst, const uint64_t dstPitch, const void* const src, const uint64_t srcPitch, const uint64_t width,
const uint64_t height, Stream* const stm, const rtMemcpyKind_t kind = RT_MEMCPY_RESERVED,
const rtMemcpyKind newKind = RT_MEMCPY_KIND_MAX) = 0;
virtual rtError_t MemcpyHostTask(
void* const dst, const uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind_t kind,
Stream* const stm) = 0;
virtual rtError_t GetDevArgsAddr(Stream* stm, rtArgsEx_t* argsInfo, void** devArgsAddr, void** argsHandle) = 0;
virtual rtError_t ReserveMemAddress(
void** devPtr, size_t size, size_t alignment, void* devAddr, uint64_t flags) = 0;
virtual rtError_t ReleaseMemAddress(void* devPtr) = 0;
virtual rtError_t MallocPhysical(rtDrvMemHandle* handle, size_t size, rtDrvMemProp_t* prop, uint64_t flags) = 0;
virtual rtError_t FreePhysical(rtDrvMemHandle handle) = 0;
virtual rtError_t MapMem(void* devPtr, size_t size, size_t offset, rtDrvMemHandle handle, uint64_t flags) = 0;
virtual rtError_t UnmapMem(void* devPtr) = 0;
virtual rtError_t MemMapNoAccess(
void* virPtr, size_t size, size_t offset, rtDrvMemHandle handle, uint64_t flags) = 0;
virtual rtError_t MemSetAccess(void* virPtr, size_t size, rtMemAccessDesc* desc, size_t count) = 0;
virtual rtError_t MemGetAccess(void* virPtr, rtMemLocation* location, uint64_t* flags) = 0;
virtual rtError_t ExportToShareableHandle(
rtDrvMemHandle handle, rtDrvMemHandleType handleType, uint64_t flags, uint64_t* shareableHandle) = 0;
virtual rtError_t ExportToShareableHandleV2(
rtDrvMemHandle handle, rtMemSharedHandleType handleType, uint64_t flags, void* shareableHandle) = 0;
virtual rtError_t ImportFromShareableHandle(uint64_t shareableHandle, int32_t devId, rtDrvMemHandle* handle) = 0;
virtual rtError_t ImportFromShareableHandleV2(
const void* shareableHandle, rtMemSharedHandleType handleType, uint64_t flags, int32_t devId,
rtDrvMemHandle* handle) = 0;
virtual rtError_t SetPidToShareableHandle(uint64_t shareableHandle, int32_t pid[], uint32_t pidNum) = 0;
virtual rtError_t SetPidToShareableHandleV2(
const void* shareableHandle, rtMemSharedHandleType handleType, int32_t pid[], uint32_t pidNum) = 0;
virtual rtError_t GetAllocationGranularity(
rtDrvMemProp_t* prop, rtDrvMemGranularityOptions option, size_t* granularity) = 0;
virtual rtError_t RtsMemcpyAsync(
void* const dst, const uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind kind,
rtMemcpyConfig_t* const config, Stream* const stm) = 0;
virtual rtError_t RtsMemcpy(
void* const dst, const uint64_t destMax, const void* const src, const uint64_t cnt, const rtMemcpyKind kind,
rtMemcpyConfig_t* const config) = 0;
virtual rtError_t SetMemcpyDesc(
rtMemcpyDesc_t desc, const void* const srcAddr, const void* const dstAddr, const size_t count,
const rtMemcpyKind kind, rtMemcpyConfig_t* const config) = 0;
virtual rtError_t MemcpyAsyncWithDesc(
rtMemcpyDesc_t desc, Stream* stm, const rtMemcpyKind kind, rtMemcpyConfig_t* const config) = 0;
virtual rtError_t MemReserveAddress(
void** virPtr, size_t size, rtMallocPolicy policy, void* expectAddr, rtMallocConfig_t* cfg) = 0;
virtual rtError_t MemMallocPhysical(
rtMemHandle* handle, size_t size, rtMallocPolicy policy, rtMallocConfig_t* cfg) = 0;
virtual rtError_t MemRetainAllocationHandle(void* virPtr, rtDrvMemHandle* handle) = 0;
virtual rtError_t MemGetAllocationPropertiesFromHandle(rtDrvMemHandle handle, rtDrvMemProp_t* prop) = 0;
virtual rtError_t MemGetAddressRange(void* ptr, void** pbase, size_t* psize) = 0;
virtual rtError_t DevMalloc(
void** const devPtr, const uint64_t size, rtMallocPolicy policy, rtMallocAdvise advise,
const rtMallocConfig_t* const cfg) = 0;
virtual rtError_t MemWriteValue(
const void* const devAddr, const uint64_t value, const uint32_t flag, Stream* const stm) = 0;
virtual rtError_t MemWaitValue(
const void* const devAddr, const uint64_t value, const uint32_t flag, Stream* const stm) = 0;
virtual rtError_t MemcpyBatch(
void** dsts, void** srcs, size_t* sizes, size_t count, rtMemcpyBatchAttr* attrs, size_t* attrsIdxs,
size_t numAttrs, size_t* failIdx) = 0;
virtual rtError_t MemcpyBatchAsync(
void** const dsts, const size_t* const destMaxs, void** const srcs, const size_t* const sizes,
const size_t count, const rtMemcpyBatchAttr* const attrs, const size_t* const attrsIdxs, const size_t numAttrs,
size_t* const failIdx, Stream* const stm) = 0;
virtual rtError_t MemManagedPrefetchAsync(
const void* ptr, size_t size, rtMemManagedLocation location, uint32_t flags, Stream* const stream) = 0;
virtual rtError_t MemManagedPrefetchBatchAsync(
const void** ptrs, size_t* sizes, size_t count, rtMemManagedLocation* prefetchLocs, size_t* prefetchLocIdxs,
size_t numPrefetchLocs, uint64_t flags, Stream* const stream) = 0;
virtual rtError_t MemMapSelectedLink(void* virPtrDst, size_t size, void* virPtrSrc, uint32_t linkIdx) = 0;
virtual rtError_t MemMapSetLink(rtDrvMemHandle handle, rtMemLinkType adviceLink) = 0;
virtual rtError_t GetDeviceStatus(const int32_t devId, rtDevStatus_t* const status) = 0;
virtual rtError_t HdcServerCreate(
const int32_t devId, const rtHdcServiceType_t type, rtHdcServer_t* const server) = 0;
virtual rtError_t HdcServerDestroy(rtHdcServer_t const server) = 0;
virtual rtError_t HdcSessionConnect(
const int32_t peerNode, const int32_t peerDevId, rtHdcClient_t const client, rtHdcSession_t* const session) = 0;
virtual rtError_t HdcSessionClose(rtHdcSession_t const session) = 0;
virtual rtError_t GetHostCpuDevId(int32_t* const devId) = 0;
virtual rtError_t GetDeviceCount(int32_t* const cnt) = 0;
virtual rtError_t OpenNetService(const rtNetServiceOpenArgs* args) = 0;
virtual rtError_t CloseNetService() = 0;
virtual rtError_t GetDeviceIDs(uint32_t* const devId, uint32_t len) = 0;
virtual rtError_t SetDevice(const int32_t devId) = 0;
virtual rtError_t GetDevice(int32_t* const devId) = 0;
virtual rtError_t GetDevicePhyIdByIndex(const uint32_t devIndex, uint32_t* const phyId) = 0;
virtual rtError_t GetDeviceIndexByPhyId(const uint32_t phyId, uint32_t* const devIndex) = 0;
virtual rtError_t DeviceReset(const int32_t devId, const bool isForceReset = false) = 0;
virtual rtError_t DeviceSetLimit(const int32_t devId, const rtLimitType_t type, const uint32_t val) = 0;
virtual rtError_t DeviceGetLimit(const rtLimitType_t type, uint32_t* val) = 0;
virtual rtError_t DeviceSynchronize(const int32_t timeout = -1) = 0;
virtual rtError_t DeviceTaskAbort(const int32_t devId, const uint32_t timeout) = 0;
virtual rtError_t DeviceGetStreamPriorityRange(int32_t* const leastPriority, int32_t* const greatestPriority) = 0;
virtual rtError_t GetDeviceInfo(
const uint32_t deviceId, const int32_t moduleType, const int32_t infoType, int64_t* const val) = 0;
virtual rtError_t GetDeviceInfoFromPlatformInfo(
const uint32_t deviceId, const std::string& label, const std::string& key, int64_t* const value) = 0;
virtual rtError_t GetDeviceInfoByAttr(uint32_t deviceId, rtDevAttr attr, int64_t* val) = 0;
virtual rtError_t GetPhyDeviceInfo(
const uint32_t phyId, const int32_t moduleType, const int32_t infoType, int64_t* const val) = 0;
virtual rtError_t DeviceSetTsId(const uint32_t tsId) = 0;
virtual rtError_t DeviceGetTsId(uint32_t* tsId) = 0;
virtual rtError_t EnableP2P(const uint32_t devIdDes, const uint32_t phyIdSrc, const uint32_t flag) = 0;
virtual rtError_t DisableP2P(const uint32_t devIdDes, const uint32_t phyIdSrc) = 0;
virtual rtError_t DeviceCanAccessPeer(
int32_t* const canAccessPeer, const uint32_t devId, const uint32_t peerDevice) = 0;
virtual rtError_t GetP2PStatus(const uint32_t devIdDes, const uint32_t phyIdSrc, uint32_t* const status) = 0;
virtual rtError_t DeviceGetBareTgid(uint32_t* const pid) = 0;
virtual rtError_t GetPairDevicesInfo(
const uint32_t devId, const uint32_t otherDevId, const int32_t infoType, int64_t* const val) = 0;
virtual rtError_t GetPairPhyDevicesInfo(
const uint32_t devId, const uint32_t otherDevId, const int32_t infoType, int64_t* const val) = 0;
virtual rtError_t GetRtCapability(
const rtFeatureType_t featureType, const int32_t featureInfo, int64_t* const val) = 0;
virtual rtError_t GetDeviceCapability(
const int32_t deviceId, const int32_t moduleType, const int32_t featureType, int32_t* const val) = 0;
virtual rtError_t GetDevMsg(const rtGetDevMsgType_t getMsgType, const rtGetMsgCallback callback) = 0;
virtual rtError_t ModelCheckArchVersion(const char_t* omsocVersion) = 0;
virtual rtError_t DeviceStatusQuery(const uint32_t devId, rtDeviceStatus* deviceStatus) = 0;
virtual rtError_t GetFaultEvent(
const int32_t deviceId, rtDmsEventFilter* filter, rtDmsFaultEvent* dmsEvent, uint32_t len,
uint32_t* eventCount) = 0;
virtual rtError_t GetMemUceInfo(const uint32_t deviceId, rtMemUceInfo* memUceInfo) = 0;
virtual rtError_t MemUceRepair(const uint32_t deviceId, rtMemUceInfo* memUceInfo) = 0;
virtual rtError_t DeviceResourceClean(const int32_t devId) = 0;
virtual rtError_t SetDefaultDeviceId(const int32_t deviceId) = 0;
virtual rtError_t DeviceResetForce(const int32_t devId) = 0;
virtual rtError_t SetDeviceFailureMode(uint64_t failureMode) = 0;
virtual rtError_t GetLastErr(rtLastErrLevel_t level) = 0;
virtual rtError_t PeekLastErr(rtLastErrLevel_t level) = 0;
virtual rtError_t GetLogicDevIdByUserDevId(const int32_t userDevId, int32_t* const logicDevId) = 0;
virtual rtError_t GetUserDevIdByLogicDevId(const int32_t logicDevId, int32_t* const userDevId) = 0;
virtual rtError_t SetXpuDevice(const rtXpuDevType devType, const uint32_t devId) = 0;
virtual rtError_t ResetXpuDevice(const rtXpuDevType devType, const uint32_t devId) = 0;
virtual rtError_t GetXpuDevCount(const rtXpuDevType devType, uint32_t* devCount) = 0;
virtual rtError_t GetDeviceUuid(const int32_t devId, rtUuid_t* uuid) = 0;
virtual rtError_t GetDevicePCIBusId(const int32_t devId, char* pciBusId, const int32_t len) = 0;
virtual rtError_t GetDeviceByPCIBusId(const char* pciBusId, int32_t* devId) = 0;
virtual rtError_t GetHostAtomicCapabilities(
uint32_t* capabilities, const rtAtomicOperation* operations, const uint32_t count, int32_t deviceId) = 0;
virtual rtError_t GetP2PAtomicCapabilities(
uint32_t* capabilities, const rtAtomicOperation* operations, const uint32_t count, int32_t srcDeviceId,
int32_t dstDeviceId) = 0;
virtual rtError_t ContextCreate(Context** const inCtx, const int32_t devId) = 0;
virtual rtError_t ContextDestroy(Context* const inCtx) = 0;
virtual rtError_t ContextSetCurrent(Context* const inCtx) = 0;
virtual rtError_t ContextGetCurrent(Context** const inCtx) = 0;
virtual rtError_t ContextGetDevice(int32_t* const devId) = 0;
virtual rtError_t ContextSetINFMode(const bool infMode) = 0;
virtual rtError_t CtxGetCurrentDefaultStream(Stream** const stm) = 0;
virtual rtError_t GetPrimaryCtxState(const int32_t devId, uint32_t* flags, int32_t* active) = 0;
virtual rtError_t NameStream(Stream* const stm, const char_t* const name) = 0;
virtual rtError_t ProfilerStart(
const uint64_t profConfig, const int32_t numsDev, uint32_t* const deviceList, const uint32_t cacheFlag,
const uint64_t profSwitchHi = 0) = 0;
virtual rtError_t ProfilerStop(
const uint64_t profConfig, const int32_t numsDev, uint32_t* const deviceList,
const uint64_t profSwitchHi = 0) = 0;
virtual rtError_t GetBinaryDeviceBaseAddr(const Program* const prog, void** deviceBase) = 0;
virtual rtError_t ProfilerTrace(
const uint64_t id, const bool notifyFlag, const uint32_t flags, Stream* const stm) = 0;
virtual rtError_t ProfilerTraceEx(
const uint64_t id, const uint64_t modelId, const uint16_t tagId, Stream* const stm) = 0;
virtual rtError_t StartOnlineProf(Stream* const stm, const uint32_t sampleNum) = 0;
virtual rtError_t StopOnlineProf(Stream* const stm) = 0;
virtual rtError_t GetOnlineProfData(
Stream* const stm, rtProfDataInfo_t* const pProfData, const uint32_t profDataNum) = 0;
virtual rtError_t AdcProfiler(const uint64_t addr, const uint32_t length) = 0;
virtual rtError_t SetMsprofReporterCallback(const MsprofReporterCallback callback) = 0;
virtual rtError_t GetMaxStreamAndTask(
const uint32_t streamType, uint32_t* const maxStrCount, uint32_t* const maxTaskCount) = 0;
virtual rtError_t GetAvailStreamNum(const uint32_t streamType, uint32_t* const streamCount) = 0;
virtual rtError_t GetFreeStreamNum(uint32_t* const streamCount) = 0;
virtual rtError_t GetAvailEventNum(uint32_t* const eventCount) = 0;
virtual rtError_t GetTaskIdAndStreamID(uint32_t* const taskId, uint32_t* const streamId) = 0;
virtual rtError_t ModelCreate(Model** const mdl, uint32_t flag) = 0;
virtual rtError_t ModelSetExtId(Model* const mdl, uint32_t extId) = 0;
virtual rtError_t ModelDestroy(Model* const mdl) = 0;
virtual rtError_t ModelBindStream(Model* const mdl, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t ModelUnbindStream(Model* const mdl, Stream* const stm) = 0;
virtual rtError_t ModelLoadComplete(Model* const mdl) = 0;
virtual rtError_t ModelExecute(Model* const mdl, Stream* const stm, const uint32_t flag, int32_t timeout = -1) = 0;
virtual rtError_t ModelExecuteSync(Model* const mdl, int32_t timeout = -1) = 0;
virtual rtError_t ModelExecuteAsync(Model* const mdl, Stream* const stm) = 0;
virtual rtError_t ModelGetTaskId(Model* const mdl, uint32_t* const taskId, uint32_t* const streamId) = 0;
virtual rtError_t ModelGetId(Model* const mdl, uint32_t* const modelId) = 0;
virtual rtError_t ModelEndGraph(Model* const mdl, Stream* const stm, const uint32_t flags) = 0;
virtual rtError_t ModelExecutorSet(Model* const mdl, const uint8_t flags) = 0;
virtual rtError_t ModelAbort(Model* const mdl) = 0;
virtual rtError_t ModelExit(Model* const mdl, Stream* const stm) = 0;
virtual rtError_t ModelBindQueue(Model* const mdl, const uint32_t queueId, const rtModelQueueFlag_t flag) = 0;
virtual rtError_t ModelNameSet(Model* const mdl, const char_t* const name) = 0;
virtual rtError_t ModelGetName(Model* const mdl, const uint32_t maxLen, char_t* const mdlName) = 0;
virtual rtError_t DebugRegister(
Model* const mdl, const uint32_t flag, const void* const addr, uint32_t* const streamId,
uint32_t* const taskId) = 0;
virtual rtError_t DebugUnRegister(Model* const mdl) = 0;
virtual rtError_t DebugRegisterForStream(
Stream* const stm, const uint32_t flag, const void* const addr, uint32_t* const streamId,
uint32_t* const taskId) = 0;
virtual rtError_t DebugUnRegisterForStream(Stream* const stm) = 0;
virtual rtError_t ModelSetSchGroupId(Model* const mdl, const int16_t schGrpId) = 0;
virtual rtError_t ModelTaskUpdate(
Stream* desStm, uint32_t desTaskId, Stream* sinkStm, rtMdlTaskUpdateInfo_t* para) = 0;
virtual rtError_t ModelGetNodes(const Model* const mdl, uint32_t* const num) = 0;
virtual rtError_t ModelDebugDotPrint(const Model* const mdl) = 0;
virtual rtError_t ModelDebugJsonPrint(const Model* const mdl, const char* path, const uint32_t flags) = 0;
virtual rtError_t StreamAddToModel(Stream* const stm, Model* const captureMdl) = 0;
virtual rtError_t ModelGetStreams(const Model* const mdl, Stream** streams, uint32_t* numStreams) = 0;
virtual rtError_t StreamGetTasks(Stream* const stm, void** tasks, uint32_t* numTasks) = 0;
virtual rtError_t TaskGetType(rtTask_t task, rtTaskType* type) = 0;
virtual rtError_t ModelUpdate(Model* mdl) = 0;
virtual rtError_t TaskGetSeqId(rtTask_t task, uint32_t* id) = 0;
virtual rtError_t ModelDestroyRegisterCallback(Model* const mdl, const rtCallback_t fn, void* ptr) = 0;
virtual rtError_t ModelDestroyUnregisterCallback(Model* const mdl, rtCallback_t const fn) = 0;
virtual rtError_t ModelTaskDisable(rtTask_t task) = 0;
virtual rtError_t ModelCondHandleCreate(
Model* const mdl, uint32_t defaultValue, rtCondHandleFlag_t flag, CondHandle** const handle) = 0;
virtual rtError_t ModelCondHandleGetCondPtr(CondHandle* const handle, uint64_t** const devPtr) = 0;
virtual rtError_t StreamAddCondTask(rtCondTaskParams params, Stream* const stm, uint32_t flags) = 0;
virtual rtError_t SetDeviceSatMode(const rtFloatOverflowMode_t floatOverflowMode) = 0;
virtual rtError_t GetDeviceSatMode(rtFloatOverflowMode_t* const floatOverflowMode) = 0;
virtual rtError_t GetDeviceSatModeForStream(Stream* const stm, rtFloatOverflowMode_t* const floatOverflowMode) = 0;
virtual rtError_t SetStreamOverflowSwitch(Stream* const stm, const uint32_t flags) = 0;
virtual rtError_t GetStreamOverflowSwitch(Stream* const stm, uint32_t* const flags) = 0;
virtual rtError_t SetStreamPriorityValue(Stream* const stm, const uint32_t streamPriority) = 0;
virtual rtError_t GetStreamPriorityValue(Stream* const stm, uint32_t* const streamPriority) = 0;
virtual rtError_t StreamSetAttribute(
Stream* const stm, const rtStreamAttr stmAttrId, const rtStreamAttrValue_t* const attrValue) = 0;
virtual rtError_t StreamGetAttribute(
Stream* const stm, const rtStreamAttr stmAttrId, rtStreamAttrValue_t* const attrValue) = 0;
virtual rtError_t SetExceptCallback(const rtErrorCallback callback) = 0;
virtual rtError_t SetTaskAbortCallBack(
const char_t* regName, void* callback, void* args, TaskAbortCallbackType type) = 0;
virtual rtError_t SetTaskFailCallback(void* callback, void* args, TaskFailCallbackType type) = 0;
virtual rtError_t RegDeviceStateCallback(
const char_t* regName, void* callback, void* args, DeviceStateCallback type,
rtDevCallBackDir_t notifyPos = DEV_CB_POS_BACK) = 0;
virtual rtError_t RegProfCtrlCallback(const uint32_t moduleId, const rtProfCtrlHandle callback) = 0;
virtual rtError_t RegTaskFailCallbackByModule(
const char_t* regName, void* callback, void* args, TaskFailCallbackType type) = 0;
virtual rtError_t RegStreamStateCallback(
const char_t* regName, void* callback, void* args, StreamStateCallback type) = 0;
virtual rtError_t XpuSetTaskFailCallback(const rtXpuDevType devType, const char_t* moduleName, void* callback) = 0;
virtual rtError_t IpcSetMemoryAttr(const char* name, uint32_t type, uint64_t attr) = 0;
virtual rtError_t NopTask(Stream* const stm) = 0;
virtual rtError_t SetIpcNotifyPid(const char_t* const name, int32_t pid[], const int32_t num) = 0;
virtual rtError_t RDMASend(const uint32_t sqIndex, const uint32_t wqeIndex, Stream* const stm) = 0;
virtual rtError_t RdmaDbSend(const uint32_t dbIndex, const uint64_t dbInfo, Stream* const stm) = 0;
virtual rtError_t NotifyCreate(
const int32_t deviceId, Notify** const notify, uint64_t flag = RT_NOTIFY_FLAG_DEFAULT) = 0;
virtual rtError_t NotifyDestroy(Notify* const notify) = 0;
virtual rtError_t NotifyRecord(Notify* const notify, Stream* const stm) = 0;
virtual rtError_t NotifyReset(Notify* const notify) = 0;
virtual rtError_t ResourceClean(int32_t devId, rtIdType_t type) = 0;
virtual rtError_t NotifyWait(Notify* const notify, Stream* const stm, const uint32_t timeOut) = 0;
virtual rtError_t GetNotifyID(Notify* const notify, uint32_t* const notifyId) = 0;
virtual rtError_t GetNotifyPhyInfo(Notify* const notify, rtNotifyPhyInfo* notifyInfo) = 0;
virtual rtError_t IpcSetNotifyName(
Notify* const notify, char_t* const name, const uint32_t len, const uint64_t flag = 0UL) = 0;
virtual rtError_t IpcOpenNotify(
Notify** const notify, const char_t* const name, uint32_t flag = RT_NOTIFY_FLAG_DEFAULT) = 0;
virtual rtError_t NotifyGetAddrOffset(Notify* const notify, uint64_t* const devAddrOffset) = 0;
virtual rtError_t WriteValuePtr(void* const writeValueInfo, Stream* const stm, void* const pointedAddr) = 0;
virtual rtError_t CntNotifyCreate(
const int32_t deviceId, CountNotify** const cntNotify, const uint32_t flag = RT_NOTIFY_FLAG_DEFAULT) = 0;
virtual rtError_t CntNotifyDestroy(CountNotify* const inCntNotify) = 0;
virtual rtError_t CntNotifyRecord(
CountNotify* const inCntNotify, Stream* const stm, const rtCntNtyRecordInfo_t* const info) = 0;
virtual rtError_t CntNotifyWaitWithTimeout(
CountNotify* const inCntNotify, Stream* const stm, const rtCntNtyWaitInfo_t* const info) = 0;
virtual rtError_t CntNotifyReset(CountNotify* const inCntNotify, Stream* const stm) = 0;
virtual rtError_t GetCntNotifyAddress(
CountNotify* const inCntNotify, uint64_t* const cntNotifyAddress, rtNotifyType_t const regType) = 0;
virtual rtError_t GetCntNotifyId(CountNotify* inCntNotify, uint32_t* const notifyId) = 0;
virtual rtError_t WriteValue(rtWriteValueInfo_t* const info, Stream* const stm) = 0;
virtual rtError_t CCULaunch(rtCcuTaskInfo_t* taskInfo, Stream* const stm) = 0;
virtual rtError_t UbDevQueryInfo(rtUbDevQueryCmd cmd, void* devInfo) = 0;
virtual rtError_t GetDevResAddress(const rtDevResInfo* const resInfo, rtDevResAddrInfo* const addrInfo) = 0;
virtual rtError_t ReleaseDevResAddress(rtDevResInfo* const resInfo) = 0;
virtual rtError_t StreamSwitchEx(
void* const ptr, const rtCondition_t condition, void* const valuePtr, Stream* const trueStream,
Stream* const stm, const rtSwitchDataType_t dataType) = 0;
virtual rtError_t StreamActive(Stream* const activeStream, Stream* const stm) = 0;
virtual rtError_t StreamSwitchN(
void* const ptr, const uint32_t size, void* const valuePtr, Stream** const trueStreamPtr,
const uint32_t elementSize, Stream* const stm, const rtSwitchDataType_t dataType) = 0;
virtual rtError_t LabelCreate(Label** const lbl, Model* const mdl) = 0;
virtual rtError_t LabelDestroy(Label* const lbl) = 0;
virtual rtError_t LabelSet(Label* const lbl, Stream* const stm) = 0;
virtual rtError_t LabelGoto(Label* const lbl, Stream* const stm) = 0;
virtual rtError_t SubscribeReport(const uint64_t threadId, Stream* const stm) = 0;
virtual rtError_t CallbackLaunch(
const rtCallback_t callBackFunc, void* const fnData, Stream* const stm, const bool isBlock) = 0;
virtual rtError_t ProcessReport(const int32_t timeout, const bool noLog = false) = 0;
virtual rtError_t UnSubscribeReport(const uint64_t threadId, Stream* const stm) = 0;
virtual rtError_t GetRunMode(rtRunMode* const runMode) = 0;
virtual rtError_t GetAicpuDeploy(rtAicpuDeployType_t* const deployType) = 0;
virtual rtError_t GetAiCoreCount(uint32_t* const aiCoreCnt) = 0;
virtual rtError_t GetAiCpuCount(uint32_t* const aiCpuCnt) = 0;
virtual rtError_t XpuProfilingCommandHandle(uint32_t type, void* data, uint32_t len) = 0;
virtual ::rtError_t LabelSwitchByIndex(
void* const ptr, const uint32_t maxVal, void* const labelInfoPtr, Stream* const stm) = 0;
virtual ::rtError_t LabelGotoEx(Label* const lbl, Stream* const stm) = 0;
virtual ::rtError_t LabelListCpy(
Label** const lbl, const uint32_t labelNumber, void* const dst, const uint32_t dstMax) = 0;
virtual ::rtError_t LabelCreateEx(Label** const lbl, Model* const mdl, Stream* const stm) = 0;
virtual rtError_t LabelSwitchListCreate(Label** const labels, const size_t num, void** const labelList) = 0;
virtual rtError_t SetGroup(const int32_t groupId) = 0;
virtual rtError_t GetGroupCount(uint32_t* const cnt) = 0;
virtual rtError_t GetGroupInfo(const int32_t groupId, rtGroupInfo_t* const groupInfo, const uint32_t cnt) = 0;
virtual rtError_t SetOpWaitTimeOut(const uint32_t timeout) = 0;
virtual rtError_t SetOpExecuteTimeOut(const uint32_t timeout, const RtTaskTimeUnitType timeUnitType) = 0;
virtual rtError_t GetOpExecuteTimeOut(uint32_t* const timeout) = 0;
virtual rtError_t GetOpExecuteTimeoutV2(uint32_t* const timeout) = 0;
virtual rtError_t CheckArchCompatibility(
const char_t* socVersion, const char_t* omSocVersion, int32_t* canCompatible) = 0;
virtual rtError_t GetOpTimeOutInterval(uint64_t* interval) = 0;
virtual rtError_t SetOpExecuteTimeOutV2(uint64_t timeout, uint64_t* actualTimeout) = 0;
virtual rtError_t StarsTaskLaunch(
const void* const sqe, const uint32_t sqeLen, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t FftsPlusTaskLaunch(
const rtFftsPlusTaskInfo_t* const fftsPlusTaskInfo, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t NpuGetFloatStatus(
void* const outputAddrPtr, const uint64_t outputSize, const uint32_t checkMode, Stream* const stm) = 0;
virtual rtError_t NpuClearFloatStatus(const uint32_t checkMode, Stream* const stm) = 0;
virtual rtError_t NpuGetFloatDebugStatus(
void* const outputAddrPtr, const uint64_t outputSize, const uint32_t checkMode, Stream* const stm) = 0;
virtual rtError_t NpuClearFloatDebugStatus(const uint32_t checkMode, Stream* const stm) = 0;
virtual rtError_t GetC2cCtrlAddr(uint64_t* const addr, uint32_t* const len) = 0;
virtual rtError_t GetL2CacheOffset(uint32_t deviceId, uint64_t* offset) = 0;
virtual rtError_t MemQueueInitQS(const int32_t devId, const char_t* const grpName) = 0;
virtual rtError_t MemQueueInitFlowGw(const int32_t devId, const rtInitFlowGwInfo_t* const initInfo) = 0;
virtual rtError_t MemQueueCreate(
const int32_t devId, const rtMemQueueAttr_t* const queAttr, uint32_t* const qid) = 0;
virtual rtError_t MemQueueExport(
const int32_t devId, const uint32_t qid, const int32_t peerDevId, const char* const shareName) = 0;
virtual rtError_t MemQueueUnExport(
const int32_t devId, const uint32_t qid, const int32_t peerDevId, const char* const shareName) = 0;
virtual rtError_t MemQueueImport(
const int32_t devId, const int32_t peerDevId, const char* const shareName, uint32_t* const qid) = 0;
virtual rtError_t MemQueueUnImport(
const int32_t devId, const uint32_t qid, const int32_t peerDevId, const char* const shareName) = 0;
virtual rtError_t MemQueueSet(
const int32_t devId, rtMemQueueSetCmdType cmd, const rtMemQueueSetInputPara* const input) = 0;
virtual rtError_t MemQueueDestroy(const int32_t devId, const uint32_t qid) = 0;
virtual rtError_t MemQueueInit(const int32_t devId) = 0;
virtual rtError_t MemQueueReset(const int32_t devId, const uint32_t qid) = 0;
virtual rtError_t MemQueueEnQueue(const int32_t devId, const uint32_t qid, void* const enQBuf) = 0;
virtual rtError_t MemQueueDeQueue(const int32_t devId, const uint32_t qid, void** const deQBuf) = 0;
virtual rtError_t MemQueuePeek(
const int32_t devId, const uint32_t qid, size_t* const bufLen, const int32_t timeout) = 0;
virtual rtError_t MemQueueEnQueueBuff(
const int32_t devId, const uint32_t qid, rtMemQueueBuff_t* const inBuf, const int32_t timeout) = 0;
virtual rtError_t MemQueueDeQueueBuff(
const int32_t devId, const uint32_t qid, rtMemQueueBuff_t* const outBuf, const int32_t timeout) = 0;
virtual rtError_t MemQueueQuery(
const int32_t devId, const rtMemQueueQueryCmd_t cmd, const void* const inBuff, const uint32_t inLen,
void* const outBuff, uint32_t* const outLen) = 0;
virtual rtError_t MemQueueQueryInfo(
const int32_t devId, const uint32_t qid, rtMemQueueInfo_t* const queryQueueInfo) = 0;
virtual rtError_t MemQueueGrant(
const int32_t devId, const uint32_t qid, const int32_t pid, rtMemQueueShareAttr_t* const attr) = 0;
virtual rtError_t MemQueueAttach(const int32_t devId, const uint32_t qid, const int32_t timeOut) = 0;
virtual rtError_t QueryDevPid(rtBindHostpidInfo_t* const info, int32_t* const devPid) = 0;
virtual rtError_t BuffAlloc(const uint64_t size, void** buff) = 0;
virtual rtError_t BuffConfirm(void* const buff, const uint64_t size) = 0;
virtual rtError_t BuffFree(void* const buff) = 0;
virtual rtError_t MemGrpCreate(const char_t* const name, const rtMemGrpConfig_t* const cfg) = 0;
virtual rtError_t MemGrpCacheAlloc(
const char_t* const name, const int32_t devId, const rtMemGrpCacheAllocPara* const para) = 0;
virtual rtError_t BuffGetInfo(
const rtBuffGetCmdType type, const void* const inBuff, const uint32_t inLen, void* const outBuff,
uint32_t* const outLen) = 0;
virtual rtError_t MemGrpAddProc(
const char_t* const name, const int32_t pid, const rtMemGrpShareAttr_t* const attr) = 0;
virtual rtError_t MemGrpAttach(const char_t* const name, const int32_t timeout) = 0;
virtual rtError_t MemGrpQuery(rtMemGrpQueryInput_t* const input, rtMemGrpQueryOutput_t* const output) = 0;
virtual rtError_t MemQueueGetQidByName(const int32_t devId, const char_t* const name, uint32_t* const qId) = 0;
virtual rtError_t QueueSubF2NFEvent(const int32_t devId, const uint32_t qId, const uint32_t groupId) = 0;
virtual rtError_t QueueSubscribe(
const int32_t devId, const uint32_t qId, const uint32_t groupId, const int32_t type) = 0;
virtual rtError_t BufEventTrigger(const char* const name) = 0;
virtual rtError_t CmoTaskLaunch(const rtCmoTaskInfo_t* const taskInfo, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t CmoAddrTaskLaunch(
void* cmoAddrInfo, const uint64_t destMax, const rtCmoOpCode_t cmoOpCode, Stream* const stm,
const uint32_t flag) = 0;
virtual rtError_t BarrierTaskLaunch(
const rtBarrierTaskInfo_t* const taskInfo, Stream* const stm, const uint32_t flag) = 0;
virtual rtError_t DvppGroupCreate(DvppGrp** grp, const uint32_t flags) = 0;
virtual rtError_t DvppGroupDestory(DvppGrp* grp) = 0;
virtual rtError_t DvppWaitGroupReport(
DvppGrp* const grp, const rtDvppGrpCallback callBackFunc, const int32_t timeout) = 0;
virtual rtError_t SetStreamTag(Stream* const stm, const uint32_t geOpTag) = 0;
virtual rtError_t GetStreamTag(Stream* const stm, uint32_t* const geOpTag) = 0;
static Api* Instance(const uint32_t flags = API_ENV_FLAGS_DEFAULT);
virtual rtError_t GetVisibleDeviceIdByLogicDeviceId(
const int32_t logicDeviceId, int32_t* const visibleDeviceId) = 0;
virtual rtError_t CtxGetOverflowAddr(void** const overflowAddr) = 0;
virtual rtError_t GetDeviceSatStatus(void* const outputAddrPtr, const uint64_t outputSize, Stream* const stm) = 0;
virtual rtError_t CleanDeviceSatStatus(Stream* const stm) = 0;
virtual rtError_t GetAllUtilizations(const int32_t devId, const rtTypeUtil_t kind, uint8_t* const util) = 0;
virtual rtError_t BindHostPid(rtBindHostpidInfo info) = 0;
virtual rtError_t UnbindHostPid(rtBindHostpidInfo info) = 0;
virtual rtError_t QueryProcessHostPid(
int32_t pid, uint32_t* chipId, uint32_t* vfId, uint32_t* hostPid, uint32_t* cpType) = 0;
virtual rtError_t SetStreamSqLockUnlock(Stream* const stm, const bool isLock) = 0;
virtual rtError_t ShrIdSetPodPid(const char* name, uint32_t sdid, int32_t pid) = 0;
virtual rtError_t DevVA2PA(uint64_t devAddr, uint64_t len, Stream* stm, bool isAsync) = 0;
virtual rtError_t StreamClear(Stream* const stm, rtClearStep_t step) = 0;
virtual rtError_t StreamStop(Stream* const stm) = 0;
virtual rtError_t StreamAbort(Stream* const stm) = 0;
virtual rtError_t DebugSetDumpMode(const uint64_t mode) = 0;
virtual rtError_t DebugGetStalledCore(rtDbgCoreInfo_t* const coreInfo) = 0;
virtual rtError_t DebugReadAICore(rtDebugMemoryParam_t* const param) = 0;
virtual rtError_t GetExceptionRegInfo(
const rtExceptionInfo_t* const exceptionInfo, rtExceptionErrRegInfo_t** exceptionErrRegInfo, uint32_t* num) = 0;
virtual rtError_t GetServerIDBySDID(uint32_t sdid, uint32_t* srvId) = 0;
virtual rtError_t GetThreadLastTaskId(uint32_t* const taskId) = 0;
virtual rtError_t LaunchDvppTask(
const void* const sqe, const uint32_t sqeLen, Stream* const stm, rtDvppCfg_t* cfg = nullptr) = 0;
virtual rtError_t LaunchRandomNumTask(const rtRandomNumTaskInfo_t* taskInfo, Stream* const stm, void* reserve) = 0;
virtual rtError_t StreamTaskAbort(Stream* const stm) = 0;
virtual rtError_t StreamRecover(Stream* const stm) = 0;
virtual rtError_t StreamTaskClean(Stream* const stm) = 0;
virtual rtError_t UbDbSend(rtUbDbInfo_t* const dbInfo, Stream* const stm) = 0;
virtual rtError_t UbDirectSend(rtUbWqeInfo_t* const wqeInfo, Stream* const stm) = 0;
virtual rtError_t GetCmoDescSize(size_t* size) = 0;
virtual rtError_t SetCmoDesc(rtCmoDesc_t cmoDesc, void* srcAddr, size_t srcLen) = 0;
virtual rtError_t GetErrorVerbose(const uint32_t deviceId, rtErrorInfo* const errorInfo) = 0;
virtual rtError_t RepairError(const uint32_t deviceId, const rtErrorInfo* const errorInfo) = 0;
virtual rtError_t LaunchDqsTask(Stream* const stm, const rtDqsTaskCfg_t* const taskCfg) = 0;
virtual rtError_t SetStreamCacheOpInfoSwitch(const Stream* const stm, uint32_t cacheOpInfoSwitch) = 0;
virtual rtError_t GetStreamCacheOpInfoSwitch(const Stream* const stm, uint32_t* const cacheOpInfoSwitch) = 0;
virtual rtError_t CacheLastTaskOpInfo(const void* const infoPtr, const size_t infoSize) = 0;
virtual rtError_t CacheLastTaskExtendInfo(const char* const extendInfoPtr, const size_t infoSize) = 0;
virtual rtError_t LaunchHostFunc(Stream* const stm, rtCallback_t const callBackFunc, void* const fnData) = 0;
virtual rtError_t LaunchHostFuncV2(Stream* const stm, rtHostCpuFunc const callBackFunc, void* const fnData) = 0;
virtual rtError_t EventWorkModeSet(uint8_t mode) = 0;
virtual rtError_t EventWorkModeGet(uint8_t* mode) = 0;
virtual rtError_t BinarySetExceptionCallback(Program* binHandle, void* callback, void* userData) = 0;
virtual rtError_t GetFuncHandleFromExceptionInfo(const rtExceptionInfo_t* info, Kernel** const funcHandle) = 0;
virtual rtError_t TaskGetParams(rtTask_t task, rtTaskParams* const params) = 0;
virtual rtError_t TaskSetParams(rtTask_t task, rtTaskParams* const params) = 0;
virtual rtError_t KernelTaskGetAttribute(
rtTask_t task, rtLaunchKernelAttrId attrId, rtLaunchKernelAttrVal_t* attrValue) = 0;
virtual rtError_t SetKernelDfxInfoCallback(rtKernelDfxInfoType type, rtKernelDfxInfoProFunc func) = 0;
virtual rtError_t RegisterParseDfxInfoFunc(rtParseDfxInfoFunc func) = 0;
};
}
}
#endif