繁体   English   中英

如何仅在一个CPU上运行C ++程序?

[英]How to run a C++ program only on one CPU?

我一直在阅读有关如何检查我的计算机有多少个CPU或内核(MacBook OS X,Sierra,v。10.12、2GHz Intel Core i7)的信息,但是这里有很多不同的答案,例如:

如何在Mac OS X上发现*逻辑*内核的数量?

不过,我需要确保C ++程序仅在一个CPU上运行1个(如果可能的话,只能在一个内核上运行,即无需调度,即我的程序应具有专用内核才能在=>上运行)我不确定我的Mac OS X架构的实际组织方式)。

我不确定是否应该在实现,编译或执行级别完成此操作。 我见过人们在谈论taskset Ubuntu的,但我不知道这是对我来说是合适的工具(也许它根本不存在于Mac OS X)。

注意:如果您认为应该在另一个Stack Exchange的网站上询问此问题,请告诉我,我将其移至该位置。 实际上,我希望我的解决方案是跨平台的,所以也许这不是问这个问题的最佳地点。

流程是有计划的,非计划流程的想法是矛盾的。

也就是说,将自己限制为一个CPU几乎是C ++中的默认设置。 main从一个线程开始,除非您创建其他线程,否则您将获得全部。

您提到您想要一个“专用”核心。 有一种将线程固定到核心的想法,可以实现这种目的,但是您可以弄清楚如果两个程序将自己固定到同一核心会发生什么。 当两个程序共享该固定内核时,另一个内核可能完全未使用。 这是超级计算机的一项功能,超级计算机的内核无法统一访问内存,因此您应该匹配CPU内核和内存分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM