MCPcopy Create free account
hub / github.com/PaddlePaddle/Paddle / TEST

Function TEST

test/cpp/phi/kernels/test_cache.cc:26–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24enum ConvAlgos { GEMMKernel = 0, CuDNNKernel_1 = 1, CuDNNKernel_2 = 2 };
25
26TEST(AlgosCache, AlgosCache) {
27 auto autotune_cache = phi::autotune::AutoTuneCache::Instance();
28 auto& cache =
29 autotune_cache.GetConv(phi::autotune::AlgorithmType::kConvForward);
30
31 std::vector<int64_t> x_shape = {4, 224, 224, 3};
32 std::vector<int64_t> w_shape = {32, 3, 3, 3};
33 std::vector<int> paddings = {0, 0};
34 std::vector<int> strides = {2, 2};
35 std::vector<int> dilations = {1, 1};
36 phi::DataType dtype = phi::CppTypeToDataType<float>::Type();
37
38 phi::autotune::ConvCacheKey key(
39 x_shape, w_shape, paddings, strides, dilations, dtype, 0, 0);
40 EXPECT_EQ(cache.Find(key), false);
41 phi::autotune::ConvAutoTuneResult node(
42 static_cast<int64_t>(ConvAlgos::GEMMKernel), 0, false);
43 cache.Set(key, node);
44 EXPECT_EQ(cache.Size(), 1);
45 EXPECT_EQ(cache.Find(key), true);
46 auto algo = cache.Get(key);
47 EXPECT_EQ(algo.algo, ConvAlgos::GEMMKernel);
48
49 x_shape = {4, 128, 128, 3};
50 phi::autotune::ConvCacheKey key1(
51 x_shape, w_shape, paddings, strides, dilations, dtype, 0, 1);
52 EXPECT_EQ(cache.Find(key1), false);
53 phi::autotune::ConvAutoTuneResult node1(
54 static_cast<int64_t>(ConvAlgos::CuDNNKernel_1), 0, false);
55 cache.Set(key1, node1);
56 EXPECT_EQ(cache.Size(), 2);
57 EXPECT_EQ(cache.CacheHits(), 1);
58 EXPECT_EQ(cache.CacheMisses(), 2);
59
60 float cache_hit_rate = static_cast<float>(1) / static_cast<float>(3);
61 EXPECT_LT(std::abs(cache_hit_rate - cache.CacheHitRate()), 1e-5);
62
63 autotune_cache.UpdateStatus();
64 EXPECT_EQ(autotune_cache.Size(), 2);
65 EXPECT_EQ(autotune_cache.CacheHits(), 1);
66 EXPECT_EQ(autotune_cache.CacheMisses(), 2);
67 EXPECT_LT(std::abs(cache_hit_rate - autotune_cache.CacheHitRate()), 1e-5);
68}

Callers

nothing calls this directly

Calls 11

InstanceFunction · 0.85
UpdateStatusMethod · 0.80
TypeClass · 0.50
absFunction · 0.50
FindMethod · 0.45
SetMethod · 0.45
SizeMethod · 0.45
GetMethod · 0.45
CacheHitsMethod · 0.45
CacheMissesMethod · 0.45
CacheHitRateMethod · 0.45

Tested by

no test coverage detected