NetLogo HPC内存错误

时间:2015-07-27 03:26:47

标签: java netlogo

#!/bin/bash
#$ -N para_three
#$ -q all.q
#$ -pe mpi 30
/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh \
    --model /home/abhishekb/models/try4.nlogo \
    --experiment experiment1 \
    --table /home/abhishekb/csvresults/24.04_Results.csv 

错误:

Exception in thread "JobThread" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"
Exception in thread "JobThread" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"
Exception in thread "JobThread" 
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "JobThread"

为什么,我不明白?我找到了使用64位java运行NetLogo的建议。但是[1] [2]链接已过期,请提供帮助。

令人惊讶的是,早些时候我在NetLogo 5.1上运行它并且从未出现过这个错误。

脚本更改: 我试着在最后添加线程:

#!/bin/bash
#$ -N para_three
#$ -q all.q
#$ -pe mpi 30
/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh \
    --model /home/abhishekb/models/try4.nlogo \
    --experiment experiment1 \
    --table /home/abhishekb/csvresults/24.04_Results.csv \
    --threads 30

新错误:

Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
    at org.nlogo.generator.CustomClassLoader.loadClass(CustomClassLoader.scala:27)
    at org.nlogo.generator.CustomClassLoader.loadBytecodeClass(CustomClassLoader.scala:32)
    at org.nlogo.generator.Generator$InstructionGenerator.finish(Generator.scala:241)

编辑3:

#!/bin/sh
cd "`dirname "$0"`"             # the copious quoting is for handling paths with spaces
#-Xmx3000m                     use up to 1GB RAM (edit to increase)
# -Dfile.encoding=UTF-8         ensure Unicode characters in model files are compatible cross-platform
# -classpath NetLogo.jar        specify main jar
# org.nlogo.headless.Main       specify we want headless, not GUI
# "$@"                          pass along any command line arguments
-XX:MaxPermSize=3200m          avoid OutOfMemory errors for large models
java -Xmx1024m -Dfile.encoding=UTF-8 -classpath NetLogo.jar org.nlogo.headless.Main "$@"

错误:

  

/home/abhishekb/netlogo/netlogo-5.2.0/netlogo-headless.sh:8行:-XX:MaxPermSize = 3200m:找不到命令   线程“main”中的异常java.lang.OutOfMemoryError:PermGen空间at   java.lang.ClassLoader.defineClass(ClassLoader.java:800)at   java.lang.ClassLoader.defineClass(ClassLoader.java:643)at   org.nlogo.generator.CustomClassLoader.loadClass(CustomClassLoader.scala:27)     在   org.nlogo.generator.CustomClassLoader.loadBytecodeClass(CustomClassLoader.scala:32)     在   org.nlogo.generator.Generator $ InstructionGenerator.finish(Generator.scala:241)     在   org.nlogo.generator.Generator $ InstructionGenerator.generate(Generator.scala:93)     在   org.nlogo.generator.Generator.org $ nlogo $ $发电机发电机$$递归(Generator.scala:28)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateOldStyleCall $ 1.适用(Generator.scala:208)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateOldStyleCall $ 1.适用(Generator.scala:208)     在   scala.collection.TraversableLike $$ anonfun $表$ 1.适用(TraversableLike.scala:233)     在   scala.collection.TraversableLike $$ anonfun $表$ 1.适用(TraversableLike.scala:233)     在   scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:34)     在scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)at   scala.collection.TraversableLike $ class.map(TraversableLike.scala:233)     在scala.collection.mutable.ArrayOps.map(ArrayOps.scala:38)at   org.nlogo.generator.Generator $ InstructionGenerator.generateOldStyleCall(Generator.scala:208)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:146)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167)     at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167)     at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167)     在scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:81)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159)     在   org.nlogo.generator.Generator $ InstructionGenerator $$ anonfun $ generateInstruction $ 1.适用$ mcVI $ SP(Generator.scala:167)     at scala.collection.immutable.Range.foreach $ mVc $ sp(Range.scala:78)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateInstruction(Generator.scala:159)     在   org.nlogo.generator.Generator $ InstructionGenerator.generateBodyMethod(Generator.scala:115)     在   org.nlogo.generator.Generator $ InstructionGenerator.generate(Generator.scala:90)     在   org.nlogo.generator.Generator.org $ $ nlogo发电机$ $$发电机递归(Generator.scala:28)

1 个答案:

答案 0 :(得分:2)

错误消息是指PermGen,因此这意味着问题不是堆的总大小,而是具体的PermGen上限。您需要使用更高的PermGen设置启动Java,例如-XX:MaxPermSize=512m。您的netlogo-headless.sh文件中可能已存在此类设置;如果是这样,增加它。如果那里没有这样的设置,请添加一个。

我大约98%确定这与NetLogo 5.1和5.2之间的任何差异无关。对于你现在用5.2做什么以及你用5.1做什么(可能是threads=设置的大小),你可能还有其他的不同。

以下是NetLogo 5.2的默认netlogo.shnetlogo-headless.sh文件的工作链接:https://github.com/NetLogo/NetLogo/blob/5.2.0/dist/netlogo.shhttps://github.com/NetLogo/NetLogo/blob/5.2.0/dist/netlogo-headless.sh

运行64位JVM与解决PermGen问题无关,但对于运行非常大的堆可能是必需的。