中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 1864|回复: 1

关于OpenMP的变量的问题

[复制链接]
发表于 2016-12-14 16:20:04 | 显示全部楼层 |阅读模式
        OpenMP 是基于共享内存的编程模型,在程序编写中要注意变量的区分,我在使用过程中发现有一个变量同时被多个线程进行读和写,多线程读没问题,但是写会出现很大问题,产生线程不安全或者说是竞争关系,我想问的是如何消除这样的问题,使用critical或者原子操作都不能够解决,有没有办法在并行域之前给每一个线程分配独立的空间呢???
发表于 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|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-5-24 02:27 , Processed in 0.041241 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表