currentSize.set(workspaceConfiguration.getInitialSize()); tempFile = new File(configuration.getTempFilePath()); if (tempFile.length() == 0 || tempFile.length() < configuration.getInitialSize()) { if (configuration.getInitialSize() > 0) { try { fillFile(tempFile, configuration.getInitialSize()); } catch (Exception e) { throw new RuntimeException(e); configuration.setInitialSize(tempFile.length()); } else if (configuration.getInitialSize() > 0) { try { tempFile = File.createTempFile("workspace", "tempMMAP"); fillFile(tempFile, configuration.getInitialSize());
public Nd4jWorkspace(@NonNull WorkspaceConfiguration configuration, @NonNull String workspaceId) { this.workspaceConfiguration = configuration; this.id = workspaceId; this.threadId = Thread.currentThread().getId(); this.guid = java.util.UUID.randomUUID().toString(); this.memoryManager = Nd4j.getMemoryManager(); this.deviceId = Nd4j.getAffinityManager().getDeviceForCurrentThread(); // and actual workspace allocation currentSize.set(workspaceConfiguration.getInitialSize()); if (workspaceConfiguration.getPolicyReset() == ResetPolicy.ENDOFBUFFER_REACHED && workspaceConfiguration.getPolicyAllocation() == AllocationPolicy.OVERALLOCATE) { if (workspaceConfiguration.getOverallocationLimit() < 1.0) throw new ND4JIllegalStateException("For cyclic workspace overallocation should be positive integral value."); stepsNumber = (int) (workspaceConfiguration.getOverallocationLimit() + 1); log.debug("Steps: {}", stepsNumber); } //if (workspaceConfiguration.getPolicyLearning() == LearningPolicy.OVER_TIME && workspaceConfiguration.getCyclesBeforeInitialization() < 1) //log.warn("Workspace [{}]: initialization OVER_TIME was selected, but number of cycles isn't positive value!", id); init(); }