首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSVC是否会自动优化双核架构上的计算?

MSVC是否会自动优化双核架构上的计算?
EN

Stack Overflow用户
提问于 2010-01-14 11:28:56
回答 4查看 356关注 0票数 1

MSVC是否会自动优化双核架构上的计算?

代码语言:javascript
复制
void Func()
{
   Computation1();
   Computation2();
}

如果给定函数中没有关系的2计算,则visual studio

编译器会自动优化计算并将它们分配到不同的内核吗?

EN

回答 4

Stack Overflow用户

发布于 2010-01-14 11:37:10

不要引用我的话,但我对此表示怀疑。OpenMP编译指示与您在这里要做的事情最接近,但即使这样,您也必须告诉编译器使用OpenMP并描述任务。

除了链接到本质上是多线程的库之外,如果你想同时使用两个核心,你必须设置线程并智能地划分你想要完成的工作。

票数 9
EN

Stack Overflow用户

发布于 2010-01-14 11:49:50

编译器没有可靠的方法来检测这两个函数是完全独立的,并且它们没有状态。因此,编译器没有办法知道将它们分解到单独的执行线程中是安全的。事实上,线程甚至不是C++标准的一部分(直到C++1x),即使它们将成为标准的一部分,它们也不是固有特性-您必须显式地使用该特性才能从中受益。

如果你想让你的两个函数在独立的线程中运行,那么创建独立的线程让它们在其中执行。查看boost::thread (如果您的编译器有的话,也可以在std::tr1名称空间中使用它)。它易于使用,并且完美地适用于您的用例。

票数 2
EN

Stack Overflow用户

发布于 2010-01-14 15:11:49

不是的。如果编译器在你背后做这样的事情,疯狂的事情会随之而来;如果Computation2依赖于Computation1的副作用呢?

如果你使用的是VC10,看看concert和它的合作伙伴Parallel Patterns Library (PPL)

类似的解决方案包括OpenMP (有点老掉牙的国际海事组织,但受到广泛支持)和英特尔的Threading Building Blocks

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

https://stackoverflow.com/questions/2061990

复制
相关文章

相似问题

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