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