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.

rt_stars.h 5.6 kB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /*
  2. * Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
  3. * Description: the definition of stars
  4. */
  5. #ifndef CCE_RUNTIME_RT_STARS_H
  6. #define CCE_RUNTIME_RT_STARS_H
  7. #include "base.h"
  8. #include "rt_stars_define.h"
  9. #if defined(__cplusplus)
  10. extern "C" {
  11. #endif
  12. /**
  13. * @ingroup rt_stars
  14. * @brief launch stars task.
  15. * used for send star sqe directly.
  16. * @param [in] taskSqe stars task sqe
  17. * @param [in] sqeLen stars task sqe length
  18. * @param [in] stm associated stream
  19. * @return RT_ERROR_NONE for ok, others failed
  20. */
  21. RTS_API rtError_t rtStarsTaskLaunch(const void *taskSqe, uint32_t sqeLen, rtStream_t stm);
  22. /**
  23. * @ingroup rt_stars
  24. * @brief launch stars task.
  25. * used for send star sqe directly.
  26. * @param [in] taskSqe stars task sqe
  27. * @param [in] sqeLen stars task sqe length
  28. * @param [in] stm associated stream
  29. * @param [in] flag dump flag
  30. * @return RT_ERROR_NONE for ok, others failed
  31. */
  32. RTS_API rtError_t rtStarsTaskLaunchWithFlag(const void *taskSqe, uint32_t sqeLen, rtStream_t stm, uint32_t flag);
  33. /**
  34. * @ingroup rt_stars
  35. * @brief create cdq instance.
  36. * @param [in] batchNum batch number
  37. * @param [in] batchSize batch size
  38. * @param [in] queName cdq name
  39. * @return RT_ERROR_NONE for ok, ACL_ERROR_RT_NO_CDQ_RESOURCE for no cdq resources
  40. */
  41. RTS_API rtError_t rtCdqCreate(uint32_t batchNum, uint32_t batchSize, const char_t *queName);
  42. /**
  43. * @ingroup rt_stars
  44. * @brief destroy cdq instance.
  45. * @param [in] queName cdq name
  46. * @return RT_ERROR_NONE for ok, others failed
  47. */
  48. RTS_API rtError_t rtCdqDestroy(const char_t *queName);
  49. /**
  50. * @ingroup rt_stars
  51. * @brief get free batch in the queue.
  52. * @param [in] queName cdq name
  53. * @param [in] timeout batch size
  54. * @param [out] batchId batch index
  55. * @return RT_ERROR_NONE for ok, ACL_ERROR_RT_WAIT_TIMEOUT for timeout
  56. */
  57. RTS_API rtError_t rtCdqAllocBatch(const char_t *queName, int32_t timeout, uint32_t *batchId);
  58. /**
  59. * @ingroup rt_stars
  60. * @brief launch a write_cdqm task on the stream.
  61. * When the task is executed, the data information will be inserted into the cdqe index position of the queue.
  62. * @param [in] queName cdq name
  63. * @param [in] cdqeIndex cdqe index
  64. * @param [in] data cdqe infomation
  65. * @param [in] dataSize data size
  66. * @param [in] stm launch task on the stream
  67. * @return RT_ERROR_NONE for ok, others failed
  68. */
  69. RTS_API rtError_t rtCdqEnQueue(const char_t *queName, uint32_t cdqeIndex, void *data, uint32_t dataSize,
  70. rtStream_t stm);
  71. /**
  72. * @ingroup rt_stars
  73. * @brief launch a write_cdqm task on the stream.
  74. * When the task is executed, the data information will be inserted into the cdqe index position of the queue.
  75. * @param [in] queName cdq name
  76. * @param [in] cdqeIndex cdqe index
  77. * @param [in] data cdqe infomation
  78. * @param [in] dataSize data size
  79. * @param [in] stm launch task on the stream
  80. * @return RT_ERROR_NONE for ok, others failed
  81. */
  82. RTS_API rtError_t rtCdqEnQueuePtrMode(const char_t *queName, uint32_t cdqeIndex, const void *ptrAddr,
  83. rtStream_t stm);
  84. /**
  85. * @ingroup rt_stars
  86. * @brief launch common cmo task on the stream.
  87. * @param [in] taskInfo cmo task info
  88. * @param [in] stm launch task on the stream
  89. * @param [in] flag flag
  90. * @return RT_ERROR_NONE for ok, others failed
  91. */
  92. RTS_API rtError_t rtCmoTaskLaunch(rtCmoTaskInfo_t *taskInfo, rtStream_t stm, uint32_t flag);
  93. /**
  94. * @ingroup rt_stars
  95. * @brief launch barrier cmo task on the stream.
  96. * @param [in] taskInfo barrier task info
  97. * @param [in] stm launch task on the stream
  98. * @param [in] flag flag
  99. * @return RT_ERROR_NONE for ok, others failed
  100. */
  101. RTS_API rtError_t rtBarrierTaskLaunch(rtBarrierTaskInfo_t *taskInfo, rtStream_t stm, uint32_t flag);
  102. /**
  103. * @ingroup rt_stars
  104. * @brief dvpp group handle.
  105. */
  106. typedef void *rtDvppGrp_t;
  107. typedef struct tagDvppGrpRptInfo {
  108. uint32_t deviceId;
  109. uint32_t streamId;
  110. uint32_t taskId;
  111. uint8_t sqeType;
  112. uint8_t cqeErrorCode;
  113. uint8_t reserve[2];
  114. uint32_t accErrorCode;
  115. } rtDvppGrpRptInfo_t;
  116. typedef void (*rtDvppGrpCallback)(rtDvppGrpRptInfo_t *rptInfo);
  117. /**
  118. * @ingroup rt_stars
  119. * @brief create dvpp group.
  120. * @param [in] flags group flag, reserved parameter
  121. * @param [out] grp group handle
  122. * @return RT_ERROR_NONE for ok, others failed
  123. */
  124. RTS_API rtError_t rtDvppGroupCreate(rtDvppGrp_t *grp, uint32_t flags);
  125. /**
  126. * @ingroup rt_stars
  127. * @brief destroy dvpp group.
  128. * @param [in] grp group handle
  129. * @return RT_ERROR_NONE for ok, others failed
  130. */
  131. RTS_API rtError_t rtDvppGroupDestory(rtDvppGrp_t grp);
  132. /**
  133. * @ingroup rt_stars
  134. * @brief create stream with grp handle
  135. * @param [in|out] stm created stream
  136. * @param [in] priority stream priority
  137. * @param [in] flags stream op flags
  138. * @param [in] grp grp handle
  139. * @return RT_ERROR_NONE for ok
  140. * @return RT_ERROR_INVALID_VALUE for error input
  141. * @return RT_ERROR_NONE for ok, others failed
  142. */
  143. RTS_API rtError_t rtStreamCreateByGrp(rtStream_t *stm, int32_t priority, uint32_t flags, rtDvppGrp_t grp);
  144. /**
  145. * @ingroup rt_stars
  146. * @brief wait report by grp
  147. * @param [in] grp group handle
  148. * @param [in] callBackFunc callback
  149. * @param [in] timeout wait timeout config, ms, -1: wait forever
  150. * @return RT_ERROR_NONE for ok, others failed
  151. */
  152. RTS_API rtError_t rtDvppWaitGroupReport(rtDvppGrp_t grp, rtDvppGrpCallback callBackFunc, int32_t timeout);
  153. #if defined(__cplusplus)
  154. }
  155. #endif
  156. #endif // CCE_RUNTIME_RT_STARS_H

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