F# fsi和fsianycpu中的处理器计数不同

F# fsi和fsianycpu中的处理器计数不同,f#,task-parallel-library,F#,Task Parallel Library,在一台40核的机器上,我有以下奇怪的行为:在fsi(12.0.30815.0)和fsianycpu(12.0.30815.0)中调用System.Environment.ProcessorCount,会导致不同的结果 在fsi中,我获取System.Environment.ProcessorCount=32在fsianycpu中,我获取System.Environment.ProcessorCount=40。这似乎也会影响任务并行库,当从fsi运行简单测试代码时,该库仅使用所有可用内核的80%(

在一台40核的机器上,我有以下奇怪的行为:在
fsi
(12.0.30815.0)和
fsianycpu
(12.0.30815.0)中调用
System.Environment.ProcessorCount
,会导致不同的结果

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


原因可能是什么?

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

请参阅:。没有确切证实(没有WoW64的行为文档),但提到32位Windows只支持32个处理器


编辑:请参阅另一篇堆栈溢出文章:

我认为这可能是windows的限制-从这里开始,32位限制为32个CPU!我没有意识到这一点。