7b52a80a633275ff68e7a7e09baa8f2dde56b18b
ECR #304775 - Preparation for kernel caching feature 1. Each device have a separate cache directory 2. It logs caching errors, so we can debug the cache and/or detect collisions 3. Implementeded cache size tracking, so we can evict old data when cache files are too large 4. Added file/path access permission control on both windows and linux 5. Have read/write file lock protection 6. -kcache-disable flag can be used to turn on/off the caching functionality 7. AMD_FORCE_KCACHE_TEST env variable is used for internal testing 8. For the stage we want to cache, call getCacheEntry() followed by makeCacheEntry() if the get fails; otherwise directly return cached data. - After the compiler library code is refactored, getCacheEntry() and makeCacheEntry() will be wrapped into one function call, so that only one call is needed at the place we want to cache TO DO: 1. Use it in the compiler library code - Waiting for the decision on how many stages we want to cache, i) 1-stage caching: source->ISA; or ii) 3-stage caching: source->LLVM IR, LLVM IR->IL, IL->ISA 2. Tracking of timestamps for cache entries - LRU eviction when cache grows too large - Suggestion from Laurent: Regarding tracking timestamps for LRU eviction: Random eviction would probably perform as well as LRU and does not require timestamps. 3. Track cache entries per application ReviewBoardURL = http://ocltc.amd.com/reviews/r/8194/ Affected files ... ... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/cache.cpp#3 add ... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/cache.hpp#3 add ... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#127 edit
Описание
No description provided
Languages
C++
67.5%
C
20.6%
Python
6.6%
CMake
3.4%
Shell
0.6%
Разное
1.1%