Skip to content

Commit 73a3af8

Browse files
committed
Rename data layouts and adapters
1 parent 6aefda7 commit 73a3af8

69 files changed

Lines changed: 746 additions & 781 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TBool.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.tensorflow.tools.buffer.BooleanDataBuffer;
99
import org.tensorflow.tools.buffer.ByteDataBuffer;
1010
import org.tensorflow.tools.buffer.DataBuffers;
11-
import org.tensorflow.tools.buffer.adapter.BooleanDataAdapter;
11+
import org.tensorflow.tools.buffer.layout.BooleanDataLayout;
1212
import org.tensorflow.tools.ndarray.BooleanNdArray;
1313
import org.tensorflow.tools.ndarray.NdArray;
1414
import org.tensorflow.tools.ndarray.impl.dense.BooleanDenseNdArray;
@@ -55,7 +55,7 @@ private TBoolImpl(BooleanDataBuffer buffer, Shape shape) {
5555
super(buffer, shape);
5656
}
5757

58-
private static BooleanDataAdapter ADAPTER = new BooleanDataAdapter() {
58+
private static BooleanDataLayout ADAPTER = new BooleanDataLayout() {
5959

6060
@Override
6161
public void writeBoolean(ByteDataBuffer buffer, boolean value, long index) {

tensorflow-core/tensorflow-core-api/src/main/java/org/tensorflow/types/TString.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package org.tensorflow.types;
22

33
import com.google.common.base.Charsets;
4-
import java.util.concurrent.atomic.AtomicLong;
54
import org.tensorflow.DataType;
65
import org.tensorflow.Tensor;
76
import org.tensorflow.internal.buffer.StringTensorBuffer;
@@ -36,14 +35,14 @@ class TStringImpl extends DenseNdArray<String> implements TString {
3635
static Tensor<TString> createTensor(NdArray<String> src) {
3736

3837
// First, compute the capacity of the tensor to create
39-
AtomicLong size = new AtomicLong(src.size() * 8); // add space to store 64-bits offsets
40-
src.scalars().forEach(s -> {
38+
long size = src.size() * 8; // reserve space to store 64-bits offsets
39+
for (NdArray<String> s : src.scalars()) {
4140
byte[] bytes = s.getObject().getBytes(Charsets.UTF_8);
42-
size.addAndGet(bytes.length + varintLength(bytes.length)); // add space to store value + length
43-
});
41+
size += bytes.length + varintLength(bytes.length); // add space to store value + length
42+
}
4443

4544
// Allocate the tensor of the right capacity and init its data from source array
46-
Tensor<TString> tensor = Tensor.allocate(TString.DTYPE, src.shape(), size.get());
45+
Tensor<TString> tensor = Tensor.allocate(TString.DTYPE, src.shape(), size);
4746
StringTensorBuffer buffer = (StringTensorBuffer)(((TStringImpl)tensor.data()).buffer());
4847
buffer.init(src);
4948

tensorflow-tools/src/main/java/org/tensorflow/tools/buffer/DataBuffers.java

Lines changed: 90 additions & 90 deletions
Large diffs are not rendered by default.

tensorflow-tools/src/main/java/org/tensorflow/tools/buffer/impl/virtual/AbstractVirtualDataBuffer.java renamed to tensorflow-tools/src/main/java/org/tensorflow/tools/buffer/impl/adapter/AbstractDataBufferAdapter.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,34 @@
1-
package org.tensorflow.tools.buffer.impl.virtual;
1+
package org.tensorflow.tools.buffer.impl.adapter;
22

33
import org.tensorflow.tools.buffer.ByteDataBuffer;
44
import org.tensorflow.tools.buffer.DataBuffer;
5-
import org.tensorflow.tools.buffer.adapter.DataAdapter;
5+
import org.tensorflow.tools.buffer.layout.DataLayout;
66
import org.tensorflow.tools.buffer.impl.AbstractDataBuffer;
77
import org.tensorflow.tools.buffer.impl.Validator;
88

99
@SuppressWarnings("unchecked")
10-
abstract class AbstractVirtualDataBuffer<T, B extends DataBuffer<T>> extends AbstractDataBuffer<T> {
10+
abstract class AbstractDataBufferAdapter<T, B extends DataBuffer<T>> extends AbstractDataBuffer<T> {
1111

1212
@Override
1313
public long size() {
14-
return physicalBuffer.size() / adapter.sizeInBytes();
14+
return buffer.size() / layout.sizeInBytes();
1515
}
1616

1717
@Override
1818
public boolean isReadOnly() {
19-
return physicalBuffer.isReadOnly();
19+
return buffer.isReadOnly();
2020
}
2121

2222
@Override
2323
public T getObject(long index) {
2424
Validator.getArgs(this, index);
25-
return adapter.readValue(physicalBuffer, index * adapter.sizeInBytes());
25+
return layout.readValue(buffer, index * layout.sizeInBytes());
2626
}
2727

2828
@Override
2929
public B setObject(T value, long index) {
3030
Validator.setArgs(this, index);
31-
adapter.writeValue(physicalBuffer, value, index * adapter.sizeInBytes());
31+
layout.writeValue(buffer, value, index * layout.sizeInBytes());
3232
return (B)this;
3333
}
3434

@@ -39,19 +39,19 @@ public B copyTo(DataBuffer<T> dst, long size) {
3939
return (B)this;
4040
}
4141

42-
AbstractVirtualDataBuffer(ByteDataBuffer physicalBuffer, DataAdapter<T> adapter) {
43-
this.physicalBuffer = physicalBuffer;
44-
this.adapter = adapter;
42+
AbstractDataBufferAdapter(ByteDataBuffer buffer, DataLayout<T> layout) {
43+
this.buffer = buffer;
44+
this.layout = layout;
4545
}
4646

47-
DataAdapter<T> adapter() {
48-
return adapter;
47+
DataLayout<T> layout() {
48+
return layout;
4949
}
5050

51-
ByteDataBuffer physicalBuffer() {
52-
return physicalBuffer;
51+
ByteDataBuffer buffer() {
52+
return buffer;
5353
}
5454

55-
private final ByteDataBuffer physicalBuffer;
56-
private final DataAdapter<T> adapter;
55+
private final ByteDataBuffer buffer;
56+
private final DataLayout<T> layout;
5757
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tensorflow.tools.buffer.impl.adapter;
2+
3+
import org.tensorflow.tools.buffer.layout.BooleanDataLayout;
4+
import org.tensorflow.tools.buffer.BooleanDataBuffer;
5+
import org.tensorflow.tools.buffer.ByteDataBuffer;
6+
import org.tensorflow.tools.buffer.impl.Validator;
7+
8+
public class BooleanDataBufferAdapter extends AbstractDataBufferAdapter<Boolean, BooleanDataBuffer>
9+
implements BooleanDataBuffer {
10+
11+
public static BooleanDataBufferAdapter create(ByteDataBuffer delegate, BooleanDataLayout booleanAdapter) {
12+
return new BooleanDataBufferAdapter(delegate, booleanAdapter);
13+
}
14+
15+
@Override
16+
public boolean getBoolean(long index) {
17+
Validator.getArgs(this, index);
18+
return layout.readBoolean(buffer(), index * layout.sizeInBytes());
19+
}
20+
21+
@Override
22+
public BooleanDataBuffer setBoolean(boolean value, long index) {
23+
Validator.setArgs(this, index);
24+
layout.writeBoolean(buffer(), value, index * layout.sizeInBytes());
25+
return this;
26+
}
27+
28+
@Override
29+
public BooleanDataBuffer read(boolean[] dst, int offset, int length) {
30+
Validator.readArgs(this, dst.length, offset, length);
31+
for (int i = 0, j = offset; i < length; ++i, ++j) {
32+
dst[j] = layout.readBoolean(buffer(), i * layout.sizeInBytes());
33+
}
34+
return this;
35+
}
36+
37+
@Override
38+
public BooleanDataBuffer write(boolean[] src, int offset, int length) {
39+
Validator.writeArgs(this, src.length, offset, length);
40+
for (int i = 0, j = offset; i < length; ++i, ++j) {
41+
layout.writeBoolean(buffer(), src[j], i * layout.sizeInBytes());
42+
}
43+
return this;
44+
}
45+
46+
@Override
47+
public BooleanDataBuffer offset(long index) {
48+
return new BooleanDataBufferAdapter(buffer().offset(index * layout.sizeInBytes()), layout);
49+
}
50+
51+
@Override
52+
public BooleanDataBuffer narrow(long size) {
53+
return new BooleanDataBufferAdapter(buffer().narrow(size * layout.sizeInBytes()), layout);
54+
}
55+
56+
private BooleanDataBufferAdapter(ByteDataBuffer physicalBuffer, BooleanDataLayout layout) {
57+
super(physicalBuffer, layout);
58+
this.layout = layout;
59+
}
60+
61+
private BooleanDataLayout layout;
62+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.tensorflow.tools.buffer.impl.adapter;
2+
3+
import org.tensorflow.tools.buffer.ByteDataBuffer;
4+
import org.tensorflow.tools.buffer.DataBuffer;
5+
import org.tensorflow.tools.buffer.layout.DataLayout;
6+
7+
@SuppressWarnings("unchecked")
8+
public class DataBufferAdapter<T> extends AbstractDataBufferAdapter<T, DataBuffer<T>> {
9+
10+
public static <T> DataBufferAdapter<T> create(ByteDataBuffer delegate, DataLayout<T> layout) {
11+
return new DataBufferAdapter<>(delegate, layout);
12+
}
13+
14+
@Override
15+
public DataBuffer<T> offset(long index) {
16+
return new DataBufferAdapter<>(buffer().offset(index * layout().sizeInBytes()), layout());
17+
}
18+
19+
@Override
20+
public DataBuffer<T> narrow(long size) {
21+
return new DataBufferAdapter<>(buffer().narrow(size * layout().sizeInBytes()), layout());
22+
}
23+
24+
private DataBufferAdapter(ByteDataBuffer physicalBuffer, DataLayout<T> layout) {
25+
super(physicalBuffer, layout);
26+
}
27+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tensorflow.tools.buffer.impl.adapter;
2+
3+
import org.tensorflow.tools.buffer.layout.DoubleDataLayout;
4+
import org.tensorflow.tools.buffer.ByteDataBuffer;
5+
import org.tensorflow.tools.buffer.DoubleDataBuffer;
6+
import org.tensorflow.tools.buffer.impl.Validator;
7+
8+
public class DoubleDataBufferAdapter extends AbstractDataBufferAdapter<Double, DoubleDataBuffer>
9+
implements DoubleDataBuffer {
10+
11+
public static DoubleDataBufferAdapter create(ByteDataBuffer delegate, DoubleDataLayout doubleAdapter) {
12+
return new DoubleDataBufferAdapter(delegate, doubleAdapter);
13+
}
14+
15+
@Override
16+
public double getDouble(long index) {
17+
Validator.getArgs(this, index);
18+
return layout.readDouble(buffer(), index * layout.sizeInBytes());
19+
}
20+
21+
@Override
22+
public DoubleDataBuffer setDouble(double value, long index) {
23+
Validator.setArgs(this, index);
24+
layout.writeDouble(buffer(), value, index * layout.sizeInBytes());
25+
return this;
26+
}
27+
28+
@Override
29+
public DoubleDataBuffer read(double[] dst, int offset, int length) {
30+
Validator.readArgs(this, dst.length, offset, length);
31+
for (int i = 0, j = offset; i < length; ++i, ++j) {
32+
dst[j] = layout.readDouble(buffer(), i * layout.sizeInBytes());
33+
}
34+
return this;
35+
}
36+
37+
@Override
38+
public DoubleDataBuffer write(double[] src, int offset, int length) {
39+
Validator.writeArgs(this, src.length, offset, length);
40+
for (int i = 0, j = offset; i < length; ++i, ++j) {
41+
layout.writeDouble(buffer(), src[j], i * layout.sizeInBytes());
42+
}
43+
return this;
44+
}
45+
46+
@Override
47+
public DoubleDataBuffer offset(long index) {
48+
return new DoubleDataBufferAdapter(buffer().offset(index * layout.sizeInBytes()), layout);
49+
}
50+
51+
@Override
52+
public DoubleDataBuffer narrow(long size) {
53+
return new DoubleDataBufferAdapter(buffer().narrow(size * layout.sizeInBytes()), layout);
54+
}
55+
56+
private DoubleDataBufferAdapter(ByteDataBuffer physicalBuffer, DoubleDataLayout layout) {
57+
super(physicalBuffer, layout);
58+
this.layout = layout;
59+
}
60+
61+
private DoubleDataLayout layout;
62+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tensorflow.tools.buffer.impl.adapter;
2+
3+
import org.tensorflow.tools.buffer.layout.FloatDataLayout;
4+
import org.tensorflow.tools.buffer.ByteDataBuffer;
5+
import org.tensorflow.tools.buffer.FloatDataBuffer;
6+
import org.tensorflow.tools.buffer.impl.Validator;
7+
8+
public class FloatDataBufferAdapter extends AbstractDataBufferAdapter<Float, FloatDataBuffer>
9+
implements FloatDataBuffer {
10+
11+
public static FloatDataBufferAdapter create(ByteDataBuffer delegate, FloatDataLayout floatAdapter) {
12+
return new FloatDataBufferAdapter(delegate, floatAdapter);
13+
}
14+
15+
@Override
16+
public float getFloat(long index) {
17+
Validator.getArgs(this, index);
18+
return layout.readFloat(buffer(), index * layout.sizeInBytes());
19+
}
20+
21+
@Override
22+
public FloatDataBuffer setFloat(float value, long index) {
23+
Validator.setArgs(this, index);
24+
layout.writeFloat(buffer(), value, index * layout.sizeInBytes());
25+
return this;
26+
}
27+
28+
@Override
29+
public FloatDataBuffer read(float[] dst, int offset, int length) {
30+
Validator.readArgs(this, dst.length, offset, length);
31+
for (int i = 0, j = offset; i < length; ++i, ++j) {
32+
dst[j] = layout.readFloat(buffer(), i * layout.sizeInBytes());
33+
}
34+
return this;
35+
}
36+
37+
@Override
38+
public FloatDataBuffer write(float[] src, int offset, int length) {
39+
Validator.writeArgs(this, src.length, offset, length);
40+
for (int i = 0, j = offset; i < length; ++i, ++j) {
41+
layout.writeFloat(buffer(), src[j], i * layout.sizeInBytes());
42+
}
43+
return this;
44+
}
45+
46+
@Override
47+
public FloatDataBuffer offset(long index) {
48+
return new FloatDataBufferAdapter(buffer().offset(index * layout.sizeInBytes()), layout);
49+
}
50+
51+
@Override
52+
public FloatDataBuffer narrow(long size) {
53+
return new FloatDataBufferAdapter(buffer().narrow(size * layout.sizeInBytes()), layout);
54+
}
55+
56+
private FloatDataBufferAdapter(ByteDataBuffer physicalBuffer, FloatDataLayout layout) {
57+
super(physicalBuffer, layout);
58+
this.layout = layout;
59+
}
60+
61+
private FloatDataLayout layout;
62+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.tensorflow.tools.buffer.impl.adapter;
2+
3+
import org.tensorflow.tools.buffer.layout.IntDataLayout;
4+
import org.tensorflow.tools.buffer.ByteDataBuffer;
5+
import org.tensorflow.tools.buffer.IntDataBuffer;
6+
import org.tensorflow.tools.buffer.impl.Validator;
7+
8+
public class IntDataBufferAdapter extends AbstractDataBufferAdapter<Integer, IntDataBuffer>
9+
implements IntDataBuffer {
10+
11+
public static IntDataBufferAdapter create(ByteDataBuffer delegate, IntDataLayout intAdapter) {
12+
return new IntDataBufferAdapter(delegate, intAdapter);
13+
}
14+
15+
@Override
16+
public int getInt(long index) {
17+
Validator.getArgs(this, index);
18+
return layout.readInt(buffer(), index * layout.sizeInBytes());
19+
}
20+
21+
@Override
22+
public IntDataBuffer setInt(int value, long index) {
23+
Validator.setArgs(this, index);
24+
layout.writeInt(buffer(), value, index * layout.sizeInBytes());
25+
return this;
26+
}
27+
28+
@Override
29+
public IntDataBuffer read(int[] dst, int offset, int length) {
30+
Validator.readArgs(this, dst.length, offset, length);
31+
for (int i = 0, j = offset; i < length; ++i, ++j) {
32+
dst[j] = layout.readInt(buffer(), i * layout.sizeInBytes());
33+
}
34+
return this;
35+
}
36+
37+
@Override
38+
public IntDataBuffer write(int[] src, int offset, int length) {
39+
Validator.writeArgs(this, src.length, offset, length);
40+
for (int i = 0, j = offset; i < length; ++i, ++j) {
41+
layout.writeInt(buffer(), src[j], i * layout.sizeInBytes());
42+
}
43+
return this;
44+
}
45+
46+
@Override
47+
public IntDataBuffer offset(long index) {
48+
return new IntDataBufferAdapter(buffer().offset(index * layout.sizeInBytes()), layout);
49+
}
50+
51+
@Override
52+
public IntDataBuffer narrow(long size) {
53+
return new IntDataBufferAdapter(buffer().narrow(size * layout.sizeInBytes()), layout);
54+
}
55+
56+
private IntDataBufferAdapter(ByteDataBuffer physicalBuffer, IntDataLayout layout) {
57+
super(physicalBuffer, layout);
58+
this.layout = layout;
59+
}
60+
61+
private IntDataLayout layout;
62+
}

0 commit comments

Comments
 (0)