private void createZooIfNeccessary(boolean useMDS) { if (zoo == null) { trainerContext.init(model, trainerContextArgs); zoo = new Trainer[workers]; int numDevices = Nd4j.getAffinityManager().getNumberOfDevices(); for (int cnt = 0; cnt < workers; cnt++) { // we pass true here, to tell Trainer to use MultiDataSet queue for training zoo[cnt] = trainerContext.create(cnt, model, Nd4j.getAffinityManager().getDeviceForCurrentThread(), useMDS, this, workspaceMode, averagingFrequency); /* zoo[cnt].setUncaughtExceptionHandler(handler); if (zoo[cnt] instanceof Thread) { Nd4j.getAffinityManager().attachThreadToDevice((Thread) zoo[cnt], cnt % numDevices); } zoo[cnt].start(); */ if (executorService == null) init(); executorService.execute(zoo[cnt]); } } }
private void createZooIfNeccessary(boolean useMDS) { if (zoo == null) { trainerContext.init(model, trainerContextArgs); zoo = new Trainer[workers]; int numDevices = Nd4j.getAffinityManager().getNumberOfDevices(); for (int cnt = 0; cnt < workers; cnt++) { // we pass true here, to tell Trainer to use MultiDataSet queue for training zoo[cnt] = trainerContext.create(cnt, model, Nd4j.getAffinityManager().getDeviceForCurrentThread(), useMDS, this, workspaceMode, averagingFrequency); /* zoo[cnt].setUncaughtExceptionHandler(handler); if (zoo[cnt] instanceof Thread) { Nd4j.getAffinityManager().attachThreadToDevice((Thread) zoo[cnt], cnt % numDevices); } zoo[cnt].start(); */ if (executorService == null) init(); executorService.execute(zoo[cnt]); } } }