Lines Matching full:cache

6 #include <xnnpack/cache.h>
20 static void* cache_end(const xnn_weights_cache* cache) { in cache_end() argument
21 …n reinterpret_cast<void *>(reinterpret_cast<uintptr_t>(cache->cache.weights.start) + cache->cache.… in cache_end()
24 static void write_weights(xnn_weights_cache* cache, const std::string& str) { in write_weights() argument
25 ASSERT_NE(nullptr, xnn_reserve_space_in_weights_cache(cache, str.length())); in write_weights()
26 std::memcpy(cache_end(cache), str.data(), str.length()); in write_weights()
32 struct xnn_weights_cache cache; in TEST() local
33 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
34 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
41 struct xnn_weights_cache cache; in TEST() local
42 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache_with_size(&cache, four_mb)); in TEST()
44 ASSERT_GE(cache.cache.weights.capacity, four_mb); in TEST()
45 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
56 struct xnn_weights_cache cache; in TEST() local
57 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
59 write_weights(&cache, "1234"); in TEST()
60 ASSERT_EQ(0, xnn_get_or_insert_weights_cache(&cache, cache.cache.weights.start, 4)); in TEST()
61 ASSERT_EQ(0, cache.cache.hits); in TEST()
62 ASSERT_EQ(1, cache.cache.misses); in TEST()
63 ASSERT_EQ(4, cache.cache.weights.size); in TEST()
65 void* span2_weights = cache_end(&cache); in TEST()
66 // Simulate a cache hit. in TEST()
67 write_weights(&cache, "1234"); in TEST()
68 ASSERT_EQ(0, xnn_get_or_insert_weights_cache(&cache, span2_weights, 4)); in TEST()
69 ASSERT_EQ(1, cache.cache.hits); in TEST()
70 ASSERT_EQ(1, cache.cache.misses); in TEST()
71 ASSERT_EQ(4, cache.cache.weights.size); in TEST()
73 void* span3_weights = cache_end(&cache); in TEST()
74 // Simulate a cache miss. in TEST()
75 write_weights(&cache, "5678"); in TEST()
76 ASSERT_EQ(4, xnn_get_or_insert_weights_cache(&cache, span3_weights, 4)); in TEST()
77 ASSERT_EQ(1, cache.cache.hits); in TEST()
78 ASSERT_EQ(2, cache.cache.misses); in TEST()
79 ASSERT_EQ(2, cache.cache.num_entries); in TEST()
80 ASSERT_EQ(8, cache.cache.weights.size); in TEST()
82 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
87 xnn_weights_cache cache; in TEST() local
88 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
89 size_t old_num_buckets = cache.cache.num_buckets; in TEST()
91 // Add many entries to force cache to grow. in TEST()
93 write_weights(&cache, s); in TEST()
94 …ASSERT_EQ(expected_offset, xnn_get_or_insert_weights_cache(&cache, cache_end(&cache), s.length())); in TEST()
98 ASSERT_EQ(0, cache.cache.hits); in TEST()
99 ASSERT_EQ(old_num_buckets, cache.cache.num_entries); in TEST()
100 // Check that cache has grown. in TEST()
101 ASSERT_LT(old_num_buckets, cache.cache.num_buckets); in TEST()
102 // Check that all the entries are still in cache. in TEST()
105 write_weights(&cache, s); in TEST()
106 …ASSERT_EQ(expected_offset, xnn_get_or_insert_weights_cache(&cache, cache_end(&cache), s.length())); in TEST()
109 // And now all of the lookups should be cache hits. in TEST()
110 ASSERT_EQ(old_num_buckets, cache.cache.hits); in TEST()
112 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
233 struct xnn_weights_cache cache; in TEST() local
234 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
238 write_weights(&cache, weights); in TEST()
239 xnn_get_or_insert_weights_cache(&cache, cache_end(&cache), weights_size); in TEST()
252 ASSERT_EQ(num_threads - 1, cache.cache.hits); in TEST()
253 ASSERT_EQ(1, cache.cache.num_entries); in TEST()
254 ASSERT_EQ(weights_size, cache.cache.weights.size); in TEST()
255 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
263 struct xnn_weights_cache cache; in TEST() local
264 EXPECT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
271 write_weights(&cache, rotated_weights); in TEST()
272 xnn_get_or_insert_weights_cache(&cache, cache_end(&cache), weights_size); in TEST()
286 ASSERT_EQ(0, cache.cache.hits); in TEST()
287 ASSERT_EQ(num_threads, cache.cache.num_entries); in TEST()
288 ASSERT_EQ(weights_size * num_threads, cache.cache.weights.size); in TEST()
289 EXPECT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
294 struct xnn_weights_cache cache; in TEST() local
295 ASSERT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
297 …ASSERT_EQ(xnn_status_success, xnn_finalize_weights_cache(&cache, xnn_weights_cache_finalization_ki… in TEST()
298 // Finalizing a finalized cache is an error. in TEST()
299 …ASSERT_NE(xnn_status_success, xnn_finalize_weights_cache(&cache, xnn_weights_cache_finalization_ki… in TEST()
301 ASSERT_EQ(nullptr, xnn_reserve_space_in_weights_cache(&cache, 1)); in TEST()
303 …// We should not be able to insert into the weights cache, and also this shouldn't timeout by unlo… in TEST()
305 …ASSERT_EQ(XNN_CACHE_NOT_FOUND, xnn_get_or_insert_weights_cache(&cache, cache.cache.weights.start, … in TEST()
307 ASSERT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
312 struct xnn_weights_cache cache; in TEST() local
313 ASSERT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
315 …ASSERT_EQ(xnn_status_success, xnn_finalize_weights_cache(&cache, xnn_weights_cache_finalization_ki… in TEST()
316 // Finalizing a finalized cache is an error. in TEST()
317 …ASSERT_NE(xnn_status_success, xnn_finalize_weights_cache(&cache, xnn_weights_cache_finalization_ki… in TEST()
319 ASSERT_EQ(nullptr, xnn_reserve_space_in_weights_cache(&cache, cache.cache.weights.capacity + 1)); in TEST()
321 ASSERT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()
326 struct xnn_weights_cache cache; in TEST() local
327 ASSERT_EQ(xnn_status_success, xnn_init_weights_cache(&cache)); in TEST()
329 write_weights(&cache, "1234"); in TEST()
330 ASSERT_EQ(0, xnn_get_or_insert_weights_cache(&cache, cache.cache.weights.start, 4)); in TEST()
331 …ASSERT_EQ(xnn_status_success, xnn_finalize_weights_cache(&cache, xnn_weights_cache_finalization_ki… in TEST()
333 …// Inserting into a finalized cache is okay as long as cache memory has space and it is a cache hi… in TEST()
334 ASSERT_LT(cache.cache.weights.size + 4, cache.cache.weights.capacity); in TEST()
335 write_weights(&cache, "1234"); in TEST()
336 void* cached_weights = cache_end(&cache); in TEST()
337 ASSERT_EQ(0, xnn_get_or_insert_weights_cache(&cache, cached_weights, 4)); in TEST()
338 ASSERT_EQ(4, cache.cache.weights.size); in TEST()
340 // Sufficient space, but Cache miss. in TEST()
341 write_weights(&cache, "4567"); in TEST()
342 ASSERT_EQ(XNN_CACHE_NOT_FOUND, xnn_get_or_insert_weights_cache(&cache, cached_weights, 4)); in TEST()
344 // Not enough space in the finalized weights cache. in TEST()
345 std::string big_string(cache.cache.weights.capacity, '5'); in TEST()
347 ASSERT_EQ(nullptr, xnn_reserve_space_in_weights_cache(&cache, big_string.length())); in TEST()
349 ASSERT_EQ(xnn_status_success, xnn_release_weights_cache(&cache)); in TEST()