回 帖 发 新 帖 刷新版面

主题:关于openmp下共享变量访问的问题

我用openmp在双核的机器上创建了两个线程,分别对一幅图象的上半部分和下半部分(不重叠)同时进行写操作。这时候,图象所占内存是共享变量,但是图象比较大,应该不容易出现伪共享的情况(这点我也不确定)。这种方法的计算时间和串行计算的时间差不多。
如果我为两个线程分别创建两块内存,设为私有变量,然后分别进行处理,最后把结果拷贝到整幅图象的内存中,(就是说把对共享变量的写操作放到最后进行)计算效率就提高了将近一倍。
因为就算是对共享变量进行写操作,但进行写操作的部分不会重叠,也就没有冲突的情况,我不知道为什么,请高手解答。

回复列表 (共1个回复)

沙发

其实就是对多线程对共享数据访问冲突的问题不是很明白。可能道理很简单,但是我对openmp了解也不多,所以始终想不通明白。

我来回复

您尚未登录,请登录后再回复。点此登录或注册