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.

file_saver.h 3.4 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 GE_COMMON_AUTH_FILE_SAVER_H_
  17. #define GE_COMMON_AUTH_FILE_SAVER_H_
  18. #include <string>
  19. #include <vector>
  20. #include "framework/common/helper/om_file_helper.h"
  21. #include "framework/common/types.h"
  22. #include "external/ge/ge_ir_build.h"
  23. #include "graph/buffer.h"
  24. #include "mmpa/mmpa_api.h"
  25. struct PROC_PARAM {
  26. uint8_t *model_name;
  27. // ISV Ek buffer
  28. uint8_t *model_key;
  29. uint32_t model_key_len;
  30. // ISV root certificate buffer
  31. uint8_t *root_cert;
  32. uint32_t root_cert_len;
  33. // ISV private key buffer
  34. uint8_t *pri_key;
  35. uint32_t pri_key_len;
  36. // Raw AI Module Image buffer
  37. uint8_t *ai_image;
  38. uint32_t ai_image_len;
  39. // ISV HW key buffer
  40. uint8_t *hw_key;
  41. uint32_t hw_key_len;
  42. };
  43. struct ProcOut {
  44. uint8_t *passcode;
  45. uint32_t passcode_len;
  46. uint8_t *encrypted_img;
  47. uint32_t encrypted_img_len;
  48. };
  49. namespace ge {
  50. using std::string;
  51. class FileSaver {
  52. public:
  53. ///
  54. /// @ingroup domi_common
  55. /// @brief save model, no encryption
  56. /// @return Status result
  57. ///
  58. static Status SaveToFile(const string &file_path, const ge::ModelData &model,
  59. const ModelFileHeader *model_file_header = nullptr);
  60. static Status SaveToFile(const string &file_path, ModelFileHeader &model_file_header,
  61. ModelPartitionTable &model_partition_table,
  62. const std::vector<ModelPartition> &partition_datas);
  63. static Status SaveToBuffWithFileHeader(const ModelFileHeader &file_header, ModelPartitionTable &model_partition_table,
  64. const std::vector<ModelPartition> &partitionDatas, ge::ModelBufferData &model);
  65. static Status SaveToFile(const string &file_path, const void *data, int len);
  66. protected:
  67. ///
  68. /// @ingroup domi_common
  69. /// @brief Check validity of the file path
  70. /// @return Status result
  71. ///
  72. static Status CheckPath(const string &file_path);
  73. static Status WriteData(const void *data, uint32_t size, int32_t fd);
  74. static Status OpenFile(int32_t &fd, const std::string &file_path);
  75. ///
  76. /// @ingroup domi_common
  77. /// @brief save model to file
  78. /// @param [in] file_path file output path
  79. /// @param [in] file_header file header info
  80. /// @param [in] data model data
  81. /// @param [in] len model length
  82. /// @return Status result
  83. ///
  84. static Status SaveWithFileHeader(const string &file_path, const ModelFileHeader &file_header, const void *data,
  85. int len);
  86. static Status SaveWithFileHeader(const std::string &file_path, const ModelFileHeader &file_header,
  87. ModelPartitionTable &model_partition_table,
  88. const std::vector<ModelPartition> &partition_datas);
  89. };
  90. } // namespace ge
  91. #endif // GE_COMMON_AUTH_FILE_SAVER_H_

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