44 Commits (master)

Author SHA1 Message Date
Constantin Fürst a338ea7906 ensure safety for waitoncomplete when allocation failure is encountered 10 months ago
Constantin Fürst 05ffea0bdb use the correct free-function in cache deallocation on error in waitoncompletion 11 months ago
Constantin Fürst e99bf619c2 handle memory allocation outside of the cache, pre-allocate in benchmark and memset to hopefully guarantee no pagefaults will be encountered 11 months ago
Constantin Fürst 87b71e6300 remove warings for weak access failure 11 months ago
Constantin Fürst 01ecdce88f set execution engine to hardware 11 months ago
Constantin Fürst f4159d8149 fix old flag name from FLAG_TRIGGER_PAGES to FLAG_FORCE_MAP_PAGES 11 months ago
Constantin Fürst 99552b3de4 add option for forcing map of pages by touching each one with a write at its begin, required as somehow behaviour changed, cache was experiencing page fault errors and handling by dsa is simply too slow 11 months ago
Constantin Fürst c7b91e400f reset to using hardware path, sw was only temporarily used for debugging 11 months ago
Constantin Fürst 7abd83ca45 fix offloading cache bug, introduced by not using maxptr for secondary invalid value, more care needed to be taken on when the secondary invalid would be set and how, now we set in in cachedata:init for both the local task in access and the one in cache state 11 months ago
Constantin Fürst 8dfefe665e add warnings to the offloading cacher 11 months ago
Constantin Fürst b7559a18a6 remove cerr warning 11 months ago
Constantin Fürst 98835799d4 also copy the invalid handlers pointer (see last commit) on CacheData copy constructor 11 months ago
Constantin Fürst 75d72ce556 dont use uint64::max as invalid pointer but allocate a valid but empty vector, using its address as invalid 11 months ago
Constantin Fürst ef8286da17 unset the weak-wait-flag on deallocation for CacheData which is where completion guarantee is required, also extend some comments in CacheData 11 months ago
Constantin Fürst 3c90e24bc1 revert the cacher to allow load balancing control through the copy placement policy function which now selects on how many nodes the task is split again, and not just which nodes the task MAY run on (which was done experimentally) 11 months ago
Constantin Fürst 322eb43cbc add flag for early abort in access if no entry is present 11 months ago
Constantin Fürst 972440d19f repair flags implementation 11 months ago
Constantin Fürst b3607329a6 add a flags-concept to cacher, add the option to select whether to handle pagefaults or not 11 months ago
Constantin Fürst 20b7820e61 implement different load balancing technique suited for smaller task sizes maybe 11 months ago
Constantin Fürst a72a26dbee remove cout/cerr output from cache and benchmark to not falsify results 11 months ago
Constantin Fürst c786d4d682 allow weak waiting which returns immediately if dsa has not yet finished 11 months ago
Constantin Fürst 053bb949ce reset cacher to cpp api implementation 11 months ago
Constantin Fürst 2f17a38ef0 select device via jobs node parameter so we can skip the numa affinity change, also properly delete jobs in destructor 11 months ago
Constantin Fürst aaaaa16e94 switch dsa cache to job api to use efficient wait 11 months ago
Constantin Fürst 140ded012a querry operation finished state in loop which could be more efficient 11 months ago
Constantin Fürst e7d10fc2d2 use hardware path instead of automatic for cache 11 months ago
Constantin Fürst bbdb2d9588 prevent another type of deadlock that could arise from destroying a CacheData instance that never had tasks assigned to it due to waiting infinitely on it 11 months ago
Constantin Fürst e9785f3f9e prevent deadlocks by setting the cache pointer to the source address in case of errors 11 months ago
Constantin Fürst fa23c6c50a improve the handler distribution and waiting on task completion for cacher 11 months ago
Constantin Fürst 7e48c96828 distribute multiple per-node locks for the cache state and allocate them on the respective numa node for fastest possible access 11 months ago
Constantin Fürst 2b635d025d add defaulted-constructor for cache which got implicitly deleted by deleting the copy constructor 11 months ago
Constantin Fürst da38c048ca pass data size to copy policy function too 11 months ago
Constantin Fürst e4a681ac1e delete the copy-constructor for cache as copying it is undesired behaviour 11 months ago
Constantin Fürst e570a6fe69 reduce the line-count of the switch statement for dml::StatusToString by inlining return with case statements 11 months ago
Constantin Fürst 0fdf650fe4 improve the class-comments for Cache and CacheData, also free incomplete_cache_ if it has not been waited for (see comment on this) 11 months ago
Constantin Fürst 8ba716353a add Clear() function which forces flush on the entire Cache and remove non-warning/error status messages from the cacher 11 months ago
Constantin Fürst d7c5c55208 turn library into single-header mode 11 months ago
Constantin Fürst 4fa5ef6522 accept existing cache if the cached block is larger than the requested view 12 months ago
Constantin Fürst 7dfbed68fe handle allocation slightly different, introduce a separate function for cleaner code that does on-node memory allocation, first querry the available size and do not rely on numa_alloc_onnode to report nullptr if the size is not really available 12 months ago
Constantin Fürst e5b96727cd add missing inline specifier to functions as this is header-only code 12 months ago
Constantin Fürst 9c06bd4fa9 add class-definition comments and clear some double-newlines 12 months ago
Constantin Fürst 53e05d096c add even more comments and remove an old code line that modified the reference counter of cache data from the outside 12 months ago
Constantin Fürst 46de3151a2 add a lot of comments to the code, also handle errors in the dml handlers gracefully 12 months ago
Constantin Fürst c01eafedae refactor the cacher to reduce complexity, removes the access guarantees (relaxed,immediate,...), uses the fact that other tasks will wait on atomic value change for the cache-pointer if it is nullptr to add the entry to cache structure earlier reducing cost of two threads accessing new entry at the same time, splits the offloading-cache.hpp file into two with one containing the data-class (represents a cache entry and task) and the other containing the cacher itself 12 months ago