openMP可否显式调用线程的私有全局变量(threadprivate)?

忙碌的小毛驴 2014-08-12 05:57:38
1、我在程序中使用了openMP进行并行化,并为每个线程设置了一个全局私有变量,此变量是一个数组。我希望能够最后用类似“规约”的方式将各数组相同下标的元素的值加起来。但是发现,这种方法在C++中无法实现。所以我想自己是否可以显式调用各线程的私有变量呢?
...全文
582 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
LoganINTC 2015-02-04
  • 打赏
  • 举报
回复
Hello, It's ok to use, 对于一些全局变量,可以用此指令指定全局变量,使得每一个线程都能有此全局变量的独立的拷贝,并且互相不影响。其实,可以理解为多线程中的“线程本地存储(TLS)". 指令格式和使用:pragma omp threadprivate (list) 其中list为全局变量,所以,在使用这个指令前,list中的变量要先声明。在第一次进入并行区域的时候,要注意变量为undefined,除非使用了一些子句赋值(后面会学习这些子句)。另外,threadprivate指令和private子句也是不一样的(后面会学习)。 注意:在使用threadprivate的时候,要关闭动态线程的属性,才能保证结果正确。 Thank you. -- Logan Intel Developer Support Please participate in our redesigned community support web site: User forums: http://software.intel.com/en-us/forums/

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧