CPU 性能:时钟速度或内核数运行 JMP 时,是在较低频率下拥有更多内核更好还是反之亦然? 我认为很少有平台是线程化的,所以这会让我相信时钟速度更重要。但我不确定这是否仍然正确。我知道我正在谈论一般情况,而准确地谈论它几乎是不可能的。不管怎么说,还是要谢谢你。
回复:CPU 性能:时钟速度或内核数JMP 使用可用处理器的效果取决于正在运行的分析平台和正在处理的数据。 下面是 JMP 在文本解析阶段运行文本资源管理器,处理长文档,行数 > 处理器数。 (其他平台的行为会有所不同,有些平台将无法利用线程。 文本资源管理器的解析是我最近使用的。)
100% busy100% 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% busy but not making progress much faster100%忙碌,但进展并没有更快
我怀疑这些 CPU 互相妨碍。 在内存中移动的 1 GB 文档有很多机会搅动 CPU 中的缓存。 大多数 JMP 是在具有 4 到 12 个 CPU 的机器上开发的,这很可能就是算法调整的目的。 例如,在文本资源管理器完成解析步骤后,它使用一半的处理器组合解析结果,因为我们确定这比在 8 CPU 计算机上使用所有处理器更快。
所以,是的,4-12 个 CPU、更快的 CPU 以及足够的内存以避免分页。 如果您没有足够的内存来保存数据而不分页到磁盘,那么其他方法都无济于事。
回复:CPU 性能:时钟速度或内核数@vince_faller :为了回答您最初的问题,我个人建议优化 JMP 的一份副本(在 Windows 上)是尽可能使用最快的 4 或 6 个处理器。
@tx尼尔森:我应该更清楚,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大多是单线程的。所以这是一个混合情况。我的建议是打开任务管理器,然后打开其中的性能选项卡。然后,如果您运行典型的作业流程,您将清楚地看到应用程序何时在多核上运行以及何时在单核上运行。从那里,您可以做出决定。