Зачем нужно прогревать кеш при выполнении теста на гору памяти - PullRequest
0 голосов
/ 07 мая 2019

Почему нам нужно прогреть кеш перед тестом пропускной способности и как это сделать.Независимо от того, достаточно ли велик набор данных, прогревать кэш не имеет смысла.Возьмем пример, почему код mountain.c в разогревах CSAPP кешируется два раза.Один находится в основном цикле перед реальной тестовой частью, другой - в реальной тестовой части.Весь код может быть загружен в http://csapp.cs.cmu.edu/3e/code.html

в основном цикле, кэш был разогрет один раз, что является тестовым методом


  test(elems, stride);                     /* Warm up the cache */       //line:mem:warmup
    cycles = fcyc2(test, elems, stride, 0);  /* Call test(elems,stride) */ //line:mem:fcyc
    return (size / stride) / (cycles / Mhz); /* Convert cycles to MB/s */  //line:mem:bwcompute
}

в реализации fcyc2, кэш нагрелсяснова

if (compensate) {
    do {
      double cyc;
      if (clear_cache)
    clear();
      f(param1, param2);   /* warm cache */
      start_comp_counter();
      f(param1, param2);
      cyc = get_comp_counter();
      add_sample(cyc, k);
    } while (!has_converged(k, epsilon, maxsamples) && samplecount < maxsamples);
  } else {
    do {
      double cyc;
      if (clear_cache)
    clear();
      f(param1, param2); /* warm cache */
      start_counter();
      f(param1, param2);
      cyc = get_counter();
      add_sample(cyc, k);
    } while (!has_converged(k, epsilon, maxsamples) && samplecount < maxsamples);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...