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

Mai*_*nID 1 c++ architecture compiler-construction visual-studio

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

void Func()
{
   Computation1();
   Computation2();
}
Run Code Online (Sandbox Code Playgroud)

如果在函数中没有关系的2计算,那么是visual studio

编译器自动优化计算并将它们分配给不同的核心?

Sam*_*ost 9

不要引用我,但我对此表示怀疑.OpenMP pragma是你在这里尝试做的最接近的事情,但即便如此,你必须告诉编译器使用OpenMP并描述任务.

除非链接到本质上是多线程的库,否则如果要使用这两个内核,则必须设置线程并智能地划分您想要完成的工作.


Mar*_*ins 6

不需要.您可以创建线程(或光纤)并指定在每个线程上运行的代码.定义的函数将按顺序运行.它可能在执行期间切换到另一个线程(感谢Drew)核心,但它仍然是顺序的.为了使两个函数在两个不同的内核上并发运行,它们必须首先在两个独立的线程中运行.

正如greyfade指出的那样,编译器无法检测是否可能.事实上,我怀疑这是NP-Complete问题的一类.如果我错了,我相信其中一位编译大师会告诉我.