MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / Benchmark

Method Benchmark

tensorflow/lite/experimental/ruy/test.h:1831–1989  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1829
1830template <typename LhsScalar, typename RhsScalar, typename SpecType>
1831void TestSet<LhsScalar, RhsScalar, SpecType>::Benchmark(
1832 TestResult<typename SpecType::DstScalar>* result) {
1833 using DstScalar = typename SpecType::DstScalar;
1834
1835 const bool cold = getenv("RUY_BENCHMARK_COLD");
1836 LhsScalar* orig_lhs_data = lhs.matrix.data.get();
1837 RhsScalar* orig_rhs_data = rhs.matrix.data.get();
1838 DstScalar* orig_dst_data = result->storage_matrix.matrix.data.get();
1839 void* orig_prepacked_lhs_data = result->prepacked_lhs.data;
1840 void* orig_prepacked_rhs_data = result->prepacked_rhs.data;
1841
1842 int num_matmul_sets = 0;
1843
1844 RepeatedBuffer<LhsScalar> cold_lhs;
1845 RepeatedBuffer<RhsScalar> cold_rhs;
1846 RepeatedBuffer<DstScalar> cold_dst;
1847 RepeatedBuffer<char> cold_prepacked_lhs;
1848 RepeatedBuffer<char> cold_prepacked_rhs;
1849
1850 if (cold) {
1851 const int kWorkingSetSize = 100 << 20;
1852 const int each_matmul_set_size = StorageSize(lhs.matrix) +
1853 StorageSize(rhs.matrix) +
1854 StorageSize(result->storage_matrix.matrix);
1855 num_matmul_sets =
1856 (kWorkingSetSize + each_matmul_set_size - 1) / each_matmul_set_size;
1857
1858 cold_lhs.Init(lhs.matrix.data.get(), FlatSize(lhs.matrix.layout),
1859 num_matmul_sets);
1860 cold_rhs.Init(rhs.matrix.data.get(), FlatSize(rhs.matrix.layout),
1861 num_matmul_sets);
1862 cold_dst.Init(result->storage_matrix.matrix.data.get(),
1863 FlatSize(result->storage_matrix.matrix.layout),
1864 num_matmul_sets);
1865 if (benchmark_prepack_lhs) {
1866 cold_prepacked_lhs.Init(static_cast<char*>(result->prepacked_lhs.data),
1867 result->prepacked_lhs.data_size, num_matmul_sets);
1868 }
1869 if (benchmark_prepack_rhs) {
1870 cold_prepacked_rhs.Init(static_cast<char*>(result->prepacked_rhs.data),
1871 result->prepacked_rhs.data_size, num_matmul_sets);
1872 }
1873 }
1874 const bool record_pmu = GetBoolEnvVarOrFalse("RUY_BENCHMARK_PMU");
1875 int repeats = GetIntEnvVarOrZero("RUY_BENCHMARK_REPEATS");
1876 if (!repeats) {
1877 repeats = 4;
1878 }
1879 float benchmark_min_secs = GetFloatEnvVarOrZero("RUY_BENCHMARK_MIN_SECS");
1880 if (!benchmark_min_secs) {
1881 benchmark_min_secs = 0.5;
1882 }
1883#ifdef GEMMLOWP_PROFILING
1884 const char* lhstype = TypeName<LhsScalar>();
1885 const char* lhssymm = SymmetryName(lhs.matrix);
1886 const char* rhstype = TypeName<RhsScalar>();
1887 const char* rhssymm = SymmetryName(rhs.matrix);
1888

Callers

nothing calls this directly

Calls 15

StorageSizeFunction · 0.85
GetBoolEnvVarOrFalseFunction · 0.85
GetIntEnvVarOrZeroFunction · 0.85
GetFloatEnvVarOrZeroFunction · 0.85
SymmetryNameFunction · 0.85
PathNameFunction · 0.85
infinityFunction · 0.85
NowFunction · 0.85
ToFloatSecondsFunction · 0.85
c_strMethod · 0.80
L1RefillCountMethod · 0.80
L2RefillCountMethod · 0.80

Tested by

no test coverage detected