Почему безголовая симуляция NetLogo работает медленнее на высокопроизводительном компьютерном кластере, чем на моем настольном компьютере? - PullRequest
1 голос
/ 21 июня 2019

В высокопроизводительном вычислительном кластере моего университета я использую следующий скрипт для запуска 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, с передачей заданий, обработанной Son of Grid Engine.)

repls.class запускает NetLogo и запускает мою программу VizSim19Calib.nlogo без головы. Он также устанавливает несколько глобальных переменных для запуска. «VizSim19Calib.nlogo» выполняет много симуляций (репликации - но тестирование с 5).

Проблема в том, что каждая симуляция занимает ок. 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) { 
        …
    } } }

1 Ответ

2 голосов
/ 21 июня 2019

Я понял, что NetLogo использует все 4 ядра на моем компьютере, но только 1 на одном из вычислительных узлов университетского кластера по умолчанию. Я увеличил это до 4, а затем 8 ядер, и улучшение скорости по желанию! Я попробую 16 сегодня вечером. Я думаю, что дело закрыто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...