You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

base.h 17 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. /**
  2. * Copyright 2020 Huawei Technologies Co., Ltd
  3. * Licensed under the Apache License, Version 2.0 (the "License");
  4. * you may not use this file except in compliance with the License.
  5. * You may obtain a copy of the License at
  6. * http://www.apache.org/licenses/LICENSE-2.0
  7. * Unless required by applicable law or agreed to in writing, software
  8. * distributed under the License is distributed on an "AS IS" BASIS,
  9. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. * See the License for the specific language governing permissions and
  11. * limitations under the License.
  12. */
  13. #ifndef __CCE_RUNTIME_BASE_H__
  14. #define __CCE_RUNTIME_BASE_H__
  15. #include <stdint.h>
  16. #if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
  17. extern "C" {
  18. #endif
  19. // If you need export the function of this library in Win32 dll, use __declspec(dllexport)
  20. #ifndef RTS_API
  21. #ifdef RTS_DLL_EXPORT
  22. #define RTS_API __declspec(dllexport)
  23. #else
  24. #define RTS_API
  25. #endif
  26. #endif
  27. /**
  28. * @ingroup dvrt_base
  29. * @brief runtime error numbers.
  30. */
  31. typedef enum tagRtError {
  32. RT_ERROR_NONE = 0x0, // success
  33. RT_ERROR_DEVICE_BASE = 0x07010000,
  34. RT_ERROR_DEVICE_NULL,
  35. RT_ERROR_DEVICE_NEW,
  36. RT_ERROR_DEVICE_ID,
  37. RT_ERROR_DEVICE_CHIPTYPE,
  38. RT_ERROR_DEVICE_DEPLOY,
  39. RT_ERROR_DEVICE_RETAIN,
  40. RT_ERROR_DEVICE_PLATFORM,
  41. RT_ERROR_DEVICE_LOADER,
  42. RT_ERROR_DEVICE_LIMIT,
  43. RT_ERROR_DEVICE_PROC_HANG_OUT,
  44. RT_ERROR_DEVICE_POWER_UP_FAIL,
  45. RT_ERROR_DEVICE_POWER_DOWN_FAIL,
  46. RT_ERROR_DEVICE_INVALID,
  47. RT_ERROR_DRV_BASE = 0x07020000,
  48. RT_ERROR_DRV_NULL,
  49. RT_ERROR_DRV_NEW,
  50. RT_ERROR_DRV_MEMORY,
  51. RT_ERROR_DRV_INPUT,
  52. RT_ERROR_DRV_PTRNULL,
  53. RT_ERROR_DRV_OPEN_AICPU,
  54. RT_ERROR_DRV_CLOSE_AICPU,
  55. RT_ERROR_DRV_SYM_AICPU,
  56. RT_ERROR_DRV_OPEN_TSD,
  57. RT_ERROR_DRV_CLOSE_TSD,
  58. RT_ERROR_DRV_SYM_TSD,
  59. RT_ERROR_DRV_SOURCE,
  60. RT_ERROR_DRV_REPORT,
  61. RT_ERROR_DRV_COMMAND,
  62. RT_ERROR_DRV_OCCUPY,
  63. RT_ERROR_DRV_ERR,
  64. RT_ERROR_STREAM_BASE = 0x07030000,
  65. RT_ERROR_STREAM_NULL,
  66. RT_ERROR_STREAM_NEW,
  67. RT_ERROR_STREAM_CONTEXT,
  68. RT_ERROR_STREAM_INVALID,
  69. RT_ERROR_STREAM_MODEL,
  70. RT_ERROR_STREAM_FUSION,
  71. RT_ERROR_STREAM_FULL,
  72. RT_ERROR_STREAM_EMPTY,
  73. RT_ERROR_STREAM_NOT_COMPLETE,
  74. RT_ERROR_STREAM_SYNC,
  75. RT_ERROR_STREAM_NO_CB_REG,
  76. RT_ERROR_STREAM_DUPLICATE,
  77. RT_ERROR_STREAM_NOT_EXIST,
  78. RT_ERROR_SQ_NO_EXIST_SQ_TO_REUSE,
  79. RT_ERROR_SQID_FULL,
  80. RT_ERROR_MODEL_BASE = 0x07040000,
  81. RT_ERROR_MODEL_NULL,
  82. RT_ERROR_MODEL_NEW,
  83. RT_ERROR_MODEL_CONTEXT,
  84. RT_ERROR_MODEL_ENDGRAPH,
  85. RT_ERROR_MODEL_STREAM,
  86. RT_ERROR_MODEL_EXCUTOR,
  87. RT_ERROR_MODEL_SETUP,
  88. RT_ERROR_MODEL_ID,
  89. RT_ERROR_MODEL_EXE_FAILED,
  90. RT_ERROR_END_OF_SEQUENCE, // end of sequence
  91. RT_ERROR_MODEL_EXIT,
  92. RT_ERROR_MODEL_EXIT_STREAM_UNBIND,
  93. RT_ERROR_MODEL_EXIT_ID,
  94. RT_ERROR_MODEL_ABORT_NORMAL,
  95. RT_ERROR_EVENT_BASE = 0x07050000,
  96. RT_ERROR_EVENT_NULL,
  97. RT_ERROR_EVENT_NEW,
  98. RT_ERROR_EVENT_RECORDER_NULL,
  99. RT_ERROR_EVENT_TIMESTAMP_INVALID,
  100. RT_ERROR_EVENT_TIMESTAMP_REVERSAL,
  101. RT_ERROR_EVENT_NOT_COMPLETE,
  102. RT_ERROR_NOTIFY_BASE = 0x07060000,
  103. RT_ERROR_NOTIFY_NULL,
  104. RT_ERROR_NOTIFY_NEW,
  105. RT_ERROR_NOTIFY_TYPE,
  106. RT_ERROR_NOTIFY_NOT_COMPLETE,
  107. RT_ERROR_CONTEXT_BASE = 0x07070000,
  108. RT_ERROR_CONTEXT_NULL,
  109. RT_ERROR_CONTEXT_NEW,
  110. RT_ERROR_CONTEXT_DEL,
  111. RT_ERROR_CONTEXT_DEFAULT_STREAM_NULL,
  112. RT_ERROR_CONTEXT_ONLINE_STREAM_NULL,
  113. RT_ERROR_KERNEL_BASE = 0x07080000,
  114. RT_ERROR_KERNEL_NULL,
  115. RT_ERROR_KERNEL_NEW,
  116. RT_ERROR_KERNEL_LOOKUP,
  117. RT_ERROR_KERNEL_NAME,
  118. RT_ERROR_KERNEL_TYPE,
  119. RT_ERROR_KERNEL_OFFSET,
  120. RT_ERROR_KERNEL_DUPLICATE,
  121. RT_ERROR_KERNEL_UNREGISTERING,
  122. RT_ERROR_PROGRAM_BASE = 0x07090000,
  123. RT_ERROR_PROGRAM_NULL,
  124. RT_ERROR_PROGRAM_NEW,
  125. RT_ERROR_PROGRAM_DATA,
  126. RT_ERROR_PROGRAM_SIZE,
  127. RT_ERROR_PROGRAM_MEM_TYPE,
  128. RT_ERROR_PROGRAM_MACHINE_TYPE,
  129. RT_ERROR_PROGRAM_USEOUT,
  130. RT_ERROR_MODULE_BASE = 0x070a0000,
  131. RT_ERROR_MODULE_NULL,
  132. RT_ERROR_MODULE_NEW,
  133. RT_ERROR_INSTANCE_BASE = 0x070b0000,
  134. RT_ERROR_INSTANCE_NULL,
  135. RT_ERROR_INSTANCE_NEW,
  136. RT_ERROR_INSTANCE_VERSION,
  137. RT_ERROR_API_BASE = 0x070c0000,
  138. RT_ERROR_API_NULL,
  139. RT_ERROR_API_NEW,
  140. RT_ERROR_DATADUMP_BASE = 0x070d0000,
  141. RT_ERROR_DATADUMP_NULL,
  142. RT_ERROR_DATADUMP_NEW,
  143. RT_ERROR_DATADUMP_TIME,
  144. RT_ERROR_DATADUMP_FILE,
  145. RT_ERROR_DATADUMP_ADDRESS,
  146. RT_ERROR_DATADUMP_LOAD_FAILED,
  147. RT_ERROR_DUMP_ADDR_SET_FAILED,
  148. RT_ERROR_PROF_BASE = 0x070e0000,
  149. RT_ERROR_PROF_NULL,
  150. RT_ERROR_PROF_NEW,
  151. RT_ERROR_PROF_START,
  152. RT_ERROR_PROF_DEVICE_MEM,
  153. RT_ERROR_PROF_HOST_MEM,
  154. RT_ERROR_PROF_SET_DIR,
  155. RT_ERROR_PROF_OPER,
  156. RT_ERROR_PROF_FULL,
  157. RT_ERROR_PROF_NAME,
  158. RT_ERROR_PCTRACE_BASE = 0x070f0000,
  159. RT_ERROR_PCTRACE_NULL,
  160. RT_ERROR_PCTRACE_NEW,
  161. RT_ERROR_PCTRACE_TIME,
  162. RT_ERROR_PCTRACE_FILE,
  163. RT_ERROR_TASK_BASE = 0x07100000,
  164. RT_ERROR_TASK_NULL,
  165. RT_ERROR_TASK_NEW,
  166. RT_ERROR_TASK_TYPE,
  167. RT_ERROR_TASK_ALLOCATOR,
  168. RT_ERROR_COMMON_BASE = 0x07110000,
  169. RT_ERROR_INVALID_VALUE, // RT_ERROR_INPUT_INVALID
  170. RT_ERROR_MEMORY_ADDRESS_UNALIGNED,
  171. RT_ERROR_SEC_HANDLE,
  172. RT_ERROR_OS_HANDLE,
  173. RT_ERROR_MUTEX_LOCK,
  174. RT_ERROR_MUTEX_UNLOCK,
  175. RT_ERROR_CALLOC,
  176. RT_ERROR_POOL_RESOURCE,
  177. RT_ERROR_TRANS_ARGS,
  178. RT_ERROR_METADATA,
  179. RT_ERROR_LOST_HEARTBEAT,
  180. RT_ERROR_REPORT_TIMEOUT,
  181. RT_ERROR_FEATURE_NOT_SUPPROT,
  182. RT_ERROR_MEMORY_ALLOCATION,
  183. RT_ERROR_MEMORY_FREE,
  184. RT_ERROR_INVALID_MEMORY_TYPE,
  185. RT_ERROR_DEBUG_BASE = 0x07120000,
  186. RT_ERROR_DEBUG_NULL,
  187. RT_ERROR_DEBUG_NEW,
  188. RT_ERROR_DEBUG_SIGNAL,
  189. RT_ERROR_DEBUG_OPEN,
  190. RT_ERROR_DEBUG_WRITE,
  191. RT_ERROR_DEBUG_REGISTER_FAILED,
  192. RT_ERROR_DEBUG_UNREGISTER_FAILED,
  193. RT_ERROR_ENGINE_BASE = 0x07130000,
  194. RT_ERROR_ENGINE_NULL,
  195. RT_ERROR_ENGINE_NEW,
  196. RT_ERROR_ENGINE_THREAD,
  197. RT_ERROR_LABEL_BASE = 0x07140000,
  198. RT_ERROR_LABEL_NULL,
  199. RT_ERROR_LABEL_NEW,
  200. RT_ERROR_LABEL_CONTEXT,
  201. RT_ERROR_LABEL_STREAM,
  202. RT_ERROR_LABEL_MODEL,
  203. RT_ERROR_LABEL_ALLOCATOR,
  204. RT_ERROR_LABEL_FREE,
  205. RT_ERROR_LABEL_SET,
  206. RT_ERROR_LABEL_ID,
  207. RT_ERROR_TSFW_BASE = 0x07150000,
  208. RT_ERROR_TSFW_UNKNOWN,
  209. RT_ERROR_TSFW_NULL_PTR,
  210. RT_ERROR_TSFW_ILLEGAL_AI_CORE_ID,
  211. RT_ERROR_TSFW_ILLEGAL_PARAM,
  212. RT_ERROR_TSFW_TASK_CMD_QUEUE_FULL,
  213. RT_ERROR_TSFW_TASK_CMD_QUEUE_EMPTY,
  214. RT_ERROR_TSFW_TASK_REPORT_QUEUE_FULL,
  215. RT_ERROR_TSFW_TASK_REPORT_QUEUE_EMPTY,
  216. RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_OCCUPYED,
  217. RT_ERROR_TSFW_TASK_NODE_BUFF_ALL_FREED,
  218. RT_ERROR_TSFW_L2_MEM_INSUFFICIENT_SPACE,
  219. RT_ERROR_TSFW_L2_MALLOC_FAILED,
  220. RT_ERROR_TSFW_DMA_CHANNEL_ALL_OCCUPYED,
  221. RT_ERROR_TSFW_MEMCPY_OP_FAILED,
  222. RT_ERROR_TSFW_BS_SLOT_ALL_OCCUPYED,
  223. RT_ERROR_TSFW_TBS_SLOT_REPEAT_FREE,
  224. RT_ERROR_TSFW_PRIORITY_TASK_LIST_FULL,
  225. RT_ERROR_TSFW_PRIORITY_TASK_LIST_EMPTY,
  226. RT_ERROR_TSFW_NO_STREAM_LIST_NEED_TO_BE_PROCESSED,
  227. RT_ERROR_TSFW_REPEAT_MARK_STREAM_NEED_SERVICE,
  228. RT_ERROR_TSFW_SYS_DMA_CHANNEL_ALL_OCCUPAPYED,
  229. RT_ERROR_TSFW_NO_HBML2TASKNODE_FOUND,
  230. RT_ERROR_TSFW_SQNODE_NODE_SLOT_ALL_OCCUPAPYED,
  231. RT_ERROR_TSFW_CQNODE_NODE_SLOT_ALL_OCCUPAPYED,
  232. RT_ERROR_TSFW_SQNODE_NOT_ENOUGH,
  233. RT_ERROR_TSFW_SQNODE_SLOT_REPEAT_FREE,
  234. RT_ERROR_TSFW_CQNODE_SLOT_REPEAT_FREE,
  235. RT_ERROR_TSFW_CQ_REPORT_FAILED,
  236. RT_ERROR_TSFW_SYS_DMA_RESET_SUCCESS,
  237. RT_ERROR_TSFW_SYS_DMA_RESET_FAILED,
  238. RT_ERROR_TSFW_SYS_DMA_TRNSFER_FAILED,
  239. RT_ERROR_TSFW_SYS_DMA_MEMADDRALIGN_FAILED,
  240. RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_FULL,
  241. RT_ERROR_TSFW_SYS_DMA_ERROR_QUEUE_EMPTY,
  242. RT_ERROR_TSFW_TIMER_EVENT_FULL,
  243. RT_ERROR_TSFW_TASK_L2_DESC_ENTRY_NOT_ENOUGH,
  244. RT_ERROR_TSFW_AICORE_TIMEOUT,
  245. RT_ERROR_TSFW_AICORE_EXCEPTION,
  246. RT_ERROR_TSFW_AICORE_TRAP_EXCEPTION,
  247. RT_ERROR_TSFW_AICPU_TIMEOUT,
  248. RT_ERROR_TSFW_SDMA_L2_TO_DDR_MALLOC_FAIL,
  249. RT_ERROR_TSFW_AICPU_EXCEPTION,
  250. RT_ERROR_TSFW_AICPU_DATADUMP_RSP_ERR,
  251. RT_ERROR_TSFW_AICPU_MODEL_RSP_ERR,
  252. RT_ERROR_TSFW_REPEAT_ACTIVE_MODEL_STREAM,
  253. RT_ERROR_TSFW_REPEAT_NOTIFY_WAIT,
  254. RT_ERROR_TSFW_DEBUG_INVALID_SQCQ,
  255. RT_ERROR_TSFW_DEBUG_WRONG_COMMAND_TYPE,
  256. RT_ERROR_TSFW_DEBUG_CMD_PROCESS,
  257. RT_ERROR_TSFW_DEBUG_INVALID_DEVICE_STATUS,
  258. RT_ERROR_TSFW_DEBUG_NOT_IN_DEBUG_STATUS,
  259. RT_ERROR_TSFW_DEBUG_INVALID_TASK_STATUS,
  260. RT_ERROR_TSFW_DEBUG_TASK_EMPTY,
  261. RT_ERROR_TSFW_DEBUG_TASK_FULL,
  262. RT_ERROR_TSFW_DEBUG_TASK_NOT_EXIST,
  263. RT_ERROR_TSFW_DEBUG_AI_CORE_FULL,
  264. RT_ERROR_TSFW_DEBUG_AI_CORE_NOT_EXIST,
  265. RT_ERROR_TSFW_DEBUG_AI_CORE_EXCEPTION,
  266. RT_ERROR_TSFW_DEBUG_AI_CORE_TIMEOUT,
  267. RT_ERROR_TSFW_DEBUG_BREAKPOINT_FULL,
  268. RT_ERROR_TSFW_DEBUG_READ_ERROR,
  269. RT_ERROR_TSFW_DEBUG_WRITE_FAIL,
  270. RT_ERROR_TSFW_QUEUE_FULL,
  271. RT_ERROR_TSFW_QUEUE_EMPTY,
  272. RT_ERROR_TSFW_QUEUE_ALLOC_MEM_FAIL,
  273. RT_ERROR_TSFW_QUEUE_DATA_SIZE_UNMATCH,
  274. RT_ERROR_TSFW_PCIE_DMA_INVLD_CPY_TYPE,
  275. RT_ERROR_TSFW_INVLD_CPY_DIR,
  276. RT_ERROR_TSFW_PCIE_DMA_INVLD_CQ_DES,
  277. RT_ERROR_TSFW_PCIE_DMA_CPY_ERR,
  278. RT_ERROR_TSFW_PCIE_DMA_LNK_CHN_BUSY,
  279. RT_ERROR_TSFW_PROFILE_BUFF_FULL,
  280. RT_ERROR_TSFW_PROFILE_MODE_CONFLICT,
  281. RT_ERROR_TSFW_PROFILE_OTHER_PID_ON,
  282. RT_ERROR_TSFW_SCHD_AIC_TASK_PRELOAD_FAILED,
  283. RT_ERROR_TSFW_TSCPU_CLOSE_FAILED,
  284. RT_ERROR_TSFW_EXPECT_FAIL,
  285. RT_ERROR_TSFW_REPEAT_MODEL_STREAM,
  286. RT_ERROR_TSFW_STREAM_MODEL_UNBIND,
  287. RT_ERROR_TSFW_MODEL_EXE_FAILED,
  288. RT_ERROR_TSFW_IPC_SEND_FAILED,
  289. RT_ERROR_TSFW_IPC_PROC_REG_FAILED,
  290. RT_ERROR_TSFW_STREAM_FULL,
  291. RT_ERROR_TSFW_END_OF_SEQUENCE,
  292. RT_ERROR_TSFW_SWITCH_STREAM_LABEL,
  293. RT_ERROR_TSFW_TRANS_SQE_FAIL,
  294. RT_ERROR_TSFW_RESERVED,
  295. RT_ERROR_SUBSCRIBE_BASE = 0x07160000,
  296. RT_ERROR_SUBSCRIBE_NULL,
  297. RT_ERROR_SUBSCRIBE_NEW,
  298. RT_ERROR_SUBSCRIBE_STREAM,
  299. RT_ERROR_SUBSCRIBE_THREAD,
  300. RT_ERROR_SUBSCRIBE_GROUP,
  301. RT_ERROR_GROUP_BASE = 0x07170000,
  302. RT_ERROR_GROUP_NOT_SET,
  303. RT_ERROR_GROUP_NOT_CREATE,
  304. RT_ERROR_RESERVED = 0x07ff0000,
  305. }rtError_t;
  306. /**
  307. * @ingroup dvrt_base
  308. * @brief runtime exception numbers.
  309. */
  310. typedef enum tagRtExceptionType {
  311. RT_EXCEPTION_NONE = 0,
  312. RT_EXCEPTION_TS_DOWN = 1,
  313. RT_EXCEPTION_TASK_TIMEOUT = 2,
  314. RT_EXCEPTION_TASK_FAILURE = 3,
  315. RT_EXCEPTION_DEV_RUNNING_DOWN = 4,
  316. RT_EXCEPTION_STREAM_ID_FREE_FAILED = 5
  317. } rtExceptionType;
  318. /**
  319. * @ingroup dvrt_base
  320. * @brief Switch type.
  321. */
  322. typedef enum tagRtCondition {
  323. RT_EQUAL = 0,
  324. RT_NOT_EQUAL,
  325. RT_GREATER,
  326. RT_GREATER_OR_EQUAL,
  327. RT_LESS,
  328. RT_LESS_OR_EQUAL
  329. } rtCondition_t;
  330. /**
  331. * @ingroup dvrt_base
  332. * @brief Data Type of Extensible Switch Task.
  333. */
  334. typedef enum tagRtSwitchDataType {
  335. RT_SWITCH_INT32 = 0,
  336. RT_SWITCH_INT64 = 1,
  337. } rtSwitchDataType_t;
  338. typedef enum tagRtStreamFlagType {
  339. RT_HEAD_STREAM = 0, // first stream
  340. RT_INVALID_FLAG = 0xFFFFFFFF,
  341. } rtStreamFlagType_t;
  342. typedef enum tagRtLimitType {
  343. RT_LIMIT_TYPE_LOW_POWER_TIMEOUT = 0, // timeout for power down , ms
  344. } rtLimitType_t;
  345. typedef struct rtExceptionInfo {
  346. uint32_t taskid;
  347. uint32_t streamid;
  348. uint32_t tid;
  349. uint32_t deviceid;
  350. } rtExceptionInfo;
  351. typedef void (*rtErrorCallback)(rtExceptionType);
  352. typedef void (*rtTaskFailCallback)(rtExceptionInfo *exceptionInfo);
  353. /**
  354. * @ingroup dvrt_base
  355. * @brief stream handle.
  356. */
  357. typedef void *rtStream_t;
  358. /**
  359. * @ingroup dvrt_base
  360. * @brief runtime event handle.
  361. */
  362. typedef void *rtEvent_t;
  363. /**
  364. * @ingroup dvrt_base
  365. * @brief label handle.
  366. */
  367. typedef void *rtLabel_t;
  368. /**
  369. * @ingroup profiling_base
  370. * @brief runtime handle.
  371. */
  372. RTS_API rtError_t rtSetProfDirEx(const char *profDir, const char *address, const char *jobCtx);
  373. /**
  374. * @ingroup profiling_base
  375. * @brief init profiler object.
  376. */
  377. RTS_API rtError_t rtProfilerInit(const char *profdir, const char *address, const char *job_ctx);
  378. /**
  379. * @ingroup profiling_base
  380. * @brief config rts profiler.
  381. */
  382. RTS_API rtError_t rtProfilerConfig(uint16_t type);
  383. /**
  384. * @ingroup profiling_base
  385. * @brief start rts profiler.
  386. */
  387. RTS_API rtError_t rtProfilerStart(uint64_t profConfig, int32_t numsDev, uint32_t* deviceList);
  388. /**
  389. * @ingroup profiling_base
  390. * @brief stop rts profiler.
  391. */
  392. RTS_API rtError_t rtProfilerStop(uint64_t profConfig, int32_t numsDev, uint32_t* deviceList);
  393. /**
  394. * @ingroup profiling_base
  395. * @brief ts send keypoint profiler log.
  396. */
  397. RTS_API rtError_t rtProfilerTrace(uint64_t id, bool notify, uint32_t flags, rtStream_t stream);
  398. /**
  399. * @ingroup dvrt_base
  400. * @brief Returns the last error from a runtime call.
  401. */
  402. RTS_API rtError_t rtGetLastError();
  403. /**
  404. * @ingroup dvrt_base
  405. * @brief Returns the last error from a runtime call.
  406. */
  407. RTS_API rtError_t rtPeekAtLastError();
  408. /**
  409. * @ingroup dvrt_base
  410. * @brief register callback for error code
  411. * @param [out] NA
  412. * @return RT_ERROR_NONE for ok
  413. */
  414. RTS_API rtError_t rtSetExceptCallback(rtErrorCallback callback);
  415. /**
  416. * @ingroup dvrt_base
  417. * @brief register callback for task fail
  418. * @param [out] NA
  419. * @return RT_ERROR_NONE for ok
  420. */
  421. RTS_API rtError_t rtSetTaskFailCallback(rtTaskFailCallback callback);
  422. /**
  423. * @ingroup dvrt_base
  424. * @brief notify handle.
  425. */
  426. typedef void *rtNotify_t;
  427. /**
  428. * @ingroup dvrt_base
  429. * @brief create label instance
  430. * @param [out] label created label
  431. * @return RT_ERROR_NONE for ok
  432. * @return RT_ERROR_INVALID_VALUE for error input
  433. */
  434. RTS_API rtError_t rtLabelCreate(rtLabel_t *label);
  435. /**
  436. * @ingroup dvrt_base
  437. * @brief set label and stream instance
  438. * @param [in] label set label
  439. * @param [in] stream set stream
  440. * @return RT_ERROR_NONE for ok
  441. * @return RT_ERROR_INVALID_VALUE for error input
  442. */
  443. RTS_API rtError_t rtLabelSet(rtLabel_t label, rtStream_t stream);
  444. /**
  445. * @ingroup dvrt_base
  446. * @brief destroy label instance
  447. * @param [in] label label to destroy
  448. * @return RT_ERROR_NONE for ok
  449. * @return RT_ERROR_INVALID_VALUE for error input
  450. */
  451. RTS_API rtError_t rtLabelDestroy(rtLabel_t label);
  452. /**
  453. * @ingroup dvrt_base
  454. * @brief label switch instance
  455. * @param [in] ptr address to get value compared
  456. * @param [in] condition
  457. * @param [in] value to compare
  458. * @param [in] true_label goto label
  459. * @param [in] stream to submit label_switch task
  460. * @return RT_ERROR_NONE for ok
  461. * @return RT_ERROR_INVALID_VALUE for error input
  462. */
  463. RTS_API rtError_t rtLabelSwitch(void *ptr, rtCondition_t condition, uint32_t value, rtLabel_t trueLabel,
  464. rtStream_t stream);
  465. /**
  466. * @ingroup dvrt_base
  467. * @brief goto label instance
  468. * @param [in] label goto label
  469. * @param [in] stream to submit label_goto task
  470. * @return RT_ERROR_NONE for ok
  471. * @return RT_ERROR_INVALID_VALUE for error input
  472. */
  473. RTS_API rtError_t rtLabelGoto(rtLabel_t label, rtStream_t stream);
  474. /**
  475. * @ingroup dvrt_base
  476. * @brief name label instance
  477. * @param [in] label instance
  478. * @param [in] name label name
  479. * @return RT_ERROR_NONE for ok
  480. * @return RT_ERROR_INVALID_VALUE for error input
  481. */
  482. RTS_API rtError_t rtNameLabel(rtLabel_t label, const char *name);
  483. /**
  484. * @ingroup dvrt_base
  485. * @brief label switch by index
  486. * @param [in] ptr index value ptr
  487. * @param [in] max index max value
  488. * @param [in] labelInfoPtr label content info ptr
  489. * @param [in] stream set stream
  490. * @return RT_ERROR_NONE for ok
  491. * @return RT_ERROR_INVALID_VALUE for error input
  492. */
  493. RTS_API rtError_t rtLabelSwitchByIndex(void *ptr, uint32_t max, void *labelInfoPtr, rtStream_t stream);
  494. /**
  495. * @ingroup dvrt_base
  496. * @brief stream goto label
  497. * @param [in] label goto label
  498. * @param [in] stream stream to submit label_goto task
  499. * @return RT_ERROR_NONE for ok
  500. * @return RT_ERROR_INVALID_VALUE for error input
  501. */
  502. RTS_API rtError_t rtLabelGotoEx(rtLabel_t label, rtStream_t stream);
  503. /**
  504. * @ingroup dvrt_base
  505. * @brief labels to dev info
  506. * @param [in] label model label list
  507. * @param [in] labelNumber label number
  508. * @param [in] dst device ptr
  509. * @param [in] dstMax dst size
  510. * @return RT_ERROR_NONE for ok
  511. * @return RT_ERROR_INVALID_VALUE for error input
  512. */
  513. RTS_API rtError_t rtLabelListCpy(rtLabel_t *label, uint32_t labelNumber, void *dst, uint32_t dstMax);
  514. /**
  515. * @ingroup dvrt_base
  516. * @brief labels to dev info
  517. * @param [out] label created label handle
  518. * @param [in] stream label bind stream
  519. * @return RT_ERROR_NONE for ok
  520. * @return RT_ERROR_INVALID_VALUE for error input
  521. */
  522. RTS_API rtError_t rtLabelCreateEx(rtLabel_t *label, rtStream_t stream);
  523. /**
  524. * @ingroup dvrt_base
  525. * @brief get current thread last stream id and task id
  526. * @param [out] stream id and task id
  527. * @param [in] null
  528. * @return RT_ERROR_NONE for ok
  529. * @return RT_ERROR_INVALID_VALUE for input null ptr
  530. */
  531. RTS_API rtError_t rtGetTaskIdAndStreamID(uint32_t *taskid, uint32_t *streamid);
  532. #if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
  533. }
  534. #endif
  535. #endif // __CCE_RUNTIME_BASE_H__

图引擎模块(GE)是MindSpore的一个子模块,其代码由C++实现,位于前端模块ME和底层硬件之间,起到承接作用。图引擎模块以ME下发的图作为输入,然后进行一系列的深度图优化操作,最后输出一张可以在底层硬件上高效运行的图。GE针对昇腾AI处理器的硬件结构特点,做了特定的优化工作,以此来充分发挥出昇腾AI处理器的强大算力。在进行模型训练/推理时,GE会被自动调用而用户并不感知。GE主要由GE API和GE Core两部分组成,详细的架构图如下所示