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.

acl_stub.cc 14 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. /**
  2. * Copyright 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. #include "acl_stub.h"
  17. #include <iostream>
  18. AclDataBuffer *g_acl_data_buffer = nullptr;
  19. AclEnv *g_acl_env = nullptr;
  20. AclDataSet *g_acl_dataset = nullptr;
  21. AclModel *g_acl_model = nullptr;
  22. AclModelDesc *g_acl_model_desc = nullptr;
  23. AclDeviceContextStream *g_acl_device_context_stream = nullptr;
  24. AclMemory *g_acl_memory = nullptr;
  25. AclDvppPicDesc *g_acl_dvpp_pic_desc = nullptr;
  26. AclDvppRoiConfig *g_acl_dvpp_roi_config = nullptr;
  27. AclDvppResizeConfig *g_acl_dvpp_resize_config = nullptr;
  28. AclDvppChannelDesc *g_acl_dvpp_channel_desc = nullptr;
  29. AclDvppProcess *g_acl_dvpp_process = nullptr;
  30. AclRunMode *g_acl_run_mode = nullptr;
  31. AclJpegLib *g_acl_jpeg_lib = nullptr;
  32. aclDataBuffer *aclCreateDataBuffer(void *data, size_t size) {
  33. return g_acl_data_buffer->aclCreateDataBuffer(data, size);
  34. }
  35. aclError aclDestroyDataBuffer(const aclDataBuffer *dataBuffer) {
  36. return g_acl_data_buffer->aclDestroyDataBuffer(dataBuffer);
  37. }
  38. void *aclGetDataBufferAddr(const aclDataBuffer *dataBuffer) {
  39. return g_acl_data_buffer->aclGetDataBufferAddr(dataBuffer);
  40. }
  41. uint32_t aclGetDataBufferSize(const aclDataBuffer *dataBuffer) {
  42. return g_acl_data_buffer->aclGetDataBufferSize(dataBuffer);
  43. }
  44. size_t aclDataTypeSize(aclDataType dataType) {
  45. std::unordered_map<aclDataType, size_t> dataTypeMap = {
  46. {ACL_FLOAT16, 2}, {ACL_FLOAT, 4}, {ACL_DOUBLE, 8}, {ACL_INT8, 1}, {ACL_INT16, 2}, {ACL_INT32, 4},
  47. {ACL_INT64, 8}, {ACL_UINT8, 1}, {ACL_UINT16, 2}, {ACL_UINT32, 4}, {ACL_UINT64, 8}, {ACL_BOOL, 1},
  48. };
  49. auto it = dataTypeMap.find(dataType);
  50. if (it == dataTypeMap.end()) {
  51. return 0;
  52. } else {
  53. return it->second;
  54. }
  55. }
  56. void aclAppLog(aclLogLevel logLevel, const char *func, const char *file, uint32_t line, const char *fmt, ...) {
  57. if (logLevel == ACL_ERROR) {
  58. // std::cout << file << ":" << line << "," << func << ": " << fmt << std::endl;
  59. }
  60. }
  61. aclError aclInit(const char *configPath) { return g_acl_env->aclInit(configPath); }
  62. aclError aclFinalize() { return g_acl_env->aclFinalize(); }
  63. // dataset
  64. aclmdlDataset *aclmdlCreateDataset() { return g_acl_dataset->aclmdlCreateDataset(); }
  65. aclError aclmdlDestroyDataset(const aclmdlDataset *dataSet) { return g_acl_dataset->aclmdlDestroyDataset(dataSet); }
  66. aclError aclmdlAddDatasetBuffer(aclmdlDataset *dataSet, aclDataBuffer *dataBuffer) {
  67. return g_acl_dataset->aclmdlAddDatasetBuffer(dataSet, dataBuffer);
  68. }
  69. size_t aclmdlGetDatasetNumBuffers(const aclmdlDataset *dataSet) {
  70. return g_acl_dataset->aclmdlGetDatasetNumBuffers(dataSet);
  71. }
  72. aclDataBuffer *aclmdlGetDatasetBuffer(const aclmdlDataset *dataSet, size_t index) {
  73. return g_acl_dataset->aclmdlGetDatasetBuffer(dataSet, index);
  74. }
  75. // model
  76. aclError aclmdlLoadFromFile(const char *modelPath, uint32_t *modelId) {
  77. return g_acl_model->aclmdlLoadFromFile(modelPath, modelId);
  78. }
  79. aclError aclmdlLoadFromMem(const void *model, size_t modelSize, uint32_t *modelId) {
  80. return g_acl_model->aclmdlLoadFromMem(model, modelSize, modelId);
  81. }
  82. aclError aclmdlLoadFromFileWithMem(const char *modelPath, uint32_t *modelId, void *workPtr, size_t workSize,
  83. void *weightPtr, size_t weightSize) {
  84. return g_acl_model->aclmdlLoadFromFileWithMem(modelPath, modelId, workPtr, workSize, weightPtr, weightSize);
  85. }
  86. aclError aclmdlLoadFromMemWithMem(const void *model, size_t modelSize, uint32_t *modelId, void *workPtr,
  87. size_t workSize, void *weightPtr, size_t weightSize) {
  88. return g_acl_model->aclmdlLoadFromMemWithMem(model, modelSize, modelId, workPtr, workSize, weightPtr, weightSize);
  89. }
  90. aclError aclmdlExecute(uint32_t modelId, const aclmdlDataset *input, aclmdlDataset *output) {
  91. return g_acl_model->aclmdlExecute(modelId, input, output);
  92. }
  93. aclError aclmdlExecuteAsync(uint32_t modelId, const aclmdlDataset *input, aclmdlDataset *output, aclrtStream stream) {
  94. return g_acl_model->aclmdlExecuteAsync(modelId, input, output, stream);
  95. }
  96. aclError aclmdlUnload(uint32_t modelId) { return g_acl_model->aclmdlUnload(modelId); }
  97. // model desc
  98. aclmdlDesc *aclmdlCreateDesc() { return g_acl_model_desc->aclmdlCreateDesc(); }
  99. aclError aclmdlDestroyDesc(aclmdlDesc *modelDesc) { return g_acl_model_desc->aclmdlDestroyDesc(modelDesc); }
  100. aclError aclmdlGetDesc(aclmdlDesc *modelDesc, uint32_t modelId) {
  101. return g_acl_model_desc->aclmdlGetDesc(modelDesc, modelId);
  102. }
  103. size_t aclmdlGetNumInputs(aclmdlDesc *modelDesc) { return g_acl_model_desc->aclmdlGetNumInputs(modelDesc); }
  104. size_t aclmdlGetNumOutputs(aclmdlDesc *modelDesc) { return g_acl_model_desc->aclmdlGetNumOutputs(modelDesc); }
  105. size_t aclmdlGetInputSizeByIndex(aclmdlDesc *modelDesc, size_t index) {
  106. return g_acl_model_desc->aclmdlGetInputSizeByIndex(modelDesc, index);
  107. }
  108. size_t aclmdlGetOutputSizeByIndex(aclmdlDesc *modelDesc, size_t index) {
  109. return g_acl_model_desc->aclmdlGetOutputSizeByIndex(modelDesc, index);
  110. }
  111. aclError aclmdlGetInputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims) {
  112. return g_acl_model_desc->aclmdlGetInputDims(modelDesc, index, dims);
  113. }
  114. aclError aclmdlGetOutputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims) {
  115. return g_acl_model_desc->aclmdlGetOutputDims(modelDesc, index, dims);
  116. }
  117. aclError aclmdlGetCurOutputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims) {
  118. return g_acl_model_desc->aclmdlGetCurOutputDims(modelDesc, index, dims);
  119. }
  120. aclFormat aclmdlGetInputFormat(const aclmdlDesc *modelDesc, size_t index) {
  121. return g_acl_model_desc->aclmdlGetInputFormat(modelDesc, index);
  122. }
  123. aclFormat aclmdlGetOutputFormat(const aclmdlDesc *modelDesc, size_t index) {
  124. return g_acl_model_desc->aclmdlGetOutputFormat(modelDesc, index);
  125. }
  126. aclDataType aclmdlGetInputDataType(const aclmdlDesc *modelDesc, size_t index) {
  127. return g_acl_model_desc->aclmdlGetInputDataType(modelDesc, index);
  128. }
  129. aclDataType aclmdlGetOutputDataType(const aclmdlDesc *modelDesc, size_t index) {
  130. return g_acl_model_desc->aclmdlGetOutputDataType(modelDesc, index);
  131. }
  132. // device, context, stream
  133. aclError aclrtCreateContext(aclrtContext *context, int32_t deviceId) {
  134. return g_acl_device_context_stream->aclrtCreateContext(context, deviceId);
  135. }
  136. aclError aclrtDestroyContext(aclrtContext context) { return g_acl_device_context_stream->aclrtDestroyContext(context); }
  137. aclError aclrtSetCurrentContext(aclrtContext context) {
  138. return g_acl_device_context_stream->aclrtSetCurrentContext(context);
  139. }
  140. aclError aclrtSetDevice(int32_t deviceId) { return g_acl_device_context_stream->aclrtSetDevice(deviceId); }
  141. aclError aclrtResetDevice(int32_t deviceId) { return g_acl_device_context_stream->aclrtResetDevice(deviceId); }
  142. aclError aclrtGetRunMode(aclrtRunMode *runMode) { return g_acl_run_mode->aclrtGetRunMode(runMode); }
  143. aclError aclrtCreateStream(aclrtStream *stream) { return g_acl_device_context_stream->aclrtCreateStream(stream); }
  144. aclError aclrtDestroyStream(aclrtStream stream) { return g_acl_device_context_stream->aclrtDestroyStream(stream); }
  145. aclError aclrtSynchronizeStream(aclrtStream stream) {
  146. return g_acl_device_context_stream->aclrtSynchronizeStream(stream);
  147. }
  148. // memory
  149. aclError acldvppMalloc(void **devPtr, size_t size) { return g_acl_memory->acldvppMalloc(devPtr, size); }
  150. aclError acldvppFree(void *devPtr) { return g_acl_memory->acldvppFree(devPtr); }
  151. aclError aclrtMalloc(void **devPtr, size_t size, aclrtMemMallocPolicy policy) {
  152. return g_acl_memory->aclrtMalloc(devPtr, size, policy);
  153. }
  154. aclError aclrtFree(void *devPtr) { return g_acl_memory->aclrtFree(devPtr); }
  155. aclError aclrtMallocHost(void **hostPtr, size_t size) { return g_acl_memory->aclrtMallocHost(hostPtr, size); }
  156. aclError aclrtFreeHost(void *hostPtr) { return g_acl_memory->aclrtFreeHost(hostPtr); }
  157. aclError aclrtMemcpy(void *dst, size_t destMax, const void *src, size_t count, aclrtMemcpyKind kind) {
  158. return g_acl_memory->aclrtMemcpy(dst, destMax, src, count, kind);
  159. }
  160. acldvppPicDesc *acldvppCreatePicDesc() { return g_acl_dvpp_pic_desc->acldvppCreatePicDesc(); }
  161. aclError acldvppDestroyPicDesc(acldvppPicDesc *picDesc) { return g_acl_dvpp_pic_desc->acldvppDestroyPicDesc(picDesc); }
  162. aclError acldvppSetPicDescSize(acldvppPicDesc *picDesc, uint32_t size) {
  163. return g_acl_dvpp_pic_desc->acldvppSetPicDescSize(picDesc, size);
  164. }
  165. aclError acldvppSetPicDescFormat(acldvppPicDesc *picDesc, acldvppPixelFormat format) {
  166. return g_acl_dvpp_pic_desc->acldvppSetPicDescFormat(picDesc, format);
  167. }
  168. aclError acldvppSetPicDescWidth(acldvppPicDesc *picDesc, uint32_t width) {
  169. return g_acl_dvpp_pic_desc->acldvppSetPicDescWidth(picDesc, width);
  170. }
  171. aclError acldvppSetPicDescHeight(acldvppPicDesc *picDesc, uint32_t height) {
  172. return g_acl_dvpp_pic_desc->acldvppSetPicDescHeight(picDesc, height);
  173. }
  174. aclError acldvppSetPicDescData(acldvppPicDesc *picDesc, void *dataDev) {
  175. return g_acl_dvpp_pic_desc->acldvppSetPicDescData(picDesc, dataDev);
  176. }
  177. aclError acldvppSetPicDescWidthStride(acldvppPicDesc *picDesc, uint32_t widthStride) {
  178. return g_acl_dvpp_pic_desc->acldvppSetPicDescWidthStride(picDesc, widthStride);
  179. }
  180. aclError acldvppSetPicDescHeightStride(acldvppPicDesc *picDesc, uint32_t heightStride) {
  181. return g_acl_dvpp_pic_desc->acldvppSetPicDescHeightStride(picDesc, heightStride);
  182. }
  183. acldvppRoiConfig *acldvppCreateRoiConfig(uint32_t left, uint32_t right, uint32_t top, uint32_t bottom) {
  184. return g_acl_dvpp_roi_config->acldvppCreateRoiConfig(left, right, top, bottom);
  185. }
  186. aclError acldvppDestroyRoiConfig(acldvppRoiConfig *roiConfig) {
  187. return g_acl_dvpp_roi_config->acldvppDestroyRoiConfig(roiConfig);
  188. }
  189. aclError acldvppSetRoiConfig(acldvppRoiConfig *roiConfig, uint32_t left, uint32_t right, uint32_t top,
  190. uint32_t bottom) {
  191. return g_acl_dvpp_roi_config->acldvppSetRoiConfig(roiConfig, left, right, top, bottom);
  192. }
  193. acldvppResizeConfig *acldvppCreateResizeConfig() { return g_acl_dvpp_resize_config->acldvppCreateResizeConfig(); }
  194. aclError acldvppDestroyResizeConfig(acldvppResizeConfig *resizeConfig) {
  195. return g_acl_dvpp_resize_config->acldvppDestroyResizeConfig(resizeConfig);
  196. }
  197. aclError acldvppCreateChannel(acldvppChannelDesc *channelDesc) {
  198. return g_acl_dvpp_channel_desc->acldvppCreateChannel(channelDesc);
  199. }
  200. aclError acldvppDestroyChannel(acldvppChannelDesc *channelDesc) {
  201. return g_acl_dvpp_channel_desc->acldvppDestroyChannel(channelDesc);
  202. }
  203. acldvppChannelDesc *acldvppCreateChannelDesc() { return g_acl_dvpp_channel_desc->acldvppCreateChannelDesc(); }
  204. aclError acldvppDestroyChannelDesc(acldvppChannelDesc *channelDesc) {
  205. return g_acl_dvpp_channel_desc->acldvppDestroyChannelDesc(channelDesc);
  206. }
  207. aclError acldvppVpcResizeAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc,
  208. acldvppResizeConfig *resizeConfig, aclrtStream stream) {
  209. return g_acl_dvpp_process->acldvppVpcResizeAsync(channelDesc, inputDesc, outputDesc, resizeConfig, stream);
  210. }
  211. aclError acldvppVpcCropAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc, acldvppPicDesc *outputDesc,
  212. acldvppRoiConfig *cropArea, aclrtStream stream) {
  213. return g_acl_dvpp_process->acldvppVpcCropAsync(channelDesc, inputDesc, outputDesc, cropArea, stream);
  214. }
  215. aclError acldvppVpcCropAndPasteAsync(acldvppChannelDesc *channelDesc, acldvppPicDesc *inputDesc,
  216. acldvppPicDesc *outputDesc, acldvppRoiConfig *cropArea,
  217. acldvppRoiConfig *pasteArea, aclrtStream stream) {
  218. return g_acl_dvpp_process->acldvppVpcCropAndPasteAsync(channelDesc, inputDesc, outputDesc, cropArea, pasteArea,
  219. stream);
  220. }
  221. aclError acldvppVpcBatchCropAsync(acldvppChannelDesc *channelDesc, acldvppBatchPicDesc *srcBatchDesc, uint32_t *roiNums,
  222. uint32_t size, acldvppBatchPicDesc *dstBatchDesc, acldvppRoiConfig *cropAreas[],
  223. aclrtStream stream) {
  224. return g_acl_dvpp_process->acldvppVpcBatchCropAsync(channelDesc, srcBatchDesc, roiNums, size, dstBatchDesc, cropAreas,
  225. stream);
  226. }
  227. aclError acldvppJpegDecodeAsync(acldvppChannelDesc *channelDesc, const void *data, uint32_t size,
  228. acldvppPicDesc *outputDesc, aclrtStream stream) {
  229. return g_acl_dvpp_process->acldvppJpegDecodeAsync(channelDesc, data, size, outputDesc, stream);
  230. }
  231. // jpeg lib
  232. void jpeg_CreateDecompress(j_decompress_ptr cinfo, int version, size_t structsize) {
  233. g_acl_jpeg_lib->jpeg_CreateDecompress(cinfo, version, structsize);
  234. }
  235. void jpeg_mem_src(j_decompress_ptr cinfo, const unsigned char *inbuffer, unsigned long insize) {
  236. g_acl_jpeg_lib->jpeg_mem_src(cinfo, inbuffer, insize);
  237. }
  238. int jpeg_read_header(j_decompress_ptr cinfo, boolean require_image) {
  239. return g_acl_jpeg_lib->jpeg_read_header(cinfo, require_image);
  240. }
  241. void jpeg_destroy_decompress(j_decompress_ptr cinfo) { g_acl_jpeg_lib->jpeg_destroy_decompress(cinfo); }
  242. struct jpeg_error_mgr *jpeg_std_error(struct jpeg_error_mgr *err) {
  243. return err;
  244. }