Intel TBB を使用するコードがいくつかあり、32 コアのマシンで実行しています。コードでは、私は使用します
parallel_for(blocked_range (2,left_image_width-2, left_image_width /32) ...
並行作業を行うスレッドに 32 を生成する場合、競合状態はなく、各スレッドに同じ量の作業が与えられることが期待されます。プログラムの所要時間を測定するために clock_t を使用しています。特定の画像の場合、完了するまでに約 19 秒かかります。
次に、インテル® Parallel Studio でコードを実行したところ、コードは 2 秒で実行されました。これは私が期待していた結果ですが、なぜこの 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;
アドバイスをいただければ幸いです。