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