【发布时间】: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% 的错误等待。
- 为什么会发生这种错误的等待?
- 如果我想要1ms的睡眠时间怎么解决?
【问题讨论】:
标签: timer sleep intel-mic nuxeo xeon-phi