Visual Studio 2013 OMP 发布模式

Posted

技术标签:

【中文标题】Visual Studio 2013 OMP 发布模式【英文标题】:Visual Studio 2013 OMP release mode 【发布时间】:2015-06-07 05:54:51 【问题描述】:

我正在尝试在 Visual Studio 2013 中使用 OpenMP。

它在调试模式下运行良好,并且性能大幅提升,但是当我切换到发布模式时,我在激活 OpenMP 的情况下得到最差的结果。

在发布模式下,打印线程号将始终为 0。

  printf("%d\n", omp_get_thread_num());

很明显我的问题是:OpenMP 是否在发布模式下工作? There is StackOverlfow 上已经有一个问题,但没有人回答

【问题讨论】:

【参考方案1】:

我用 MSVC2013 社区版做了一个小测试,它在发布时也能完美运行。

问题的可能原因是某些编译选项取决于所选的构建模式。因此,如果您在调试模式下设置了一些选项,例如/openmp,则必须确保在切换到发布模式后再次设置它们:

这里有一个小测试来证明它有效:

const int size = 2048;
double mytable[size];
std::map<int, int> t;

#pragma omp parallel for   
for(int n = 0; n < size; ++n) 
    double angle = 2 * 3.1415 * n / size; 
    mytable[n] = std::sin(angle) - std::pow(std::cos(angle), 2.0);
    t[omp_get_thread_num()]++; 

std::cout << "Number of elements processed per thread:"<<std::endl; 
for(auto &x : t)
    std::cout<< x.first<<": "<< x.second<<std::endl; 
std::cout << "Done" << std::endl;

【讨论】:

是的,我在 Debug 和 Release 上做了同样的配置。但是在那之后我重新启动了 VS 并且发布配置消失了,不得不再次这样做。现在它起作用了。感谢您的回答:D

以上是关于Visual Studio 2013 OMP 发布模式的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Express 2013 和 Visual Studio 2013 之间的区别

使用 clang-cl 在 Visual Studio 2019 中使用 Openmp 4/5

如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建

visual studio 2013 怎么发布网站到服务器的iis?求具体操作步骤

从 Visual Studio 2013 转换到 Visual Studio 2015 的问题

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015