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

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