review: remove static global vars to support multi-instance simultaneously and thread safe
This commit is contained in:
parent
2fab33d825
commit
94ee775058
1 changed files with 14 additions and 26 deletions
22
ggml-qnn.cpp
22
ggml-qnn.cpp
|
@ -936,10 +936,10 @@ private:
|
|||
|
||||
std::unordered_set<Qnn_MemHandle_t> _qnn_mem_set;
|
||||
|
||||
static std::mutex _init_mutex;
|
||||
static std::unordered_map<BackendIdType, void *> _loaded_lib_handle;
|
||||
static std::unordered_map<std::string, BackendIdType> _lib_path_to_backend_id;
|
||||
static std::unordered_map<BackendIdType, const QnnInterface_t *> _loaded_backend;
|
||||
std::mutex _init_mutex;
|
||||
std::unordered_map<BackendIdType, void *> _loaded_lib_handle;
|
||||
std::unordered_map<std::string, BackendIdType> _lib_path_to_backend_id;
|
||||
std::unordered_map<BackendIdType, const QnnInterface_t *> _loaded_backend;
|
||||
|
||||
void * _rpc_lib_handle = nullptr;
|
||||
std::atomic_bool _rpcmem_initialized{false};
|
||||
|
@ -950,26 +950,15 @@ private:
|
|||
pfn_rpc_mem_deinit _pfn_rpc_mem_deinit;
|
||||
std::unordered_map<void *, void *> _rpcmem_store_map;
|
||||
|
||||
|
||||
std::string _graph_name;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// =================================================================================================
|
||||
//
|
||||
// implementation of wrapper class
|
||||
//
|
||||
// =================================================================================================
|
||||
std::mutex qnn_instance::_init_mutex;
|
||||
|
||||
std::unordered_map<qnn_instance::BackendIdType, void *> qnn_instance::_loaded_lib_handle;
|
||||
|
||||
std::unordered_map<std::string, qnn_instance::BackendIdType> qnn_instance::_lib_path_to_backend_id;
|
||||
|
||||
std::unordered_map<qnn_instance::BackendIdType, const QnnInterface_t *> qnn_instance::_loaded_backend;
|
||||
|
||||
|
||||
void * qnn_instance::alloc_rpcmem(size_t bytes, size_t alignment) {
|
||||
if (!_rpcmem_initialized) {
|
||||
QNN_LOG_WARN("rpc memory not initialized\n");
|
||||
|
@ -983,8 +972,7 @@ void * qnn_instance::alloc_rpcmem(size_t bytes, size_t alignment) {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
auto aligned_buf = reinterpret_cast<void *>(align_to(alignment,
|
||||
reinterpret_cast<intptr_t>(buf)));
|
||||
auto aligned_buf = reinterpret_cast<void *>(align_to(alignment,reinterpret_cast<intptr_t>(buf)));
|
||||
bool status = _rpcmem_store_map.insert(std::pair<void *, void *>(aligned_buf, buf)).second;
|
||||
if (!status) {
|
||||
QNN_LOG_WARN("failed to allocate rpc memory\n");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue