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.1 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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 create cdq instance.
  25. * @param [in] batchNum batch number
  26. * @param [in] batchSize batch size
  27. * @param [in] queName cdq name
  28. * @return RT_ERROR_NONE for ok, ACL_ERROR_RT_NO_CDQ_RESOURCE for no cdq resources
  29. */
  30. RTS_API rtError_t rtCdqCreate(uint32_t batchNum, uint32_t batchSize, const char_t *queName);
  31. /**
  32. * @ingroup rt_stars
  33. * @brief destroy cdq instance.
  34. * @param [in] queName cdq name
  35. * @return RT_ERROR_NONE for ok, others failed
  36. */
  37. RTS_API rtError_t rtCdqDestroy(const char_t *queName);
  38. /**
  39. * @ingroup rt_stars
  40. * @brief get free batch in the queue.
  41. * @param [in] queName cdq name
  42. * @param [in] timeout batch size
  43. * @param [out] batchId batch index
  44. * @return RT_ERROR_NONE for ok, ACL_ERROR_RT_WAIT_TIMEOUT for timeout
  45. */
  46. RTS_API rtError_t rtCdqAllocBatch(const char_t *queName, int32_t timeout, uint32_t *batchId);
  47. /**
  48. * @ingroup rt_stars
  49. * @brief launch a write_cdqm task on the stream.
  50. * When the task is executed, the data information will be inserted into the cdqe index position of the queue.
  51. * @param [in] queName cdq name
  52. * @param [in] cdqeIndex cdqe index
  53. * @param [in] data cdqe infomation
  54. * @param [in] dataSize data size
  55. * @param [in] stm launch task on the stream
  56. * @return RT_ERROR_NONE for ok, others failed
  57. */
  58. RTS_API rtError_t rtCdqEnQueue(const char_t *queName, uint32_t cdqeIndex, void *data, uint32_t dataSize,
  59. rtStream_t stm);
  60. /**
  61. * @ingroup rt_stars
  62. * @brief launch a write_cdqm task on the stream.
  63. * When the task is executed, the data information will be inserted into the cdqe index position of the queue.
  64. * @param [in] queName cdq name
  65. * @param [in] cdqeIndex cdqe index
  66. * @param [in] data cdqe infomation
  67. * @param [in] dataSize data size
  68. * @param [in] stm launch task on the stream
  69. * @return RT_ERROR_NONE for ok, others failed
  70. */
  71. RTS_API rtError_t rtCdqEnQueuePtrMode(const char_t *queName, uint32_t cdqeIndex, const void *ptrAddr,
  72. rtStream_t stm);
  73. /**
  74. * @ingroup rt_stars
  75. * @brief launch common cmo task on the stream.
  76. * @param [in] taskInfo cmo task info
  77. * @param [in] stm launch task on the stream
  78. * @param [in] flag flag
  79. * @return RT_ERROR_NONE for ok, others failed
  80. */
  81. RTS_API rtError_t rtCmoTaskLaunch(rtCmoTaskInfo_t *taskInfo, rtStream_t stm, uint32_t flag);
  82. /**
  83. * @ingroup rt_stars
  84. * @brief launch barrier cmo task on the stream.
  85. * @param [in] taskInfo barrier task info
  86. * @param [in] stm launch task on the stream
  87. * @param [in] flag flag
  88. * @return RT_ERROR_NONE for ok, others failed
  89. */
  90. RTS_API rtError_t rtBarrierTaskLaunch(rtBarrierTaskInfo_t *taskInfo, rtStream_t stm, uint32_t flag);
  91. /**
  92. * @ingroup rt_stars
  93. * @brief dvpp group handle.
  94. */
  95. typedef void *rtDvppGrp_t;
  96. typedef struct tagDvppGrpRptInfo {
  97. uint32_t deviceId;
  98. uint32_t streamId;
  99. uint32_t taskId;
  100. uint8_t sqeType;
  101. uint8_t cqeErrorCode;
  102. uint8_t reserve[2];
  103. uint32_t accErrorCode;
  104. } rtDvppGrpRptInfo_t;
  105. typedef void (*rtDvppGrpCallback)(rtDvppGrpRptInfo_t *rptInfo);
  106. /**
  107. * @ingroup rt_stars
  108. * @brief create dvpp group.
  109. * @param [in] flags group flag, reserved parameter
  110. * @param [out] grp group handle
  111. * @return RT_ERROR_NONE for ok, others failed
  112. */
  113. RTS_API rtError_t rtDvppGroupCreate(rtDvppGrp_t *grp, uint32_t flags);
  114. /**
  115. * @ingroup rt_stars
  116. * @brief destroy dvpp group.
  117. * @param [in] grp group handle
  118. * @return RT_ERROR_NONE for ok, others failed
  119. */
  120. RTS_API rtError_t rtDvppGroupDestory(rtDvppGrp_t grp);
  121. /**
  122. * @ingroup rt_stars
  123. * @brief create stream with grp handle
  124. * @param [in|out] stm created stream
  125. * @param [in] priority stream priority
  126. * @param [in] flags stream op flags
  127. * @param [in] grp grp handle
  128. * @return RT_ERROR_NONE for ok
  129. * @return RT_ERROR_INVALID_VALUE for error input
  130. * @return RT_ERROR_NONE for ok, others failed
  131. */
  132. RTS_API rtError_t rtStreamCreateByGrp(rtStream_t *stm, int32_t priority, uint32_t flags, rtDvppGrp_t grp);
  133. /**
  134. * @ingroup rt_stars
  135. * @brief wait report by grp
  136. * @param [in] grp group handle
  137. * @param [in] callBackFunc callback
  138. * @param [in] timeout wait timeout config, ms, -1: wait forever
  139. * @return RT_ERROR_NONE for ok, others failed
  140. */
  141. RTS_API rtError_t rtDvppWaitGroupReport(rtDvppGrp_t grp, rtDvppGrpCallback callBackFunc, int32_t timeout);
  142. #if defined(__cplusplus)
  143. }
  144. #endif
  145. #endif // CCE_RUNTIME_RT_STARS_H

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