【问题标题】:xeon phi timer resolution至强 phi 定时器分辨率
【发布时间】:2013-10-26 13:37:23
【问题描述】:

我的主要目标是在 xeon phi 协处理器中插入 1 毫秒的延迟,但我的结果却有大约 9 毫秒的差异。因此,我尝试使用至强主机和 phi 协处理器进行试验,以找到计时器分辨率。我执行了以下代码:

    #include <stdio.h>
    #include <time.h>
    #include <sys/time.h>
    int main()
    {
      struct timespec tim, tim2;
      tim.tv_sec = 0;
      tim.tv_nsec = 100000;
      struct timeval tv;
      double temp_2=0;
      int i =0;
      for ( i=0;i<1000;i++)
       {
         gettimeofday(&tv, NULL);
         double t1=tv.tv_sec+(tv.tv_usec/1000000.0);

         nanosleep(&tim , NULL);

         gettimeofday(&tv, NULL);
         double t2=tv.tv_sec+(tv.tv_usec/1000000.0);

         temp_2+=(t2-t1);
       }
      printf("Nano sleep successfull %lf\n",temp_2/1000);

     return 0;
    } 

在主机中运行以下程序:

./a.out Nano sleep 成功 0.000155

在至强 phi 协处理器中运行:

./nsleep_mic Nano sleep 成功 0.009998

所以我在 xeon phi 中得到了几乎 90% 的错误等待。

  1. 为什么会发生这种错误的等待?
  2. 如果我想要1ms的睡眠时间怎么解决?

【问题讨论】:

    标签: timer sleep intel-mic nuxeo xeon-phi


    【解决方案1】:

    这里没有足够的信息来完全回答您的问题 - 请添加 MPSS 的版本和当前的时钟源设置;但是,...

    请查看 dmesg 和当前时钟源,以确保您使用的是 TSC 并且没有遇到问题。此外,请阅读 Ravi Murty 的这篇优秀文章,以帮助您了解您可能在使用 Xeon Phi 时钟源时遇到的一些问题:

    http://software.intel.com/en-us/blogs/2013/06/20/eliminate-the-dreaded-clocksource-is-unstable-message-switch-to-tsc-for-a-stable

    我建议您将当前的时钟源设置为 micetc,这会在每次您的代码(或代表您的内核)想要读取时间时读取设备的 mmio 空间而产生额外的开销。切换到 TSC 以避免这种情况。较新版本的 MPSS 应使用 TSC 作为默认时钟源进行设置,但请阅读 Ravi 的文章并确保您的设备设置正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多