private void testRealStrategy(Dimension[] shape, int elemSize) { List<Dimension> dims = Arrays.asList(shape); show("shape", dims); System.out.printf(" elemSize = %d%n", elemSize); Nc4ChunkingDefault chunker = new Nc4ChunkingDefault(); int[] result = chunker.computeUnlimitedChunking(dims, elemSize); show("chunk", result); long shapeSize = new Section(result).computeSize(); System.out.printf(" size = %d%n%n", shapeSize); int expectSize = chunker.getMinChunksize() / elemSize; assert shapeSize == expectSize : shapeSize +" != "+ expectSize; }
private void testOneStrategy(Dimension[] shape, int maxChunkElems, long expectSize) { List<Dimension> dims = Arrays.asList(shape); show("shape", dims); System.out.printf(" max = %d%n", maxChunkElems); Nc4ChunkingDefault chunker = new Nc4ChunkingDefault(); chunker.setDefaultChunkSize(maxChunkElems); chunker.setMinChunksize(maxChunkElems); int[] result = chunker.computeUnlimitedChunking(dims, 1); show("chunk", result); long shapeSize = new Section(result).computeSize(); System.out.printf(" size = %d%n%n", shapeSize); assert shapeSize <= maxChunkElems; assert shapeSize >= maxChunkElems/2; assert shapeSize == expectSize : shapeSize +" != "+ expectSize; }
@Override public long[] computeChunking(Variable v) { /* check attribute int[] resultFromAtt = computeChunkingFromAttribute(v); if (resultFromAtt != null) return convertToLong(resultFromAtt); */ int maxElements = defaultChunkSize / v.getElementSize(); // no unlimited dimensions if (!v.isUnlimited()) { int[] result = fillRightmost(v.getShape(), maxElements); return convertToLong(result); } // unlimited case int[] result = computeUnlimitedChunking(v.getDimensions(), v.getElementSize()); return convertToLong(result); }
@Override public long[] computeChunking(Variable v) { // check attribute int[] resultFromAtt = computeChunkingFromAttribute(v); if (resultFromAtt != null) return convertToLong(resultFromAtt); int maxElements = defaultChunkSize / v.getElementSize(); // no unlimited dimensions if (!v.isUnlimited()) { int[] result = fillRightmost(v.getShape(), maxElements); return convertToLong(result); } // unlimited case int[] result = computeUnlimitedChunking(v.getDimensions(), v.getElementSize()); return convertToLong(result); }