MCPcopy Create free account
hub / github.com/alibaba/MNN / updateCache

Method updateCache

express/Executor.cpp:406–430  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

404}
405
406void Executor::RuntimeManager::updateCache() {
407 if (nullptr == mInside->mCache) {
408 return;
409 }
410 std::lock_guard<std::mutex> _l(mLock);
411
412 // Backend_Auto and no Async work, then don't need updateCache
413 if(mInside->mContent->modes.backendMode == Interpreter::Session_Backend_Auto && !(mInside->mInfo->hasAsyncWork())) {
414 return;
415 }
416
417 // Set mCancelled for quickly ending
418 mInside->mInfo->mCancelled = true;
419 mInside->mInfo->waitAsyncWork();
420 auto buffer = getCache(mInside->mInfo);
421
422 //When current cacheSize bigger than previous, update
423 if (buffer.first != nullptr && buffer.second > mInside->mCache->lastCacheSize) {
424 MNN_PRINT("Update cache to %s, size = %zu\n", mInside->mCache->cacheFile.c_str(), buffer.second);
425 writeCacheFile(mInside->mCache, buffer);
426 mInside->mCache->lastCacheSize = buffer.second;
427 // Reset cache
428 loadCache(mInside->mInfo, buffer.first, buffer.second);
429 }
430}
431
432std::vector<bool> Executor::RuntimeManager::isBackendSupport(const std::vector<MNNForwardType> types) {
433 std::vector<bool> res;

Callers 5

mainFunction · 0.80
mainFunction · 0.80
mainFunction · 0.80
mainFunction · 0.80

Calls 6

getCacheFunction · 0.85
loadCacheFunction · 0.85
waitAsyncWorkMethod · 0.80
writeCacheFileFunction · 0.70
hasAsyncWorkMethod · 0.45
c_strMethod · 0.45

Tested by 1

mainFunction · 0.64