CPU 性能:时钟速度或核心数运行 JMP 时,在较低频率下使用更多内核会更好,还是反之亦然? 我认为很少有平台是线程化的,所以这会让我相信时钟速度更重要。但我不确定这是否仍然正确。我知道我是在一般情况下发言,几乎不可能准确地与之交谈。不管怎么说,还是要谢谢你。
回复:CPU 性能:时钟速度或内核JMP 使用可用处理器的效果取决于运行的分析平台和正在处理的数据。 这是 JMP 在文本解析阶段运行 Text Explorer,处理长文档,行数 > 处理器数。 (其他平台的行为会有所不同,有些平台将无法利用线程。 Text Explorer 的解析是我最近使用的东西。)
100% busy100% 忙
Text Explorer 的算法并不总是能够让机器 100% 忙碌。 一些工作依赖于先完成的其他工作,而一些线程化的工作以让线程等待的方式竞争资源(如内存访问)。
dt = New Table( "bigtext",
Add Rows( 1000 ),
New Column( "text", Character, "Nominal", formula( Repeat( "aaa bbb ccc ", 1e5 ) ) )
);
dt << Text Explorer(
Text Columns( :text )
);
添加更多 CPU 是有限制的;这里所有 32/64 CPU 看起来都很忙,但工作以大致相同的速度进行:
100% busy but not making progress much faster100% 忙,但进步并不快
我怀疑这些 CPU 互相妨碍了。 在内存中移动的 GB 文档有很多机会搅动 CPU 中的高速缓存。 大多数情况下,JMP 是在具有 4 到 12 个 CPU 的机器上开发的,这很可能是算法的调整目标。 例如,在 Text Explorer 完成解析步骤后,它使用一半的处理器组合解析结果,因为我们确定这比在 8 CPU 机器上使用所有处理器更快。
所以,是的,4-12 个 CPU,更快的 CPU 和足够的内存来避免分页。 如果您没有足够的内存来保存数据而无需分页到磁盘,那么没有其他方法可以帮助您。
回复:CPU 性能:时钟速度或内核@vince_faller :回答您最初的问题我个人建议优化一份 JMP(在 Windows 上)是获得最快的 4 或 6 个处理器。
@txnelson :我应该更清楚,JMP 经常使用所有内核的一小部分,但并没有将它们全部使用到容量。这让我相信 JMP 运行时实际的“工作”线程少于 8 或 12 个,并且处理由操作系统从一个核心转移到另一个核心。
JMP 的这一特性困扰着我,因此我花了一些时间来测试我的理论,即 JMP 只使用了全部内核的一小部分。 以下是在各自的 JMP 实例中同时运行 1、2、3 或 4 个脚本副本时的结果。
一个实例
19-21秒

两个实例
26-28秒

三例
34-39秒

四个实例
43-47秒

一次运行两个副本的时间肯定少于运行一个两次的时间:

Names default to here( 1);
dt = Open( "$Sample_data/probe.jmp", Private );
Random reset(1);
valcol = dt << New Column( "Validation",
Numeric, "Nominal", Set formula( Random Category( 0.75, 0, 0.25, 1, 2 ) ),
Value Labels( {0 = "Training", 1 = "Validation", 2 = "Test"} ), Use Value Labels( 1 )
);
dt << Run Formulas; valcol << Delete Formula;
timeboot = Function( {},
start = Today();
xvars = Substitute(Char((dt << Get Column Names)[8::394]), "{", "", "}", "");
Eval( Parse(
"rf = dt << Bootstrap Forest(
Y( :Process ),
X( " || xvars || " ),
Validation Portion( :Validation ),
Method( \!"Bootstrap Forest\!" ),
Portion Bootstrap( 1 ),
Number Terms( 30 ),
Number Trees( 2000 ),
Early Stopping( 0 ),
Go
);"
));
rf << Close Window;
end = Today();
return(end - start);
);
win = New window("Time Bootstrap",
V List Box(
r = text box( "", << Set Width( 100 ) ),
H List Box(
Button Box( "Start", r << Set Text( Char( timeboot() ) || " seconds" ) ),
Button Box( "Close", dt << Close Window; win << Close Window; )
)
)
);回复:CPU 性能:时钟速度或内核我的发现是不同的,这可能是由于我一直在测试的平台。当我运行 Random Forrest 时,我可以轻松地在 Windows 7 和 Windows 10 下的所有 CPU 上运行。平均而言,占用总 CPU 容量的 35% 以上。我只有 8 个进程....不是你的 12 个美妙的总数,但所有 8 个都在解决这个问题。
回复:CPU 性能:时钟速度或内核我还没有看到一个 JMP 实例在 Windows 7 桌面上使用 12 个内核中的 6 个以上。 它通常伴随着 25% 的处理器使用率。回复:CPU 性能:时钟速度或内核文斯,
大多数分析平台都是多线程的,而 JSL 大多是单线程的。所以这是一个混合案例。我的建议是打开任务管理器,然后打开其中的性能选项卡。然后,如果您运行典型的工作流程,您将清楚地看到您的应用程序何时使用多核,何时使用单核。从那里,您可以做出决定。