omp


int layer_for = 2;
int each_task_size_for = 100000 / 20;
int num_threads = omp_get_max_threads();
//	int num_threads_limit = omp_get_thread_limit();//编不过?
printf("多线程:%d\t%d\n", num_threads);
omp_set_num_threads(num_threads);

#pragma omp parallel num_threads(num_threads) private(x)
{
#pragma omp for
			for (int y = 1; y < height - 1; ++y)
			{
				for (int x = 0; x < width; ++x)
				{
					pGrad[y*dpitch + x] = pSrc[(y + 1)*spitch + x] - pSrc[(y - 1)*spitch + x];
				}
			}

#pragma omp master
#pragma omp single
#pragma omp for collapse(layer_for)    //only 3.0?
#pragma omp for	schedule(dynamic, each_task_size_for)
#pragma omp for nowait 
}

 

1. omp Task以及taskwait还没确切掌握相关特性,有待更多资料

2. for语句加了nowait,但又希望再后续某阶段等待其结束,不清楚应该怎么处理,有待更多资料

3. 实际使用中collapse 与 omp_get_thread_limit似乎编不过,只有3.0以上才支持?

4.实际使用omp与自己使用thread比对,并行性能差不多,有效果,但多次跑似乎有不稳定现象,使用omp多线程性能时高时低,波动范围在最优性能的1.5倍之内,没找到原因在哪。 进一步测试,好像加了nowait会好一些?但自己写的thread比对代码也有wait,并不慢,还是没明白原因。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值