Constantin Fürst
|
f33f53970a
|
provide malloc and free in the small test application of the cache
|
10 months ago |
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
|
5578f06c80
|
adapt copy policy function to take data size as well and use this to only use destination nodes dsa engine for small data sizes on xeonmax
|
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
|
6ab88595b7
|
add test for the cache-flush logic which was previously not tested
|
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
|
4ddd96adcb
|
remove extra whitespace from output in main function
|
12 months ago |
Constantin Fürst
|
e3e17cec7b
|
extend the main method of the small supplied test program to allow running on multiple threads
|
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
|
52566fc13b
|
print to cerr for bad states in the test-main
|
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 |