在大学的高端计算集群中,我使用以下脚本来运行Java程序(repls.class):
#$ -S /bin/bash
#$ -q serial
#$ -l h_vmem=10G
source /etc/profile
module add java
export CLASSPATH=$CLASSPATH:`pwd`
java -Xmx3000M -Xms128M -Djava.awt.headless=true -classpath ".:./netlogo/app/netlogo-6.1.0.jar" repls 1 1 1 5 "E,16070608MAT,16070608MAT,L160706-08-MATHS-R3.txt,L160706-08-MATHS.csv"
(集群操作系统是CentOS Linux,作业提交由Grid Engine的Son处理。)
“ repls.class”启动NetLogo,无头运行我的程序“ VizSim19Calib.nlogo”。它还为运行设置了几个全局变量。 ‘VizSim19Calib.nlogo’运行许多模拟(重复-但进行5次测试)。
问题在于每个模拟都需要大约3秒钟即可运行,而在我自己的桌面上,每次仿真大约需要花费3秒钟。 1.5秒!
我对虚拟内存,堆或堆栈使用什么设置都没关系-即使将这些设置加倍也没有区别,即:#$ -l h_vmem = 20G和-Xmx6000M -Xms256M
为什么模拟运行这么慢?
NetLogo类和jar文件的位置可以负责吗?
它们在我的主文件夹下的目录中。
我的Java程序“ repls.java”基本上是:
import org.nlogo.headless.HeadlessWorkspace;
public class repls {
public static void main(String[] args) {
try { …
HeadlessWorkspace workspace =
HeadlessWorkspace.newInstance() ;
try {
workspace.open("VizSim19Calib.nlogo",false);
workspace.command("startup");
workspace.command("set Test? false");
workspace.command("set SIMULATION-RUN-ID " + args[0]);
…
workspace.command(
"RunOneLessonParamReps SelectedLessonData #Replications"
);
workspace.dispose();
}
catch(Exception ex) {
…
}
}
catch (NumberFormatException e) {
…
} } }
答案 0 :(得分:2)
我意识到NetLogo默认使用我台式机上的所有4个内核,但是在大学集群的单个计算节点之一上只使用1个。我将其增加到4核再到8核,并且速度提高是所希望的!今晚我会尝试16点。我认为此事已经结束。