我有一些使用 Intel TBB 的代码,我在 32 核机器上运行。在代码中,我使用
parallel_for(blocked_range (2,left_image_width-2, left_image_width /32) ...
为执行并发工作的线程生成 32 个线程,没有竞争条件,并且希望每个线程都获得相同数量的工作。我正在使用 clock_t 来测量我的程序需要多长时间。对于某个图像,大约需要 19 秒才能完成。
然后我通过 Intel Parallel Studio 运行我的代码,它在 2 秒内运行了代码。这是我所期待的结果,但我无法弄清楚为什么两者之间存在如此大的差异。time_t 是否对所有内核的时钟周期求和?即使那样也没有意义。下面是有问题的片段。
clock_t begin=clock();
create_threads_and_do_work();
clock_t end=clock();
double diffticks=end-begin;
double diffms=(diffticks*1000)/CLOCKS_PER_SEC;
cout<<"And the time is "<<diffms<<" ms"<<endl;
任何意见,将不胜感激。