fsi和fsianycpu中的处理器数量不同

时间:2015-09-17 08:13:53

标签: f# task-parallel-library

我在具有40个核心的计算机上有以下奇怪的行为:在System.Environment.ProcessorCount(12.0.30815.0)和fsi(12.0.30815.0)中调用fsianycpu会导致不同的结果。

fsi我在fsianycpu中获得System.Environment.ProcessorCount = 32,我得到System.Environment.ProcessorCount = 40。这似乎也会影响任务并行库,当从fsi运行简单的测试代码(处理器数量错误)时,它只使用80%的可用内核。

可能是什么原因?

1 个答案:

答案 0 :(得分:5)

默认情况下,FSI可能在32位模式下运行。假设您在Windows下运行,您应该可以通过任务管理器进行检查。我怀疑这是在WoW64下运行的应用程序的限制(使用64位Windows运行32位应用程序)。

请参阅:https://msdn.microsoft.com/en-us/library/windows/desktop/aa384228%28v=vs.85%29.aspx。没有完全确认(没有WoW64的记录行为),但它提到32位Windows仅支持32个处理器。

编辑:同时查看此其他堆栈溢出帖子:Detecting the number of processors