请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1384|回复: 1

关于OpenMP的变量的问题 [复制链接]

Rank: 5Rank: 5

注册时间
2014-5-12
积分
97
发表于 2016-12-14 16:20:04 |显示全部楼层
        OpenMP 是基于共享内存的编程模型,在程序编写中要注意变量的区分,我在使用过程中发现有一个变量同时被多个线程进行读和写,多线程读没问题,但是写会出现很大问题,产生线程不安全或者说是竞争关系,我想问的是如何消除这样的问题,使用critical或者原子操作都不能够解决,有没有办法在并行域之前给每一个线程分配独立的空间呢???

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2011-4-19
积分
1937
发表于 2017-2-1 08:46:08 |显示全部楼层
为什么atomic operation或者critical region不能解决?是因为读写性能很差吗?local variable 可以参考以下例子:

int count=0;
int tcount=0;
#pragma omp threadprivate(tcount)
omp_set_dynamic(0);
#pragma omp parallel
. . .
if (event_happened) {

tcount++;
}
. . .
}
#pragma omp parallel shared(count)
{
#pragma omp atomic
count += tcount;
}

Source: https://software.intel.com/en-us ... uce-synchronization

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-5-27 17:52 , Processed in 0.046684 second(s), 11 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部