gpt4 book ai didi

c - 如何测量openmp中每个线程的执行时间?

转载 作者:太空狗 更新时间:2023-10-29 15:28:31 26 4
gpt4 key购买 nike

我想测量每个线程执行一段代码所花费的时间。我想看看我的负载平衡策略是否在工作人员之间平均分配 block 。通常,我的代码如下所示:

#pragma omp parallel for schedule(dynamic,chunk) private(i)
for(i=0;i<n;i++){
//loop code here
}

更新我正在使用带有 gcc 的 openmp 3.1

最佳答案

您可以通过这种方式打印每个线程的时间(未测试,甚至未编译):

#pragma omp parallel
{
double wtime = omp_get_wtime();
#pragma omp for schedule( dynamic, 1 ) nowait
for ( int i=0; i<n; i++ ) {
// whatever
}
wtime = omp_get_wtime() - wtime;
printf( "Time taken by thread %d is %f\n", omp_get_thread_num(), wtime );
}

注意 nowaitthan 移除了 for 循环末尾的 barrier,否则这将没有任何意义。

当然,使用适当的分析工具是一种更好的方法...

关于c - 如何测量openmp中每个线程的执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com