首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过openMP或任何其他方法优化本特征库代码

如何通过openMP或任何其他方法优化本特征库代码
EN

Stack Overflow用户
提问于 2022-07-25 16:01:07
回答 1查看 84关注 0票数 -1

我想对我的代码进行并行化和优化,它使用了特征库,但由于这种情况,我很吃惊。

代码的一部分需要2-3 secs.in一次迭代,由于有一个which循环,多次重复运行,我无法在when循环上使用OpenMP,但是在使用代码的一部分时,它没有显示出优化。

代码结构-

代码语言:javascript
复制
while(error>1e-6){
  //some code ...

  //part that i want to optimize
        #pragma omp for
        for(int i=0; i<18; i++)
          {
            XFG_e.coeffRef(IDOF(i)-1) += XFE(i);
            XFG_i.coeffRef(IDOF(i)-1) += XFI(i);
            for (int j=0;j<18;j++)
            {
                XKG.coeffRef(IDOF(i)-1,IDOF(j)-1) += XKT(i,j);
                XMG.coeffRef(IDOF(i)-1,IDOF(j)-1) += XME(i,j);
            }  
          }     

}

请提出优化代码的方法..。使用openMP的任何更好的技术,任何的库优化,其他的库选择等等。

EN

回答 1

Stack Overflow用户

发布于 2022-07-27 01:30:50

这段代码首先是微小的:18平方迭代。并行回路末端的屏障很可能比操作更昂贵。

接下来,该位被错误地写入omp并行化:

代码语言:javascript
复制
x(i+1) += y(i)
x(i-1) += y(i)

不能保证左手边是不相交的,所以你会有并行写冲突。你首先要把它重写为

代码语言:javascript
复制
x(i) += y(i-1) + y(i+1)

但是首先问问自己,这段代码是做什么的?从预期的算法,是否有可能有明显的-不相交的左手边在一些重写?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73112189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档