Saturation Memory Error with the CLI
J'ai testé le CLI avec le fichier suivant (random propositionnal KB avec 200k règles, mais dont la saturation devrait générer moins de 10k atomes). Le load se passe bien (moins de 4 secondes, mon parser textx est jaloux). Par contre, la saturation (mon algo naïf Python spécialisé en propositionnel met moins de 2s à la calculer) balance un problème mémoire au bout de 5 mins. Voici le message d'erreur affiché.
Saturating facts from "random2.prog" with rules from "random2.prog"...
java.lang.OutOfMemoryError: Java heap space at java.base/java.util.LinkedList.listIterator(LinkedList.java:880)
at java.base/java.util.AbstractList.listIterator(AbstractList.java:313)
at java.base/java.util.AbstractSequentialList.iterator(AbstractSequentialList.java:240)
at fr.lirmm.graphik.util.LinkedSet.addAll(LinkedSet.java:72)
at fr.lirmm.graphik.integraal.core.unifier.UnifierIterator.computePieceUnifiers(UnifierIterator.java:149)
at fr.lirmm.graphik.integraal.core.unifier.UnifierIterator.hasNext(UnifierIterator.java:105)
at fr.lirmm.graphik.util.stream.Iterators.toSet(Iterators.java:228)
at fr.lirmm.graphik.integraal.core.grd.DefaultGraphOfRuleDependencies.computeDependency(DefaultGraphOfRuleDependencies.java:357)
at fr.lirmm.graphik.integraal.core.grd.DefaultGraphOfRuleDependencies.computeDependencies(DefaultGraphOfRuleDependencies.java:391)
at fr.lirmm.graphik.integraal.core.grd.DefaultGraphOfRuleDependencies.<init>(DefaultGraphOfRuleDependencies.java:81)
at fr.lirmm.graphik.integraal.rulesetanalyser.util.AnalyserRuleSet.computeGRD(AnalyserRuleSet.java:279)
at fr.lirmm.graphik.integraal.rulesetanalyser.util.AnalyserRuleSet.getGraphOfRuleDependencies(AnalyserRuleSet.java:193)
at fr.lirmm.graphik.integraal.rulesetanalyser.util.AnalyserRuleSet.getStronglyConnectedComponentsGraph(AnalyserRuleSet.java:248)
at fr.lirmm.graphik.integraal.rulesetanalyser.util.AnalyserRuleSet.computeSCC(AnalyserRuleSet.java:284)
at fr.lirmm.graphik.integraal.rulesetanalyser.util.AnalyserRuleSet.getSCC(AnalyserRuleSet.java:258)
at fr.lirmm.graphik.integraal.rulesetanalyser.Analyser.combineFES(Analyser.java:123)
at fr.lirmm.graphik.integraal.rulesetanalyser.Analyser.isFES(Analyser.java:70)
at fr.boreal.api.high_level_api.EndUserAPI.isFes(EndUserAPI.java:275)
at fr.boreal.api.integraal_repl.IGCommands$SaturateCommand.saturateFromInput(IGCommands.java:431)
at fr.boreal.api.integraal_repl.IGCommands$SaturateCommand.run(IGCommands.java:384)
at picocli.CommandLine.executeUserObject(CommandLine.java:2026)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at picocli.shell.jline3.PicocliCommands.invoke(PicocliCommands.java:287)
at org.jline.console.impl.SystemRegistryImpl.execute(SystemRegistryImpl.java:1239)
at org.jline.console.impl.SystemRegistryImpl.execute(SystemRegistryImpl.java:1284)
at fr.boreal.api.integraal_repl.IGRepl.main(IGRepl.java:163)
Ci joint le fichier .prog (mais en fait c'est du DLGP) que j'ai utilisé.